Mercurial > docs > master
comparison discussion.roff @ 168:277eeb5ba223
Applied suggestions by Lydi.
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Tue, 10 Jul 2012 11:46:20 +0200 |
parents | f102dcc06bb9 |
children | f4ffe121a0a2 |
comparison
equal
deleted
inserted
replaced
167:4b6518242c73 | 168:277eeb5ba223 |
---|---|
1516 | 1516 |
1517 .BU | 1517 .BU |
1518 .Sw -[no]preserve | 1518 .Sw -[no]preserve |
1519 of | 1519 of |
1520 .Pn refile | 1520 .Pn refile |
1521 was removed because what use was it anyway? | 1521 was removed |
1522 Quoting nmh's man page of | 1522 .Ci 8edc5aaf86f9f77124664f6801bc6c6cdf258173 |
1523 because what use was it anyway? | |
1524 Quoting nmh's man page | |
1523 .Mp refile (1): | 1525 .Mp refile (1): |
1524 .QS | 1526 .QS |
1525 Normally when a message is refiled, for each destination | 1527 Normally when a message is refiled, for each destination |
1526 folder it is assigned the number which is one above the current | 1528 folder it is assigned the number which is one above the current |
1527 highest message number in that folder. Use of the | 1529 highest message number in that folder. Use of the |
2000 .Pe automimeproc | 2002 .Pe automimeproc |
2001 must not be set in the profile. | 2003 must not be set in the profile. |
2002 But then the case of non-ASCII text without attachment headers was | 2004 But then the case of non-ASCII text without attachment headers was |
2003 not caught. | 2005 not caught. |
2004 All in all, the solution was complex and irritating. | 2006 All in all, the solution was complex and irritating. |
2005 My patch from December 2010 would have simplified the situation. | 2007 My patch from December 2010 |
2008 .[ | |
2009 nmh-workers attachment proposal | |
2010 .] | |
2011 would have simplified the situation. | |
2006 .P | 2012 .P |
2007 Mmh's current solution is even more elaborate. | 2013 Mmh's current solution is even more elaborate. |
2008 Any necessary MIMEification is done automatically. | 2014 Any necessary MIMEification is done automatically. |
2009 There is no `mime' command at the WhatNow prompt anymore. | 2015 There is no `mime' command at the WhatNow prompt anymore. |
2010 The draft will be converted automatically to MIME when either an | 2016 The draft will be converted automatically to MIME when either an |
2463 In the beginning, MH had the concept of a draft message. | 2469 In the beginning, MH had the concept of a draft message. |
2464 This is the file | 2470 This is the file |
2465 .Fn draft | 2471 .Fn draft |
2466 in the MH directory, which is treated special. | 2472 in the MH directory, which is treated special. |
2467 On composing a message, this draft file was used. | 2473 On composing a message, this draft file was used. |
2468 As the draft file was one particular file, only one draft could be | |
2469 managed at any time. | |
2470 When starting to compose another message before the former one was sent, | 2474 When starting to compose another message before the former one was sent, |
2471 the user had to decide among: | 2475 the user had to decide among: |
2472 .BU | 2476 .BU |
2473 Use the old draft to finish and send it before starting with a new one. | 2477 Using the old draft to finish and send it before starting with a new one. |
2474 .BU | 2478 .BU |
2475 Discard the old draft, replacing it with the new one. | 2479 Discarding the old draft and replacing it with a new one. |
2476 .BU | 2480 .BU |
2477 Preserve the old draft by refiling it to a folder. | 2481 Preserving the old draft by refiling it to a folder. |
2478 .P | 2482 .P |
2479 This was, it was only possible to work in alternation on multiple drafts. | 2483 It was only possible to work in alternation on multiple drafts. |
2480 Therefore, the current draft needed to be refiled to a folder and | 2484 Therefore, the current draft needed to be refiled to a folder and |
2481 another one re-using for editing. | 2485 another one re-used for editing. |
2482 Working on multiple drafts at the same time was impossible. | 2486 Working on multiple drafts at the same time was impossible. |
2483 The usual approach of switching to a different MH context did not | 2487 The usual approach of switching to a different MH context did not |
2484 change anything. | 2488 help anything. |
2485 .P | 2489 .P |
2486 The draft folder facility exists to | 2490 The draft folder facility exists to |
2487 allow true parallel editing of drafts, in a straight forward way. | 2491 allow true parallel editing of drafts, in a straight forward way. |
2488 It was introduced by Marshall T. Rose, already in 1984. | 2492 It was introduced by Marshall T. Rose, already in 1984. |
2489 Similar to other new features, the draft folder was inactive by default. | 2493 Similar to other new features, the draft folder was inactive by default. |
2524 by dropping the awkward draft message handling code. | 2528 by dropping the awkward draft message handling code. |
2525 .Sw -draft | 2529 .Sw -draft |
2526 switches were removed because operating on a draft message is no longer | 2530 switches were removed because operating on a draft message is no longer |
2527 special. | 2531 special. |
2528 It became indistinguishable to operating on any other message. | 2532 It became indistinguishable to operating on any other message. |
2529 There is no more need to query the user for draft handling. | 2533 .Ci 337338b404931f06f0db2119c9e145e8ca5a9860 |
2534 .P | |
2535 There is no more need to query the user for draft handling | |
2536 .Ci 2d48b455c303a807041c35e4248955f8bec59eeb . | |
2530 It is always possible to add another new draft. | 2537 It is always possible to add another new draft. |
2531 Refiling drafts is without difference to refiling other messages. | 2538 Refiling drafts is without difference to refiling other messages. |
2532 All these special cases are gone. | 2539 All of these special cases are gone. |
2533 Yet, one draft-related switch remained. | 2540 Yet, one draft-related switch remained. |
2534 .Pn comp | 2541 .Pn comp |
2535 still has | 2542 still has |
2536 .Sw -[no]use | 2543 .Sw -[no]use |
2537 for switching between two modes: | 2544 for switching between two modes: |
2538 .BU | 2545 .BU |
2539 .Sw -use : | 2546 .Sw -use |
2540 Modify an existing draft. | 2547 to modify an existing draft. |
2541 .BU | 2548 .BU |
2542 .Sw -nouse : | 2549 .Sw -nouse |
2543 Compose a new draft, possibly taking some existing message as a form. | 2550 to compose a new draft, possibly taking some existing message as template. |
2544 .P | 2551 .P |
2545 In either case, the behavior of | 2552 In either case, the behavior of |
2546 .Pn comp | 2553 .Pn comp |
2547 is deterministic. | 2554 is deterministic. |
2548 .P | 2555 .P |
2576 Historically, a message was ``deleted'' by prepending a specific | 2583 Historically, a message was ``deleted'' by prepending a specific |
2577 \fIbackup prefix\fP, usually the comma character, to the file name. | 2584 \fIbackup prefix\fP, usually the comma character, to the file name. |
2578 The specific file would then be ignored by MH because only files with | 2585 The specific file would then be ignored by MH because only files with |
2579 names consisting of digits only are treated as messages. | 2586 names consisting of digits only are treated as messages. |
2580 Although files remained in the file system, | 2587 Although files remained in the file system, |
2581 the messages were no more visible in MH. | 2588 the messages were no longer visible in MH. |
2582 To truly delete them, a maintenance job is needed. | 2589 To truly delete them, a maintenance job was needed. |
2583 Usually a cron job is installed to delete them after a grace time. | 2590 Usually a cron job was installed to delete them after a grace time. |
2584 For instance: | 2591 For instance: |
2585 .VS | 2592 .VS |
2586 find $HOME/Mail -type f -name ',*' -ctime +7 -delete | 2593 find $HOME/Mail -type f -name ',*' -ctime +7 -delete |
2587 VE | 2594 VE |
2588 In such a setup, the original message can be restored | 2595 In such a setup, the original message could be restored |
2589 within the grace time interval by stripping the | 2596 within the grace time interval by stripping the |
2590 backup prefix from the file name. | 2597 backup prefix from the file name. |
2591 But the user can not rely on this statement. | 2598 But the user could not rely on this statement. |
2592 If the last message of a folder with six messages (1-6) is removed, | 2599 If the last message of a folder with six messages (\fL1-6\fP) was removed, |
2593 message | 2600 message |
2594 .Fn 6 , | 2601 .Fn 6 , |
2595 becomes file | 2602 became file |
2596 .Fn ,6 . | 2603 .Fn ,6 . |
2597 If then a new message enters the same folder, it will be given | 2604 If then a new message entered the same folder, it would be named with |
2598 the number one higher than the highest message. | 2605 the number one above the highest existing message number. |
2599 In this case the message is named | 2606 In this case the message would be named |
2600 .Fn 6 | 2607 .Fn 6 |
2601 then. | 2608 then. |
2602 If this message is removed as well, | 2609 If this new message would be removed as well, |
2603 then the backup of the former message gets overwritten. | 2610 then the backup of the former message is overwritten. |
2604 Hence, the ability to restore removed messages does not only depend on | 2611 Hence, the ability to restore removed messages did not only depend on |
2605 the ``sweeping cron job'' but also on the removing of further messages. | 2612 the ``sweeping cron job'' but also on the removing of further messages. |
2606 It is undesirable to have such obscure and complex mechanisms. | 2613 It is undesirable to have such obscure and complex mechanisms. |
2607 The user should be given a small set of clear assertions. | 2614 The user should be given a small set of clear assertions, such as |
2608 ``Removed files are restorable within a seven-day grace time.'' | 2615 ``Removed files are restorable within a seven-day grace time.'' |
2609 is such a clear assertion. | |
2610 With the addition ``... unless a message with the same name in the | 2616 With the addition ``... unless a message with the same name in the |
2611 same folder is removed before.'' the statement becomes complex. | 2617 same folder is removed before.'' the statement becomes complex. |
2612 A user will hardly be able to keep track of any removal to know | 2618 A user will hardly be able to keep track of any removal to know |
2613 if the assertion still holds true for a specific file. | 2619 if the assertion still holds true for a specific file. |
2614 In practice, the real mechanism is unclear to the user. | 2620 In practice, the real mechanism is unclear to the user. |
2626 (previously named | 2632 (previously named |
2627 .Pe Delete-Prog ) | 2633 .Pe Delete-Prog ) |
2628 was introduced very early to improve the situation. | 2634 was introduced very early to improve the situation. |
2629 It could be set to any command, which would be executed to remove | 2635 It could be set to any command, which would be executed to remove |
2630 the specified messages. | 2636 the specified messages. |
2631 This would override the default action, described above. | 2637 This would override the default action described above. |
2632 Refiling the to-be-removed files to a garbage folder is the usual example. | 2638 Refiling the to-be-removed files to a trash folder is the usual example. |
2633 Nmh's man page | 2639 Nmh's man page |
2634 .Mp rmm (1) | 2640 .Mp rmm (1) |
2635 proposes to set the | 2641 proposes to set the |
2636 .Pe rmmproc | 2642 .Pe rmmproc |
2637 to | 2643 to |
2638 .Cl "refile +d | 2644 .Cl "refile +d |
2639 to move messages to the garbage folder, | 2645 to move messages to the trash folder, |
2640 .Fn +d , | 2646 .Fn +d , |
2641 instead of renaming them with the backup prefix. | 2647 instead of renaming them with the backup prefix. |
2642 The man page proposes additionally the expunge command | 2648 The man page proposes additionally the expunge command |
2643 .Cl "rm `mhpath +d all` | 2649 .Cl "rm `mhpath +d all` |
2644 to empty the garbage folder. | 2650 to empty the trash folder. |
2645 .P | 2651 .P |
2646 Removing messages in such a way has advantages. | 2652 Removing messages in such a way has advantages. |
2647 The mail storage is prevented from being cluttered with removed messages | 2653 The mail storage is prevented from being cluttered with removed messages |
2648 because they are all collected in one place. | 2654 because they are all collected in one place. |
2649 Existing and removed messages are thus separated more strictly. | 2655 Existing and removed messages are thus separated more strictly. |
2668 To sweep it clean, the user can use | 2674 To sweep it clean, the user can use |
2669 .Cl "rmm -unlink +trash a" , | 2675 .Cl "rmm -unlink +trash a" , |
2670 where the | 2676 where the |
2671 .Sw -unlink | 2677 .Sw -unlink |
2672 switch causes the files to be unlinked. | 2678 switch causes the files to be unlinked. |
2673 .P | 2679 .Ci 8edc5aaf86f9f77124664f6801bc6c6cdf258173 |
2674 Dropping the legacy approach and completely converting to the new approach | 2680 .Ci ca0b3e830b86700d9e5e31b1784de2bdcaf58fc5 |
2681 .P | |
2682 Dropping the legacy approach and converting to the new approach completely | |
2675 simplified the code base. | 2683 simplified the code base. |
2676 The relationship between | 2684 The relationship between |
2677 .Pn rmm | 2685 .Pn rmm |
2678 and | 2686 and |
2679 .Pn refile | 2687 .Pn refile |
2737 The point is not the customization of the setup, | 2745 The point is not the customization of the setup, |
2738 but the need to activate generally useful facilities. | 2746 but the need to activate generally useful facilities. |
2739 .P | 2747 .P |
2740 Yet, the real problem lies less in enabling the features, as this is | 2748 Yet, the real problem lies less in enabling the features, as this is |
2741 straight forward as soon as one knows what he wants. | 2749 straight forward as soon as one knows what he wants. |
2742 The real problem is that new users need deep insights into the project | 2750 The real problem is that new users need deep insight into the project |
2743 before they find out what they are missing and that nmh actually | 2751 to find out about inactive features nmh already provides. |
2744 provides it already, it just was not activated. | |
2745 To give an example, I needed one year of using nmh | 2752 To give an example, I needed one year of using nmh |
2746 before I became aware of the existence of the attachment system. | 2753 before I became aware of the existence of the attachment system. |
2747 One could argue that this fact disqualifies my reading of the | 2754 One could argue that this fact disqualifies my reading of the |
2748 documentation. | 2755 documentation. |
2749 If I would have installed nmh from source back then, I could agree. | 2756 If I would have installed nmh from source back then, I could agree. |
2762 we should spare them further inconveniences. | 2769 we should spare them further inconveniences. |
2763 .P | 2770 .P |
2764 Maintaining compatibility for its own sake is bad, | 2771 Maintaining compatibility for its own sake is bad, |
2765 because the code base collects more and more compatibility code. | 2772 because the code base collects more and more compatibility code. |
2766 Sticking to the compatiblity code means remaining limited; | 2773 Sticking to the compatiblity code means remaining limited; |
2767 not using it renders it unnecessary. | 2774 whereas adjusting to the changes renders the compatibility unnecessary. |
2768 Keeping unused alternative in the code is a bad choice as they likely | 2775 Keeping unused alternatives in the code is a bad choice as they likely |
2769 gather bugs, by not being well tested. | 2776 gather bugs, by not being well tested. |
2770 Also, the increased code size and the greater number of conditions | 2777 Also, the increased code size and the greater number of conditions |
2771 increase the maintenance costs. | 2778 increase the maintenance costs. |
2772 If any MH implementation would be the back-end of widespread | 2779 If any MH implementation would be the back-end of widespread |
2773 email clients with large user bases, compatibility would be more | 2780 email clients with large user bases, compatibility would be more |
2776 Hence, compatibility is hardly important for technical reasons. | 2783 Hence, compatibility is hardly important for technical reasons. |
2777 Its importance originates rather from personal reasons. | 2784 Its importance originates rather from personal reasons. |
2778 Nmh's user base is small and old. | 2785 Nmh's user base is small and old. |
2779 Changing the interfaces would cause inconvenience to long-term users of MH. | 2786 Changing the interfaces would cause inconvenience to long-term users of MH. |
2780 It would force them to change their many years old MH configurations. | 2787 It would force them to change their many years old MH configurations. |
2781 I do understand this aspect, but it keeps new users from using MH. | 2788 I do understand this aspect, but by sticking to the old users, |
2782 By sticking to the old users, new users are kept away. | 2789 new users are kept away. |
2783 Yet, the future lies in new users. | 2790 Yet, the future lies in new users. |
2784 Hence, mmh invites new users by providing a convenient and modern setup, | 2791 In consequence, mmh invites new users by providing a convenient |
2785 readily usable out-of-the-box. | 2792 and modern setup, readily usable out-of-the-box. |
2786 .P | 2793 .P |
2787 In mmh, all modern features are active by default and many previous | 2794 In mmh, all modern features are active by default and many previous |
2788 approaches are removed or only accessible in manual ways. | 2795 approaches are removed or only accessible in manual ways. |
2789 New default features include: | 2796 New default features include: |
2790 .BU | 2797 .BU |
2807 Forwarding messages using MIME. | 2814 Forwarding messages using MIME. |
2808 .Ci 6e271608b7b9c23771523f88d23a4d3593010cf1 | 2815 .Ci 6e271608b7b9c23771523f88d23a4d3593010cf1 |
2809 .P | 2816 .P |
2810 In consequence, a setup with a profile that defines only the path to the | 2817 In consequence, a setup with a profile that defines only the path to the |
2811 mail storage, is already convenient to use. | 2818 mail storage, is already convenient to use. |
2812 Again, Paul Vixie's ``edginess'' appeal supports the direction I took: | 2819 Again, Paul Vixie's ``edginess'' call supports the direction I took: |
2813 ``the `main branch' should just be modern''. | 2820 ``the `main branch' should just be modern''. |
2814 .[ | 2821 .[ |
2815 paul vixie edginess nmh-workers | 2822 paul vixie edginess nmh-workers |
2816 .] | 2823 .] |
2817 | 2824 |
2830 .QS | 2837 .QS |
2831 Chapter 1 discusses programming style. | 2838 Chapter 1 discusses programming style. |
2832 Good style is so important to good programming that we have chose | 2839 Good style is so important to good programming that we have chose |
2833 to cover it first. | 2840 to cover it first. |
2834 .QE | 2841 .QE |
2835 This section covers changes in mmh that were motivated by the desire | 2842 This section covers changes in mmh that were guided by the desire |
2836 to improve on style. | 2843 to improve on style. |
2837 Many of them follow the rules given in the quoted book. | 2844 Many of them follow the rules given in the quoted book. |
2838 .[ | 2845 .[ |
2839 kernighan pike practice of programming | 2846 kernighan pike practice of programming |
2840 .] | 2847 .] |
2846 .Id code-style | 2853 .Id code-style |
2847 .P | 2854 .P |
2848 .U3 "Indentation Style | 2855 .U3 "Indentation Style |
2849 .P | 2856 .P |
2850 Indentation styles are the holy cow of programmers. | 2857 Indentation styles are the holy cow of programmers. |
2851 Again Kernighan and Pike: | 2858 Kernighan and Pike |
2852 .[ [ | 2859 .[ [ |
2853 kernighan pike practice of programming | 2860 kernighan pike practice of programming |
2854 .], p. 10] | 2861 .], p. 10] |
2862 wrote: | |
2855 .QS | 2863 .QS |
2856 Programmers have always argued about the layout of programs, | 2864 Programmers have always argued about the layout of programs, |
2857 but the specific style is much less important than its consistent | 2865 but the specific style is much less important than its consistent |
2858 application. | 2866 application. |
2859 Pick one style, preferably ours, use it consistently, and don't waste | 2867 Pick one style, preferably ours, use it consistently, and don't waste |
2999 .Pn anno | 3007 .Pn anno |
3000 had six functional command line switches, | 3008 had six functional command line switches, |
3001 .Sw -component | 3009 .Sw -component |
3002 and | 3010 and |
3003 .Sw -text , | 3011 .Sw -text , |
3004 which took an argument each, | 3012 which have an argument each, |
3005 and the two pairs of flags, | |
3006 .Sw -[no]date | |
3007 and | |
3008 .Sw -[no]inplace., | |
3009 .Sw -component | |
3010 and | |
3011 .Sw -text , | |
3012 which took an argument each, | |
3013 and the two pairs of flags, | 3013 and the two pairs of flags, |
3014 .Sw -[no]date | 3014 .Sw -[no]date |
3015 and | 3015 and |
3016 .Sw -[no]inplace . | 3016 .Sw -[no]inplace . |
3017 Then Jon Steinhart introduced his attachment system. | 3017 Then Jon Steinhart introduced his attachment system. |
3298 All of the functions return pointers to static memory. | 3298 All of the functions return pointers to static memory. |
3299 All three functions are implemented in | 3299 All three functions are implemented in |
3300 .Fn sbr/path.c . | 3300 .Fn sbr/path.c . |
3301 .Fn sbr/m_maildir.c | 3301 .Fn sbr/m_maildir.c |
3302 is removed. | 3302 is removed. |
3303 .Ci d39e2c447b0d163a5a63f480b23d06edb7a73aa0 | |
3303 .P | 3304 .P |
3304 Along with the path conversion rework, I also replaced | 3305 Along with the path conversion rework, I also replaced |
3305 .Fu getfolder(FDEF) | 3306 .Fu getfolder(FDEF) |
3306 with | 3307 with |
3307 .Fu getdeffol() | 3308 .Fu getdeffol() |
3313 .Fu expandfol("@") . | 3314 .Fu expandfol("@") . |
3314 This code was moved from | 3315 This code was moved from |
3315 .Fn sbr/getfolder.c | 3316 .Fn sbr/getfolder.c |
3316 to | 3317 to |
3317 .Fn sbr/path.c . | 3318 .Fn sbr/path.c . |
3319 .Ci d39e2c447b0d163a5a63f480b23d06edb7a73aa0 | |
3318 .P | 3320 .P |
3319 The related function | 3321 The related function |
3320 .Fu etcpath() | 3322 .Fu etcpath() |
3321 was moved to | 3323 was moved to |
3322 .Fn sbr/path.c , | 3324 .Fn sbr/path.c , |
3323 too. | 3325 too |
3326 .Ci b4c29794c12099556151d93a860ee51badae2e35 . | |
3324 Previously, it had been located in | 3327 Previously, it had been located in |
3325 .Fn config/config.c , | 3328 .Fn config/config.c , |
3326 for whatever reasons. | 3329 for whatever reasons. |
3327 .P | 3330 .P |
3328 .Fn sbr/path.c | 3331 .Fn sbr/path.c |
3329 now contains all path handling code. | 3332 now contains all path handling code. |
3330 Only 173 lines of code were needed to replace the previous 252 lines. | 3333 Only 173 lines of code were needed to replace the previous 252 lines. |
3331 The readability of the code is highly improved. | 3334 The readability of the code is highly improved. |
3332 Additionally, each of the six exported and one static functions | 3335 Additionally, each of the six exported and one static functions |
3333 is introduced by an explaining comment. | 3336 is introduced by an explaining comment. |
3334 .Ci d39e2c447b0d163a5a63f480b23d06edb7a73aa0 | |
3335 | 3337 |
3336 | 3338 |
3337 | 3339 |
3338 | 3340 |
3339 .H2 "Profile Reading | 3341 .H2 "Profile Reading |
3770 and the configuration directory | 3772 and the configuration directory |
3771 .Fn $HOME/.mmh | 3773 .Fn $HOME/.mmh |
3772 appeared to be inconsistent. | 3774 appeared to be inconsistent. |
3773 The approach chosen for mmh is consistent, simple, and familiar to | 3775 The approach chosen for mmh is consistent, simple, and familiar to |
3774 Unix users. | 3776 Unix users. |
3775 .P | 3777 .Ci 7030d7edb099bff36ded7548bb5380f7acab4f9b |
3776 MH allows users to have multiiple MH setups. | 3778 .P |
3779 MH allows users to have multiple MH setups. | |
3777 Therefore, it is necessary to select a different profile. | 3780 Therefore, it is necessary to select a different profile. |
3778 The profile is the single entry point to access the rest of a | 3781 The profile is the single entry point to access the rest of a |
3779 personal MH setup. | 3782 personal MH setup. |
3780 In nmh, the environment variable | 3783 In nmh, the environment variable |
3781 .Ev MH | 3784 .Ev MH |
3794 and | 3797 and |
3795 .Ev MMHC | 3798 .Ev MMHC |
3796 override the paths to the profile and context files, respectively. | 3799 override the paths to the profile and context files, respectively. |
3797 This approach allows the set of personal configuration files to be chosen | 3800 This approach allows the set of personal configuration files to be chosen |
3798 independently from the profile, context, and mail storage. | 3801 independently from the profile, context, and mail storage. |
3802 .Ci 7030d7edb099bff36ded7548bb5380f7acab4f9b | |
3799 .P | 3803 .P |
3800 The separation of the files by type is sensible and convenient. | 3804 The separation of the files by type is sensible and convenient. |
3801 The new approach has no functional disadvantages, | 3805 The new approach has no functional disadvantages, |
3802 as every setup I can imagine can be implemented with both approaches, | 3806 as every setup I can imagine can be implemented with both approaches, |
3803 possibly even easier with the new approach. | 3807 possibly even easier with the new approach. |
3889 other MIME handling tools. | 3893 other MIME handling tools. |
3890 It seems to be worthwhile to bundle the generic MIME handling code into | 3894 It seems to be worthwhile to bundle the generic MIME handling code into |
3891 a MH-MIME library, as a companion to the MH standard library. | 3895 a MH-MIME library, as a companion to the MH standard library. |
3892 This is left open for the future. | 3896 This is left open for the future. |
3893 .P | 3897 .P |
3894 The work already done, focussed on the non-MIME tools. | 3898 The work already done focussed on the non-MIME tools. |
3895 The amount of code compiled into each program was reduced. | 3899 The amount of code compiled into each program was reduced. |
3896 This eases the understanding of the code base. | 3900 This eases the understanding of the code base. |
3897 In nmh, | 3901 In nmh, |
3898 .Pn comp | 3902 .Pn comp |
3899 was built from six source files: | 3903 was built from six source files: |
4074 .Pn comp | 4078 .Pn comp |
4075 invokes | 4079 invokes |
4076 .Pn whatnow | 4080 .Pn whatnow |
4077 which thereafter invokes | 4081 which thereafter invokes |
4078 .Pn send . | 4082 .Pn send . |
4083 .Ci 3df5ab3c116e6d4a2fb4bb5cc9dfc5f781825815 | |
4084 .Ci c73c00bfccd22ec77e9593f47462aeca4a8cd9c0 | |
4079 The clear separation on the surface is maintained on the level below. | 4085 The clear separation on the surface is maintained on the level below. |
4080 Human users and the tools use the same interface \(en | 4086 Human users and the tools use the same interface \(en |
4081 annotations, for example, are made by invoking | 4087 annotations, for example, are made by invoking |
4082 .Pn anno , | 4088 .Pn anno , |
4083 no matter if requested by programs or by human beings. | 4089 no matter if requested by programs or by human beings. |
4090 .Ci 469a4163c2a1a43731d412eaa5d9cae7d670c48b | |
4091 .Ci aed384169af5204b8002d06e7a22f89197963d2d | |
4092 .Ci 3caf9e298a8861729ca8b8a84f57022b6f3ea742 | |
4084 The decrease of tools built from multiple source files and thus | 4093 The decrease of tools built from multiple source files and thus |
4085 the decrease of | 4094 the decrease of |
4086 .Fn uip/*sbr.c | 4095 .Fn uip/*sbr.c |
4087 files confirm the improvement. | 4096 files confirm the improvement. |
4097 .Ci 9e6d91313f01c96b4058d6bf419a8ca9a207bc33 | |
4098 .ci 81744a46ac9f845d6c2b9908074d269275178d2e | |
4099 .Ci f0f858069d21111f0dbea510044593f89c9b0829 | |
4100 .Ci 0503a6e9be34f24858b55b555a5c948182b9f24b | |
4101 .Ci 27826f9353e0f0b04590b7d0f8f83e60462b90f0 | |
4102 .Ci d1da1f94ce62160aebb30df4063ccbc53768656b | |
4103 .Ci c42222869e318fff5dec395eca3e776db3075455 | |
4088 .P | 4104 .P |
4089 .\" XXX move this paragraph up somewhere | 4105 .\" XXX move this paragraph up somewhere |
4090 One disadvantage needs to be taken with this change: | 4106 One disadvantage needs to be taken with this change: |
4091 The compiler can no longer check the integrity of the interfaces. | 4107 The compiler can no longer check the integrity of the interfaces. |
4092 By changing the command line interfaces of tools, it is | 4108 By changing the command line interfaces of tools, it is |