Mercurial > docs > master
comparison discussion.roff @ 173:4c7db172fb59
Various corrections and improvements.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Tue, 10 Jul 2012 17:26:05 +0200 |
parents | 346ff7e201f5 |
children | 3d7db5c7965d |
comparison
equal
deleted
inserted
replaced
172:6800d594b2b7 | 173:4c7db172fb59 |
---|---|
19 MH once provided anything necessary for email handling. | 19 MH once provided anything necessary for email handling. |
20 The community around nmh has the similar understanding that nmh should | 20 The community around nmh has the similar understanding that nmh should |
21 provide a complete email system. | 21 provide a complete email system. |
22 In fundamental contrast, mmh shall be a MUA only. | 22 In fundamental contrast, mmh shall be a MUA only. |
23 I believe that the development of all-in-one mail systems is obsolete. | 23 I believe that the development of all-in-one mail systems is obsolete. |
24 Today, email is too complex to be fully covered by single projects. | 24 Today, email is too complex to be fully covered by a single project. |
25 Such a project won't be able to excel in all aspects. | 25 Such a project will not be able to excel in all aspects. |
26 Instead, the aspects of email should be covered by multiple projects, | 26 Instead, the aspects of email should be covered by multiple projects, |
27 which then can be combined to form a complete system. | 27 which then can be combined to form a complete system. |
28 Excellent implementations for the various aspects of email already exist. | 28 Excellent implementations for the various aspects of email already exist. |
29 Just to name three examples: Postfix is a specialized MTA, | 29 Just to name three examples: Postfix is a specialized MTA, |
30 .\" XXX homepages verlinken | 30 .\" XXX homepages verlinken |
41 or modular \(en will never be the best choice in any of the fields. | 41 or modular \(en will never be the best choice in any of the fields. |
42 Even in providing the best consistent all-in-one system, they are likely | 42 Even in providing the best consistent all-in-one system, they are likely |
43 to be beaten by projects that focus only on integrating existing mail | 43 to be beaten by projects that focus only on integrating existing mail |
44 components to create a homogeneous system. | 44 components to create a homogeneous system. |
45 .P | 45 .P |
46 The limiting resource in the community development of Free Software | 46 The limiting resource in the community development of free software |
47 is usually man power. | 47 is usually man power. |
48 .\" XXX FIXME ref! | 48 .\" XXX FIXME ref! |
49 If the development power is spread over a large development area, | 49 If the development power is spread over a large development area, |
50 it becomes even more difficult to compete with the specialists in the | 50 it becomes even more difficult to compete with the specialists in the |
51 various fields. | 51 various fields. |
152 The question whether there is sense in having a fall-back pager in all | 152 The question whether there is sense in having a fall-back pager in all |
153 the command line tools, for the cases when | 153 the command line tools, for the cases when |
154 .Pn more | 154 .Pn more |
155 or | 155 or |
156 .Pn less | 156 .Pn less |
157 aren't available, appears to be ridiculous. | 157 are not available, appears to be ridiculous. |
158 Of course, MSAs and MRAs are more complex than text pagers | 158 Of course, MSAs and MRAs are more complex than text pagers |
159 and not necessarily available but still the concept of orthogonal | 159 and not necessarily available but still the concept of orthogonal |
160 design holds: ``Write programs that do one thing and do it well.'' | 160 design holds: ``Write programs that do one thing and do it well.'' |
161 .[ | 161 .[ |
162 mcilroy unix phil | 162 mcilroy unix phil |
272 | 272 |
273 | 273 |
274 .H2 "Non-MUA Tools | 274 .H2 "Non-MUA Tools |
275 .P | 275 .P |
276 One goal of mmh is to remove the tools that are not part of the MUA's task. | 276 One goal of mmh is to remove the tools that are not part of the MUA's task. |
277 Further more, any tools that don't significantly improve the MUA's job | 277 Further more, any tools that do not significantly improve the MUA's job |
278 should be removed. | 278 should be removed. |
279 Loosely related and rarely used tools distract from the lean appearance. | 279 Loosely related and rarely used tools distract from the lean appearance. |
280 They require maintenance work without adding much to the core task. | 280 They require maintenance work without adding much to the core task. |
281 By removing these tools, the project shall become more streamlined | 281 By removing these tools, the project shall become more streamlined |
282 and focused. | 282 and focused. |
351 .Pn msh | 351 .Pn msh |
352 was removed | 352 was removed |
353 .Ci 916690191222433a6923a4be54b0d8f6ac01bd02 | 353 .Ci 916690191222433a6923a4be54b0d8f6ac01bd02 |
354 because the tool was in conflict with the philosophy of MH. | 354 because the tool was in conflict with the philosophy of MH. |
355 It provided an interactive shell to access the features of MH, | 355 It provided an interactive shell to access the features of MH, |
356 but it wasn't just a shell tailored to the needs of mail handling. | 356 but it was not just a shell tailored to the needs of mail handling. |
357 Instead, it was one large program that had several MH tools built in. | 357 Instead, it was one large program that had several MH tools built in. |
358 This conflicts with the major feature of MH of being a tool chest. | 358 This conflicts with the major feature of MH of being a tool chest. |
359 .Pn msh 's | 359 .Pn msh 's |
360 main use case had been accessing Bulletin Boards, which have ceased to | 360 main use case had been accessing Bulletin Boards, which have ceased to |
361 be popular. | 361 be popular. |
446 had been MH's message display program. | 446 had been MH's message display program. |
447 .Pn show | 447 .Pn show |
448 mapped message numbers and sequences to files and invoked | 448 mapped message numbers and sequences to files and invoked |
449 .Pn mhl | 449 .Pn mhl |
450 to have the files formatted. | 450 to have the files formatted. |
451 With MIME, this approach wasn't sufficient anymore. | 451 With MIME, this approach was not sufficient anymore. |
452 MIME messages can consist of multiple parts. Some parts are not | 452 MIME messages can consist of multiple parts. Some parts are not |
453 directly displayable and text content might be encoded in | 453 directly displayable and text content might be encoded in |
454 foreign charsets. | 454 foreign charsets. |
455 .Pn show 's | 455 .Pn show 's |
456 understanding of messages and | 456 understanding of messages and |
457 .Pn mhl 's | 457 .Pn mhl 's |
458 display capabilities couldn't cope with the task any longer. | 458 display capabilities could not cope with the task any longer. |
459 .P | 459 .P |
460 Instead of extending these tools, additional tools were written from | 460 Instead of extending these tools, additional tools were written from |
461 scratch and added to the MH tool chest. | 461 scratch and added to the MH tool chest. |
462 Doing so is encouraged by the tool chest approach. | 462 Doing so is encouraged by the tool chest approach. |
463 Modular design is a great advantage for extending a system, | 463 Modular design is a great advantage for extending a system, |
500 or | 500 or |
501 .Pn mhshow , | 501 .Pn mhshow , |
502 whatever was more appropriate. | 502 whatever was more appropriate. |
503 .P | 503 .P |
504 Having two similar tools for essentially the same task is redundant. | 504 Having two similar tools for essentially the same task is redundant. |
505 Usually, | 505 Usually, users would not distinguish between |
506 users wouldn't distinguish between | |
507 .Pn show | 506 .Pn show |
508 and | 507 and |
509 .Pn mhshow | 508 .Pn mhshow |
510 in their daily mail reading. | 509 in their daily mail reading. |
511 Having two separate display programs was therefore mainly unnecessary | 510 Having two separate display programs was therefore mainly unnecessary |
604 There is the cost of code complexity to be able to customize. | 603 There is the cost of code complexity to be able to customize. |
605 There is the cost of less tested setups, because there are | 604 There is the cost of less tested setups, because there are |
606 more possible setups and especially corner cases. | 605 more possible setups and especially corner cases. |
607 Additionally, there is the cost of choice itself. | 606 Additionally, there is the cost of choice itself. |
608 The code complexity directly affects the developers. | 607 The code complexity directly affects the developers. |
609 Less tested code affects both, users and developers. | 608 Less tested code affects both users and developers. |
610 The problem of choice affects the users, for once by having to choose, | 609 The problem of choice affects the users, for once by having to choose, |
611 but also by more complex interfaces that require more documentation. | 610 but also by more complex interfaces that require more documentation. |
612 Whenever options add few advantages but increase the complexity of the | 611 Whenever options add few advantages but increase the complexity of the |
613 system, they should be considered for removal. | 612 system, they should be considered for removal. |
614 I have reduced the number of project-specific configure options from | 613 I have reduced the number of project-specific configure options from |
666 | 665 |
667 .U3 "Backup Prefix | 666 .U3 "Backup Prefix |
668 .P | 667 .P |
669 The backup prefix is the string that was prepended to message | 668 The backup prefix is the string that was prepended to message |
670 filenames to tag them as deleted. | 669 filenames to tag them as deleted. |
671 By default it had been the comma character `\f(CW,\fP'. | 670 By default it had been the comma character (`\fL,\fP'). |
672 .\" XXX Zeitlich ordnen | 671 .\" XXX Zeitlich ordnen |
673 In July 2000, Kimmo Suominen introduced | 672 In July 2000, Kimmo Suominen introduced |
674 the configure option | 673 the configure option |
675 .Sw --with-hash-backup | 674 .Sw --with-hash-backup |
676 to change the default to the hash symbol `\f(CW#\fP'. | 675 to change the default to the hash character `\f(CW#\fP'. |
677 The choice was probably personal preference, because first, the | 676 The choice was probably personal preference, because first, the |
678 option was named | 677 option was named |
679 .Sw --with-backup-prefix. | 678 .Sw --with-backup-prefix. |
680 and had the prefix symbol as argument. | 679 and had the prefix character as argument. |
681 But giving the hash symbol as argument caused too many problems | 680 But giving the hash character as argument caused too many problems |
682 for Autoconf, | 681 for Autoconf, |
683 thus the option was limited to use the hash symbol as the default prefix. | 682 thus the option was limited to use the hash character as the default prefix. |
684 This supports the assumption, that the choice for the hash was | 683 This supports the assumption, that the choice for the hash was |
685 personal preference only. | 684 personal preference only. |
686 Being related or not, words that start with the hash symbol | 685 Being related or not, words that start with the hash character |
687 introduce a comment in the Unix shell. | 686 introduce a comment in the Unix shell. |
688 Thus, the command line | 687 Thus, the command line |
689 .Cl "rm #13 #15 | 688 .Cl "rm #13 #15 |
690 calls | 689 calls |
691 .Pn rm | 690 .Pn rm |
692 without arguments because the first hash symbol starts the comment | 691 without arguments because the first hash character starts the comment |
693 that reaches until the end of the line. | 692 that reaches until the end of the line. |
694 To delete the backup files, | 693 To delete the backup files, |
695 .Cl "rm ./#13 ./#15" | 694 .Cl "rm ./#13 ./#15" |
696 needs to be used. | 695 needs to be used. |
697 Using the hash as backup prefix can be seen as a precaution against | 696 Using the hash as backup prefix can be seen as a precaution against |
931 .I "plussed user | 930 .I "plussed user |
932 processing of sendmail. | 931 processing of sendmail. |
933 The decision to remove this username_extension masquerading was | 932 The decision to remove this username_extension masquerading was |
934 motivated by the fact that | 933 motivated by the fact that |
935 .Pn spost | 934 .Pn spost |
936 hadn't supported it already. | 935 had not supported it already. |
937 .Ci 2abae0bfd0ad5bf898461e50aa4b466d641f23d9 | 936 .Ci 2abae0bfd0ad5bf898461e50aa4b466d641f23d9 |
938 Username extensions are possible in mmh, but less convenient to use. | 937 Username extensions are possible in mmh, but less convenient to use. |
939 .\" XXX covered by next paragraph | 938 .\" XXX covered by next paragraph |
940 .\" XXX format file %(getenv USERNAME_EXTENSION) | 939 .\" XXX format file %(getenv USERNAME_EXTENSION) |
941 .P | 940 .P |
1832 .Cl "comp -editor prompter" , | 1831 .Cl "comp -editor prompter" , |
1833 the resulting behavior is similar to | 1832 the resulting behavior is similar to |
1834 .Pn mailx . | 1833 .Pn mailx . |
1835 Apparently, | 1834 Apparently, |
1836 .Pn prompter | 1835 .Pn prompter |
1837 hadn't been touched lately. | 1836 had not been touched lately. |
1838 Otherwise it's hardly explainable why it | 1837 Otherwise it's hardly explainable why it |
1839 still offered the switches | 1838 still offered the switches |
1840 .Sw -erase | 1839 .Sw -erase |
1841 .Ar chr | 1840 .Ar chr |
1842 and | 1841 and |
1900 The perception of the topic described in the RFCs is clearly visible | 1899 The perception of the topic described in the RFCs is clearly visible |
1901 in MH's implementation. | 1900 in MH's implementation. |
1902 .\" XXX rewrite ``no idea''. | 1901 .\" XXX rewrite ``no idea''. |
1903 As a result, | 1902 As a result, |
1904 MH had all the MIME features but no idea of attachments. | 1903 MH had all the MIME features but no idea of attachments. |
1905 But users don't need all the MIME features, | 1904 But users do not need all the MIME features, |
1906 they want convenient attachment handling. | 1905 they want convenient attachment handling. |
1907 | 1906 |
1908 | 1907 |
1909 .U3 "Composing MIME Messages | 1908 .U3 "Composing MIME Messages |
1910 .P | 1909 .P |
1973 attachment headers. | 1972 attachment headers. |
1974 If the MIMEification fails, for instance because the file to attach | 1973 If the MIMEification fails, for instance because the file to attach |
1975 is not accessible, the original draft is not changed. | 1974 is not accessible, the original draft is not changed. |
1976 .P | 1975 .P |
1977 The attachment system handles the forwarding of messages, too. | 1976 The attachment system handles the forwarding of messages, too. |
1978 If the attachment header value starts with a plus character (`+'), | 1977 If the attachment header value starts with a plus character (`\fL+\fP'), |
1979 like in | 1978 like in |
1980 .Cl "Attach: +bob 30 42" , | 1979 .Cl "Attach: +bob 30 42" , |
1981 the given messages in the specified folder will be attached. | 1980 the given messages in the specified folder will be attached. |
1982 This allowed to simplify | 1981 This allowed to simplify |
1983 .Pn forw . | 1982 .Pn forw . |
2012 Mmh's current solution is even more elaborate. | 2011 Mmh's current solution is even more elaborate. |
2013 Any necessary MIMEification is done automatically. | 2012 Any necessary MIMEification is done automatically. |
2014 There is no `mime' command at the WhatNow prompt anymore. | 2013 There is no `mime' command at the WhatNow prompt anymore. |
2015 The draft will be converted automatically to MIME when either an | 2014 The draft will be converted automatically to MIME when either an |
2016 attachment header or non-ASCII text is present. | 2015 attachment header or non-ASCII text is present. |
2017 Furthermore, the hash character (`#') is not special any more | 2016 Furthermore, the hash character (`\fL#\fP') is not special any more |
2018 at line beginnings in the draft message. | 2017 at line beginnings in the draft message. |
2019 .\" XXX REF ? | 2018 .\" XXX REF ? |
2020 Users need not concern themselves with the whole topic at all. | 2019 Users need not concern themselves with the whole topic at all. |
2021 .P | 2020 .P |
2022 Although the new approach does not anymore support arbitrary MIME | 2021 Although the new approach does not anymore support arbitrary MIME |
2331 | 2330 |
2332 .ig | 2331 .ig |
2333 | 2332 |
2334 .P | 2333 .P |
2335 mhshow/mhstore: Removed support for retrieving message/external-body parts. | 2334 mhshow/mhstore: Removed support for retrieving message/external-body parts. |
2336 These tools won't download the contents automatically anymore. Instead, | 2335 These tools will not download the contents automatically anymore. Instead, |
2337 they print the information needed to get the contents. If someone should | 2336 they print the information needed to get the contents. If someone should |
2338 really receive one of those rare message/external-body messages, he can | 2337 really receive one of those rare message/external-body messages, he can |
2339 do the job manually. We save nearly a thousand lines of code. That's worth | 2338 do the job manually. We save nearly a thousand lines of code. That's worth |
2340 it! | 2339 it! |
2341 (The profile entry `nmh-access-ftp' and sbr/ruserpass.c for reading | 2340 (The profile entry `nmh-access-ftp' and sbr/ruserpass.c for reading |
2578 .U3 "Trash Folder | 2577 .U3 "Trash Folder |
2579 .Id trash-folder | 2578 .Id trash-folder |
2580 .P | 2579 .P |
2581 Similar to the situation for drafts is the situation for removed messages. | 2580 Similar to the situation for drafts is the situation for removed messages. |
2582 Historically, a message was ``deleted'' by prepending a specific | 2581 Historically, a message was ``deleted'' by prepending a specific |
2583 \fIbackup prefix\fP, usually the comma character, to the file name. | 2582 \fIbackup prefix\fP, usually the comma character, |
2583 to the file name. | |
2584 The specific file would then be ignored by MH because only files with | 2584 The specific file would then be ignored by MH because only files with |
2585 names consisting of digits only are treated as messages. | 2585 names consisting of digits only are treated as messages. |
2586 Although files remained in the file system, | 2586 Although files remained in the file system, |
2587 the messages were no longer visible in MH. | 2587 the messages were no longer visible in MH. |
2588 To truly delete them, a maintenance job was needed. | 2588 To truly delete them, a maintenance job was needed. |
2762 just to allow them use MH in a convenient and modern way? | 2762 just to allow them use MH in a convenient and modern way? |
2763 Unless they are strongly convinced of the concepts, they will fail. | 2763 Unless they are strongly convinced of the concepts, they will fail. |
2764 I have seen friends of me giving up disappointed | 2764 I have seen friends of me giving up disappointed |
2765 before they truly used the system, | 2765 before they truly used the system, |
2766 although they had been motivated in the beginning. | 2766 although they had been motivated in the beginning. |
2767 They suffer hard enough to get used to the toolchest approach, | 2767 They suffer hard enough to get used to the tool chest approach, |
2768 we should spare them further inconveniences. | 2768 we should spare them further inconveniences. |
2769 .P | 2769 .P |
2770 Maintaining compatibility for its own sake is bad, | 2770 Maintaining compatibility for its own sake is bad, |
2771 because the code base collects more and more compatibility code. | 2771 because the code base collects more and more compatibility code. |
2772 Sticking to the compatiblity code means remaining limited; | 2772 Sticking to the compatiblity code means remaining limited; |
3113 Having identified the problem, I solved it by putting structure into | 3113 Having identified the problem, I solved it by putting structure into |
3114 .Pn anno | 3114 .Pn anno |
3115 and its documentation. | 3115 and its documentation. |
3116 .Ci d54c8db8bdf01e8381890f7729bc0ef4a055ea11 | 3116 .Ci d54c8db8bdf01e8381890f7729bc0ef4a055ea11 |
3117 .P | 3117 .P |
3118 The difference is visible in both, the code and the documentation. | 3118 The difference is visible in both the code and the documentation. |
3119 The following code excerpt: | 3119 The following code excerpt: |
3120 .VS | 3120 .VS |
3121 int delete = -2; /* delete header element if set */ | 3121 int delete = -2; /* delete header element if set */ |
3122 int list = 0; /* list header elements if set */ | 3122 int list = 0; /* list header elements if set */ |
3123 [...] | 3123 [...] |
3207 The second parameter of | 3207 The second parameter of |
3208 .Fu path() | 3208 .Fu path() |
3209 defines the type of path given as first parameter. | 3209 defines the type of path given as first parameter. |
3210 Directory paths are converted to absolute directory paths. | 3210 Directory paths are converted to absolute directory paths. |
3211 Folder paths are converted to absolute folder paths. | 3211 Folder paths are converted to absolute folder paths. |
3212 Folder paths must not include a leading `@' character. | 3212 Folder paths must not include a leading `\fL@\fP' character. |
3213 Leading plus characters are preserved. | 3213 Leading plus characters are preserved. |
3214 The result is a pointer to newly allocated memory. | 3214 The result is a pointer to newly allocated memory. |
3215 .LI 2 | 3215 .LI 2 |
3216 .Fu pluspath() | 3216 .Fu pluspath() |
3217 is a convenience-wrapper to | 3217 is a convenience-wrapper to |
3220 This function can not be used for directory paths. | 3220 This function can not be used for directory paths. |
3221 An empty string parameter causes a buffer overflow. | 3221 An empty string parameter causes a buffer overflow. |
3222 .LI 3 | 3222 .LI 3 |
3223 .Fu m_mailpath() | 3223 .Fu m_mailpath() |
3224 converts directory paths to absolute directory paths. | 3224 converts directory paths to absolute directory paths. |
3225 The characters `+' or `@' at the beginning of the path name are | 3225 The characters `\fL+\fP' or `\fL@\fP' at the beginning of the path name are |
3226 treated literal, i.e. as the first character of a relative directory path. | 3226 treated literal, i.e. as the first character of a relative directory path. |
3227 Hence, this function can not be used for folder paths. | 3227 Hence, this function can not be used for folder paths. |
3228 In any case, the result is an absolute directory path. | 3228 In any case, the result is an absolute directory path. |
3229 The result is a pointer to newly allocated memory. | 3229 The result is a pointer to newly allocated memory. |
3230 .LI 4 | 3230 .LI 4 |
3231 .Fu m_maildir() | 3231 .Fu m_maildir() |
3232 returns the parameter unchanged if it is an absolute directory path | 3232 returns the parameter unchanged if it is an absolute directory path |
3233 or begins with the entry `.' or `..'. | 3233 or begins with the entry `\fL.\fP' or `\fL..\fP'. |
3234 All other strings are prepended with the current working directory. | 3234 All other strings are prepended with the current working directory. |
3235 Hence, this functions can not be used for folder paths. | 3235 Hence, this functions can not be used for folder paths. |
3236 The result is either an absolute directory path or a relative | 3236 The result is either an absolute directory path or a relative |
3237 directory path, starting with a dot. | 3237 directory path, starting with a dot. |
3238 In contrast to the other functions, the result is a pointer to | 3238 In contrast to the other functions, the result is a pointer to |
3466 could have set up a well-defined profile and caused all MH tools | 3466 could have set up a well-defined profile and caused all MH tools |
3467 in the session use it by exporting an environment variable. | 3467 in the session use it by exporting an environment variable. |
3468 With this approach, no special cases would have been introduced, | 3468 With this approach, no special cases would have been introduced, |
3469 no surprises would have been caused. | 3469 no surprises would have been caused. |
3470 By writing a clean-profile-wrapper, the concept could have been | 3470 By writing a clean-profile-wrapper, the concept could have been |
3471 generalized orthogonally to the whole MH toolchest. | 3471 generalized orthogonally to the whole MH tool chest. |
3472 Then Rose's motivation behind the decision that | 3472 Then Rose's motivation behind the decision that |
3473 .Pn post | 3473 .Pn post |
3474 ignores the profile, as quoted by Jeffrey Honig, | 3474 ignores the profile, as quoted by Jeffrey Honig, |
3475 .[ | 3475 .[ |
3476 nmh-workers post profile | 3476 nmh-workers post profile |
3488 Mapping such problems on the concepts of switching between different | 3488 Mapping such problems on the concepts of switching between different |
3489 profiles, solves them once for all. | 3489 profiles, solves them once for all. |
3490 .P | 3490 .P |
3491 In mmh, the wish to have | 3491 In mmh, the wish to have |
3492 .Pn mhmail | 3492 .Pn mhmail |
3493 as as replacement for | 3493 as a replacement for |
3494 .Pn mailx | 3494 .Pn mailx |
3495 is considered obsolete. | 3495 is considered obsolete. |
3496 Mmh's | 3496 Mmh's |
3497 .Pn mhmail | 3497 .Pn mhmail |
3498 does no longer cover this use-case. | 3498 does no longer cover this use-case. |
3508 will become an ordinary MH tool, reading the profile. | 3508 will become an ordinary MH tool, reading the profile. |
3509 If, however, this idea will not convince, then | 3509 If, however, this idea will not convince, then |
3510 .Pn mhmail | 3510 .Pn mhmail |
3511 will be removed. | 3511 will be removed. |
3512 .P | 3512 .P |
3513 Every program in the mmh toolchest reads the profile. | 3513 Every program in the mmh tool chest reads the profile. |
3514 The only exception is | 3514 The only exception is |
3515 .Pn slocal , | 3515 .Pn slocal , |
3516 which is not considered part of the mmh toolchest. | 3516 which is not considered part of the mmh tool chest. |
3517 This MDA is only distributed with mmh, currently. | 3517 This MDA is only distributed with mmh, currently. |
3518 Mmh has no | 3518 Mmh has no |
3519 .Pn post | 3519 .Pn post |
3520 program, but | 3520 program, but |
3521 .Pn spost , | 3521 .Pn spost , |
3565 .Fu snprintf() | 3565 .Fu snprintf() |
3566 was dropped in March 2012 in favor for using the one of the | 3566 was dropped in March 2012 in favor for using the one of the |
3567 standard library. | 3567 standard library. |
3568 .Ci 0052f1024deb0a0a2fc2e5bacf93d45a5a9c9b32 | 3568 .Ci 0052f1024deb0a0a2fc2e5bacf93d45a5a9c9b32 |
3569 Such decisions limit the portability of mmh | 3569 Such decisions limit the portability of mmh |
3570 if systems don't support these standardized and widespread functions. | 3570 if systems do not support these standardized and widespread functions. |
3571 This compromise is made because mmh focuses on the future. | 3571 This compromise is made because mmh focuses on the future. |
3572 .P | 3572 .P |
3573 I am not yet thirty years old and my C and Unix experience comprises | 3573 I am not yet thirty years old and my C and Unix experience comprises |
3574 only half a dozen years. | 3574 only half a dozen years. |
3575 Hence, I need to learn about the history in retrospective. | 3575 Hence, I need to learn about the history in retrospective. |
3761 .Fn profile . | 3761 .Fn profile . |
3762 The location of the profile is no longer fixed to | 3762 The location of the profile is no longer fixed to |
3763 .Fn $HOME/.mh_profile | 3763 .Fn $HOME/.mh_profile |
3764 but to | 3764 but to |
3765 .Fn $HOME/.mmh/profile . | 3765 .Fn $HOME/.mmh/profile . |
3766 Having both, the file | 3766 Having both the file |
3767 .Fn $HOME/.mh_profile | 3767 .Fn $HOME/.mh_profile |
3768 and the configuration directory | 3768 and the configuration directory |
3769 .Fn $HOME/.mmh | 3769 .Fn $HOME/.mmh |
3770 appeared to be inconsistent. | 3770 appeared to be inconsistent. |
3771 The approach chosen for mmh is consistent, simple, and familiar to | 3771 The approach chosen for mmh is consistent, simple, and familiar to |
3819 is built from | 3819 is built from |
3820 .Fn uip/rmm.c . | 3820 .Fn uip/rmm.c . |
3821 Some source files are used for multiple programs. | 3821 Some source files are used for multiple programs. |
3822 For example | 3822 For example |
3823 .Fn uip/scansbr.c | 3823 .Fn uip/scansbr.c |
3824 is used for both, | 3824 is used for both |
3825 .Pn scan | 3825 .Pn scan |
3826 and | 3826 and |
3827 .Pn inc . | 3827 .Pn inc . |
3828 In nmh, 49 tools were built from 76 source files. | 3828 In nmh, 49 tools were built from 76 source files. |
3829 This is a ratio of 1.6 source files per program. | 3829 This is a ratio of 1.6 source files per program. |
4043 .Pn grep | 4043 .Pn grep |
4044 would page without | 4044 would page without |
4045 .Pn more | 4045 .Pn more |
4046 just because both programs are part of the same code base. | 4046 just because both programs are part of the same code base. |
4047 .P | 4047 .P |
4048 The clear separation on the surface \(en the toolchest approach \(en | 4048 The clear separation on the surface \(en the tool chest approach \(en |
4049 is violated on the level below. | 4049 is violated on the level below. |
4050 This violation is for the sake of time performance. | 4050 This violation is for the sake of time performance. |
4051 On systems where | 4051 On systems where |
4052 .Fu fork() | 4052 .Fu fork() |
4053 and | 4053 and |