comparison discussion.roff @ 227:157c92fc1597

Further improvements.
author markus schnalke <meillo@marmaro.de>
date Sun, 15 Jul 2012 23:44:15 +0200
parents 27c28990b844
children a1468cf505fd
comparison
equal deleted inserted replaced
226:27c28990b844 227:157c92fc1597
261 but introduces dependencies on external projects. 261 but introduces dependencies on external projects.
262 Programs have the smallest interfaces and provide the best separation, 262 Programs have the smallest interfaces and provide the best separation,
263 but possibly limit the information exchange. 263 but possibly limit the information exchange.
264 External libraries are more strongly connected than external programs, 264 External libraries are more strongly connected than external programs,
265 thus information can be exchanged in a more flexible manner. 265 thus information can be exchanged in a more flexible manner.
266 Adding code to a project increases maintenance work. 266 Obviously, adding code to a project increases the maintenance work.
267 As implementing complex functions in the project itself adds 267 As implementing complex functions in the project itself adds
268 a lot of code, this should be avoided if possible. 268 a lot of code, this should be avoided if possible.
269 Thus, the dependencies only change in their character, 269 Thus, the dependencies only change in their character,
270 not in their existence. 270 not in their existence.
271 In mmh, library dependencies on 271 In mmh, library dependencies on
456 456
457 .H2 "Displaying Messages 457 .H2 "Displaying Messages
458 .Id mhshow 458 .Id mhshow
459 .P 459 .P
460 Since the very beginning, already in the first concept paper, 460 Since the very beginning, already in the first concept paper,
461 .[
462 original memo rand mh shapiro gaines
463 .]
461 .Pn show 464 .Pn show
462 had been MH's message display program. 465 had been MH's message display program.
463 .Pn show 466 .Pn show
464 mapped message numbers and sequences to files and invoked 467 mapped message numbers and sequences to files and invoked
465 .Pn mhl 468 .Pn mhl
625 I have reduced the number of project-specific configure options from 628 I have reduced the number of project-specific configure options from
626 15 to 3. 629 15 to 3.
627 630
628 .U3 "Mail Transfer Facilities 631 .U3 "Mail Transfer Facilities
629 .P 632 .P
630 With the removal of the mail transfer facilities 5 configure 633 With the removal of the mail transfer facilities (cf. Sec.
631 options vanished: 634 .Cf mail-transfer-facilities )
635 five configure options vanished:
632 .P 636 .P
633 The switches 637 The switches
634 .Sw --with-tls 638 .Sw --with-tls
635 and 639 and
636 .Sw --with-cyrus-sasl 640 .Sw --with-cyrus-sasl
637 had activated the support for transfer encryption and authentication. 641 had activated the support for transfer encryption and authentication.
638 .\" XXX cf
639 .\" XXX gruende kurz wiederholen
640 They are not needed anymore. 642 They are not needed anymore.
641 .Ci fecd5d34f65597a4dfa16aeabea7d74b191532c3 643 .Ci fecd5d34f65597a4dfa16aeabea7d74b191532c3
642 .Ci 156d35f6425bea4c1ed3c4c79783dc613379c65b 644 .Ci 156d35f6425bea4c1ed3c4c79783dc613379c65b
643 .P 645 .P
644 .\" XXX cf
645 .\" XXX ``For the same reason ...''
646 The configure switch 646 The configure switch
647 .Sw --enable-pop 647 .Sw --enable-pop
648 activated the message retrieval facility. 648 had activated the message retrieval facility.
649 Whereas the code area that had been conditionally compiled in 649 Whereas the code area that had been conditionally compiled in
650 for TLS and SASL support was small, 650 for TLS and SASL support was small,
651 the conditionally compiled code area for POP support was much larger. 651 the conditionally compiled code area for POP support was much larger.
652 The code base had only changed slightly on toggling TLS or SASL 652 The code base had only changed slightly on toggling TLS or SASL
653 support but it had changed much on toggling POP support. 653 support but it had changed much on toggling POP support.
658 code, but there the changes are minor and can yet be overviewed. 658 code, but there the changes are minor and can yet be overviewed.
659 Still, conditional compilation of a code base creates variations 659 Still, conditional compilation of a code base creates variations
660 of the original program. 660 of the original program.
661 More variations require more testing and maintenance work. 661 More variations require more testing and maintenance work.
662 .P 662 .P
663 Two other options only specified default configuration values: 663 Two other options had only specified default configuration values:
664 .Sw --with-mts 664 .Sw --with-mts
665 defined the default transport service 665 defined the default transport service
666 .Ci f6aa95b724fd8c791164abe7ee5468bf5c34f226 . 666 .Ci f6aa95b724fd8c791164abe7ee5468bf5c34f226 .
667 With 667 With
668 .Sw --with-smtpservers 668 .Sw --with-smtpservers
669 default SMTP servers could be specified 669 default SMTP servers could be set
670 .Ci 128545e06224233b7e91fc4c83f8830252fe16c9 . 670 .Ci 128545e06224233b7e91fc4c83f8830252fe16c9 .
671 Both of them became irrelevant when the SMTP transport service was removed. 671 Both of them became irrelevant when the SMTP transport service was removed.
672 In mmh, all messages are handed over to 672 In mmh, all messages are handed over to
673 .Pn sendmail 673 .Pn sendmail
674 for transportation. 674 for transportation.
712 .Ci 8edc5aaf86f9f77124664f6801bc6c6cdf258173 712 .Ci 8edc5aaf86f9f77124664f6801bc6c6cdf258173
713 .Ci ca0b3e830b86700d9e5e31b1784de2bdcaf58fc5 713 .Ci ca0b3e830b86700d9e5e31b1784de2bdcaf58fc5
714 714
715 715
716 .U3 "Editor and Pager 716 .U3 "Editor and Pager
717 .Id editor-pager
717 .P 718 .P
718 The two configure options 719 The two configure options
719 .CW --with-editor=EDITOR 720 .CW --with-editor=EDITOR
720 .CW --with-pager=PAGER 721 .CW --with-pager=PAGER
721 were used to specify the default editor and pager at configure time. 722 were used to specify the default editor and pager at configure time.
991 992
992 993
993 994
994 .H2 "Command Line Switches 995 .H2 "Command Line Switches
995 .P 996 .P
996 The command line switches of MH tools follow a style similar to 997 The command line switches of MH tools are similar in style to the
997 the X Window System style. 998 switches in the X Window System.
998 The switches consist of a single dash (`\fL-\fP') followed by a word. 999 They consist of a single dash (`\fL-\fP') followed by a word.
999 For example 1000 For example
1000 .Cl -truncate . 1001 .Cl -truncate .
1001 To ease typing, the word can be abbreviated, given the remaining 1002 To ease typing, the word can be abbreviated, given the remaining
1002 prefix is unambiguous. 1003 prefix is unambiguous.
1003 If no other switch starts with the letter `t', then any of 1004 If no other switch starts with the letter `t', then any of
1134 1135
1135 .U3 "Draft Folder Facility 1136 .U3 "Draft Folder Facility
1136 .P 1137 .P
1137 A change early in the project was the complete transition from 1138 A change early in the project was the complete transition from
1138 the single draft message to the draft folder facility 1139 the single draft message to the draft folder facility
1139 .Ci 337338b404931f06f0db2119c9e145e8ca5a9860 . 1140 .Ci 337338b404931f06f0db2119c9e145e8ca5a9860
1140 .\" XXX ref to section ... 1141 (cf. Sec.
1142 .Cf draft-folder ).
1141 The draft folder facility was introduced in the mid-eighties, when 1143 The draft folder facility was introduced in the mid-eighties, when
1142 Rose and Romine called it a ``relatively new feature''. 1144 Rose and Romine called it a ``relatively new feature''.
1143 .[ 1145 .[
1144 rose romine real work 1146 rose romine real work
1145 .] 1147 .]
1170 was removed. 1172 was removed.
1171 The special treatment of \fIthe\fP draft message became irrelevant after 1173 The special treatment of \fIthe\fP draft message became irrelevant after
1172 the rework of the draft system 1174 the rework of the draft system
1173 (cf. Sec. 1175 (cf. Sec.
1174 .Cf draft-folder ). 1176 .Cf draft-folder ).
1175 Furthermore,
1176 .Pn comp
1177 no longer needs a
1178 .Sw -file
1179 switch as the draft folder facility together with the
1180 .Sw -form
1181 switch are sufficient.
1182 1177
1183 1178
1184 .U3 "In Place Editing 1179 .U3 "In Place Editing
1185 .P 1180 .P
1186 .Pn anno 1181 .Pn anno
1507 .Sw -[no]bell 1502 .Sw -[no]bell
1508 .Ci e11983f44e59d8de236affa5b0d0d3067c192e24 ) 1503 .Ci e11983f44e59d8de236affa5b0d0d3067c192e24 )
1509 nor does it page the output itself (\c 1504 nor does it page the output itself (\c
1510 .Sw -length 1505 .Sw -length
1511 .Ci 5b9d883db0318ed2b84bb82dee880d7381f99188 ). 1506 .Ci 5b9d883db0318ed2b84bb82dee880d7381f99188 ).
1512 .\" XXX Ref
1513 Generally, the pager to use is no longer specified with the 1507 Generally, the pager to use is no longer specified with the
1514 .Sw -[no]moreproc 1508 .Sw -[no]moreproc
1515 command line switches for 1509 command line switches for
1516 .Pn mhl 1510 .Pn mhl
1517 and 1511 and
1744 header field was introduced by RFC\|1864. 1738 header field was introduced by RFC\|1864.
1745 It provides detection of data corruption during the transfer. 1739 It provides detection of data corruption during the transfer.
1746 But it can not ensure verbatim end-to-end delivery of the contents 1740 But it can not ensure verbatim end-to-end delivery of the contents
1747 [RFC\|1864]. 1741 [RFC\|1864].
1748 The proper approach to verify content integrity in an 1742 The proper approach to verify content integrity in an
1749 end-to-end relationship is the use of digital signatures. 1743 end-to-end relationship is the use of digital signatures [RFC\|4880].
1750 .\" XXX (RFCs FIXME).
1751 On the other hand, transfer protocols should detect corruption during 1744 On the other hand, transfer protocols should detect corruption during
1752 the transmission. 1745 the transmission.
1753 The TCP includes a checksum field therefore. 1746 The TCP includes a checksum field therefore.
1754 These two approaches in combinations render the 1747 These two approaches in combinations render the
1755 .Hd Content-MD5 1748 .Hd Content-MD5
1988 There is no `mime' command at the WhatNow prompt anymore. 1981 There is no `mime' command at the WhatNow prompt anymore.
1989 The draft will be converted automatically to MIME when either an 1982 The draft will be converted automatically to MIME when either an
1990 attachment header or non-ASCII text is present. 1983 attachment header or non-ASCII text is present.
1991 Furthermore, the hash character (`\fL#\fP') is not special any more 1984 Furthermore, the hash character (`\fL#\fP') is not special any more
1992 at line beginnings in the draft message. 1985 at line beginnings in the draft message.
1993 .\" XXX REF ?
1994 Users need not concern themselves with the whole topic at all. 1986 Users need not concern themselves with the whole topic at all.
1995 .P 1987 .P
1996 Although the new approach does not anymore support arbitrary MIME 1988 Although the new approach does not anymore support arbitrary MIME
1997 compositions directly, the full power of 1989 compositions directly, the full power of
1998 .Pn mhbuild 1990 .Pn mhbuild
2179 .Ci 94c80042eae3383c812d9552089953f9846b1bb6 . 2171 .Ci 94c80042eae3383c812d9552089953f9846b1bb6 .
2180 2172
2181 2173
2182 2174
2183 .U3 "Showing MIME Messages 2175 .U3 "Showing MIME Messages
2176 .Id showing-mime-msgs
2184 .P 2177 .P
2185 The program 2178 The program
2186 .Pn mhshow 2179 .Pn mhshow
2187 was written to display MIME messages. 2180 was written to display MIME messages.
2188 It implemented the conceptional view of the MIME RFCs. 2181 It implemented the conceptional view of the MIME RFCs.
2201 behavior to the modern view on the topic. 2194 behavior to the modern view on the topic.
2202 .P 2195 .P
2203 One should note that this section completely ignores the original 2196 One should note that this section completely ignores the original
2204 .Pn show 2197 .Pn show
2205 program, because it was not capable to display MIME messages 2198 program, because it was not capable to display MIME messages
2206 and is no longer part of mmh. 2199 and is no longer part of mmh
2207 .\" XXX ref to other section 2200 (cf. Sec.
2201 .Cf mhshow ).
2208 Although 2202 Although
2209 .Pn mhshow 2203 .Pn mhshow
2210 was renamed to 2204 was renamed to
2211 .Pn show 2205 .Pn show
2212 in mmh, this section uses the name 2206 in mmh, this section uses the name
2240 .Pn mhl 2234 .Pn mhl
2241 is to format messages or parts of them. 2235 is to format messages or parts of them.
2242 The only place in mmh, where a pager is invoked is 2236 The only place in mmh, where a pager is invoked is
2243 .Pn mhshow . 2237 .Pn mhshow .
2244 .P 2238 .P
2245 In the intended setup, only text content is be displayed, 2239 Only text content is displayed.
2246 in a single pager session. 2240 Other kinds of attachments are ignored.
2247 Non-text content needs to be converted to text by appropriate 2241 Non-text content needs to be converted to text by appropriate
2248 .Pe mhshow-show-* 2242 .Pe mhshow-show-*
2249 profile entries before, if this is possible and wanted. 2243 profile entries before, if this is possible and wanted.
2250 A common example for this are PDF files. 2244 A common example for this are PDF files.
2251 In mmh, MIME parts are always displayed serially. 2245 .P
2246 MIME parts are always displayed serially.
2252 The request to display the MIME type `multipart/parallel' in parallel 2247 The request to display the MIME type `multipart/parallel' in parallel
2253 is ignored. 2248 is ignored.
2254 It is simply treated as `multipart/mixed' 2249 It is simply treated as `multipart/mixed'
2255 .Ci d0581ba306a7299113a346f9b4c46ce97bc4cef6 . 2250 .Ci d0581ba306a7299113a346f9b4c46ce97bc4cef6 .
2256 This was already possible to requested with the, now removed, 2251 This was already possible to requested with the, now removed,
2260 As MIME parts are always processed exclusively, i.e. serially, 2255 As MIME parts are always processed exclusively, i.e. serially,
2261 the `\fL%e\fP' escape in 2256 the `\fL%e\fP' escape in
2262 .Pe mhshow-show-* 2257 .Pe mhshow-show-*
2263 profile entries became useless and was thus removed 2258 profile entries became useless and was thus removed
2264 .Ci a20d405db09b7ccca74d3e8c57550883da49e1ae . 2259 .Ci a20d405db09b7ccca74d3e8c57550883da49e1ae .
2265 .P
2266 Other kinds of attachments are ignored.
2267 With
2268 .Pe mhshow-show-*
2269 profile entries for them, they can be displayed serially along
2270 the message.
2271 For parallel display, the attachments need to be stored to disk first. 2260 For parallel display, the attachments need to be stored to disk first.
2272 .P 2261 .P
2273 To display text content in foreign charsets, they need to be converted 2262 To display text content in foreign charsets, they need to be converted
2274 to the native charset. 2263 to the native charset.
2275 Therefore, 2264 Therefore,
3241 could not be used with MH folder arguments. 3230 could not be used with MH folder arguments.
3242 .P 3231 .P
3243 I clarified the path name conversion by complete rework. 3232 I clarified the path name conversion by complete rework.
3244 First of all, the terminology needed to be defined. 3233 First of all, the terminology needed to be defined.
3245 A path name is either in the Unix domain, then it is called 3234 A path name is either in the Unix domain, then it is called
3246 \fIdirectory path\fP (\fIdirpath\fP for short) or it is in the MH domain, 3235 \fIdirectory path\fP or it is in the MH domain,
3247 then it is called \fIfolder path\fP (\fIfolpath\fP for short). 3236 then it is called \fIfolder path\fP.
3248 The two terms need to be used with strict distinction. 3237 The two terms need to be used with strict distinction.
3249 Often a clear terminology indicates that the problem is understood.
3250 Second, I exploited the concept of path type indicators. 3238 Second, I exploited the concept of path type indicators.
3251 By requiring every path name to start with a distinct type identifier, 3239 By requiring every path name to start with a distinct type identifier,
3252 the conversion between the types could be fully automated. 3240 the conversion between the types could be fully automated.
3253 This allows the tools to accept paths of any type from the user. 3241 This allows the tools to accept path names of any type from the user.
3254 Therefore, it was necessary to require relative directory paths to be 3242 Therefore, it was necessary to require relative directory paths to be
3255 prefixed with a dot character. 3243 prefixed with a dot character.
3256 In consequence, the dot character could no longer be an alias for the 3244 In consequence, the dot character could no longer be an alias for the
3257 current message. 3245 current message
3258 .Ci cff0e16925e7edbd25b8b9d6d4fbdf03e0e60c01 3246 .Ci cff0e16925e7edbd25b8b9d6d4fbdf03e0e60c01 .
3259 Third, I created three new functions to replace the previous mess: 3247 Third, I created three new functions to replace the previous mess:
3260 .LI 1 3248 .LI 1
3261 .Fu expandfol() 3249 .Fu expandfol()
3262 converts folder paths to absolute folder paths. 3250 converts folder paths to absolute folder paths.
3263 Directory paths are simply passed through. 3251 Directory paths are simply passed through.