# HG changeset patch # User markus schnalke # Date 1342370495 -7200 # Node ID 95257474a1237208e8e182962195447a8a3ceb50 # Parent 8c537982d718c61f65873c78c4d7f8fbcccc4946 Further improvements in the discussion; added build dependency graphs. diff -r 8c537982d718 -r 95257474a123 discussion.roff --- a/discussion.roff Sat Jul 14 23:19:27 2012 +0200 +++ b/discussion.roff Sun Jul 15 18:41:35 2012 +0200 @@ -461,6 +461,7 @@ conflicts with the basic concept of MH. These two tools might still be useful, but they should not be part of mmh. .P +.Id slocal Finally, there is .Pn slocal , which is an MDA and thus not directly MUA-related. @@ -3407,12 +3408,13 @@ .H2 "Profile Reading .P -The MH profile contains the configuration for the user-specific MH setup. -MH tools read the profile right after starting up, -as it contains the location of the user's mail storage +The MH profile contains the configuration of a user-specific MH setup. +MH tools read the profile right after starting up +because it contains the location of the user's mail storage and similar settings that influence the whole setup. -Furthermore, the profile contains the default switches for the tools, -hence, it must be read before the command line switches are processed. +Furthermore, the profile contains the default switches for the tools +as well. +The context file is read along with the profile. .P For historic reasons, some MH tools did not read the profile and context. Among them were @@ -3422,11 +3424,12 @@ and .Pn slocal . The reason why these tools ignored the profile were not clearly stated. -During the discussion on the nmh-workers mailing list, +During a discussion on the nmh-workers mailing list, David Levine posted an explanation, quoting John Romine: .[ nmh-workers levine post profile .] + .QS I asked John Romine and here's what he had to say, which agrees and provides an example that convinces me: @@ -3458,14 +3461,16 @@ .Pn whatnow do this). .QE +.sp \n(PDu I think that's the way to go. My personal preference is to use a command line option, not an environment variable. .QE + .P -To solve the problem of +To solve the problem that .Pn post -not honoring the +does not honor the .Pe fileproc profile entry, the community roughly agreed that a switch @@ -3475,50 +3480,50 @@ to be able to pass a different fileproc. I strongly disagree with this approach because it does not solve the problem; it only removes a single symptom. -The problem is that +The actual problem is that .Pn post -does not behave as expected. -But all programs should behave as expected. -Clear and simple concepts are a precondition for this. -Hence, the real solution is having all MH tools read the profile. +does not behave as expected, +though all programs should behave as expected. +Clear and general concepts are a precondition for this. +Thus, there should be no separation into ``front-end UI programs'' +and ones that ``should not be called by users directly''. +The real solution is having all MH tools read the profile. .P -The problem has a further aspect. -It mainly originates in -.Pn mhmail . +But the problem has a further aspect, +which originates from +.Pn mhmail +mainly. .Pn mhmail was intended to be a replacement for .Pn mailx on systems with MH installations. +In difference to +.Pn mailx , .Pn mhmail -should have been able to use just like -.Pn mailx , -but sending the message via MH's +used MH's .Pn post -instead of -.Pn sendmail . -Using +to send the message. +The idea was that using .Pn mhmail -should not be influenced by the question whether the user had +should not be influenced whether the user had MH set up for himself or not. +Therefore .Pn mhmail -did not read the profile as this requests the user to set up MH -if not done yet. +had not read the profile. As .Pn mhmail used .Pn post , .Pn post -could not read the profile neither. -This is the reason why -.Pn post -does not read the profile. +was not allowed to read the profile neither. This is the reason for the actual problem. -It was not much of a problem because +Yet, this was not considered much of a problem because .Pn post was not intended to be used by users directly. +To invoke +.Pn post , .Pn send -is the interactive front-end to -.Pn post . +was used an a front-end. .Pn send read the profile and passed all relevant values on the command line to .Pn post @@ -3526,23 +3531,76 @@ .P The important insight is that .Pn mhmail -is no true MH tool. -The concepts broke because this outlandish tool was treated as any other -MH tool. +is a wolf in sheep's clothing. +This alien tool broke the concepts because it was treated like +a normal MH tool. Instead it should have been treated accordingly to its foreign style. -The solution is not to prevent the tools reading the profile but -to instruct them reading a different profile. +.P +The solution is not to prevent the tools from reading the profile but +to instruct them to read a different profile. .Pn mhmail -could have set up a well-defined profile and caused all MH tools -in the session to use it by exporting an environment variable. -With this approach, no special cases would have been introduced, -no surprises would have been caused. -By writing a clean-profile-wrapper, the concept could have been -generalized orthogonally to the whole MH tool chest. -Then Rose's motivation behind the decision that +could have set up a well-defined profile and caused the following .Pn post -ignores the profile, as quoted by Jeffrey Honig, -would have become possible: +to use this profile by exporting an environment variable. +With this approach, no special cases would have been introduced +and no surprises would have been caused. +By writing a wrapper program to provide a clean temporary profile, +the concept could have been generalized orthogonally to the whole +MH tool chest. +.P +In mmh, the wish to have +.Pn mhmail +as a replacement for +.Pn mailx +is considered obsolete. +Mmh's +.Pn mhmail +does no longer cover this use-case +.Ci d36e56e695fe1c482c7920644bfbb6386ac9edb0 . +Currently, +.Pn mhmail +is in a transition state +.Ci 32d4f9daaa70519be3072479232ff7be0500d009 . +It may become a front-end to +.Pn comp , +which provides an alternative interface which can be more convenient +in some cases. +This would convert +.Pn mhmail +into an ordinary MH tool. +If, however, this idea does not convince, then +.Pn mhmail +will be removed. +.P +In the mmh tool chest, every program reads the profile. +(\c +.Pn slocal +is not considered part of the mmh tool chest (cf. Sec. +.Cf slocal ).) +Mmh has no +.Pn post +program, but it has +.Pn spost , +which now does read the profile +.Ci 3e017a7abbdf69bf0dff7a4073275961eda1ded8 . +Following this change, +.Pn send +and +.Pn spost +can be considered for merging. +Besides +.Pn send , +.Pn spost +is only invoked directly by the to-be-changed +.Pn mhmail +implementation and by +.Pn rcvdist , +which requires rework anyway. + +.P +Jeffrey Honig quoted Marshall T. Rose explaining the decision that +.Pn post +ignores the profile: .[ nmh-workers honig post profile .] @@ -3552,62 +3610,18 @@ when you run a command by hand, then you want your own defaults... .QE .LP -Yet, I consider this explanation shortsighted. -We should rather regard theses two cases as just two different MH setups, -based on two different profiles. -Mapping such problems on the concepts of switching between different -profiles, solves them once for all. -.P -In mmh, the wish to have -.Pn mhmail -as a replacement for -.Pn mailx -is considered obsolete. -Mmh's -.Pn mhmail -does no longer cover this use-case. -Currently, -.Pn mhmail -is in a transition state. -.Ci 32d4f9daaa70519be3072479232ff7be0500d009 -It may become a front-end to -.Pn comp , -which provides an interface more convenient in some cases. -In this case, -.Pn mhmail -will become an ordinary MH tool, reading the profile. -If, however, this idea will not convince, then -.Pn mhmail -will be removed. -.P -Every program in the mmh tool chest reads the profile. -The only exception is -.Pn slocal , -which is not considered part of the mmh tool chest. -This MDA is only distributed with mmh, currently. -Mmh has no -.Pn post -program, but -.Pn spost , -which now reads the profile. -.Ci 3e017a7abbdf69bf0dff7a4073275961eda1ded8 -With this change, -.Pn send -and -.Pn spost -can be considered to be merged. -.Pn spost -is only invoked directly by the to-be-changed -.Pn mhmail -implementation and by -.Pn rcvdist , -which will require rework. -.P -The -.Fu context_foil() -function to pretend to have read an empty profile was removed. -.Ci 68af8da96bea87a5541988870130b6209ce396f6 -All mmh tools read the profile. +The explanation neither matches the problem concered exactly +nor is the interpretation clear. +If the described desire addresses the technical level, +then it conflicts fundametally with the Unix philosophy, +precisely because the indistinquishability of human and script +input is the main reason for the huge software leverage in Unix. +If, however, the described desire addresses the user's view, +then different technical solutions are more appropriate. +The two cases can be regarded simply as two different MH setups. +Hence, mapping the problem of different behavior between interactive and +automated use on the concept of switching between different profiles, +marks it already solved. @@ -3615,89 +3629,89 @@ .P MH is one decade older than the POSIX and ANSI C standards. Hence, MH included own implementations of functions -that are standardized and thus widely available today, -but were not back then. -Today, twenty years after the POSIX and ANSI C were published, -developers can expect systems to comply with these standards. +that were neither standardized nor widely available, back then. +Today, twenty years after POSIX and ANSI C were published, +developers can expect that systems comply with these standards. In consequence, MH-specific replacements for standard functions can and should be dropped. -Kernighan and Pike advise: ``Use standard libraries.'' +Kernighan and Pike advise: ``Use standard libraries''. .[ [ kernighan pike practice of programming .], p. 196] Actually, MH had followed this advice in history, -but it had not adjusted to the changes in this field. +but it had not adjusted to more recent changes in this field. The .Fu snprintf() function, for instance, was standardized with C99 and is available almost everywhere because of its high usefulness. -The project's own implementation of +Thus, the project's own implementation of .Fu snprintf() was dropped in March 2012 in favor for using the one of the -standard library. -.Ci 0052f1024deb0a0a2fc2e5bacf93d45a5a9c9b32 +standard library +.Ci 0052f1024deb0a0a2fc2e5bacf93d45a5a9c9b32 . Such decisions limit the portability of mmh if systems do not support these standardized and widespread functions. This compromise is made because mmh focuses on the future. .P .\" XXX kuerzen und mit dem naechsten Absatz vereinen -I am still in my twenties and my C and Unix experience comprises -only half a dozen years. -Hence, I need to learn about the history in retrospective. -I have not used those ancient constructs myself. -I have not suffered from their incompatibilities. +As I am still in my twenties, have no programming experience from +past decades. +I have not followed the evolution of C through time. +I have not suffered from the the Unix wars. I have not longed for standardization. All my programming experience is from a time when ANSI C and POSIX were well established already. +Thus, I needed to learn about the history in retrospective. I have only read a lot of books about the (good) old times. -This puts me in a difficult position when working with old code. +This put me in a difficult position when working with old code. I need to freshly acquire knowledge about old code constructs and ancient programming styles, whereas older programmers know these things by heart from their own experience. -.P Being aware of the situation, I rather let people with more historic -experience replace ancient code constructs with standardized ones. +experience do the transition from ancient code constructs to +standardized ones. Lyndon Nerenberg covered large parts of this task for the nmh project. He converted project-specific functions to POSIX replacements, also removing the conditionals compilation of now standardized features. -Ken Hornstein and David Levine had their part in the work, too. -Often, I only needed to pull over changes from nmh into mmh. -These changes include many commits; these are among them: +Ken Hornstein and David Levine had their part in this work, as well. +Often, I only pulled the changes over from nmh into mmh. +These changes include many commits, among them: .Ci 768b5edd9623b7238e12ec8dfc409b82a1ed9e2d .Ci 0052f1024deb0a0a2fc2e5bacf93d45a5a9c9b32 . .P -During my own work, I tidied up the \fIMH standard library\fP, -.Fn libmh.a , -which is located in the +Nevertheless, I worked on the task as well, tidying up the +\fIMH standard library\fP, +.Fn libmh.a . +It is located in the .Fn sbr -(``subroutines'') directory in the source tree. -The MH library includes functions that mmh tools usually need. +(``subroutines'') directory in the source tree and +includes functions that mmh tools usually need. Among them are MH-specific functions for profile, context, sequence, and folder handling, but as well MH-independent functions, such as auxiliary string functions, portability interfaces and error-checking wrappers for critical functions of the standard library. -.P +.BU I have replaced the .Fu atooi() function with calls to +.Fu strtoul() , +setting the third parameter, the base, to eight. .Fu strtoul() -with the third parameter, the base, set to eight. -.Fu strtoul() -is part of C89 and thus considered safe to use. -.Ci c490c51b3c0f8871b6953bd0c74551404f840a74 -.P +is part of C89 and thus considered safe to use +.Ci c490c51b3c0f8871b6953bd0c74551404f840a74 . +.BU I did remove project-included fallback implementations of .Fu memmove() and -.Fu strerror() , +.Fu strerror() +.Ci b067ff5c465a5d243ce5a19e562085a9a1a97215 , although Peter Maydell had re-included them into nmh in 2008 to support SunOS 4. Nevertheless, these functions are part of ANSI C. Systems that do not even provide full ANSI C support should not put a load on mmh. -.Ci b067ff5c465a5d243ce5a19e562085a9a1a97215 -.P +.BU The .Fu copy() function copies the string in parameter one to the location in @@ -3718,9 +3732,9 @@ .Fu copy() was moved into the source file of .Fu concat() -and its visibility is now limited to it. -.Ci 552fd7253e5ee9e554c5c7a8248a6322aa4363bb -.P +and its visibility it limited to that +.Ci 552fd7253e5ee9e554c5c7a8248a6322aa4363bb . +.BU The function .Fu r1bindex() had been a generalized version of @@ -3728,7 +3742,7 @@ with minor differences. As all calls to .Fu r1bindex() -had the slash (`/') as delimiter anyway, +had the slash (`\fL/\fP') as delimiter anyway, replacing .Fu r1bindex() with the more specific and better-named function @@ -3743,23 +3757,24 @@ .Fu r1bindex() was kept but renamed to .Fu mhbasename() , -fixing the delimiter to the slash. -.Ci 240013872c392fe644bd4f79382d9f5314b4ea60 +setting the delimiter to the slash +.Ci 240013872c392fe644bd4f79382d9f5314b4ea60 . For possible uses of .Fu r1bindex() with a different delimiter, the ANSI C function .Fu strrchr() provides the core functionality. -.P +.BU The .Fu ssequal() function \(en apparently for ``substring equal'' \(en was renamed to .Fu isprefix() , -because this is what it actually checks. -.Ci c20b4fa14515c7ab388ce35411d89a7a92300711 -Its source file had included the following comments, no joke. +because this is what it actually checked +.Ci c20b4fa14515c7ab388ce35411d89a7a92300711. +Its source file had included both of the following comments, no joke. +.in -\n(PIu .VS /* * THIS CODE DOES NOT WORK AS ADVERTISED. @@ -3774,9 +3789,10 @@ * If yes, then return 1, else return 0. */ VE -Two months later, it was completely removed by replacing it with -.Fu strncmp() . -.Ci b0b1dd37ff515578cf7cba51625189eb34a196cb +.in +\n(PIu +Eventually, the function was completely replaced with calls to +.Fu strncmp() +.Ci b0b1dd37ff515578cf7cba51625189eb34a196cb . @@ -3792,96 +3808,91 @@ It also contains the location of the MH directory in the profile entry .Pe Path . The MH directory contains the mail storage and is the first -place to search for personal forms, scan formats, and similar +place to search for form files, scan formats, and similar configuration files. The location of the MH directory can be chosen freely by the user. -The default and usual name is a directory named +The usual name is a directory named .Fn Mail -in the home directory. +in the user's home directory. .P The way MH data is split between profile and MH directory is a legacy. It is only sensible in a situation where the profile is the only configuration file. Why else should the mail storage and the configuration files be intermixed? -They are different kinds of data: -The data to be operated on and the configuration to change how -tools operate. -.\" XXX bad ... inapropriate? +They are of different kind: +One kind is the data to be operated on and the other kind is +the configuration to change how tools operate. Splitting the configuration between the profile and the MH directory -is bad. -Merging the mail storage and the configuration in one directory is bad -as well. -As the mail storage and the configuration were not separated sensibly -in the first place, I did it now. +is inappropriate, as well. +I improved the situation by breaking compatibility. .P -Personal mmh data is grouped by type, resulting in two distinct parts: +In mmh, personal data is grouped by type. +This results in two distinct parts: the mail storage and the configuration. -In mmh, the mail storage directory still contains all the messages, +The mail storage directory still contains all the messages, but, in exception of public sequences files, nothing else. In difference to nmh, the auxiliary configuration files are no longer located there. Therefore, the directory is no longer called the user's \fIMH directory\fP -but his \fImail storage\fP. +but the user's \fImail storage\fP. Its location is still user-chosen, with the default name -.Fn Mail , +.Fn Mail in the user's home directory. -In mmh, the configuration is grouped together in -the hidden directory +The configuration is grouped together in the hidden directory .Fn \&.mmh in the user's home directory. This \fImmh directory\fP contains the context file, personal forms, scan formats, and the like, but also the user's profile, now named .Fn profile . -The location of the profile is no longer fixed to +The path to the profile is no longer .Fn $HOME/.mh_profile -but to +but .Fn $HOME/.mmh/profile . -Having both the file +(The alternative of having file .Fn $HOME/.mh_profile -and the configuration directory +and a configuration directory .Fn $HOME/.mmh -appeared to be inconsistent. +appeared to be inconsistent.) +.P The approach chosen for mmh is consistent, simple, and familiar to Unix users. +The main achievement of the change is the clear and sensible separation +of the mail storage and the configuration. .Ci 7030d7edb099bff36ded7548bb5380f7acab4f9b .P -MH allows users to have multiple MH setups. -Therefore, it is necessary to select a different profile. +As MH allows users to have multiple MH setups, +it is necessary to switch the profile. The profile is the single entry point to access the rest of a personal MH setup. In nmh, the environment variable .Ev MH -could be used to specify a different profile. -To operate in the same MH setup with a separate context, -the +is used to specify a different profile. +To operate in the same MH setup with a separate context, the .Ev MHCONTEXT -environment variable could be used. -This allows having own current folders and current messages in -each terminal, for instance. -In mmh, three environment variables are used. +environment variable is used. +This allows having a separate current folder in each terminal at +the same time, for instance. +In mmh, three environment variables replace the two of nmh. .Ev MMH overrides the default location of the mmh directory (\c .Fn .mmh ). .Ev MMHP and .Ev MMHC -override the paths to the profile and context files, respectively. +override the paths to the profile and context file, respectively. This approach allows the set of personal configuration files to be chosen -independently from the profile, context, and mail storage. -.Ci 7030d7edb099bff36ded7548bb5380f7acab4f9b -.P -The separation of the files by type is sensible and convenient. +independently of the profile, context, and mail storage. The new approach has no functional disadvantages, as every setup I can imagine can be implemented with both approaches, -possibly even easier with the new approach. -The main achievement of the change is the clear and sensible split -between mail storage and configuration. +possibly even easier with the new one. +.Ci 7030d7edb099bff36ded7548bb5380f7acab4f9b .H2 "Modularization +.Id modularization .P The source code of the mmh tools is located in the .Fn uip @@ -3911,23 +3922,19 @@ .\" XXX graph .P Splitting the source code of a large program into multiple files can -increase the readability of its source code. -.\" XXX however? -Most of the mmh tools are simple and straight-forward programs. -With the exception of the MIME handling tools, -.Pn pick -is the largest tool. -It contains 1\|037 lines of source code, excluding the MH library. -Only the MIME handling tools (\c +increase the readability of its source code, +but most of the mmh tools are small and straight-forward programs. +In exception of the MIME handling tools (i.e. .Pn mhbuild , .Pn mhstore , .Pn show , -etc.) -are larger. -Splitting programs with less than 1\|000 lines of code into multiple -source files seldom leads to better readability. -For such tools, splitting makes sense -when parts of the code are reused in other programs, +etc.), +.Pn pick +is the only tool with more than one thousand lines of source code. +Splitting programs with less than one thousand lines of code into +multiple source files leads seldom to better readability. +For such tools, splitting still makes sense +when parts of the code are reused in other programs and the reused code fragment is (1) not general enough for including it in the MH library or (2) has dependencies on a library that only few programs need. @@ -3944,12 +3951,13 @@ No other tools use the folder packing functions. As another example, .Fn uip/termsbr.c -provides termcap support, which requires linking with a termcap or -curses library. -Including +accesses terminal properties, which requires linking with the +\fItermcap\fP or a \fIcurses\fP library. +If .Fn uip/termsbr.c -into the MH library would require every program to be linked with -termcap or curses, although only few of the programs require it. +is included in the MH library, then every program needs to be linked +with termcap or curses, although only few of the programs use +the library. .P The task of MIME handling is complex enough that splitting its code into multiple source files improves the readability. @@ -3959,11 +3967,11 @@ lines of code in summary. The main code file .Fn uip/mhstore.c -consists of 800 lines; the other 1\|700 lines of code are reused in +consists of 800 lines; the other 1\|700 lines are code reused in other MIME handling tools. It seems to be worthwhile to bundle the generic MIME handling code into a MH-MIME library, as a companion to the MH standard library. -This is left open for the future. +This is left to be done. .P The work already accomplished focussed on the non-MIME tools. The amount of code compiled into each program was reduced. @@ -3989,13 +3997,13 @@ .Pn send , and .Pn anno -were compiled into +were all compiled into .Pn comp . This saved the need to execute these programs with +the expensive system calls .Fu fork() and -.Fu exec() , -two expensive system calls. +.Fu exec() . Whereas this approach improved the time performance, it interwove the source code. Core functionalities were not encapsulated into programs but into @@ -4016,59 +4024,23 @@ When another pair of command line switches was added to .Pn anno , a rather ugly hack was implemented to avoid adding another parameter -to the function. -.Ci d9b1d57351d104d7ec1a5621f090657dcce8cb7f +to the function +.Ci d9b1d57351d104d7ec1a5621f090657dcce8cb7f . .P -Separation simplifies the understanding of program code -because the area influenced by any particular statement is smaller. -The separating on the program-level is more strict than the separation -on the function level. In mmh, the relevant code of .Pn comp comprises the two files .Fn uip/comp.c and .Fn uip/whatnowproc.c , -together 210 lines of code. -In nmh, +together 210 lines of code, +whereas in nmh, .Pn comp comprises six files with 2\|450 lines. -Not all of the code in these six files was actually used by +Not all of the code in these six files is actually used by .Pn comp , -but the code reader needed to read all of the code first to know which -parts were used. -.P -As I have read a lot in the code base during the last two years, -I learned about the easy and the difficult parts. -Code is easy to understand if the influenced code area is small -and its boundaries are strictly defined. -Furthermore, the code needs to solve the problem in a straight-forward way. -.P -.\" XXX move this paragraph somewhere else? -Reading -.Pn rmm 's -source code in -.Fn uip/rmm.c -is my recommendation for a beginner's entry point into the code base of nmh. -The reasons are that the task of -.Pn rmm -is straight forward and it consists of one small source code file only, -yet its source includes code constructs typical for MH tools. -With the introduction of the trash folder in mmh, -.Pn rmm -became a bit more complex, because it invokes -.Pn refile . -Still, it is a good example for a simple tool with clear sources. -.P -Understanding -.Pn comp -.\" XXX kate fragen: more vs. as much -requires to read 210 lines of code in mmh, but ten times more in nmh. -Due to the aforementioned hack in -.Pn anno -to save the additional parameter, information passed through the program's -source base in obscure ways. -Thus, understanding +but the reader needed to read it all to know which parts are relevant. +Understanding nmh's .Pn comp , required understanding the inner workings of .Fn uip/annosbr.c @@ -4077,15 +4049,33 @@ to be examined. Not doing so is a leap of faith, assuming that the developers have avoided obscure programming techniques. -By separating the tools on the program-level, the boundaries are -clearly visible and technically enforced. -The interfaces are calls to +Here, it should be recalled that information passed in obscure ways +through the program's source base, due to the aforementioned hack +to save an additional parameter in nmh's +.Pn anno . +.P +In mmh, understanding +.Pn comp +requires to read only 210 lines of code to read, whereas the amount +is ten times more for nmh's +.Pn comp . +.P +By separating the tools on the program-level, +the boundaries are clearly visible, as the interfaces are calls to .Fu exec() rather than arbitrary function calls. +Additionally, this kind of separation is more strict because +it is technically enforced by the operating system; +it can not be simply bypassed with global variables. +Good separation simplifies the understanding of program code +because the area influenced by any particular statement is small. +As I have read a lot in nmh's code base during the last two years, +I have learned about the easy and the difficult parts. +In my observation, the understanding of code is enormously eased +if the influenced area is small and clearly bounded. .P -But the real problem is another: +Yet, the real problem is another: Nmh violates the golden ``one tool, one job'' rule of the Unix philosophy. -.\" XXX ref Understanding .Pn comp requires understanding @@ -4094,11 +4084,13 @@ .Fn uip/sendsbr.c because .Pn comp -does annotate and send messages. -In nmh, there surely exists the tool +annotates and sends messages. +In nmh, there surely exist the tools +.Pn anno +and .Pn send , -which does mainly send messages. -But +which cover these jobs, +but .Pn comp and .Pn repl @@ -4109,38 +4101,34 @@ and .Pn whatnow and -.Pn viamail , -they all (!) have the same message sending function included, as well. -In result, +.Pn viamail +\(en they all (!) \(en +have the same annotating and sending functions included, once more. +As a result, .Pn comp sends messages without using .Pn send . The situation is the same as if .Pn grep -would page without +would page its output without using .Pn more just because both programs are part of the same code base. .P -The clear separation on the surface \(en the tool chest approach \(en +The clear separation on the surface of nmh +\(en the tool chest approach \(en is violated on the level below. This violation is for the sake of time performance. -On systems where -.Fu fork() -and -.Fu exec() -are expensive, the quicker response might be noticable. -In the old times, sacrificing readability and conceptional beauty for -speed might even have been a must to prevent MH from being unusably slow. -Whatever the reasons had been, today they are gone. -No longer should we sacrifice readability or conceptional beauty. -No longer should we violate the Unix philosophy's ``one tool, one job'' -guideline. -.\" XXX ref -No longer should we keep speed improvements that became unnecessary. -.P +Decades ago, sacrificing readability and conceptional beauty +for speed might have been necessary to prevent MH from being +unusably slow, but today this is not the case anymore. +No longer should speed improvements that became unnecessary be kept. +No longer should readability or conceptional beauty be sacrificed. +No longer should the Unix philosophy's ``one tool, one job'' +guideline be violated. Therefore, mmh's .Pn comp -does no longer send messages. +no longer sends messages. +.P In mmh, different jobs are divided among separate programs that invoke each other as needed. In consequence, @@ -4148,55 +4136,40 @@ invokes .Pn whatnow which thereafter invokes -.Pn send . +.Pn send .Ci 3df5ab3c116e6d4a2fb4bb5cc9dfc5f781825815 -.Ci c73c00bfccd22ec77e9593f47462aeca4a8cd9c0 +.Ci c73c00bfccd22ec77e9593f47462aeca4a8cd9c0 . The clear separation on the surface is maintained on the level below. -Human users and the tools use the same interface \(en +Human users and other tools use the same interface \(en annotations, for example, are made by invoking .Pn anno , -no matter if requested by programs or by human beings. +no matter if requested by programs or by human beings .Ci 469a4163c2a1a43731d412eaa5d9cae7d670c48b .Ci aed384169af5204b8002d06e7a22f89197963d2d -.Ci 3caf9e298a8861729ca8b8a84f57022b6f3ea742 +.Ci 3caf9e298a8861729ca8b8a84f57022b6f3ea742 . The decrease of tools built from multiple source files and thus the decrease of .Fn uip/*sbr.c -files confirm the improvement. +files confirm the improvement .Ci 9e6d91313f01c96b4058d6bf419a8ca9a207bc33 .ci 81744a46ac9f845d6c2b9908074d269275178d2e .Ci f0f858069d21111f0dbea510044593f89c9b0829 .Ci 0503a6e9be34f24858b55b555a5c948182b9f24b .Ci 27826f9353e0f0b04590b7d0f8f83e60462b90f0 .Ci d1da1f94ce62160aebb30df4063ccbc53768656b -.Ci c42222869e318fff5dec395eca3e776db3075455 -.P -.\" XXX move this paragraph up somewhere -One disadvantage needs to be taken with this change: -The compiler can no longer check the integrity of the interfaces. -By changing the command line interfaces of tools, it is -the developer's job to adjust the invocations of these tools as well. -As this is a manual task and regression tests, which could detect such -problems, are not available yet, it is prone to errors. -These errors will not be detected at compile time but at run time. -Installing regression tests is a pending task. -In the best case, a uniform way of invoking tools from other tools -can be developed to allow automated testing at compile time. +.Ci c42222869e318fff5dec395eca3e776db3075455 . +This is also visible in the complexity of the build dependency graphs: +.sp +Nmh: +.BP input/deps-nmh.eps .5i +.EP +.sp +Mmh: +.BP input/deps-mmh.eps .8i +.EP -.ig -XXX consider writing about mhl vs. mhlproc - -sbr/showfile.c - - 23 /* - 24 ** If you have your lproc listed as "mhl", - 25 ** then really invoked the mhlproc instead - 26 ** (which is usually mhl anyway). - 27 */ - -Sat Nov 24 19:09:14 1984 /mtr (agent: Marshall Rose) - - sbr/showfile.c: if lproc is "mhl", use mhlproc for consistency - (Actually, user should use "lproc: show", "showproc: mhl".) -.. +The figures display all program to source file relationships +that are not one-to-one, +i.e. all programs that are built from multiple source files. +The primary source file of each program is omited from the graph. diff -r 8c537982d718 -r 95257474a123 input/deps-mmh.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/input/deps-mmh.eps Sun Jul 15 18:41:35 2012 +0200 @@ -0,0 +1,1353 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: graphviz version 2.28.0 (20120715.1431) +%%Title: foo +%%Pages: 1 +%%BoundingBox: 36 36 1745 260 +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 1745 260 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 1709 224 boxprim clip newpath +1 1 set_scale 0 rotate 40 41 translate +% aliasbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 105.25 216 moveto +28.75 216 lineto +28.75 180 lineto +105.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +36.5 194.3 moveto 61 (aliasbr.c) alignedtext +grestore +% ali +gsave +1 setlinewidth +0 0 0 nodecolor +27 18 27 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +18 14.3 moveto 18 (ali) alignedtext +grestore +% aliasbr.c->ali +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 63.16 179.93 moveto +56.21 148.97 41.45 83.3 33.1 46.13 curveto +stroke +0 0 0 edgecolor +newpath 36.43 45 moveto +30.82 36.02 lineto +29.6 46.54 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 36.43 45 moveto +30.82 36.02 lineto +29.6 46.54 lineto +closepath stroke +grestore +% spost +gsave +1 setlinewidth +0 0 0 nodecolor +108 18 35.62 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +88.5 14.3 moveto 39 (spost) alignedtext +grestore +% aliasbr.c->spost +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 70.93 179.93 moveto +78.06 148.97 93.19 83.3 101.75 46.13 curveto +stroke +0 0 0 edgecolor +newpath 105.25 46.55 moveto +104.08 36.02 lineto +98.43 44.97 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 105.25 46.55 moveto +104.08 36.02 lineto +98.43 44.97 lineto +closepath stroke +grestore +% whatnowproc.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 382.25 216 moveto +255.75 216 lineto +255.75 180 lineto +382.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +263.5 194.3 moveto 111 (whatnowproc.c) alignedtext +grestore +% comp +gsave +1 setlinewidth +0 0 0 nodecolor +198 18 36.1 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +178 14.3 moveto 40 (comp) alignedtext +grestore +% whatnowproc.c->comp +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 307.4 179.93 moveto +285.91 148.33 239.86 80.57 214.9 43.86 curveto +stroke +0 0 0 edgecolor +newpath 217.56 41.54 moveto +209.04 35.24 lineto +211.77 45.48 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 217.56 41.54 moveto +209.04 35.24 lineto +211.77 45.48 lineto +closepath stroke +grestore +% dist +gsave +1 setlinewidth +0 0 0 nodecolor +280 18 27.42 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +266.5 14.3 moveto 27 (dist) alignedtext +grestore +% whatnowproc.c->dist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 315.26 179.93 moveto +308.48 148.97 294.09 83.3 285.94 46.13 curveto +stroke +0 0 0 edgecolor +newpath 289.29 45.03 moveto +283.73 36.02 lineto +282.45 46.53 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 289.29 45.03 moveto +283.73 36.02 lineto +282.45 46.53 lineto +closepath stroke +grestore +% forw +gsave +1 setlinewidth +0 0 0 nodecolor +358 18 32.25 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +341 14.3 moveto 34 (forw) alignedtext +grestore +% whatnowproc.c->forw +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 322.74 179.93 moveto +329.52 148.97 343.91 83.3 352.06 46.13 curveto +stroke +0 0 0 edgecolor +newpath 355.55 46.53 moveto +354.27 36.02 lineto +348.71 45.03 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 355.55 46.53 moveto +354.27 36.02 lineto +348.71 45.03 lineto +closepath stroke +grestore +% repl +gsave +1 setlinewidth +0 0 0 nodecolor +438 18 29.37 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +423.5 14.3 moveto 29 (repl) alignedtext +grestore +% whatnowproc.c->repl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 330.41 179.93 moveto +351.59 148.25 397.07 80.23 421.56 43.58 curveto +stroke +0 0 0 edgecolor +newpath 424.66 45.24 moveto +427.31 34.99 lineto +418.85 41.35 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 424.66 45.24 moveto +427.31 34.99 lineto +418.85 41.35 lineto +closepath stroke +grestore +% scansbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 565.5 216 moveto +482.5 216 lineto +482.5 180 lineto +565.5 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +490 194.3 moveto 68 (scansbr.c) alignedtext +grestore +% inc +gsave +1 setlinewidth +0 0 0 nodecolor +512 18 27 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +501 14.3 moveto 22 (inc) alignedtext +grestore +% scansbr.c->inc +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 522.85 179.93 moveto +520.76 148.97 516.33 83.3 513.83 46.13 curveto +stroke +0 0 0 edgecolor +newpath 517.31 45.76 moveto +513.15 36.02 lineto +510.33 46.23 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 517.31 45.76 moveto +513.15 36.02 lineto +510.33 46.23 lineto +closepath stroke +grestore +% scan +gsave +1 setlinewidth +0 0 0 nodecolor +589 18 32.25 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +572 14.3 moveto 34 (scan) alignedtext +grestore +% scansbr.c->scan +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 530.23 179.93 moveto +541.62 148.75 565.85 82.4 579.37 45.37 curveto +stroke +0 0 0 edgecolor +newpath 582.74 46.35 moveto +582.88 35.76 lineto +576.16 43.95 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 582.74 46.35 moveto +582.88 35.76 lineto +576.16 43.95 lineto +closepath stroke +grestore +% termsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 800.25 216 moveto +715.75 216 lineto +715.75 180 lineto +800.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +723.5 194.3 moveto 69 (termsbr.c) alignedtext +grestore +% termsbr.c->inc +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 734.41 179.93 moveto +688.22 146.51 586.17 72.66 538.06 37.86 curveto +stroke +0 0 0 edgecolor +newpath 539.88 34.85 moveto +529.73 31.83 lineto +535.78 40.53 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 539.88 34.85 moveto +529.73 31.83 lineto +535.78 40.53 lineto +closepath stroke +grestore +% mhbuild +gsave +1 setlinewidth +0 0 0 nodecolor +763 18 48.62 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +733.5 14.3 moveto 59 (mhbuild) alignedtext +grestore +% termsbr.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 758.48 179.93 moveto +759.35 148.97 761.19 83.3 762.24 46.13 curveto +stroke +0 0 0 edgecolor +newpath 765.74 46.11 moveto +762.52 36.02 lineto +758.74 45.91 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 765.74 46.11 moveto +762.52 36.02 lineto +758.74 45.91 lineto +closepath stroke +grestore +% mhl +gsave +1 setlinewidth +0 0 0 nodecolor +668 18 28.4 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +654 14.3 moveto 28 (mhl) alignedtext +grestore +% termsbr.c->mhl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 749.37 179.93 moveto +733.46 148.46 699.42 81.15 680.81 44.33 curveto +stroke +0 0 0 edgecolor +newpath 683.85 42.59 moveto +676.21 35.24 lineto +677.6 45.74 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 683.85 42.59 moveto +676.21 35.24 lineto +677.6 45.74 lineto +closepath stroke +grestore +% mhlist +gsave +1 setlinewidth +0 0 0 nodecolor +972 18 39.47 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +949.5 14.3 moveto 45 (mhlist) alignedtext +grestore +% termsbr.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 778.52 179.93 moveto +817.63 147.4 902.8 76.56 945.9 40.71 curveto +stroke +0 0 0 edgecolor +newpath 948.24 43.32 moveto +953.69 34.23 lineto +943.76 37.94 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 948.24 43.32 moveto +953.69 34.23 lineto +943.76 37.94 lineto +closepath stroke +grestore +% show +gsave +1 setlinewidth +0 0 0 nodecolor +1065 18 35.15 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1046 14.3 moveto 38 (show) alignedtext +grestore +% termsbr.c->show +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 787.44 179.93 moveto +845.42 146.32 973.93 71.8 1033.52 37.25 curveto +stroke +0 0 0 edgecolor +newpath 1035.58 40.1 moveto +1042.47 32.06 lineto +1032.07 34.05 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1035.58 40.1 moveto +1042.47 32.06 lineto +1032.07 34.05 lineto +closepath stroke +grestore +% mhstore +gsave +1 setlinewidth +0 0 0 nodecolor +1167 18 49.09 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1137 14.3 moveto 60 (mhstore) alignedtext +grestore +% termsbr.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 797.22 179.93 moveto +875.06 146.05 1048.35 70.64 1126.91 36.45 curveto +stroke +0 0 0 edgecolor +newpath 1128.68 39.49 moveto +1136.45 32.29 lineto +1125.89 33.08 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1128.68 39.49 moveto +1136.45 32.29 lineto +1125.89 33.08 lineto +closepath stroke +grestore +% mhtest +gsave +1 setlinewidth +0 0 0 nodecolor +872 18 42.37 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +847.5 14.3 moveto 49 (mhtest) alignedtext +grestore +% termsbr.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 768.93 179.93 moveto +789.12 148.41 832.35 80.92 855.9 44.14 curveto +stroke +0 0 0 edgecolor +newpath 858.99 45.81 moveto +861.43 35.5 lineto +853.09 42.03 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 858.99 45.81 moveto +861.43 35.5 lineto +853.09 42.03 lineto +closepath stroke +grestore +% termsbr.c->scan +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 741.8 179.93 moveto +711.23 147.74 645.04 78.02 610.68 41.84 curveto +stroke +0 0 0 edgecolor +newpath 612.88 39.07 moveto +603.46 34.23 lineto +607.81 43.89 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 612.88 39.07 moveto +603.46 34.23 lineto +607.81 43.89 lineto +closepath stroke +grestore +% mhfree.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 899 216 moveto +819 216 lineto +819 180 lineto +899 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +827 194.3 moveto 64 (mhfree.c) alignedtext +grestore +% mhfree.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 849.8 179.93 moveto +832.91 148.62 796.88 81.83 776.97 44.9 curveto +stroke +0 0 0 edgecolor +newpath 779.86 42.9 moveto +772.04 35.76 lineto +773.7 46.22 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 779.86 42.9 moveto +772.04 35.76 lineto +773.7 46.22 lineto +closepath stroke +grestore +% mhfree.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 869.83 179.93 moveto +889.85 148.41 932.69 80.92 956.04 44.14 curveto +stroke +0 0 0 edgecolor +newpath 959.12 45.82 moveto +961.53 35.5 lineto +953.21 42.06 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 959.12 45.82 moveto +961.53 35.5 lineto +953.21 42.06 lineto +closepath stroke +grestore +% mhfree.c->show +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 878.75 179.93 moveto +916.52 147.3 998.87 76.14 1040.24 40.39 curveto +stroke +0 0 0 edgecolor +newpath 1042.67 42.92 moveto +1047.94 33.74 lineto +1038.09 37.63 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1042.67 42.92 moveto +1047.94 33.74 lineto +1038.09 37.63 lineto +closepath stroke +grestore +% mhfree.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 888.53 179.93 moveto +945.96 146.74 1072.37 73.69 1133.11 38.59 curveto +stroke +0 0 0 edgecolor +newpath 1135.02 41.53 moveto +1141.92 33.49 lineto +1131.51 35.47 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1135.02 41.53 moveto +1141.92 33.49 lineto +1131.51 35.47 lineto +closepath stroke +grestore +% mhfree.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 860.25 179.93 moveto +862.51 148.97 867.3 83.3 870.02 46.13 curveto +stroke +0 0 0 edgecolor +newpath 873.52 46.24 moveto +870.76 36.02 lineto +866.54 45.73 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 873.52 46.24 moveto +870.76 36.02 lineto +866.54 45.73 lineto +closepath stroke +grestore +% mhparse.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1009 216 moveto +917 216 lineto +917 180 lineto +1009 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +925 194.3 moveto 76 (mhparse.c) alignedtext +grestore +% mhparse.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 943.82 179.93 moveto +907.62 147.71 829.19 77.91 788.56 41.75 curveto +stroke +0 0 0 edgecolor +newpath 790.76 39.02 moveto +780.96 34.99 lineto +786.1 44.25 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 790.76 39.02 moveto +780.96 34.99 lineto +786.1 44.25 lineto +closepath stroke +grestore +% mhparse.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 963.86 179.93 moveto +965.43 148.97 968.75 83.3 970.63 46.13 curveto +stroke +0 0 0 edgecolor +newpath 974.13 46.18 moveto +971.14 36.02 lineto +967.14 45.83 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 974.13 46.18 moveto +971.14 36.02 lineto +967.14 45.83 lineto +closepath stroke +grestore +% mhparse.c->show +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 972.78 179.93 moveto +990.77 148.54 1029.19 81.49 1050.32 44.61 curveto +stroke +0 0 0 edgecolor +newpath 1053.61 45.91 moveto +1055.55 35.5 lineto +1047.54 42.43 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1053.61 45.91 moveto +1055.55 35.5 lineto +1047.54 42.43 lineto +closepath stroke +grestore +% mhparse.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 982.56 179.93 moveto +1019.49 147.71 1099.48 77.91 1140.93 41.75 curveto +stroke +0 0 0 edgecolor +newpath 1143.45 44.2 moveto +1148.68 34.99 lineto +1138.84 38.92 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1143.45 44.2 moveto +1148.68 34.99 lineto +1138.84 38.92 lineto +closepath stroke +grestore +% mhparse.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 954.27 179.93 moveto +938.27 148.62 904.12 81.83 885.24 44.9 curveto +stroke +0 0 0 edgecolor +newpath 888.23 43.07 moveto +880.57 35.76 lineto +882 46.25 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 888.23 43.07 moveto +880.57 35.76 lineto +882 46.25 lineto +closepath stroke +grestore +% mhoutsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 697.25 216 moveto +600.75 216 lineto +600.75 180 lineto +697.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +608.5 194.3 moveto 81 (mhoutsbr.c) alignedtext +grestore +% mhoutsbr.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 659.93 179.93 moveto +680.07 148.49 723.13 81.26 746.72 44.43 curveto +stroke +0 0 0 edgecolor +newpath 749.82 46.06 moveto +752.27 35.76 lineto +743.93 42.29 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 749.82 46.06 moveto +752.27 35.76 lineto +743.93 42.29 lineto +closepath stroke +grestore +% mhoutsbr.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 670.38 179.93 moveto +711.23 147.33 800.26 76.26 845.08 40.48 curveto +stroke +0 0 0 edgecolor +newpath 847.29 43.21 moveto +852.92 34.23 lineto +842.92 37.73 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 847.29 43.21 moveto +852.92 34.23 lineto +842.92 37.73 lineto +closepath stroke +grestore +% mhmisc.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1113 216 moveto +1027 216 lineto +1027 180 lineto +1113 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1035 194.3 moveto 70 (mhmisc.c) alignedtext +grestore +% mhmisc.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1040.56 179.93 moveto +983.32 146.74 857.33 73.69 796.78 38.59 curveto +stroke +0 0 0 edgecolor +newpath 798.4 35.48 moveto +787.99 33.49 lineto +794.89 41.54 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 798.4 35.48 moveto +787.99 33.49 lineto +794.89 41.54 lineto +closepath stroke +grestore +% mhmisc.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1060.6 179.93 moveto +1043.36 148.62 1006.59 81.83 986.26 44.9 curveto +stroke +0 0 0 edgecolor +newpath 989.11 42.83 moveto +981.23 35.76 lineto +982.98 46.2 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 989.11 42.83 moveto +981.23 35.76 lineto +982.98 46.2 lineto +closepath stroke +grestore +% mhmisc.c->show +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1069.52 179.93 moveto +1068.65 148.97 1066.81 83.3 1065.76 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1069.26 45.91 moveto +1065.48 36.02 lineto +1062.26 46.11 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1069.26 45.91 moveto +1065.48 36.02 lineto +1062.26 46.11 lineto +closepath stroke +grestore +% mhmisc.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1079.3 179.93 moveto +1096.36 148.62 1132.76 81.83 1152.89 44.9 curveto +stroke +0 0 0 edgecolor +newpath 1156.16 46.21 moveto +1157.87 35.76 lineto +1150.01 42.86 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1156.16 46.21 moveto +1157.87 35.76 lineto +1150.01 42.86 lineto +closepath stroke +grestore +% mhmisc.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1051.01 179.93 moveto +1014.99 147.55 936.74 77.2 896.7 41.2 curveto +stroke +0 0 0 edgecolor +newpath 899 38.56 moveto +889.22 34.48 lineto +894.32 43.77 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 899 38.56 moveto +889.22 34.48 lineto +894.32 43.77 lineto +closepath stroke +grestore +% mhlistsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1226.25 216 moveto +1131.75 216 lineto +1131.75 180 lineto +1226.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1139.5 194.3 moveto 79 (mhlistsbr.c) alignedtext +grestore +% mhlistsbr.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1159.15 179.93 moveto +1121.39 147.46 1039.27 76.85 997.5 40.93 curveto +stroke +0 0 0 edgecolor +newpath 999.58 38.1 moveto +989.71 34.23 lineto +995.01 43.41 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 999.58 38.1 moveto +989.71 34.23 lineto +995.01 43.41 lineto +closepath stroke +grestore +% mhlistsbr.c->show +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1168.07 179.93 moveto +1147.83 148.33 1104.43 80.57 1080.92 43.86 curveto +stroke +0 0 0 edgecolor +newpath 1083.74 41.77 moveto +1075.4 35.24 lineto +1077.85 45.55 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1083.74 41.77 moveto +1075.4 35.24 lineto +1077.85 45.55 lineto +closepath stroke +grestore +% mhlistsbr.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1177.85 179.93 moveto +1175.76 148.97 1171.33 83.3 1168.83 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1172.31 45.76 moveto +1168.15 36.02 lineto +1165.33 46.23 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1172.31 45.76 moveto +1168.15 36.02 lineto +1165.33 46.23 lineto +closepath stroke +grestore +% mhshowsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1355.25 216 moveto +1244.75 216 lineto +1244.75 180 lineto +1355.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1252.5 194.3 moveto 95 (mhshowsbr.c) alignedtext +grestore +% mhshowsbr.c->show +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1277.47 179.93 moveto +1233.99 147 1138.71 74.83 1091.95 39.42 curveto +stroke +0 0 0 edgecolor +newpath 1093.9 36.5 moveto +1083.81 33.25 lineto +1089.67 42.08 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1093.9 36.5 moveto +1083.81 33.25 lineto +1089.67 42.08 lineto +closepath stroke +grestore +% mhshowsbr.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1287.25 179.93 moveto +1263.59 148.27 1212.84 80.34 1185.44 43.68 curveto +stroke +0 0 0 edgecolor +newpath 1188.12 41.41 moveto +1179.33 35.5 lineto +1182.51 45.6 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1188.12 41.41 moveto +1179.33 35.5 lineto +1182.51 45.6 lineto +closepath stroke +grestore +% dropsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1458.25 216 moveto +1373.75 216 lineto +1373.75 180 lineto +1458.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1381.5 194.3 moveto 69 (dropsbr.c) alignedtext +grestore +% packf +gsave +1 setlinewidth +0 0 0 nodecolor +1365 18 36.1 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1345 14.3 moveto 40 (packf) alignedtext +grestore +% dropsbr.c->packf +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1411.11 179.93 moveto +1402.2 148.83 1383.26 82.73 1372.64 45.65 curveto +stroke +0 0 0 edgecolor +newpath 1375.99 44.66 moveto +1369.88 36.02 lineto +1369.27 46.59 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1375.99 44.66 moveto +1369.88 36.02 lineto +1369.27 46.59 lineto +closepath stroke +grestore +% rcvpack +gsave +1 setlinewidth +0 0 0 nodecolor +1467 18 48.14 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1438 14.3 moveto 58 (rcvpack) alignedtext +grestore +% dropsbr.c->rcvpack +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1420.89 179.93 moveto +1429.8 148.83 1448.74 82.73 1459.36 45.65 curveto +stroke +0 0 0 edgecolor +newpath 1462.73 46.59 moveto +1462.12 36.02 lineto +1456.01 44.66 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1462.73 46.59 moveto +1462.12 36.02 lineto +1456.01 44.66 lineto +closepath stroke +grestore +% distsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1660.25 216 moveto +1583.75 216 lineto +1583.75 180 lineto +1660.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1591.5 194.3 moveto 61 (distsbr.c) alignedtext +grestore +% rcvdist +gsave +1 setlinewidth +0 0 0 nodecolor +1576 18 42.35 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1551 14.3 moveto 50 (rcvdist) alignedtext +grestore +% distsbr.c->rcvdist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1617.59 179.93 moveto +1609.59 148.97 1592.62 83.3 1583.01 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1586.29 44.82 moveto +1580.4 36.02 lineto +1579.51 46.57 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1586.29 44.82 moveto +1580.4 36.02 lineto +1579.51 46.57 lineto +closepath stroke +grestore +% send +gsave +1 setlinewidth +0 0 0 nodecolor +1669 18 32.25 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1652 14.3 moveto 34 (send) alignedtext +grestore +% distsbr.c->send +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1626.51 179.93 moveto +1634.68 148.97 1652.02 83.3 1661.84 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1665.34 46.58 moveto +1664.51 36.02 lineto +1658.57 44.79 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1665.34 46.58 moveto +1664.51 36.02 lineto +1658.57 44.79 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +end +restore +%%EOF diff -r 8c537982d718 -r 95257474a123 input/deps-nmh.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/input/deps-nmh.eps Sun Jul 15 18:41:35 2012 +0200 @@ -0,0 +1,3256 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: graphviz version 2.28.0 (20120715.1431) +%%Title: nmh +%%Pages: 1 +%%BoundingBox: 36 36 3416 260 +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 3416 260 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 3380 224 boxprim clip newpath +1 1 set_scale 0 rotate 40 41 translate +% aliasbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 245.25 216 moveto +168.75 216 lineto +168.75 180 lineto +245.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +176.5 194.3 moveto 61 (aliasbr.c) alignedtext +grestore +% ali +gsave +1 setlinewidth +0 0 0 nodecolor +116 18 27 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +107 14.3 moveto 18 (ali) alignedtext +grestore +% aliasbr.c->ali +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 198.27 179.93 moveto +182.19 148.46 147.77 81.15 128.95 44.33 curveto +stroke +0 0 0 edgecolor +newpath 131.97 42.55 moveto +124.3 35.24 lineto +125.74 45.74 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 131.97 42.55 moveto +124.3 35.24 lineto +125.74 45.74 lineto +closepath stroke +grestore +% conflict +gsave +1 setlinewidth +0 0 0 nodecolor +207 18 46.22 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +179.5 14.3 moveto 55 (conflict) alignedtext +grestore +% aliasbr.c->conflict +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 207 179.93 moveto +207 148.97 207 83.3 207 46.13 curveto +stroke +0 0 0 edgecolor +newpath 210.5 46.02 moveto +207 36.02 lineto +203.5 46.02 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 210.5 46.02 moveto +207 36.02 lineto +203.5 46.02 lineto +closepath stroke +grestore +% post +gsave +1 setlinewidth +0 0 0 nodecolor +302 18 30.32 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +286.5 14.3 moveto 31 (post) alignedtext +grestore +% aliasbr.c->post +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 216.11 179.93 moveto +232.86 148.54 268.65 81.49 288.33 44.61 curveto +stroke +0 0 0 edgecolor +newpath 291.57 45.97 moveto +293.2 35.5 lineto +285.4 42.67 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 291.57 45.97 moveto +293.2 35.5 lineto +285.4 42.67 lineto +closepath stroke +grestore +% slocal +gsave +1 setlinewidth +0 0 0 nodecolor +389 18 38.02 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +367.5 14.3 moveto 43 (slocal) alignedtext +grestore +% aliasbr.c->slocal +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 224.45 179.93 moveto +257.43 147.68 328.89 77.79 365.84 41.65 curveto +stroke +0 0 0 edgecolor +newpath 368.47 43.98 moveto +373.17 34.48 lineto +363.57 38.97 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 368.47 43.98 moveto +373.17 34.48 lineto +363.57 38.97 lineto +closepath stroke +grestore +% spost +gsave +1 setlinewidth +0 0 0 nodecolor +35 18 35.62 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +15.5 14.3 moveto 39 (spost) alignedtext +grestore +% aliasbr.c->spost +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 190.51 179.93 moveto +159.47 147.82 92.37 78.37 57.33 42.11 curveto +stroke +0 0 0 edgecolor +newpath 59.43 39.24 moveto +49.96 34.48 lineto +54.39 44.1 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 59.43 39.24 moveto +49.96 34.48 lineto +54.39 44.1 lineto +closepath stroke +grestore +% termsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1753.25 216 moveto +1668.75 216 lineto +1668.75 180 lineto +1753.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1676.5 194.3 moveto 69 (termsbr.c) alignedtext +grestore +% ap +gsave +1 setlinewidth +0 0 0 nodecolor +1638 18 27 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1629 14.3 moveto 18 (ap) alignedtext +grestore +% termsbr.c->ap +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1704 179.93 moveto +1691.18 148.67 1663.86 82.06 1648.7 45.09 curveto +stroke +0 0 0 edgecolor +newpath 1651.8 43.42 moveto +1644.77 35.5 lineto +1645.32 46.08 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1651.8 43.42 moveto +1644.77 35.5 lineto +1645.32 46.08 lineto +closepath stroke +grestore +% dp +gsave +1 setlinewidth +0 0 0 nodecolor +1710 18 27 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1700.5 14.3 moveto 19 (dp) alignedtext +grestore +% termsbr.c->dp +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1710.9 179.93 moveto +1710.73 148.97 1710.36 83.3 1710.15 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1713.65 46 moveto +1710.1 36.02 lineto +1706.65 46.04 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1713.65 46 moveto +1710.1 36.02 lineto +1706.65 46.04 lineto +closepath stroke +grestore +% inc +gsave +1 setlinewidth +0 0 0 nodecolor +1566 18 27 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1555 14.3 moveto 22 (inc) alignedtext +grestore +% termsbr.c->inc +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1697.1 179.93 moveto +1670.98 147.87 1614.56 78.61 1584.98 42.29 curveto +stroke +0 0 0 edgecolor +newpath 1587.44 39.77 moveto +1578.41 34.23 lineto +1582.01 44.2 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1587.44 39.77 moveto +1578.41 34.23 lineto +1582.01 44.2 lineto +closepath stroke +grestore +% mhbuild +gsave +1 setlinewidth +0 0 0 nodecolor +1370 18 48.62 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1340.5 14.3 moveto 59 (mhbuild) alignedtext +grestore +% termsbr.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1678.3 179.93 moveto +1614.14 146.44 1472.22 72.36 1405.7 37.64 curveto +stroke +0 0 0 edgecolor +newpath 1407.32 34.53 moveto +1396.84 33.01 lineto +1404.08 40.74 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1407.32 34.53 moveto +1396.84 33.01 lineto +1404.08 40.74 lineto +closepath stroke +grestore +% mhl +gsave +1 setlinewidth +0 0 0 nodecolor +1784 18 28.4 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1770 14.3 moveto 28 (mhl) alignedtext +grestore +% termsbr.c->mhl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1718 179.93 moveto +1730.82 148.67 1758.14 82.06 1773.3 45.09 curveto +stroke +0 0 0 edgecolor +newpath 1776.68 46.08 moveto +1777.23 35.5 lineto +1770.2 43.42 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1776.68 46.08 moveto +1777.23 35.5 lineto +1770.2 43.42 lineto +closepath stroke +grestore +% mhlist +gsave +1 setlinewidth +0 0 0 nodecolor +1264 18 39.47 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1241.5 14.3 moveto 45 (mhlist) alignedtext +grestore +% termsbr.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1668.54 180.09 moveto +1581.65 145.49 1384.76 67.09 1301.89 34.09 curveto +stroke +0 0 0 edgecolor +newpath 1303.18 30.84 moveto +1292.6 30.39 lineto +1300.59 37.34 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1303.18 30.84 moveto +1292.6 30.39 lineto +1300.59 37.34 lineto +closepath stroke +grestore +% mhn +gsave +1 setlinewidth +0 0 0 nodecolor +940 18 31.3 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +924 14.3 moveto 32 (mhn) alignedtext +grestore +% termsbr.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1668.54 182.71 moveto +1665.33 181.75 1662.12 180.84 1659 180 curveto +1361.51 100.02 1275.19 127.38 981 36 curveto +978.55 35.24 976.05 34.39 973.55 33.49 curveto +stroke +0 0 0 edgecolor +newpath 974.6 30.14 moveto +964.01 29.82 lineto +972.09 36.68 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 974.6 30.14 moveto +964.01 29.82 lineto +972.09 36.68 lineto +closepath stroke +grestore +% mhshow +gsave +1 setlinewidth +0 0 0 nodecolor +1156 18 50.07 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1125.5 14.3 moveto 61 (mhshow) alignedtext +grestore +% termsbr.c->mhshow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1668.72 183.15 moveto +1665.43 182.08 1662.16 181.02 1659 180 curveto +1490.79 125.58 1290.61 61.8 1202.05 33.64 curveto +stroke +0 0 0 edgecolor +newpath 1202.91 30.24 moveto +1192.32 30.54 lineto +1200.79 36.91 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1202.91 30.24 moveto +1192.32 30.54 lineto +1200.79 36.91 lineto +closepath stroke +grestore +% mhstore +gsave +1 setlinewidth +0 0 0 nodecolor +1039 18 49.09 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1009 14.3 moveto 60 (mhstore) alignedtext +grestore +% termsbr.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1668.5 182.86 moveto +1665.29 181.87 1662.1 180.9 1659 180 curveto +1411.44 107.9 1345.64 104.27 1097 36 curveto +1093.24 34.97 1089.34 33.88 1085.44 32.76 curveto +stroke +0 0 0 edgecolor +newpath 1086.34 29.38 moveto +1075.76 29.98 lineto +1084.41 36.11 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1086.34 29.38 moveto +1075.76 29.98 lineto +1084.41 36.11 lineto +closepath stroke +grestore +% mhtest +gsave +1 setlinewidth +0 0 0 nodecolor +1479 18 42.37 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1454.5 14.3 moveto 49 (mhtest) alignedtext +grestore +% termsbr.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1688.75 179.93 moveto +1646.15 147.25 1553.17 75.9 1506.65 40.21 curveto +stroke +0 0 0 edgecolor +newpath 1508.59 37.29 moveto +1498.53 33.98 lineto +1504.33 42.85 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1508.59 37.29 moveto +1498.53 33.98 lineto +1504.33 42.85 lineto +closepath stroke +grestore +% msh +gsave +1 setlinewidth +0 0 0 nodecolor +2127 18 30.32 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2111.5 14.3 moveto 31 (msh) alignedtext +grestore +% termsbr.c->msh +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1750.89 179.93 moveto +1832.63 144.96 2017.83 65.71 2093.67 33.26 curveto +stroke +0 0 0 edgecolor +newpath 2095.39 36.33 moveto +2103.21 29.18 lineto +2092.64 29.9 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2095.39 36.33 moveto +2103.21 29.18 lineto +2092.64 29.9 lineto +closepath stroke +grestore +% rcvtty +gsave +1 setlinewidth +0 0 0 nodecolor +1957 18 38.02 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1935.5 14.3 moveto 43 (rcvtty) alignedtext +grestore +% termsbr.c->rcvtty +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1734.59 179.93 moveto +1780.08 147.02 1879.76 74.89 1928.72 39.46 curveto +stroke +0 0 0 edgecolor +newpath 1930.92 42.19 moveto +1936.97 33.49 lineto +1926.82 36.52 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1930.92 42.19 moveto +1936.97 33.49 lineto +1926.82 36.52 lineto +closepath stroke +grestore +% scan +gsave +1 setlinewidth +0 0 0 nodecolor +2046 18 32.25 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2029 14.3 moveto 34 (scan) alignedtext +grestore +% termsbr.c->scan +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1743.12 179.93 moveto +1807.14 145.92 1949.97 70.02 2013.94 36.03 curveto +stroke +0 0 0 edgecolor +newpath 2015.96 38.92 moveto +2023.15 31.14 lineto +2012.68 32.74 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2015.96 38.92 moveto +2023.15 31.14 lineto +2012.68 32.74 lineto +closepath stroke +grestore +% show +gsave +1 setlinewidth +0 0 0 nodecolor +1866 18 35.15 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1847 14.3 moveto 38 (show) alignedtext +grestore +% termsbr.c->show +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1725.86 179.93 moveto +1753.76 147.9 1813.99 78.72 1845.64 42.38 curveto +stroke +0 0 0 edgecolor +newpath 1848.37 44.57 moveto +1852.3 34.73 lineto +1843.09 39.98 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1848.37 44.57 moveto +1852.3 34.73 lineto +1843.09 39.98 lineto +closepath stroke +grestore +% annosbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 2890 216 moveto +2804 216 lineto +2804 180 lineto +2890 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2812 194.3 moveto 70 (annosbr.c) alignedtext +grestore +% anno +gsave +1 setlinewidth +0 0 0 nodecolor +2774 18 33.2 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2756 14.3 moveto 36 (anno) alignedtext +grestore +% annosbr.c->anno +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2840 179.93 moveto +2827.21 148.75 2800 82.4 2784.81 45.37 curveto +stroke +0 0 0 edgecolor +newpath 2787.9 43.68 moveto +2780.87 35.76 lineto +2781.43 46.34 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2787.9 43.68 moveto +2780.87 35.76 lineto +2781.43 46.34 lineto +closepath stroke +grestore +% comp +gsave +1 setlinewidth +0 0 0 nodecolor +3142 18 36.1 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +3122 14.3 moveto 40 (comp) alignedtext +grestore +% annosbr.c->comp +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2875.29 179.93 moveto +2930.86 146.4 3053.88 72.17 3111.33 37.51 curveto +stroke +0 0 0 edgecolor +newpath 3113.21 40.46 moveto +3119.97 32.29 lineto +3109.6 34.46 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3113.21 40.46 moveto +3119.97 32.29 lineto +3109.6 34.46 lineto +closepath stroke +grestore +% dist +gsave +1 setlinewidth +0 0 0 nodecolor +2977 18 27.42 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2963.5 14.3 moveto 27 (dist) alignedtext +grestore +% annosbr.c->dist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2859.46 179.93 moveto +2882.82 147.95 2933.21 78.96 2959.79 42.57 curveto +stroke +0 0 0 edgecolor +newpath 2962.62 44.62 moveto +2965.69 34.48 lineto +2956.97 40.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2962.62 44.62 moveto +2965.69 34.48 lineto +2956.97 40.49 lineto +closepath stroke +grestore +% forw +gsave +1 setlinewidth +0 0 0 nodecolor +3055 18 32.25 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +3038 14.3 moveto 34 (forw) alignedtext +grestore +% annosbr.c->forw +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2866.94 179.93 moveto +2905.17 147.22 2988.65 75.78 3030.31 40.12 curveto +stroke +0 0 0 edgecolor +newpath 3032.74 42.65 moveto +3038.07 33.49 lineto +3028.19 37.33 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3032.74 42.65 moveto +3038.07 33.49 lineto +3028.19 37.33 lineto +closepath stroke +grestore +% repl +gsave +1 setlinewidth +0 0 0 nodecolor +3226 18 29.37 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +3211.5 14.3 moveto 29 (repl) alignedtext +grestore +% annosbr.c->repl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2883.34 179.93 moveto +2957.31 145.19 3124.26 66.78 3194.21 33.93 curveto +stroke +0 0 0 edgecolor +newpath 3195.86 37.02 moveto +3203.42 29.6 lineto +3192.88 30.69 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3195.86 37.02 moveto +3203.42 29.6 lineto +3192.88 30.69 lineto +closepath stroke +grestore +% send +gsave +1 setlinewidth +0 0 0 nodecolor +2690 18 32.25 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2673 14.3 moveto 34 (send) alignedtext +grestore +% annosbr.c->send +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2831.95 179.93 moveto +2803.62 147.82 2742.37 78.37 2710.38 42.11 curveto +stroke +0 0 0 edgecolor +newpath 2712.89 39.67 moveto +2703.65 34.48 lineto +2707.64 44.3 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2712.89 39.67 moveto +2703.65 34.48 lineto +2707.64 44.3 lineto +closepath stroke +grestore +% viamail +gsave +1 setlinewidth +0 0 0 nodecolor +2396 18 44.29 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2370 14.3 moveto 52 (viamail) alignedtext +grestore +% annosbr.c->viamail +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2803.76 179.93 moveto +2716.49 145.49 2520.44 68.12 2435.97 34.78 curveto +stroke +0 0 0 edgecolor +newpath 2437.06 31.44 moveto +2426.48 31.03 lineto +2434.49 37.96 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2437.06 31.44 moveto +2426.48 31.03 lineto +2434.49 37.96 lineto +closepath stroke +grestore +% whatnow +gsave +1 setlinewidth +0 0 0 nodecolor +2878 18 52.47 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2845.5 14.3 moveto 65 (whatnow) alignedtext +grestore +% annosbr.c->whatnow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2849.97 179.93 moveto +2855.37 148.97 2866.8 83.3 2873.28 46.13 curveto +stroke +0 0 0 edgecolor +newpath 2876.77 46.47 moveto +2875.04 36.02 lineto +2869.87 45.27 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2876.77 46.47 moveto +2875.04 36.02 lineto +2869.87 45.27 lineto +closepath stroke +grestore +% sendsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 2993.25 216 moveto +2908.75 216 lineto +2908.75 180 lineto +2993.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2916.5 194.3 moveto 69 (sendsbr.c) alignedtext +grestore +% sendsbr.c->comp +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2969.31 179.93 moveto +3004.01 147.6 3079.29 77.44 3117.98 41.38 curveto +stroke +0 0 0 edgecolor +newpath 3120.73 43.61 moveto +3125.66 34.23 lineto +3115.95 38.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3120.73 43.61 moveto +3125.66 34.23 lineto +3115.95 38.49 lineto +closepath stroke +grestore +% sendsbr.c->dist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2953.49 179.93 moveto +2958.02 148.97 2967.61 83.3 2973.04 46.13 curveto +stroke +0 0 0 edgecolor +newpath 2976.53 46.42 moveto +2974.51 36.02 lineto +2969.61 45.4 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2976.53 46.42 moveto +2974.51 36.02 lineto +2969.61 45.4 lineto +closepath stroke +grestore +% sendsbr.c->forw +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2960.97 179.93 moveto +2979.36 148.46 3018.69 81.15 3040.2 44.33 curveto +stroke +0 0 0 edgecolor +newpath 3043.49 45.64 moveto +3045.51 35.24 lineto +3037.44 42.11 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3043.49 45.64 moveto +3045.51 35.24 lineto +3037.44 42.11 lineto +closepath stroke +grestore +% sendsbr.c->repl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2977.37 179.93 moveto +3029.34 146.29 3144.6 71.69 3197.93 37.17 curveto +stroke +0 0 0 edgecolor +newpath 3200.04 39.97 moveto +3206.54 31.6 lineto +3196.24 34.09 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3200.04 39.97 moveto +3206.54 31.6 lineto +3196.24 34.09 lineto +closepath stroke +grestore +% sendsbr.c->send +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2925.97 179.93 moveto +2877.13 146.62 2769.39 73.14 2718.14 38.19 curveto +stroke +0 0 0 edgecolor +newpath 2720.07 35.27 moveto +2709.84 32.53 lineto +2716.13 41.06 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2720.07 35.27 moveto +2709.84 32.53 lineto +2716.13 41.06 lineto +closepath stroke +grestore +% sendsbr.c->viamail +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2908.72 183.15 moveto +2905.43 182.08 2902.16 181.02 2899 180 curveto +2699.2 115.37 2648.98 100.07 2449 36 curveto +2445.87 35 2442.64 33.96 2439.38 32.92 curveto +stroke +0 0 0 edgecolor +newpath 2440.23 29.52 moveto +2429.64 29.8 lineto +2438.1 36.18 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2440.23 29.52 moveto +2429.64 29.8 lineto +2438.1 36.18 lineto +closepath stroke +grestore +% sendsbr.c->whatnow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2944 179.93 moveto +2931.25 148.83 2904.14 82.73 2888.93 45.65 curveto +stroke +0 0 0 edgecolor +newpath 2892.01 43.94 moveto +2884.98 36.02 lineto +2885.53 46.6 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2892.01 43.94 moveto +2884.98 36.02 lineto +2885.53 46.6 lineto +closepath stroke +grestore +% distsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 2785.25 216 moveto +2708.75 216 lineto +2708.75 180 lineto +2785.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2716.5 194.3 moveto 61 (distsbr.c) alignedtext +grestore +% distsbr.c->comp +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2784.87 179.93 moveto +2861.2 145.54 3032.51 68.34 3106.67 34.92 curveto +stroke +0 0 0 edgecolor +newpath 3108.37 37.99 moveto +3116.05 30.69 lineto +3105.5 31.61 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3108.37 37.99 moveto +3116.05 30.69 lineto +3105.5 31.61 lineto +closepath stroke +grestore +% distsbr.c->dist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2769.05 179.93 moveto +2811.94 146.74 2906.33 73.69 2951.69 38.59 curveto +stroke +0 0 0 edgecolor +newpath 2954.06 41.18 moveto +2959.82 32.29 lineto +2949.77 35.65 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2954.06 41.18 moveto +2959.82 32.29 lineto +2949.77 35.65 lineto +closepath stroke +grestore +% distsbr.c->forw +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2776.53 179.93 moveto +2834.99 146.15 2964.9 71.07 3024.3 36.74 curveto +stroke +0 0 0 edgecolor +newpath 3026.3 39.63 moveto +3033.2 31.6 lineto +3022.79 33.57 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3026.3 39.63 moveto +3033.2 31.6 lineto +3022.79 33.57 lineto +closepath stroke +grestore +% rcvdist +gsave +1 setlinewidth +0 0 0 nodecolor +2597 18 42.35 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2572 14.3 moveto 50 (rcvdist) alignedtext +grestore +% distsbr.c->rcvdist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2732.62 179.93 moveto +2705.76 148.06 2647.92 79.42 2617.17 42.94 curveto +stroke +0 0 0 edgecolor +newpath 2619.81 40.63 moveto +2610.69 35.24 lineto +2614.45 45.14 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2619.81 40.63 moveto +2610.69 35.24 lineto +2614.45 45.14 lineto +closepath stroke +grestore +% distsbr.c->repl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2785.57 183.22 moveto +2878.02 150.15 3110.26 66.73 3187 36 curveto +3189.2 35.12 3191.46 34.19 3193.73 33.25 curveto +stroke +0 0 0 edgecolor +newpath 3195.17 36.44 moveto +3203 29.3 lineto +3192.43 30 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3195.17 36.44 moveto +3203 29.3 lineto +3192.43 30 lineto +closepath stroke +grestore +% distsbr.c->send +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2741.53 179.93 moveto +2731.55 148.75 2710.3 82.4 2698.44 45.37 curveto +stroke +0 0 0 edgecolor +newpath 2701.75 44.21 moveto +2695.37 35.76 lineto +2695.08 46.35 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2701.75 44.21 moveto +2695.37 35.76 lineto +2695.08 46.35 lineto +closepath stroke +grestore +% distsbr.c->viamail +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2713.34 179.93 moveto +2646.97 146.27 2499.76 71.62 2431.74 37.12 curveto +stroke +0 0 0 edgecolor +newpath 2433.18 33.93 moveto +2422.68 32.53 lineto +2430.02 40.18 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2433.18 33.93 moveto +2422.68 32.53 lineto +2430.02 40.18 lineto +closepath stroke +grestore +% distsbr.c->whatnow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2759.56 179.93 moveto +2782.8 148.35 2832.6 80.69 2859.63 43.96 curveto +stroke +0 0 0 edgecolor +newpath 2862.56 45.88 moveto +2865.67 35.76 lineto +2856.92 41.74 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2862.56 45.88 moveto +2865.67 35.76 lineto +2856.92 41.74 lineto +closepath stroke +grestore +% whom +gsave +1 setlinewidth +0 0 0 nodecolor +2497 18 38.49 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2475 14.3 moveto 44 (whom) alignedtext +grestore +% distsbr.c->whom +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2723.03 179.93 moveto +2676.8 147.02 2575.5 74.89 2525.74 39.46 curveto +stroke +0 0 0 edgecolor +newpath 2527.53 36.44 moveto +2517.35 33.49 lineto +2523.47 42.14 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2527.53 36.44 moveto +2517.35 33.49 lineto +2523.47 42.14 lineto +closepath stroke +grestore +% whatnowproc.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 3273.25 216 moveto +3146.75 216 lineto +3146.75 180 lineto +3273.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +3154.5 194.3 moveto 111 (whatnowproc.c) alignedtext +grestore +% whatnowproc.c->comp +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3203.48 179.93 moveto +3191.57 148.75 3166.22 82.4 3152.07 45.37 curveto +stroke +0 0 0 edgecolor +newpath 3155.24 43.85 moveto +3148.4 35.76 lineto +3148.7 46.35 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3155.24 43.85 moveto +3148.4 35.76 lineto +3148.7 46.35 lineto +closepath stroke +grestore +% whatnowproc.c->dist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3187.66 179.93 moveto +3144.12 146.67 3048.19 73.39 3002.35 38.37 curveto +stroke +0 0 0 edgecolor +newpath 3004.47 35.58 moveto +2994.4 32.29 lineto +3000.22 41.15 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3004.47 35.58 moveto +2994.4 32.29 lineto +3000.22 41.15 lineto +closepath stroke +grestore +% whatnowproc.c->forw +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3195.14 179.93 moveto +3167.17 147.82 3106.7 78.37 3075.12 42.11 curveto +stroke +0 0 0 edgecolor +newpath 3077.69 39.72 moveto +3068.48 34.48 lineto +3072.41 44.32 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3077.69 39.72 moveto +3068.48 34.48 lineto +3072.41 44.32 lineto +closepath stroke +grestore +% whatnowproc.c->repl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3211.53 179.93 moveto +3214.32 148.97 3220.22 83.3 3223.56 46.13 curveto +stroke +0 0 0 edgecolor +newpath 3227.06 46.29 moveto +3224.47 36.02 lineto +3220.09 45.66 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3227.06 46.29 moveto +3224.47 36.02 lineto +3220.09 45.66 lineto +closepath stroke +grestore +% whatnowsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 3127.5 216 moveto +3012.5 216 lineto +3012.5 180 lineto +3127.5 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +3020 194.3 moveto 100 (whatnowsbr.c) alignedtext +grestore +% whatnowsbr.c->comp +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3076.9 179.93 moveto +3089.52 148.75 3116.36 82.4 3131.33 45.37 curveto +stroke +0 0 0 edgecolor +newpath 3134.72 46.34 moveto +3135.22 35.76 lineto +3128.23 43.71 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3134.72 46.34 moveto +3135.22 35.76 lineto +3128.23 43.71 lineto +closepath stroke +grestore +% whatnowsbr.c->dist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3061.08 179.93 moveto +3044.64 148.46 3009.47 81.15 2990.24 44.33 curveto +stroke +0 0 0 edgecolor +newpath 2993.22 42.48 moveto +2985.49 35.24 lineto +2987.01 45.72 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2993.22 42.48 moveto +2985.49 35.24 lineto +2987.01 45.72 lineto +closepath stroke +grestore +% whatnowsbr.c->forw +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3068.56 179.93 moveto +3065.95 148.97 3060.42 83.3 3057.29 46.13 curveto +stroke +0 0 0 edgecolor +newpath 3060.76 45.69 moveto +3056.43 36.02 lineto +3053.79 46.27 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3060.76 45.69 moveto +3056.43 36.02 lineto +3053.79 46.27 lineto +closepath stroke +grestore +% whatnowsbr.c->repl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3084.96 179.93 moveto +3113.18 147.74 3174.27 78.02 3205.99 41.84 curveto +stroke +0 0 0 edgecolor +newpath 3208.69 44.06 moveto +3212.65 34.23 lineto +3203.43 39.45 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3208.69 44.06 moveto +3212.65 34.23 lineto +3203.43 39.45 lineto +closepath stroke +grestore +% whatnowsbr.c->whatnow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3051.59 179.93 moveto +3017.07 147.93 2942.55 78.84 2903.33 42.48 curveto +stroke +0 0 0 edgecolor +newpath 2905.23 39.47 moveto +2895.52 35.24 lineto +2900.47 44.61 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2905.23 39.47 moveto +2895.52 35.24 lineto +2900.47 44.61 lineto +closepath stroke +grestore +% scansbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 2066.5 216 moveto +1983.5 216 lineto +1983.5 180 lineto +2066.5 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1991 194.3 moveto 68 (scansbr.c) alignedtext +grestore +% scansbr.c->inc +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1983.45 182.39 moveto +1907.15 155.31 1739.91 94.7 1602 36 curveto +1600.19 35.23 1598.33 34.42 1596.47 33.59 curveto +stroke +0 0 0 edgecolor +newpath 1597.75 30.32 moveto +1587.2 29.34 lineto +1594.83 36.69 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1597.75 30.32 moveto +1587.2 29.34 lineto +1594.83 36.69 lineto +closepath stroke +grestore +% scansbr.c->msh +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2034.78 179.93 moveto +2052.81 148.46 2091.39 81.15 2112.48 44.33 curveto +stroke +0 0 0 edgecolor +newpath 2115.76 45.66 moveto +2117.69 35.24 lineto +2109.68 42.18 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2115.76 45.66 moveto +2117.69 35.24 lineto +2109.68 42.18 lineto +closepath stroke +grestore +% scansbr.c->rcvtty +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2018.48 179.93 moveto +2006.57 148.75 1981.22 82.4 1967.07 45.37 curveto +stroke +0 0 0 edgecolor +newpath 1970.24 43.85 moveto +1963.4 35.76 lineto +1963.7 46.35 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1970.24 43.85 moveto +1963.4 35.76 lineto +1963.7 46.35 lineto +closepath stroke +grestore +% scansbr.c->scan +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2027.01 179.93 moveto +2030.67 148.97 2038.41 83.3 2042.8 46.13 curveto +stroke +0 0 0 edgecolor +newpath 2046.3 46.36 moveto +2043.99 36.02 lineto +2039.34 45.54 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2046.3 46.36 moveto +2043.99 36.02 lineto +2039.34 45.54 lineto +closepath stroke +grestore +% dropsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 535.25 216 moveto +450.75 216 lineto +450.75 180 lineto +535.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +458.5 194.3 moveto 69 (dropsbr.c) alignedtext +grestore +% dropsbr.c->inc +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 535.4 182.48 moveto +538.63 181.58 541.86 180.74 545 180 curveto +975.72 78.89 1106.45 163.86 1530 36 curveto +1531.94 35.42 1533.9 34.74 1535.86 34.01 curveto +stroke +0 0 0 edgecolor +newpath 1537.61 37.07 moveto +1545.48 29.97 lineto +1534.9 30.62 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1537.61 37.07 moveto +1545.48 29.97 lineto +1534.9 30.62 lineto +closepath stroke +grestore +% dropsbr.c->msh +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 535.36 182.3 moveto +538.6 181.44 541.84 180.66 545 180 curveto +1218.97 40.19 1419.66 204.62 2087 36 curveto +2089.5 35.37 2092.04 34.6 2094.57 33.75 curveto +stroke +0 0 0 edgecolor +newpath 2096.03 36.94 moveto +2104.15 30.14 lineto +2093.56 30.39 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2096.03 36.94 moveto +2104.15 30.14 lineto +2093.56 30.39 lineto +closepath stroke +grestore +% packf +gsave +1 setlinewidth +0 0 0 nodecolor +595 18 36.1 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +575 14.3 moveto 40 (packf) alignedtext +grestore +% dropsbr.c->packf +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 502.78 179.93 moveto +520.77 148.54 559.19 81.49 580.32 44.61 curveto +stroke +0 0 0 edgecolor +newpath 583.61 45.91 moveto +585.55 35.5 lineto +577.54 42.43 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 583.61 45.91 moveto +585.55 35.5 lineto +577.54 42.43 lineto +closepath stroke +grestore +% rcvpack +gsave +1 setlinewidth +0 0 0 nodecolor +493 18 48.14 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +464 14.3 moveto 58 (rcvpack) alignedtext +grestore +% dropsbr.c->rcvpack +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 493 179.93 moveto +493 148.97 493 83.3 493 46.13 curveto +stroke +0 0 0 edgecolor +newpath 496.5 46.02 moveto +493 36.02 lineto +489.5 46.02 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 496.5 46.02 moveto +493 36.02 lineto +489.5 46.02 lineto +closepath stroke +grestore +% dropsbr.c->slocal +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 483.03 179.93 moveto +464.61 148.41 425.18 80.92 403.69 44.14 curveto +stroke +0 0 0 edgecolor +newpath 406.71 42.37 moveto +398.64 35.5 lineto +400.66 45.9 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 406.71 42.37 moveto +398.64 35.5 lineto +400.66 45.9 lineto +closepath stroke +grestore +% mhlistsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 906.25 216 moveto +811.75 216 lineto +811.75 180 lineto +906.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +819.5 194.3 moveto 79 (mhlistsbr.c) alignedtext +grestore +% mhlistsbr.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 906.61 180.41 moveto +1005.32 146.03 1230.99 67.42 1326.27 34.23 curveto +stroke +0 0 0 edgecolor +newpath 1327.59 37.48 moveto +1335.88 30.89 lineto +1325.29 30.87 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1327.59 37.48 moveto +1335.88 30.89 lineto +1325.29 30.87 lineto +closepath stroke +grestore +% mhlistsbr.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 897.83 179.93 moveto +975.96 145.59 1151.18 68.59 1227.41 35.08 curveto +stroke +0 0 0 edgecolor +newpath 1228.88 38.26 moveto +1236.63 31.03 lineto +1226.07 31.85 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1228.88 38.26 moveto +1236.63 31.03 lineto +1226.07 31.85 lineto +closepath stroke +grestore +% mhlistsbr.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 866.77 179.93 moveto +881.05 148.54 911.56 81.49 928.34 44.61 curveto +stroke +0 0 0 edgecolor +newpath 931.54 46.05 moveto +932.49 35.5 lineto +925.17 43.15 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 931.54 46.05 moveto +932.49 35.5 lineto +925.17 43.15 lineto +closepath stroke +grestore +% mhlistsbr.c->mhshow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 887.48 179.93 moveto +942.6 146.89 1063.64 74.35 1122.52 39.07 curveto +stroke +0 0 0 edgecolor +newpath 1124.63 41.88 moveto +1131.41 33.74 lineto +1121.03 35.88 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1124.63 41.88 moveto +1131.41 33.74 lineto +1121.03 35.88 lineto +closepath stroke +grestore +% mhlistsbr.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 876.26 179.93 moveto +908.63 147.93 978.48 78.84 1015.26 42.48 curveto +stroke +0 0 0 edgecolor +newpath 1017.93 44.76 moveto +1022.58 35.24 lineto +1013.01 39.78 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1017.93 44.76 moveto +1022.58 35.24 lineto +1013.01 39.78 lineto +closepath stroke +grestore +% mhoutsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1868.25 216 moveto +1771.75 216 lineto +1771.75 180 lineto +1868.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1779.5 194.3 moveto 81 (mhoutsbr.c) alignedtext +grestore +% mhoutsbr.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1776.85 179.93 moveto +1690.22 145.66 1496.15 68.9 1411.17 35.29 curveto +stroke +0 0 0 edgecolor +newpath 1412.43 32.02 moveto +1401.85 31.6 lineto +1409.86 38.53 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1412.43 32.02 moveto +1401.85 31.6 lineto +1409.86 38.53 lineto +closepath stroke +grestore +% mhoutsbr.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1787.3 179.93 moveto +1722.96 146.34 1580.39 71.92 1514.13 37.34 curveto +stroke +0 0 0 edgecolor +newpath 1515.41 34.06 moveto +1504.92 32.53 lineto +1512.17 40.26 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1515.41 34.06 moveto +1504.92 32.53 lineto +1512.17 40.26 lineto +closepath stroke +grestore +% mhoutsbr.c->viamail +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1868.61 182.11 moveto +1960.92 153.81 2167.93 90.24 2342 36 curveto +2345.49 34.91 2349.1 33.78 2352.74 32.64 curveto +stroke +0 0 0 edgecolor +newpath 2353.81 35.97 moveto +2362.31 29.64 lineto +2351.72 29.3 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2353.81 35.97 moveto +2362.31 29.64 lineto +2351.72 29.3 lineto +closepath stroke +grestore +% mhmisc.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1522 216 moveto +1436 216 lineto +1436 180 lineto +1522 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1444 194.3 moveto 70 (mhmisc.c) alignedtext +grestore +% mhmisc.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1468.55 179.93 moveto +1449.29 148.49 1408.13 81.26 1385.57 44.43 curveto +stroke +0 0 0 edgecolor +newpath 1388.47 42.46 moveto +1380.26 35.76 lineto +1382.5 46.11 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1388.47 42.46 moveto +1380.26 35.76 lineto +1382.5 46.11 lineto +closepath stroke +grestore +% mhmisc.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1458.38 179.93 moveto +1418.99 147.32 1333.09 76.2 1289.89 40.44 curveto +stroke +0 0 0 edgecolor +newpath 1292.03 37.66 moveto +1282.1 33.98 lineto +1287.57 43.06 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1292.03 37.66 moveto +1282.1 33.98 lineto +1287.57 43.06 lineto +closepath stroke +grestore +% mhmisc.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1435.87 182.89 moveto +1432.87 181.91 1429.89 180.94 1427 180 curveto +1228.9 115.64 1176.48 107.95 981 36 curveto +978.6 35.11 976.12 34.17 973.64 33.2 curveto +stroke +0 0 0 edgecolor +newpath 974.74 29.87 moveto +964.15 29.39 lineto +972.13 36.37 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 974.74 29.87 moveto +964.15 29.39 lineto +972.13 36.37 lineto +closepath stroke +grestore +% mhmisc.c->mhshow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1448.03 179.93 moveto +1387.68 146.67 1254.7 73.39 1191.15 38.37 curveto +stroke +0 0 0 edgecolor +newpath 1192.75 35.25 moveto +1182.3 33.49 lineto +1189.37 41.38 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1192.75 35.25 moveto +1182.3 33.49 lineto +1189.37 41.38 lineto +closepath stroke +grestore +% mhmisc.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1436.81 179.93 moveto +1352.39 145.78 1163.65 69.43 1080.12 35.64 curveto +stroke +0 0 0 edgecolor +newpath 1081.29 32.33 moveto +1070.71 31.83 lineto +1078.67 38.82 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1081.29 32.33 moveto +1070.71 31.83 lineto +1078.67 38.82 lineto +closepath stroke +grestore +% mhmisc.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1479 179.93 moveto +1479 148.97 1479 83.3 1479 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1482.5 46.02 moveto +1479 36.02 lineto +1475.5 46.02 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1482.5 46.02 moveto +1479 36.02 lineto +1475.5 46.02 lineto +closepath stroke +grestore +% mhmisc.c->viamail +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1522.28 182.35 moveto +1525.22 181.51 1528.14 180.72 1531 180 curveto +1886.07 90.9 1986.44 123.15 2342 36 curveto +2345.65 35.11 2349.42 34.1 2353.18 33.03 curveto +stroke +0 0 0 edgecolor +newpath 2354.47 36.3 moveto +2363.06 30.11 lineto +2352.48 29.59 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2354.47 36.3 moveto +2363.06 30.11 lineto +2352.48 29.59 lineto +closepath stroke +grestore +% mhfree.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1418 216 moveto +1338 216 lineto +1338 180 lineto +1418 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1346 194.3 moveto 64 (mhfree.c) alignedtext +grestore +% mhfree.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1377.23 179.93 moveto +1375.84 148.97 1372.89 83.3 1371.22 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1374.71 45.85 moveto +1370.76 36.02 lineto +1367.72 46.16 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1374.71 45.85 moveto +1370.76 36.02 lineto +1367.72 46.16 lineto +closepath stroke +grestore +% mhfree.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1367.07 179.93 moveto +1346.88 148.41 1303.65 80.92 1280.1 44.14 curveto +stroke +0 0 0 edgecolor +newpath 1282.91 42.03 moveto +1274.57 35.5 lineto +1277.01 45.81 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1282.91 42.03 moveto +1274.57 35.5 lineto +1277.01 45.81 lineto +closepath stroke +grestore +% mhfree.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1337.95 180.88 moveto +1266.28 152 1111.4 89.48 981 36 curveto +978.77 35.09 976.48 34.14 974.17 33.19 curveto +stroke +0 0 0 edgecolor +newpath 975.28 29.86 moveto +964.7 29.28 lineto +972.61 36.33 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 975.28 29.86 moveto +964.7 29.28 lineto +972.61 36.33 lineto +closepath stroke +grestore +% mhfree.c->mhshow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1356.71 179.93 moveto +1316.26 147.49 1228.3 76.97 1183.47 41.03 curveto +stroke +0 0 0 edgecolor +newpath 1185.61 38.26 moveto +1175.62 34.73 lineto +1181.23 43.72 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1185.61 38.26 moveto +1175.62 34.73 lineto +1181.23 43.72 lineto +closepath stroke +grestore +% mhfree.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1345.5 179.93 moveto +1282 146.59 1141.89 73.03 1075.4 38.11 curveto +stroke +0 0 0 edgecolor +newpath 1076.62 34.8 moveto +1066.14 33.25 lineto +1073.36 41 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1076.62 34.8 moveto +1066.14 33.25 lineto +1073.36 41 lineto +closepath stroke +grestore +% mhfree.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1387.68 179.93 moveto +1405.45 148.62 1443.35 81.83 1464.31 44.9 curveto +stroke +0 0 0 edgecolor +newpath 1467.6 46.18 moveto +1469.49 35.76 lineto +1461.51 42.73 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1467.6 46.18 moveto +1469.49 35.76 lineto +1461.51 42.73 lineto +closepath stroke +grestore +% mhparse.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1017 216 moveto +925 216 lineto +925 180 lineto +1017 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +933 194.3 moveto 76 (mhparse.c) alignedtext +grestore +% mhparse.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1009.26 179.93 moveto +1085.2 146.05 1254.25 70.64 1330.89 36.45 curveto +stroke +0 0 0 edgecolor +newpath 1332.49 39.57 moveto +1340.2 32.29 lineto +1329.64 33.17 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1332.49 39.57 moveto +1340.2 32.29 lineto +1329.64 33.17 lineto +closepath stroke +grestore +% mhparse.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 999.09 179.93 moveto +1054.02 146.56 1175.28 72.9 1232.69 38.02 curveto +stroke +0 0 0 edgecolor +newpath 1234.61 40.95 moveto +1241.34 32.77 lineto +1230.97 34.97 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1234.61 40.95 moveto +1241.34 32.77 lineto +1230.97 34.97 lineto +closepath stroke +grestore +% mhparse.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 968.03 179.93 moveto +962.63 148.97 951.2 83.3 944.72 46.13 curveto +stroke +0 0 0 edgecolor +newpath 948.13 45.27 moveto +942.96 36.02 lineto +941.23 46.47 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 948.13 45.27 moveto +942.96 36.02 lineto +941.23 46.47 lineto +closepath stroke +grestore +% mhparse.c->mhshow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 988.74 179.93 moveto +1022.09 147.84 1094.17 78.49 1131.88 42.2 curveto +stroke +0 0 0 edgecolor +newpath 1134.61 44.44 moveto +1139.39 34.99 lineto +1129.75 39.4 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1134.61 44.44 moveto +1139.39 34.99 lineto +1129.75 39.4 lineto +closepath stroke +grestore +% mhparse.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 977.52 179.93 moveto +989.4 148.83 1014.65 82.73 1028.82 45.65 curveto +stroke +0 0 0 edgecolor +newpath 1032.2 46.61 moveto +1032.5 36.02 lineto +1025.66 44.11 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1032.2 46.61 moveto +1032.5 36.02 lineto +1025.66 44.11 lineto +closepath stroke +grestore +% mhparse.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1017.43 180.73 moveto +1115.86 146.24 1344.12 66.26 1437.77 33.45 curveto +stroke +0 0 0 edgecolor +newpath 1439.18 36.66 moveto +1447.46 30.05 lineto +1436.87 30.05 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1439.18 36.66 moveto +1447.46 30.05 lineto +1436.87 30.05 lineto +closepath stroke +grestore +% ftpsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1106.25 216 moveto +1035.75 216 lineto +1035.75 180 lineto +1106.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1043.5 194.3 moveto 55 (ftpsbr.c) alignedtext +grestore +% ftpsbr.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1099.67 179.93 moveto +1155.17 146.89 1277.02 74.35 1336.29 39.07 curveto +stroke +0 0 0 edgecolor +newpath 1338.44 41.86 moveto +1345.25 33.74 lineto +1334.86 35.84 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1338.44 41.86 moveto +1345.25 33.74 lineto +1334.86 35.84 lineto +closepath stroke +grestore +% ftpsbr.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1089.51 179.93 moveto +1124.47 147.68 1200.26 77.79 1239.44 41.65 curveto +stroke +0 0 0 edgecolor +newpath 1242.24 43.83 moveto +1247.21 34.48 lineto +1237.49 38.69 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1242.24 43.83 moveto +1247.21 34.48 lineto +1237.49 38.69 lineto +closepath stroke +grestore +% ftpsbr.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1058.44 179.93 moveto +1034.96 148.03 984.38 79.3 957.55 42.84 curveto +stroke +0 0 0 edgecolor +newpath 960.32 40.71 moveto +951.58 34.73 lineto +954.69 44.86 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 960.32 40.71 moveto +951.58 34.73 lineto +954.69 44.86 lineto +closepath stroke +grestore +% ftpsbr.c->mhshow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1079.15 179.93 moveto +1094.06 148.7 1125.84 82.17 1143.5 45.18 curveto +stroke +0 0 0 edgecolor +newpath 1146.72 46.55 moveto +1147.87 36.02 lineto +1140.41 43.53 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1146.72 46.55 moveto +1147.87 36.02 lineto +1140.41 43.53 lineto +closepath stroke +grestore +% ftpsbr.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1067.93 179.93 moveto +1062.36 148.97 1050.56 83.3 1043.88 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1047.27 45.24 moveto +1042.06 36.02 lineto +1040.38 46.48 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1047.27 45.24 moveto +1042.06 36.02 lineto +1040.38 46.48 lineto +closepath stroke +grestore +% ftpsbr.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1106.49 181.52 moveto +1182.91 148.18 1362.42 69.86 1441.02 35.57 curveto +stroke +0 0 0 edgecolor +newpath 1442.77 38.63 moveto +1450.53 31.42 lineto +1439.97 32.21 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1442.77 38.63 moveto +1450.53 31.42 lineto +1439.97 32.21 lineto +closepath stroke +grestore +% md5.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1185.25 216 moveto +1124.75 216 lineto +1124.75 180 lineto +1185.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1132.5 194.3 moveto 45 (md5.c) alignedtext +grestore +% md5.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1175.62 179.93 moveto +1214.72 147.56 1299.62 77.27 1343.12 41.25 curveto +stroke +0 0 0 edgecolor +newpath 1345.53 43.81 moveto +1351 34.73 lineto +1341.06 38.41 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1345.53 43.81 moveto +1351 34.73 lineto +1341.06 38.41 lineto +closepath stroke +grestore +% md5.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1165.45 179.93 moveto +1184.76 148.41 1226.09 80.92 1248.6 44.14 curveto +stroke +0 0 0 edgecolor +newpath 1251.66 45.85 moveto +1253.9 35.5 lineto +1245.69 42.2 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1251.66 45.85 moveto +1253.9 35.5 lineto +1245.69 42.2 lineto +closepath stroke +grestore +% md5.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1134.38 179.93 moveto +1094.69 147.07 1007.79 75.13 964.93 39.64 curveto +stroke +0 0 0 edgecolor +newpath 967.15 36.93 moveto +957.21 33.25 lineto +962.68 42.32 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 967.15 36.93 moveto +957.21 33.25 lineto +962.68 42.32 lineto +closepath stroke +grestore +% md5.c->mhshow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1155.1 179.93 moveto +1155.27 148.97 1155.64 83.3 1155.85 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1159.35 46.04 moveto +1155.9 36.02 lineto +1152.35 46 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1159.35 46.04 moveto +1155.9 36.02 lineto +1152.35 46 lineto +closepath stroke +grestore +% md5.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1143.88 179.93 moveto +1123.39 148.49 1079.57 81.26 1055.57 44.43 curveto +stroke +0 0 0 edgecolor +newpath 1058.31 42.22 moveto +1049.92 35.76 lineto +1052.45 46.04 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1058.31 42.22 moveto +1049.92 35.76 lineto +1052.45 46.04 lineto +closepath stroke +grestore +% md5.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1185.48 180.25 moveto +1246.29 146.85 1382.25 72.15 1445.48 37.42 curveto +stroke +0 0 0 edgecolor +newpath 1447.18 40.47 moveto +1454.26 32.59 lineto +1443.81 34.34 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1447.18 40.47 moveto +1454.26 32.59 lineto +1443.81 34.34 lineto +closepath stroke +grestore +% mhbuildsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1650 216 moveto +1540 216 lineto +1540 180 lineto +1650 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1548 194.3 moveto 94 (mhbuildsbr.c) alignedtext +grestore +% mhbuildsbr.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1573.43 179.93 moveto +1532.32 147.41 1442.83 76.62 1397.5 40.75 curveto +stroke +0 0 0 edgecolor +newpath 1399.58 37.94 moveto +1389.57 34.48 lineto +1395.24 43.43 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1399.58 37.94 moveto +1389.57 34.48 lineto +1395.24 43.43 lineto +closepath stroke +grestore +% mhcachesbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1319.5 216 moveto +1204.5 216 lineto +1204.5 180 lineto +1319.5 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1212 194.3 moveto 100 (mhcachesbr.c) alignedtext +grestore +% mhcachesbr.c->mhbuild +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1272.36 179.93 moveto +1291.43 148.49 1332.22 81.26 1354.57 44.43 curveto +stroke +0 0 0 edgecolor +newpath 1357.64 46.12 moveto +1359.83 35.76 lineto +1351.65 42.49 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1357.64 46.12 moveto +1359.83 35.76 lineto +1351.65 42.49 lineto +closepath stroke +grestore +% mhcachesbr.c->mhlist +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1262.19 179.93 moveto +1262.54 148.97 1263.28 83.3 1263.7 46.13 curveto +stroke +0 0 0 edgecolor +newpath 1267.2 46.05 moveto +1263.81 36.02 lineto +1260.2 45.98 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1267.2 46.05 moveto +1263.81 36.02 lineto +1260.2 45.98 lineto +closepath stroke +grestore +% mhcachesbr.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1231.13 179.93 moveto +1169.59 145.92 1032.3 70.02 970.81 36.03 curveto +stroke +0 0 0 edgecolor +newpath 972.41 32.92 moveto +961.96 31.14 lineto +969.02 39.04 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 972.41 32.92 moveto +961.96 31.14 lineto +969.02 39.04 lineto +closepath stroke +grestore +% mhcachesbr.c->mhshow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1251.84 179.93 moveto +1233.11 148.49 1193.08 81.26 1171.14 44.43 curveto +stroke +0 0 0 edgecolor +newpath 1174.1 42.56 moveto +1165.98 35.76 lineto +1168.09 46.14 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1174.1 42.56 moveto +1165.98 35.76 lineto +1168.09 46.14 lineto +closepath stroke +grestore +% mhcachesbr.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1240.62 179.93 moveto +1199.98 147.49 1111.63 76.97 1066.59 41.03 curveto +stroke +0 0 0 edgecolor +newpath 1068.71 38.24 moveto +1058.71 34.73 lineto +1064.34 43.71 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1068.71 38.24 moveto +1058.71 34.73 lineto +1064.34 43.71 lineto +closepath stroke +grestore +% mhcachesbr.c->mhtest +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1282.81 179.93 moveto +1322.47 147.4 1408.83 76.56 1452.54 40.71 curveto +stroke +0 0 0 edgecolor +newpath 1454.92 43.28 moveto +1460.43 34.23 lineto +1450.48 37.87 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1454.92 43.28 moveto +1460.43 34.23 lineto +1450.48 37.87 lineto +closepath stroke +grestore +% mhlsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 1965 216 moveto +1887 216 lineto +1887 180 lineto +1965 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +1895 194.3 moveto 62 (mhlsbr.c) alignedtext +grestore +% mhlsbr.c->mhl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1912.38 179.93 moveto +1886.87 147.95 1831.83 78.96 1802.8 42.57 curveto +stroke +0 0 0 edgecolor +newpath 1805.32 40.12 moveto +1796.35 34.48 lineto +1799.85 44.48 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1805.32 40.12 moveto +1796.35 34.48 lineto +1799.85 44.48 lineto +closepath stroke +grestore +% mhlsbr.c->msh +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1945.27 179.93 moveto +1982.23 147.21 2062.95 75.73 2103.19 40.08 curveto +stroke +0 0 0 edgecolor +newpath 2105.74 42.5 moveto +2110.91 33.25 lineto +2101.1 37.26 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2105.74 42.5 moveto +2110.91 33.25 lineto +2101.1 37.26 lineto +closepath stroke +grestore +% mhlsbr.c->show +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 1920.25 179.93 moveto +1909.76 148.83 1887.48 82.73 1874.98 45.65 curveto +stroke +0 0 0 edgecolor +newpath 1878.25 44.37 moveto +1871.74 36.02 lineto +1871.61 46.61 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1878.25 44.37 moveto +1871.74 36.02 lineto +1871.61 46.61 lineto +closepath stroke +grestore +% mhshowsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 793.25 216 moveto +682.75 216 lineto +682.75 180 lineto +793.25 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +690.5 194.3 moveto 95 (mhshowsbr.c) alignedtext +grestore +% mhshowsbr.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 757.37 179.93 moveto +794.49 147.22 875.56 75.78 916.03 40.12 curveto +stroke +0 0 0 edgecolor +newpath 918.37 42.73 moveto +923.55 33.49 lineto +913.74 37.48 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 918.37 42.73 moveto +923.55 33.49 lineto +913.74 37.48 lineto +closepath stroke +grestore +% mhshowsbr.c->mhshow +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 778.08 179.93 moveto +857.9 145.94 1035.9 70.14 1115.81 36.11 curveto +stroke +0 0 0 edgecolor +newpath 1117.23 39.32 moveto +1125.06 32.18 lineto +1114.48 32.88 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1117.23 39.32 moveto +1125.06 32.18 lineto +1114.48 32.88 lineto +closepath stroke +grestore +% mhshowsbr.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 766.86 179.93 moveto +822.84 146.83 945.9 74.06 1005.43 38.85 curveto +stroke +0 0 0 edgecolor +newpath 1007.25 41.84 moveto +1014.08 33.74 lineto +1003.69 35.81 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 1007.25 41.84 moveto +1014.08 33.74 lineto +1003.69 35.81 lineto +closepath stroke +grestore +% mhstoresbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 664 216 moveto +554 216 lineto +554 180 lineto +664 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +562 194.3 moveto 94 (mhstoresbr.c) alignedtext +grestore +% mhstoresbr.c->mhn +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 640.74 179.93 moveto +704.15 145.83 845.81 69.65 908.79 35.79 curveto +stroke +0 0 0 edgecolor +newpath 910.69 38.74 moveto +917.84 30.92 lineto +907.38 32.57 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 910.69 38.74 moveto +917.84 30.92 lineto +907.38 32.57 lineto +closepath stroke +grestore +% mhstoresbr.c->mhstore +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 650.23 179.93 moveto +732.54 145.86 916.35 69.77 998.26 35.86 curveto +stroke +0 0 0 edgecolor +newpath 999.83 39 moveto +1007.73 31.94 lineto +997.15 32.54 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 999.83 39 moveto +1007.73 31.94 lineto +997.15 32.54 lineto +closepath stroke +grestore +% picksbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 2283 216 moveto +2201 216 lineto +2201 180 lineto +2283 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2209 194.3 moveto 66 (picksbr.c) alignedtext +grestore +% picksbr.c->msh +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2230.97 179.93 moveto +2210.5 148.25 2166.56 80.23 2142.88 43.58 curveto +stroke +0 0 0 edgecolor +newpath 2145.69 41.49 moveto +2137.33 34.99 lineto +2139.81 45.28 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2145.69 41.49 moveto +2137.33 34.99 lineto +2139.81 45.28 lineto +closepath stroke +grestore +% pick +gsave +1 setlinewidth +0 0 0 nodecolor +2224 18 30.32 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2208.5 14.3 moveto 31 (pick) alignedtext +grestore +% picksbr.c->pick +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2240.27 179.93 moveto +2237.14 148.97 2230.5 83.3 2226.74 46.13 curveto +stroke +0 0 0 edgecolor +newpath 2230.21 45.61 moveto +2225.72 36.02 lineto +2223.24 46.32 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2230.21 45.61 moveto +2225.72 36.02 lineto +2223.24 46.32 lineto +closepath stroke +grestore +% mshcmds.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 2182.5 216 moveto +2085.5 216 lineto +2085.5 180 lineto +2182.5 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2093 194.3 moveto 82 (mshcmds.c) alignedtext +grestore +% mshcmds.c->msh +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2133.33 179.93 moveto +2132.11 148.97 2129.53 83.3 2128.07 46.13 curveto +stroke +0 0 0 edgecolor +newpath 2131.56 45.87 moveto +2127.67 36.02 lineto +2124.56 46.15 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2131.56 45.87 moveto +2127.67 36.02 lineto +2124.56 46.15 lineto +closepath stroke +grestore +% vmhsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 2383 216 moveto +2301 216 lineto +2301 180 lineto +2383 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2309 194.3 moveto 66 (vmhsbr.c) alignedtext +grestore +% vmhsbr.c->msh +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2321.38 179.93 moveto +2281.68 147.06 2194.72 75.07 2151.87 39.59 curveto +stroke +0 0 0 edgecolor +newpath 2153.85 36.69 moveto +2143.92 33.01 lineto +2149.39 42.08 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2153.85 36.69 moveto +2143.92 33.01 lineto +2149.39 42.08 lineto +closepath stroke +grestore +% vmh +gsave +1 setlinewidth +0 0 0 nodecolor +2303 18 30.32 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +2287.5 14.3 moveto 31 (vmh) alignedtext +grestore +% vmhsbr.c->vmh +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 2338.26 179.93 moveto +2331.48 148.97 2317.09 83.3 2308.94 46.13 curveto +stroke +0 0 0 edgecolor +newpath 2312.29 45.03 moveto +2306.73 36.02 lineto +2305.45 46.53 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 2312.29 45.03 moveto +2306.73 36.02 lineto +2305.45 46.53 lineto +closepath stroke +grestore +% replsbr.c +gsave +1 setlinewidth +0 0 0 nodecolor +newpath 3372 216 moveto +3292 216 lineto +3292 180 lineto +3372 180 lineto +closepath stroke +0 0 0 nodecolor +14 /Times-Roman set_font +3300 194.3 moveto 64 (replsbr.c) alignedtext +grestore +% replsbr.c->repl +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 3321.84 179.93 moveto +3303.01 148.33 3262.67 80.57 3240.81 43.86 curveto +stroke +0 0 0 edgecolor +newpath 3243.8 42.04 moveto +3235.67 35.24 lineto +3237.78 45.62 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 3243.8 42.04 moveto +3235.67 35.24 lineto +3237.78 45.62 lineto +closepath stroke +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +end +restore +%%EOF diff -r 8c537982d718 -r 95257474a123 makefile --- a/makefile Sat Jul 14 23:19:27 2012 +0200 +++ b/makefile Sun Jul 15 18:41:35 2012 +0200 @@ -11,12 +11,14 @@ $(NAME).ps: $(CHAPS) makefile $(BIB) toc.ig refs.ig export TROFFONTS=fonts;\ soelim $(CHAPS) | $(REFER) | \ - tbl | grap | pic | troff -Tps -ms 2>err.ig | dpost >$@ + tbl | grap | pic | \ + troff -Tps -ms -mpictures 2>err.ig | dpost >$@ err.ig: $(CHAPS) export TROFFONTS=fonts;\ soelim $(CHAPS) | $(REFER) | \ - tbl | grap | pic | troff -Tps -ms -rZ1 -z 2>$@ + tbl | grap | pic | \ + troff -Tps -ms -mpictures -rZ1 -z 2>$@ toc.ig: err.ig sed -n '/^TOC____/s///p' err.ig >$@