                      HOW TO GENERATE AN MH

ASSUMPTIONS/RESTRICTIONS:

        All of the code is written for Version 7 C, and assumes
the existence of appropriate Version 7 /usr/include files.  It
also uses the Version 7 stdio package, which is somewhat
different than the Phototypesetter stdio!

        There is moderate usage of Version 7 UNIX features,
including:

		ftime() system call
		execlp() & execvp() environment exec calls
		getenv() environment access

also, login has to be changed to add the environment entry
"USER=name".  This is used during scan listings to see if the
message "From" should be replaced by "To:name".  This string is
NOT used to determine the "From: name" stamp on outgoing mail.

        All of these usages ARE replaceable by subroutines which
do the same thing, only slower.  That is, a line of the form:

		homedir = getenv("HOME");

should be replaced by something like:

		homedir = gethome();

and the routine gethome() written to return the home directory by
looking through /etc/passwd for the line matching the process'
getuid().  This goes for the environment variable "USER" as well.

The routines execlp() & execvp() are simply fancy exec's, which
use the "PATH" environment variable to determine the search path
by which to find the executable image.  They can be replaced by
routines which use a default search list.  They also call a shell
to execute the file in the same way the shell handles shell
scripts.



PROCEDURE:


1) Read the MH directory tree onto a file system.

2) Examine all of the files in directory strings.  These are the
   names and paths of all of the programs MH calls upon.  Change
   them to suit your installation.  Most of the files contain
   short descriptions of what the strings are.

3) In the top level directory, utter:

	make strings.a subs.a all

   This will make both of the libraries: strings.a and subs.a,
   and ALL of the executable modules.

4) AS SU:

	make onceonly           This renames conflicting bell
				programs, and makes requisite
				directories.

	make install            This puts all of the programs
				into appropriate directories.

That's it.  Take a close look at the Makefile--it does LOTS of
work.  If you don't want to install everything in standard
places, run "make install" with the variables MHDIR=newdir and
BINDIR=newdir pointing wherever you wish.  If you do this, you
probably have to change some of the path names in the strings
files.  For most of them, you can get away with adding profile
entries to change where the default paths are sought.

If you don't have `make':

     You'll have to use the make file as a template for commands
     to give by hand.  Basically each section of the make file
     defines the sequence of shell commands needed to create the
     object before the `:'.  The list immediately after the `:'
     specifies the dependencies for the object--that is, those
     objects which either must be made first, or those modules
     that if they've changed, the object must be rebuilt.  The
     following lines (up to the next object) are simply shell
     commands to be executed.  Make knows how to create .o's from
     .c's, and the "CFLAGS= -O" at the beginning tells it to
     include optimization when it does a c compile.

If you don't have stdio (i.e. some version 7 C compiler):

     Punt.  I recently converted the whole package from the old
     getc/putc/iobuf subroutines--including lots of upgrades/
     improvements, it took me about a week.  Expect it to take a
     couple of weeks for someone good to convert back.
     Basically, convert the subroutines, then once you've
     converted one module (start with show or comp), you'll find
     all the rest VERY similar.  Some day I may split out all of
     the system dependencies, but don't hold your breath.



As a last resort:

     Feel free to call me, but please don't expect me to spend
hours helping.  Collect your questions/problems, and get in touch
and I'll see what I can do.  I can be reached:

	via ARPANET:    Borden at Rand-UNIX

	Mail:           The Rand Corporation
			1700 Main Street
			Santa Monica, CA 90406

	Phone:          (213) 399-0568 x 7463



Bruce Borden
October, 1979
