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