3 ASSUMPTIONS/RESTRICTIONS:
5 All of the code is written for Version 7 C, and assumes
6 the existence of appropriate Version 7 /usr/include files. It
7 also uses the Version 7 stdio package, which is somewhat
8 different than the Phototypesetter stdio!
10 There is moderate usage of Version 7 UNIX features,
14 execlp() & execvp() environment exec calls
15 getenv() environment access
17 also, login has to be changed to add the environment entry
18 "USER=name". This is used during scan listings to see if the
19 message "From" should be replaced by "To:name". This string is
20 NOT used to determine the "From: name" stamp on outgoing mail.
22 All of these usages ARE replaceable by subroutines which
23 do the same thing, only slower. That is, a line of the form:
25 homedir = getenv("HOME");
27 should be replaced by something like:
31 and the routine gethome() written to return the home directory by
32 looking through /etc/passwd for the line matching the process'
33 getuid(). This goes for the environment variable "USER" as well.
35 The routines execlp() & execvp() are simply fancy exec's, which
36 use the "PATH" environment variable to determine the search path
37 by which to find the executable image. They can be replaced by
38 routines which use a default search list. They also call a shell
39 to execute the file in the same way the shell handles shell
47 1) Read the MH directory tree onto a file system.
49 2) Examine all of the files in directory strings. These are the
50 names and paths of all of the programs MH calls upon. Change
51 them to suit your installation. Most of the files contain
52 short descriptions of what the strings are.
54 3) In the top level directory, utter:
56 make strings.a subs.a all
58 This will make both of the libraries: strings.a and subs.a,
59 and ALL of the executable modules.
63 make onceonly This renames conflicting bell
64 programs, and makes requisite
67 make install This puts all of the programs
68 into appropriate directories.
70 That's it. Take a close look at the Makefile--it does LOTS of
71 work. If you don't want to install everything in standard
72 places, run "make install" with the variables MHDIR=newdir and
73 BINDIR=newdir pointing wherever you wish. If you do this, you
74 probably have to change some of the path names in the strings
75 files. For most of them, you can get away with adding profile
76 entries to change where the default paths are sought.
78 If you don't have `make':
80 You'll have to use the make file as a template for commands
81 to give by hand. Basically each section of the make file
82 defines the sequence of shell commands needed to create the
83 object before the `:'. The list immediately after the `:'
84 specifies the dependencies for the object--that is, those
85 objects which either must be made first, or those modules
86 that if they've changed, the object must be rebuilt. The
87 following lines (up to the next object) are simply shell
88 commands to be executed. Make knows how to create .o's from
89 .c's, and the "CFLAGS= -O" at the beginning tells it to
90 include optimization when it does a c compile.
92 If you don't have stdio (i.e. some version 7 C compiler):
94 Punt. I recently converted the whole package from the old
95 getc/putc/iobuf subroutines--including lots of upgrades/
96 improvements, it took me about a week. Expect it to take a
97 couple of weeks for someone good to convert back.
98 Basically, convert the subroutines, then once you've
99 converted one module (start with show or comp), you'll find
100 all the rest VERY similar. Some day I may split out all of
101 the system dependencies, but don't hold your breath.
107 Feel free to call me, but please don't expect me to spend
108 hours helping. Collect your questions/problems, and get in touch
109 and I'll see what I can do. I can be reached:
111 via ARPANET: Borden at Rand-UNIX
113 Mail: The Rand Corporation
115 Santa Monica, CA 90406
117 Phone: (213) 399-0568 x 7463