Mercurial > docs > master
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. |