MH 6.7 Updates - part 06/14

John Romine mh at beanie.ICS.UCI.EDU
Sat Apr 14 07:13:43 AEST 1990


These are patches for MH 6.6 to bring it up to the current release MH
6.7.  If you can FTP, you should instead retrieve the current release
(from ics.uci.edu [128.195.1.1] in pub/mh).  See the announcement in
comp.mail.mh for all the details.  A document descibing the changes
from MH 6.6 can also be found in comp.mail.mh.

There are fourteen parts to these patches; you *must* have all the
parts to compile MH.  It will not work if you try to compile an
intermediate version.

Save this message, extract the file below and apply it with "patch -p"
from the top of your MH source tree:

	cd mh-6.6/
	patch -p < MH.6.6.n

If you have modified your source tree, you'll have to merge your local
changes in after you apply these patches to the original sources.

/JLR

: This is a shar archive.  Extract with sh, not csh.
: This archive ends with exit, so do not worry about trailing junk.
echo 'Extracting MH.6.6.5'
sed 's/^X//' > MH.6.6.5 << '+ END-OF-FILE MH.6.6.5'
XPrereq: patch.4
X*** Patchlevel.orig	Thu Apr 12 15:57:04 1990
X--- Patchlevel	Thu Apr 12 15:57:28 1990
X***************
X*** 1 ****
X! MH.6.6 patch.4
X--- 1 ----
X! MH.6.6 patch.5
X*** /dev/null	Thu Apr 12 15:37:43 1990
X--- ./papers/mh6.7/mh6.7.ms	Tue Apr 10 13:33:03 1990
X***************
X*** 0 ****
X--- 1,470 ----
X+ .\" @(#)$Id: mh6.7.ms,v 1.10 90/04/10 13:23:45 sources Exp $
X+ .\" Standard -ms macros
X+ .\" with the following changes
X+ .ds lq \\*Q
X+ .ds rq \\*U
X+ .DA "April 9, 1990"
X+ .if n \{\
X+ .nr PO 1i
X+ .po 1i
X+ .\}
X+ .EH ''Changes to MH 6.7'%'
X+ .OH ''Changes to MH 6.7'%'
X+ .TL
X+ Changes to
X+ .br
X+ The RAND MH Message Handling System:
X+ .br
X+ UCI version MH 6.7
X+ .AU
X+ John L. Romine
X+ .AI
X+ Computing Support Group
X+ Department of Information and Computer Science
X+ University of California, Irvine
X+ Irvine, CA  92717
X+ .AB
X+ .PP
X+ This document describes the user\-visible and internal changes to the
X+ UCI version of the RAND MH system from MH 6.6
X+ to MH 6.7.  The first part should be of interest to all users
X+ of MH, while the latter part is of interest only to MH
X+ Administrators.
X+ .PP
X+ This document is meant to supplement,
X+ not supersede,
X+ the standard MH User's manual and MH Administrator's manual.
X+ .PP
X+ Comments concerning this documentation should be addressed to the
X+ mailbox \fBBug\-MH at ICS.UCI.EDU\fP, or \fBucbvax!ucivax!bug-mh\fP.
X+ .AE
X+ .SH
X+ ACKNOWLEDGEMENTS
X+ .LP
X+ The \fIMH\fP system described herein is
X+ based on the original RAND \fIMH\fP system.
X+ It has been extensively developed (perhaps too much so) by Marshall T. Rose
X+ and John L. Romine at the University of California, Irvine.
X+ Einar A. Stefferud, Jerry N. Sweet,
X+ and Terry P. Domae provided numerous suggestions
X+ to improve the UCI version of \fIMH\fP.
X+ .PP
X+ Of course,
X+ a large number of people have helped \fIMH\fP along.
X+ The list of \*(lq\fIMH\fP immortals\*(rq is too long to list here.
X+ For this release, numerous \fIMH\-Workers\fP sent in fixes and other
X+ changes.  A handful of courageous \fIMH\-Workers\fP volunteered
X+ to beta\-test these changes; their help is particularly appreciated.
X+ .SH
X+ DISCLAIMER
X+ .LP
X+ The Regents of the University of California wish to make it known that:
X+ .QP
X+ Although each program has been tested by its contributor,
X+ no warranty, express or implied,
X+ is made by the contributor or the University of California,
X+ as to the accuracy and functioning of the program
X+ and related program material,
X+ nor shall the fact of distribution constitute any such warranty,
X+ and no responsibility is assumed by the contributor
X+ or the University of California in connection herewith.
X+ .KS
X+ .SH
X+ CONVENTIONS
X+ .LP
X+ In this document,
X+ certain formatting conventions are adhered to:
X+ .IP
X+ The names of
X+ \s-2UNIX\s+2
X+ commands, such as \fIcomp\fP
X+ are presented in \fIitalics\fP.
X+ .IP
X+ Arguments to programs, such as `msgs' and `\-nobell' are
X+ delimited by single\-quotes.
X+ .IP
X+ Text that should be typed exactly as\-is, such as
X+ command lines (e.g., \*(lqfolder \-pack\*(rq),
X+ are delimited by double\-quotes.
X+ .IP
X+ \s-2UNIX\s+2
X+ pathnames and envariables,
X+ such as \fB/usr/uci\fP and \fB$SIGNATURE\fP,
X+ are presented in \fBbold font\fP.
X+ .KE
X+ .SH
X+ GENERAL CHANGES
X+ .LP
X+ The author is pleased to announce that there are very few
X+ user\-visible
X+ changes to \fIMH\fP 6.7 from the previous \fIMH\fP 6.6 distribution.
X+ The majority of development was in the form of bug fixes and
X+ slight enhancements.
X+ In addition, this release is slightly faster than the
X+ previous release.
X+ With a few minor exceptions,
X+ it is backward\-compatible with the previous release.
X+ .PP
X+ The changes were made mainly to generalize the source code to
X+ be compatible with a larger range of systems and compilers.
X+ There were many small changes to add declarations for ANSI C compliance.
X+ The System 5 support has been brought up to SYS5 R3, and there is
X+ support for Sun OS 4.0.
X+ .SH
X+ User\-Visible Changes
X+ .LP
X+ Here a quick summary of the
X+ changes that were made which are not backward\-compatible with the
X+ previous release of \fIMH\fP:
X+ .IP repl \w'sortm'u+2n
X+ The `\-format' and `\-noformat' switches
X+ have not been functional since \fIMH\fP 5, and have been removed.
X+ Any users who have these switches in their \fB\&.mh\(ruprofile\fP,
X+ will have to remove them.
X+ .IP sortm
X+ Previously, in most cases \fIsortm\fP would fill\-in any
X+ gaps in the numbering of a folder,
X+ by renumbering the messages starting with `1'.
X+ This will no longer occur; for this behavior,
X+ use \*(lqfolder \-pack\*(rq.
X+ .PP
X+ .SH
X+ Using Aliases
X+ .LP
X+ A new profile entry `Aliasfile:' has been added.  The
X+ \fIali\fP\^, \fIsend\fP\^, and \fIwhom\fP programs will look for
X+ this profile entry and treat it as they would an argument to
X+ `\-alias'.
X+ This should make it easier for novice \fIMH\fP users to begin
X+ using aliases.
X+ .PP
X+ .SH
X+ Reading Network News & BBoards
X+ .LP
X+ The UCI BBoards facility can read local BBoards, and if compiled
X+ with the `bboards: pop' and `pop: on' options, can also read remote
X+ BBoards using the Post Office Protocol (POP ver. 3).
X+ With this release,
X+ \fIMH\fP can instead be compiled to read the Network News
X+ (i.e., USENET) using the Network News Transfer Protocol (NNTP).
X+ .PP
X+ This capability is enabled by compiling \fIMH\fP with
X+ the `bboards: nntp' and `pop: on' options.
X+ Unfortunately, reading remote BBoards via the POP and reading the Network
X+ News via the NNTP are mutually exclusive options.
X+ .PP
X+ To support the NNTP,
X+ a new module, \fBuip/pshsbr.c\fP, is compiled and loaded into
X+ \fIbbc\fP and \fImsh\fP instead of \fBuip/popsbr.c\fP.
X+ The default BBoard is changed from \*(lqsystem\*(rq to \*(lqgeneral\*(rq
X+ for the NNTP.
X+ .PP
X+ When reading BBoards,
X+ \fIbbc\fP will first look for local BBoards, and then contact the
X+ NNTP server to read the Network News.  The location of the
X+ NNTP server should be specified with the `nntphost:'
X+ entry in the \fBmtstailor\fP file
X+ (see the \fIMH\fP Administrator's Guide for details),
X+ or may be specified on
X+ the command line with the `\-host' switch.
X+ .PP
X+ .SH
X+ Format Strings
X+ .LP
X+ The manual page \fImh\-format\fP\0(5) has
X+ been rewritten to give a better explanation of how to write format strings,
X+ and how they are interpreted by \fIMH\fP.
X+ A line\-by\-line
X+ description of the
X+ default \fIrepl\fP form file (\fBreplcomps\fP)
X+ is now included in that manual page.
X+ .PP
X+ .KS
X+ Some new format functions were added, and others were augmented:
X+ .IP trim \w'date2local'u+2n
X+ Strips any leading and trailing white\-space from the current string value.
X+ .IP date2local
X+ Will coerce the date to the local timezone.
X+ .IP date2gmt
X+ Will coerce the date to GMT.
X+ .IP divide
X+ Divides the current numeric value by its argument.
X+ This could be useful for
X+ building \fIscan\fP format strings which print large
X+ message sizes in \*(lqKb\*(rq or \*(lqMb\*(rq.
X+ .IP friendly
X+ If the address field cannot be parsed,
X+ this function will return the text of the address header,
X+ instead of a null string.
X+ .IP szone
X+ A flag indicating whether the timezone was explicit
X+ in the date string.
X+ .KE
X+ .SH
X+ PROGRAM CHANGES
X+ .LP
X+ In addition to the general changes mentioned above,
X+ many programs have specific new features added,
X+ either by new switches or by expanded functionality.
X+ Each command's manual page gives complete information about
X+ its new options.  Here is a short summary.
X+ .SH
X+ User Interface Programs
X+ .IP anno \w'prompter'u+2n
X+ Accepts a `\-nodate' switch which inhibits the date annotation,
X+ leaving only the body annotation.
X+ .IP folder
X+ When invoked with the `\-pack' switch
X+ and the new `\-verbose' switch, \fIfolder\fP will
X+ give information about the actions taken to renumber the folder.
X+ .IP
X+ On most systems, \fIfolder\fP can now create any non\-existing
X+ parent folders of a new sub\-folder.
X+ .IP forw
X+ When making digests, \fIforw\fP\^
X+ will put the issue and volume numbers
X+ in addition to the digest list name, in the digest trailer.
X+ .IP inc
X+ Detects NFS write failures, and will
X+ not zero your maildrop in that event.
X+ .IP msh
X+ Supports a variant of the new \fIsortm\fP\^.
X+ .IP prompter
X+ Considers a period on a line by itself to signify end\-of\-file
X+ when the `\-doteof' switch is specified.
X+ .IP repl
X+ The `\-[no]format' switches
X+ have not been used since \fIMH\fP 5 and have been deleted. \fIrepl\fP
X+ will now find filter files in the \fIMH\fP library area.
X+ .IP scan
X+ With the `\-file msgbox' switch, \fIscan\fP\^
X+ can list a \fIpackf\fP\|'d\-format file directly
X+ (without using \fImsh\fP\^).
X+ .IP
X+ Lists messages in reverse order with the `\-reverse' switch.
X+ This should be considered a bug.
X+ .IP sortm
X+ Now has the options:
X+ `\-textfield field', `\-notextfield',
X+ `\-limit days', and `\-nolimit'.
X+ .IP
X+ With these options, \fIsortm\fP can be instructed to sort a
X+ folder based on the contents of an arbitrary header such
X+ as \*(lqsubject\*(rq.
X+ .IP
X+ \fIsortm\fP minimizes renaming messages, and
X+ will no longer arbitrarily pack folders; for this behavior,
X+ use \*(lqfolder \-pack\*(rq.
X+ .IP whatnow
X+ Deletes the draft by renaming it with leading comma, instead
X+ of unlinking it.
X+ .SH
X+ \fIMH\fP Support Programs
X+ .LP
X+ .KS
X+ The following support programs also have changes or enhancements:
X+ .IP mhl \w'rcvtty'u+2n
X+ Will now accept a format string on any component, not just on
X+ addresses and dates.
X+ .KE
X+ .IP popd
X+ Will use \fIshadow\fP passwords if compiled with the
X+ \fBSHADOW\fP option.  It can now also
X+ read UUCP\-style maildrops directly.
X+ .IP rcvtty
X+ If given no arguments, \fIrcvtty\fP will produce a \fBscan\fP
X+ listing as specified by a format string or file; a default
X+ format string is used if one is not specified.
X+ .IP
X+ Before the listing is written to the users terminal, the
X+ terminal's bell is rung and a newline is output.
X+ The `\-nobell' and the `\-nonewline' options
X+ inhibit these functions.
X+ .IP
X+ \fIrcvtty\fP will obey terminal write
X+ notification set by \fImesg\fP.
X+ With the `\-biff' switch, \fIrcvtty\fP will
X+ also obey the mail notification status set by
X+ \fIbiff\fP.
X+ .IP
X+ On \fBBSD43\fP systems, as with \fIwrite\fP,
X+ \fIrcvtty\fP will be installed set\-group\-id to the group \*(lqtty\*(rq.
X+ .IP slocal
X+ Understands UUCP\-style \*(lqFrom \*(rq lines and will write
X+ output files using this format if appropriate.
X+ Before invoking a delivery program, \fIslocal\fP will strip
X+ such lines unless compiled with the \fBRPATHS\fP option,
X+ in which case it will will convert such lines into
X+ \*(lqReturn\-Path:\*(rq headers.
X+ .IP
X+ \fIslocal\fP has a new result code \*(lqN\*(rq,
X+ for use in \fB.maildelivery\fP files.
X+ With this result code,
X+ \fIslocal\fP will
X+ perform the action only if the message has not been delivered
X+ and the previous action succeeded.  This allows for performing
X+ an action only if multiple conditions are true.
X+ .SH
X+ DOCUMENTATION
X+ .LP
X+ Several of the older \fIMH\fP papers have been difficult to format
X+ because they depended on an older version of
X+ PhDTeX which was
X+ not supplied.  These papers have been updated, and some TeX
X+ library files are supplied in \fBpapers/doclib/\fP, so that
X+ these papers may be generated on any system with TeX.
X+ .PP
X+ Many of the manual pages have been revised to include documentation
X+ of new command options, and some have been expanded to give more detail.
X+ All are now slightly reformatted at installation time
X+ to make them more compatible with programs like \fImakewhatis\fP\^.
X+ .PP
X+ .SH
X+ \fIMH\fP ADMINISTRATION
X+ .LP
X+ This section describes changes in configuring, compiling and
X+ installing \fIMH\fP 6.7 and should not
X+ be of interest to casual \fIMH\fP users.
X+ The \fBREAD\-ME\fP file has been
X+ considerably revised and expanded to give more detail
X+ about the configuration and compilation options which
X+ have been included in this release.  Some compilation options
X+ have been removed, and many new options have been added.
X+ .PP
X+ All \fIMH\fP \fBMakefile\fPs have been updated to work around some
X+ incompatibilities introduced in newer versions of \fImake\fP\^.
X+ \fIMH\fP programs will no longer be installed with the sticky\-bit
X+ turned on.
X+ .PP
X+ Reading this section not a substitute for carefully
X+ reading the \fBREAD\-ME\fP file before attempting to compile \fIMH\fP
X+ .PP
X+ .KS
X+ .SH
X+ Bug Fixes
X+ .LP
X+ Some bugs were fixed which in general were not user\-visible:
X+ .IP "address parser" \w'dynamicnmemory'u+2n
X+ Fixed to allow use of the \*(lqAT\*(rq domain, and some
X+ minor bugs were fixed pertaining to address groups.
X+ .IP "date parser"
X+ Improved to accept more forms of illegal dates.  Military
X+ timezones were removed.
X+ .IP "dynamic memory"
X+ Many problems with corruption of the dynamic memory pool
X+ have been fixed.
X+ .IP locking
X+ Will open files for write, if necessary to enable locking.
X+ .IP "nil pointers"
X+ All reported nil pointer problems have been fixed.
X+ .IP replcomps
X+ The \*(lqIn\-Reply\-To:\*(rq header had quotes added
X+ around the date field to comply with RFC822.
X+ .KE
X+ .SH
X+ White Pages
X+ .LP
X+ If \fIMH\fP is compiled with the \fBWP\fP option,
X+ \fIsend\fP recognizes an address between \*(lq<<\*(rq and \*(lq>>\*(rq characters
X+ such as:
X+ .DS
X+ To: << rose \-org psi >>
X+ .DE
X+ to be a name meaningful to a whitepages service.  In order to expand the
X+ name, \fIsend\fP must be invoked interactively
X+ (i.e., not from \fIpush\fP\^).  For each
X+ name, \fIsend\fP will invoke a command called \fIfred\fP\^
X+ in a special mode asking to expand the name.
X+ .PP
X+ To get a copy of the white pages service, contact wpp\-manager at psi.com.
X+ .SH
X+ Configuration Options
X+ .LP
X+ Some configuration options have been added or changed:
X+ .IP cc \w'bbdelivery'u+2n
X+ To specify an alternate C compiler.
X+ .IP ccoptions
X+ Defaults to `\-O'.
X+ .IP bboards
X+ May now be defined as \*(lqon\*(rq,
X+ \*(lqoff\*(rq, \*(lqpop\*(rq, or \*(lqnntp\*(rq.
X+ .IP bbdelivery
X+ Determines whether the bboard delivery agent
X+ and library files should be installed.
X+ .IP lex
X+ To specify an alternate version of \fIlex\fP\^.
X+ .IP mailgroup
X+ If defined, \fIinc\fP will be made set\-group\-id to this group.
X+ .IP sharedlib
X+ For \fBSUN40\fP systems; if \*(lqon\*(rq, makes \fBlibmh.a\fP
X+ into a shared library.
X+ .IP slibdir
X+ The directory where the above shared library should be installed.
X+ .IP sprintf
X+ Set this to \*(lqint\*(rq if that's what your \fIsprintf\fP\0(3) library
X+ routine returns.
X+ .SH
X+ Compilation Options
X+ .LP
X+ For different configurations,
X+ several `\-D' options to \fIcc\fP have been added or changed:
X+ .IP BERK \w'SENDMAILBUG'u+1n
X+ This disables the address and date parsing routines.  If you
X+ want to do much with \fImh\-format\fP\0(5), don't enable this.
X+ .IP BSD43
X+ Will make \fIrcvtty\fP set\-group\-id to the group \*(lqtty\*(rq.
X+ .IP DBM
X+ For sites with a dbm\-style password file (such as with Yellow
X+ Pages), \fIMH\fP will not read the entire passwd file into a cache.
X+ At one site that runs YP on a large passwd file, using this
X+ showed a 6:1 performance improvement.
X+ .IP NETWORK
X+ This option has been deleted.  See \fBSOCKETS\fP.
X+ .IP NOIOCTLH
X+ Tells \fIMH\fP not to include the file \fBsys/ioctl.h\fP.  Use this
X+ if this file is not present on your system.
X+ .IP NTOHLSWAP
X+ On systems with TCP/IP networking,
X+ \fImsh\fP will try to use the \fBntohl()\fP macro from the
X+ file \fBnetinet/in.h\fP to byte\-swap the binary map files
X+ it writes.
X+ .IP SENDMAILBUG
X+ Some versions of \fIsendmail\fP return a \fB451\fP (failure) reply code
X+ when they don't mean to indicate failure.  This option considers
X+ that code to be equivalent to \fB250\fP (OK).
X+ .IP SHADOW
X+ Causes \fIpopd\fP to read the file \fB/etc/shadow\fP for
X+ encrypted passwords instead of \fB/etc/passwd\fP.  Use this if you
X+ have a shadow password file (such as on newer versions of SYSTEM 5).
X+ .IP SOCKETS
X+ Enable this if you are on a non\-BSD system with a
X+ socket interface for TCP/IP networking compatible with 4.2BSD
X+ .SM
X+ UNIX.
X+ .NL
X+ .IP SUN40
X+ Use on Suns running Sun OS 4.0 and later.
X+ .IP SYS5
X+ This option has been updated to refer to SYS5 R3 and later systems.
X+ .IP SYS5DIR
X+ Use this if your system uses \*(lqstruct dirent\*(rq instead of
X+ \*(lqstruct direct\*(rq.  This should be true for systems based
X+ on SYS5 R3 and later.
X+ .IP TYPESIG
X+ Defines the base type for the \fIsignal\fP system call.  This
X+ defaults to \*(lqint\*(rq, but should be defined as \*(lqvoid\*(rq
X+ if appropriate for your system.
X+ .IP WP
X+ Enables support for the White Pages service.
X+ .SH
X+ Installation
X+ .LP
X+ \fIMH\fP will now
X+ explicitly set the protection mode on every file it installs.
X+ .PP
X+ Previously any existing file installed by \fIMH\fP
X+ would be backed up into
X+ the source tree, and then overwritten.
X+ Now, a few system\-dependent files will not be overwritten, and your
X+ changes will have to be merged in by hand.
X+ See the \fBREAD\-ME\fP file for more details.
X*** /dev/null	Thu Apr 12 15:37:43 1990
X--- ./papers/mh6.7/Makefile	Thu Apr  5 16:05:24 1990
X***************
X*** 0 ****
X--- 1,46 ----
X+ ##############################################################################
X+ # @(#)$Id: Makefile,v 1.3 90/04/05 15:18:49 sources Exp $
X+
X+ MAKE	=	make DESTDIR=$(DESTDIR) $(MFLAGS) -k
X+ SHELL	=	/bin/sh
X+
X+
X+ ##############################################################################
X+ #	Generation Rules
X+ ##############################################################################
X+
X+ .SUFFIXES:	.ms .cat .doc .imp
X+
X+ .ms.cat:;	itroff -t -ms $< > $@
X+
X+ .ms.doc:;	nroff -ms $< > $@
X+
X+ .cat.imp:;	catimp -i $@ $<
X+
X+
X+ ######################################################################
X+ #	Here it is...
X+ ######################################################################
X+
X+ TARGETS	=	mh6.7.cat
X+
X+ all:		mh6.7.cat
X+
X+
X+ doc:		mh6.7.doc
X+
X+ i-all:	all true
X+ 	lpr -t -J MH.6.7 mh6.7.cat
X+
X+ true:;
X+
X+ ##############################################################################
X+ #	Miscellaneous tasks
X+ ##############################################################################
X+
X+ distribution:   clean
X+
X+ unconfig clean:		unclean
X+ 		rm -f *.cat *.dvi *.imp *.doc
X+
X+ unclean:;	rm -f *.tmp _* :* core
X*** /dev/null	Thu Apr 12 15:37:43 1990
X--- ./papers/doclib/amstex.tex	Tue Mar  6 14:50:41 1990
X***************
X*** 0 ****
X--- 1,889 ----
X+ % AMS-TEX VERSION 0.999999 - FOR USE WITH TEX VERSION  1.0
X+ % COPYRIGHT (C) 1983 BY AMERICAN MATHEMATICAL SOCIETY
X+
X+
X+ % NOTE 1, NOTE 2, ... REFER TO NOTES IN THE FILE AMSTEX.DOC
X+
X+
X+ % SPECIAL CATCODES
X+
X+ \catcode`\@=13                                                         % NOTE 1
X+ \def@{\errmessage{AmS-TeX error: \string@ has no current use
X+      (use \string\@\space for printed \string@ symbol)}}
X+ \catcode`\@=11                                                         % NOTE 2
X+ \def\@{\char'100 }
X+ \catcode`\~=13                                                         % NOTE 3
X+
X+
X+ % AMSTEX ERROR MESSAGES
X+
X+ \def\err at AmS#1{\errmessage{AmS-TeX error: #1}}                         % NOTE 4
X+
X+
X+ % SOME BASIC CONTROL SEQUENCES USED IN OTHER DEFINITIONS
X+
X+ \def\eat at AmS#1{}
X+
X+ \long\def\comp at AmS#1#2{\def\@AmS{#1}\def\@@AmS{#2}\ifx
X+    \@AmS\@@AmS\def\cresult at AmS{T}\else\def\cresult at AmS{F}\fi}          % NOTE 5
X+
X+ \def\in at AmS#1#2{\def\intest at AmS##1#1##2{\comp at AmS##2\end at AmS\if T\cresult at AmS
X+    \def\cresult at AmS{F}\def\in@@AmS{}\else
X+    \def\cresult at AmS{T}\def\in@@AmS####1\end at AmS{}\fi\in@@AmS}%
X+    \def\cresult at AmS{F}\intest at AmS#2#1\end at AmS}                         % NOTE 6
X+
X+
X+ % BASIC MECHANICSMS TO ALLOW USER TO MAKE DEFINITIONS
X+
X+ \let\relax at AmS=\relax                                                  % NOTE 7
X+
X+ % CHANGES IN plain WHERE THERE IS \relax, THAT MUST NOW BE \relax at AmS
X+
X+ \def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi
X+      \relax at AmS}
X+
X+ \def\iterate{\body\let\next\iterate \else\let\next\relax at AmS\fi \next}
X+
X+ \def\enskip{\hskip.5em\relax at AmS}
X+
X+ \def\strut{\relax at AmS\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
X+
X+ \let\+=\relax at AmS
X+ \def\sett at b{\ifx\next\+\let\next\relax at AmS
X+     \def\next{\afterassignment\s at tt@b\let\next}%
X+   \else\let\next\s at tcols\fi\next}
X+ \def\s at tt@b{\let\next\relax at AmS\us at false\m at ketabbox}
X+
X+ \def\smash{\relax at AmS % \relax at AmS, in case this comes first in \halign
X+   \ifmmode\def\next{\mathpalette\mathsm at sh}\else\let\next\makesm at sh
X+   \fi\next}
X+
X+ % (END OF CHANGES TO plain)
X+
X+ \def\define#1{\expandafter\ifx\csname\expandafter\eat at AmS\string#1\endcsname
X+    \relax at AmS\def\dresult at AmS{\def#1}\else
X+    \err at AmS{\string#1\space is already defined}\def
X+       \dresult at AmS{\def\garbage at AmS}\fi\dresult at AmS}                   % NOTE 8
X+
X+ \let\redefine=\def
X+
X+ \def\predefine#1#2{\let#1=#2}
X+
X+
X+ % MACROS FOR DEFICIENT KEYBOARDS
X+
X+ \chardef\plus=`+
X+ \chardef\equal=`=
X+ \chardef\less=`<
X+ \chardef\more=`>
X+
X+
X+ % MACROS FOR HANDLING TEXT
X+
X+ \let\ic at AmS=\/
X+ \def\/{\unskip\ic at AmS}
X+
X+ \def\Space at AmS.{\futurelet\Space at AmS\relax at AmS}
X+ \Space at AmS. %                                             % NOTE 10 (no NOTE 9)
X+
X+ \def~{\unskip\futurelet\tok at AmS\s at AmS}
X+ \def\s at AmS{\ifx\tok at AmS\Space at AmS\def\next at AmS{}\else
X+         \def\next at AmS{\ }\fi\penalty 9999 \next at AmS}                  % NOTE 11
X+
X+ \def\period{\unskip.\spacefactor3000 { }}
X+
X+
X+ \def\srdr at AmS{\thinspace}                                             % NOTE 12
X+ \def\drsr at AmS{\kern .02778em }
X+ \def\sldl at AmS{\kern .02778em}
X+ \def\dlsl at AmS{\thinspace}
X+
X+ \def\lqtest at AmS#1{\comp at AmS{#1}`\if T\cresult at AmS\else\comp at AmS{#1}\lq\fi}
X+
X+                                                                       % NOTE 13
X+
X+ \def\qspace#1{\unskip
X+   \lqtest at AmS{#1}\let\fresult at AmS=\cresult at AmS\if T\cresult at AmS
X+      \def\qspace at AmS{\ifx\tok at AmS\Space at AmS\def\next at AmS{\dlsl at AmS`}\else
X+        \def\next at AmS{\qspace@@AmS}\fi\next at AmS}\else
X+      \def\qspace at AmS{\ifx\tok at AmS\Space at AmS\def\next at AmS{\drsr at AmS'}\else
X+        \def\next at AmS{\qspace@@AmS}\fi\next at AmS}\fi
X+     \futurelet\tok at AmS\qspace at AmS}                                    % NOTE 14
X+
X+ \def\qspace@@AmS{\futurelet\tok at AmS\qspace@@@AmS}
X+
X+ \def\qspace@@@AmS{\if T\fresult at AmS  \ifx\tok at AmS`\sldl at AmS`\else
X+        \ifx\tok at AmS\lq\sldl at AmS`\else \dlsl at AmS`\fi \fi
X+                          \else  \ifx\tok at AmS'\srdr at AmS'\else
X+         \ifx\tok at AmS\rq\srdr at AmS'\else \drsr at AmS'\fi \fi
X+         \fi}
X+
X+
X+
X+ \def\dash{\unskip\penalty0---}
X+ \def\slash{\unskip/\penalty\exhyphenpenalty}
X+
X+ \def\{{\relax at AmS\ifmmode\delimiter"4266308 \else
X+     $\delimiter"4266308 $\fi}                            % NOTE 16 (No NOTE 15)
X+
X+ \def\}{\relax at AmS\ifmmode\delimiter"5267309 \else$\delimiter"5267309 $\fi}
X+
X+
X+ \def\AmSTeX{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em
X+      $\cal S$-\TeX}
X+
X+ \def\smallvspace{\vskip\smallskipamount}                            % NOTE 17
X+ \def\medvspace{\vskip\medskipamount}
X+ \def\bigvspace{\vskip\bigskipamount}
X+
X+
X+ \def\linebreak{\unskip\penalty-10000 }                                % NOTE 18
X+ \def\pagebreak{\vadjust{\penalty-10000 }}
X+ \def\newpage{\par\vfill\eject}
X+
X+ \def\newline{\ifvmode \err at AmS{There's no line here to break}\else
X+      \hfil\penalty-10000\fi}
X+
X+ \def\topspace#1{\insert\topins{\penalty100 \splittopskip=0pt
X+      \vbox to #1{}}}
X+ \def\midspace#1{\setbox0=\vbox to #1{}\advance\dimen0 by \pagetotal
X+   \ifdim\dimen0>\pagegoal\topspace{#1}\else\vadjust{\box0}\fi}
X+
X+ \long\def\comment{\begingroup
X+  \catcode`\{=12 \catcode`\}=12 \catcode`\#= 12 \catcode`\^^M=12
X+    \catcode`\%=12 \catcode`^^A=14
X+     \comment at AmS}
X+ \begingroup\catcode`^^A=14
X+ \catcode`\^^M=12  ^^A
X+ \long\gdef\comment at AmS#1^^M#2{\comp at AmS\endcomment{#2}\if T\cresult at AmS^^A
X+ \def\comment@@AmS{\endgroup}\else^^A
X+  \long\def\comment@@AmS{\comment at AmS#2}\fi\comment@@AmS}\endgroup     % NOTE 19
X+
X+
X+ % STYLE, SPACING AND ALTERNATE NAMES
X+
X+ \let\dsize=\displaystyle
X+ \let\tsize=\textstyle
X+ \let\ssize=\scriptstyle
X+ \let\sssize=\scriptscriptstyle
X+
X+ \def\text#1{\hbox{\rm#1}}
X+
X+ \def\quad{\relax at AmS\ifmmode
X+     \hbox{\hskip1em}\else\hskip1em\relax at AmS\fi}                      % NOTE 20
X+ \def\qquad{\quad\quad}
X+ \def\,{\relax at AmS\ifmmode\mskip\thinmuskip\else$\mskip\thinmuskip$\fi}
X+ \def\;{\relax at AmS
X+   \ifmmode\mskip\thickmuskip\else$\mskip\thickmuskip$\fi}
X+
X+
X+ \def\stack#1#2{{#1\atop #2}}
X+
X+ \def\frac#1#2{{#1\over#2}}
X+ \def\Frac#1#2{{\displaystyle{#1\over#2}}}
X+
X+ \def\thickfrac#1#2{{#1\above1pt #2}}
X+
X+ \def\binom#1#2{{#1\choose #2}}
X+ \def\Binom#1#2{{\displaystyle{#1\choose #2}}}
X+
X+
X+ \mathchardef\:="603A                                                  % NOTE 21
X+
X+
X+ % BIG DELIMITERS
X+
X+ \def\big at AmS#1{{\hbox{$\left#1\vbox to\big@@AmS{}\right.\offspace at AmS$}}}
X+ \def\Big at AmS#1{{\hbox{$\left#1\vbox to\Big@@AmS{}\right.\offspace at AmS$}}}
X+ \def\bigg at AmS#1{{\hbox{$\left#1\vbox to\bigg@@AmS{}\right.\offspace at AmS$}}}
X+ \def\Bigg at AmS#1{{\hbox{$\left#1\vbox to\Bigg@@AmS{}\right.\offspace at AmS$}}}
X+ \def\offspace at AmS{\nulldelimiterspace0pt \mathsurround0pt }
X+
X+ \def\big@@AmS{8.5pt}                                % NOTE 24 (no NOTES 22, 23)
X+ \def\Big@@AmS{11.5pt}
X+ \def\bigg@@AmS{14.5pt}
X+ \def\Bigg@@AmS{17.5pt}
X+
X+ \def\bigl{\mathopen\big at AmS}
X+ \def\bigm{\mathrel\big at AmS}
X+ \def\bigr{\mathclose\big at AmS}
X+ \def\Bigl{\mathopen\Big at AmS}
X+ \def\Bigm{\mathrel\Big at AmS}
X+ \def\Bigr{\mathclose\Big at AmS}
X+ \def\biggl{\mathopen\bigg at AmS}
X+ \def\biggm{\mathrel\bigg at AMS}
X+ \def\biggr{\mathclose\bigg at AmS}
X+ \def\Biggl{\mathopen\Bigg at AmS}
X+ \def\Biggm{\mathrel\Bigg at AmS}
X+ \def\Biggr{\mathclose\Bigg at AmS}
X+
X+
X+ %  MAKING ' WORK FOR PRIMES
X+
X+ {\catcode`'=13 \gdef'{^\bgroup\prime\prime at AmS}}
X+ \def\prime at AmS{\futurelet\tok at AmS\prime@@AmS}
X+ \def\prime@@@AmS#1{\futurelet\tok at AmS\prime@@AmS}
X+ \def\prime@@AmS{\ifx\tok at AmS'\def\next at AmS{\prime\prime@@@AmS}\else
X+    \def\next at AmS{\egroup}\fi\next at AmS}
X+
X+
X+ %  SMASHES                                                            % NOTE 25
X+
X+ \def\topsmash{\relax at AmS\ifmmode\def\topsmash at AmS
X+    {\mathpalette\mathtopsmash at AmS}\else
X+     \let\topsmash at AmS=\maketopsmash at AmS\fi\topsmash at AmS}
X+
X+ \def\maketopsmash at AmS#1{\setbox0=\hbox{#1}\topsmash@@AmS}
X+
X+ \def\mathtopsmash at AmS#1#2{\setbox0=\hbox{$#1{#2}$}\topsmash@@AmS}
X+
X+ \def\topsmash@@AmS{\vbox to 0pt{\kern-\ht0\box0}}
X+
X+
X+ \def\botsmash{\relax at AmS\ifmmode\def\botsmash at AmS
X+    {\mathpalette\mathbotsmash at AmS}\else
X+      \let\botsmash at AmS=\makebotsmash at AmS\fi\botsmash at AmS}
X+
X+ \def\makebotsmash at AmS#1{\setbox0=\hbox{#1}\botsmash@@AmS}
X+
X+ \def\mathbotsmash at AmS#1#2{\setbox0=\hbox{$#1{#2}$}\botsmash@@AmS}
X+
X+ \def\botsmash@@AmS{\vbox to \ht0{\box0\vss}}
X+
X+
X+
X+ %  LARGE OPERATORS
X+
X+ \def\LimitsOnSums{\let\slimits at AmS=\displaylimits}                    % NOTE 26
X+ \def\NoLimitsOnSums{\let\slimits at AmS=\nolimits}
X+
X+ \LimitsOnSums
X+
X+ \mathchardef\coprod at AmS"1360       \def\coprod{\coprod at AmS\slimits at AmS}
X+ \mathchardef\bigvee at AmS"1357       \def\bigvee{\bigvee at AmS\slimits at AmS}
X+ \mathchardef\bigwedge at AmS"1356     \def\bigwedge{\bigwedge at AmS\slimits at AmS}
X+ \mathchardef\biguplus at AmS"1355     \def\biguplus{\biguplus at AmS\slimits at AmS}
X+ \mathchardef\bigcap at AmS"1354       \def\bigcap{\bigcap at AmS\slimits at AmS}
X+ \mathchardef\bigcup at AmS"1353       \def\bigcup{\bigcup at AmS\slimits at AmS}
X+ \mathchardef\prod at AmS"1351         \def\prod{\prod at AmS\slimits at AmS}
X+ \mathchardef\sum at AmS"1350          \def\sum{\sum at AmS\slimits at AmS}
X+ \mathchardef\bigotimes at AmS"134E    \def\bigotimes{\bigotimes at AmS\slimits at AmS}
X+ \mathchardef\bigoplus at AmS"134C     \def\bigoplus{\bigoplus at AmS\slimits at AmS}
X+ \mathchardef\bigodot at AmS"134A      \def\bigodot{\bigodot at AmS\slimits at AmS}
X+ \mathchardef\bigsqcup at AmS"1346     \def\bigsqcup{\bigsqcup at AmS\slimits at AmS}
X+
X+
X+ \def\LimitsOnInts{\let\ilimits at AmS=\displaylimits}
X+ \def\NoLimitsOnInts{\let\ilimits at AmS=\nolimits}
X+
X+ \NoLimitsOnInts
X+
X+ \mathchardef\int at AmS"1352
X+ \def\int{\gdef\intflag at AmS{T}\int at AmS\ilimits at AmS}                    % NOTE 27
X+
X+ \mathchardef\oint at AmS"1348 \def\oint{\gdef\intflag at AmS{T}\oint at AmS\ilimits at AmS}
X+
X+ \def\inttest at AmS#1{\def\intflag at AmS{F}\setbox0=\hbox{$#1$}}
X+
X+
X+ \def\intic at AmS{\mathchoice{\hbox{\hskip5pt}}{\hbox
X+           {\hskip4pt}}{\hbox{\hskip4pt}}{\hbox{\hskip4pt}}}           % NOTE 28
X+ \def\negintic at AmS{\mathchoice
X+   {\hbox{\hskip-5pt}}{\hbox{\hskip-4pt}}{\hbox{\hskip-4pt}}{\hbox{\hskip-4pt}}}
X+ \def\intkern at AmS{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}}
X+ \def\intdots at AmS{\mathchoice{\cdots}{{\cdotp}\mkern 1.5mu
X+     {\cdotp}\mkern 1.5mu{\cdotp}}{{\cdotp}\mkern 1mu{\cdotp}\mkern 1mu
X+       {\cdotp}}{{\cdotp}\mkern 1mu{\cdotp}\mkern 1mu{\cdotp}}}
X+
X+ \newcount\intno at AmS                                                   % NOTE 29
X+
X+ \def\intii{\gdef\intflag at AmS{T}\intno at AmS=2\futurelet                 % NOTE 30
X+               \tok at AmS\ints at AmS}
X+ \def\intiii{\gdef\intflag at AmS{T}\intno at AmS=3\futurelet\tok at AmS\ints at AmS}
X+ \def\intiv{\gdef\intflag at AmS{T}\intno at AmS=4\futurelet\tok at AmS\ints at AmS}
X+ \def\intdotsint{\gdef\intflag at AmS{T}\intno at AmS=0\futurelet
X+     \tok at AmS\ints at AmS}
X+
X+ \def\ints at AmS{\findlimits at AmS\ints@@AmS}
X+
X+ \def\findlimits at AmS{\def\ignoretoken at AmS{T}\ifx\tok at AmS\limits
X+    \def\limits at AmS{T}\else\ifx\tok at AmS\nolimits\def\limits at AmS{F}\else
X+      \def\ignoretoken at AmS{F}\ifx\ilimits at AmS\nolimits\def\limits at AmS{F}\else
X+        \def\limits at AmS{T}\fi\fi\fi}
X+
X+ \def\multintlimits at AmS{\int at AmS\ifnum \intno at AmS=0\intdots at AmS
X+   \else \intkern at AmS\fi
X+     \ifnum\intno at AmS>2\int at AmS\intkern at AmS\fi
X+      \ifnum\intno at AmS>3 \int at AmS\intkern at AmS\fi \int at AmS}
X+
X+ \def\multint at AmS{\int\ifnum \intno at AmS=0\intdots at AmS\else\intkern at AmS\fi
X+    \ifnum\intno at AmS>2\int\intkern at AmS\fi
X+     \ifnum\intno at AmS>3 \int\intkern at AmS\fi \int}
X+
X+ \def\ints@@AmS{\if F\ignoretoken at AmS\def\ints@@@AmS{\if
X+     T\limits at AmS\negintic at AmS
X+  \mathop{\intic at AmS\multintlimits at AmS}\limits\else
X+     \multint at AmS\nolimits\fi}\else\def\ints@@@AmS{\if T\limits at AmS
X+    \negintic at AmS\mathop{\intic at AmS\multintlimits at AmS}\limits\else
X+     \multint at AmS\nolimits\fi\eat at AmS}\fi\ints@@@AmS}
X+
X+
X+
X+ \def\LimitsOnNames{\let\nlimits at AmS=\displaylimits}
X+ \def\NoLimitsOnNames{\let\nlimits at AmS=\nolimits}
X+
X+ \LimitsOnNames
X+
X+ \def\operatorname#1{\mathop{\mathcode`'="7027 \mathcode`-="70
X+        \rm #1}\nolimits}                                              % NOTE 31
X+
X+ \def\operatornamewithlimits#1{\mathop{\mathcode`'="7027 \mathcode`-="702D
X+    \rm #1}\nlimits at AmS}
X+
X+ \def\operator#1{\mathop{#1}\nolimits}
X+ \def\operatorwithlimits#1{\mathop{#1}\displaylimits}
X+
X+ \def\limover{\mathop{\overline{\rm lim}}}
X+ \def\limunder{\mathop{\underline{\vrule height 0pt depth .2ex width 0pt
X+        \rm lim}}}
X+ \def\liminj{\setbox0=\hbox{\rm lim}\mathop{\rm lim}
X+ 		\limits_{\topsmash{\hbox to \wd0{\leftarrowfill}}}}
X+ \def\limproj{\setbox0=\hbox{\rm lim}\mathop{\rm lim}
X+ 		\limits_{\topsmash{\hbox to \wd0{\rightarrowfill}}}}
X+
X+
X+ % SUBSIDIARY CONSIDERATIONS FOR LARGE OPERATORS -- BUFFER AND SHAVE
X+
X+ \newdimen\buffer at AmS
X+ \buffer at AmS=\fontdimen13\tenex                                        % NOTE 32
X+ \newdimen\buffer
X+ \buffer=\buffer at AmS
X+
X+ \def\changebuffer#1{\fontdimen13 \tenex=#1 \buffer=\fontdimen13 \tenex}
X+ \def\resetbuffer{\fontdimen13 \tenex=\buffer at AmS \buffer=\buffer at AmS}
X+
X+ \def\shave#1{\mathop{\hbox{$\fontdimen13\tenex=0pt                    % NOTE 33
X+      \displaystyle{#1}$}}\fontdimen13\tenex=1\buffer}
X+
X+
X+ \def\topshave#1{\topsmash{#1}\vphantom{\shave{#1}}}
X+
X+ \def\botshave#1{\botsmash{#1}\vphantom{\shave{#1}}}
X+
X+
X+
X+ % ALIGNED UNITS
X+
X+ \def\Let at AmS{\relax at AmS\iffalse{\fi\let\\=\cr\iffalse}\fi}            % NOTE 34
X+
X+ \def\align{\def\vspace##1{\noalign{\vskip ##1}}                       % NOTE 35
X+   \,\vcenter\bgroup\Let at AmS\tabskip=0pt\openup3pt\mathsurround=0pt  % NOTE 35.1
X+   \halign\bgroup\strut
X+   \hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\cr}        % NOTES 36, 37
X+
X+ \def\endalign{\strut\crcr\egroup\egroup}
X+
X+
X+ \def\bunch{\def\vspace##1{\noalign{\vskip ##1}}
X+   \,\vcenter\bgroup\Let at AmS\tabskip=0pt\openup3pt\mathsurround=0pt
X+      \halign\bgroup\strut\hfil$\displaystyle{##}$\hfil\cr}
X+
X+ \def\endbunch{\strut\crcr\egroup\egroup}
X+
X+ \def\matrix{\catcode`\^^I=4 \futurelet\tok at AmS\matrix at AmS}            % NOTE 38
X+
X+ \def\matrix at AmS{\relax at AmS\iffalse{\fi \ifnum`}=0\fi\ifx\tok at AmS\format
X+    \def\next at AmS{\expandafter\matrix@@AmS\eat at AmS}\else
X+    \def\next at AmS{\matrix@@@AmS}\fi\next at AmS}
X+
X+ \def\matrix@@@AmS{
X+  \ifnum`{=0\fi\iffalse}\fi\,\vcenter\bgroup\Let at AmS\tabskip=0pt
X+     \normalbaselines\halign\bgroup $\strut\hfil##\hfil$&&\quad$\strut
X+   \hfil##\hfil$\cr\strut\cr\noalign{\kern-\baselineskip}}             % NOTE 39
X+
X+ \def\matrix@@AmS#1\\{
X+    \def\premable at AmS{#1}\toks@{##}
X+  \def\c{$\copy\strutbox\hfil\the\toks@\hfil$}\def\r
X+    {$\copy\strutbox\hfil\the\toks@$}%
X+    \def\l{$\copy\strutbox\the\toks@\hfil$}%
X+ \setbox0=
X+ \hbox{\xdef\Preamble at AmS{\premable at AmS}}
X+  \def\vspace##1{\noalign{\vskip ##1}}\ifnum`{=0\fi\iffalse}\fi
X+ \,\vcenter\bgroup\Let at AmS
X+   \tabskip=0pt\normalbaselines\halign\bgroup\span\Preamble at AmS\cr
X+     \mathstrut\cr\noalign{\kern-\baselineskip}}
X+                                                                       % NOTE 40
X+
X+ \def\endmatrix{\crcr\mathstrut\cr\noalign{\kern-\baselineskip
X+    }\egroup\egroup\,\catcode`\^^I=10 }
X+
X+
X+
X+ \def\matrixp{\left(\matrix}
X+ \def\endmatrixp{\endmatrix\right)}
X+
X+ \def\matrixb{\left[\matrix}
X+ \def\endmatrixb{\endmatrix\right]}
X+
X+ \def\matrixv{\left|\matrix}
X+ \def\endmatrixv{\endmatrix\right|}
X+
X+ \def\matrixvv{\left\|\matrix}
X+ \def\endmatrixvv{\endmatrix\right\|}
X+
X+
X+ \def\spacedots#1for#2{\multispan#2\leaders\hbox{$\mkern#1mu.\mkern
X+     #1mu$}\hfill}
X+ \def\dotsfor#1{\spacedots 1.5 for #1}                                 % NOTE 41
X+
X+
X+ \def\enabletabs{\catcode`\^^I=4 \enabletabs at AmS}
X+ \def\enabletabs at AmS#1\disabletabs{#1\catcode`\^^I=10 }                % NOTE 42
X+
X+ \def\Enabletabs{\catcode`\^^I=4 }
X+ \def\Disabletabs{\catcode`\^^I=10 }
X+
X+
X+ \def\smallmatrix{\futurelet\tok at AmS\smallmatrix at AmS}                  % NOTE 43
X+
X+ \def\smallmatrix at AmS{\relax at AmS\iffalse{\fi \ifnum`}=0\fi\ifx\tok at AmS\format
X+    \def\next at AmS{\expandafter\smallmatrix@@AmS\eat at AmS}\else
X+    \def\next at AmS{\smallmatrix@@@AmS}\fi\next at AmS}
X+
X+ \def\smallmatrix@@@AmS{
X+  \ifnum`{=0\fi\iffalse}\fi\,\vcenter\bgroup\Let at AmS\tabskip=0pt
X+     \baselineskip8pt\lineskip1pt\lineskiplimit1pt
X+   \halign\bgroup $\strut\hfil##\hfil$&&\;$\strut
X+   \hfil##\hfil$\cr\strut\cr\noalign{\kern-\baselineskip}}
X+
X+ \def\smallmatrix@@AmS#1\\{
X+    \def\premable at AmS{#1}\toks@{##}
X+  \def\c{$\copy\strutbox\hfil\the\toks@\hfil$}\def\r
X+    {$\copy\strutbox\hfil\the\toks@$}%
X+    \def\l{$\copy\strutbox\the\toks@\hfil$}%
X+ \hbox{\xdef\Preamble at AmS{\premable at AmS}}
X+  \def\vspace##1{\noalign{\vskip ##1}}\ifnum`{=0\fi\iffalse}\fi
X+ \,\vcenter\bgroup\Let at AmS
X+      \tabskip=0pt\baselineskip8pt\lineskip1pt\lineskiplimit1pt
X+ \halign\bgroup\span\Preamble at AmS\cr
X+     \mathstrut\cr\noalign{\kern-\baselineskip}}
X+
X+ \def\endsmallmatrix{\crcr\mathstrut\cr\noalign{\kern-\baselineskip}
X+    \egroup\egroup\,}
X+
X+
X+ \def\cases{\left\{ \,\vcenter\bgroup\Let at AmS\normalbaselines\tabskip=0pt
X+    \halign\bgroup$##\hfil$&\qquad$##\hfil$\cr}                        % NOTE 44
X+
X+ \def\endcases{\crcr\egroup\egroup\right.}
X+
X+
X+ % TAGGING
X+
X+ \def\TagsOnLeft{\def\tagposition at AmS{L}}
X+ \def\TagsOnRight{\def\tagposition at AmS{R}}
X+ \def\TagsAsMath{\def\tagstyle at AmS{M}}
X+ \def\TagsAsText{\def\tagstyle at AmS{T}}
X+
X+ \TagsOnLeft
X+ \TagsAsText
X+
X+ \def\tag#1$${\if L\tagposition at AmS
X+     \leqno\else\eqno\fi\def\atag at AmS{T}\maketag at AmS#1\tagend at AmS$$}   % NOTE 45
X+
X+ \def\maketag at AmS{\futurelet\tok at AmS\maketag@@AmS}                     % NOTE 46
X+ \def\maketag@@AmS{\ifx\tok at AmS[\def\next at AmS{\maketag@@@AmS}\else
X+       \def\next at AmS{\maketag@@@@AmS}\fi\next at AmS}
X+ \def\maketag@@@AmS[#1]#2\tagend at AmS{\if F\atag at AmS\else             % NOTE 46.1
X+    \if M\tagstyle at AmS\hbox{$#1$}\else\hbox{#1}\fi\fi
X+        \gdef\atag at AmS{F}}
X+ \def\maketag@@@@AmS#1\tagend at AmS{\if F\atag at AmS \else
X+         \if T\autotag at AmS \setbox0=\hbox
X+     {\if M\tagstyle at AmS\tagform at AmS{$#1$}\else\tagform at AmS{#1}\fi}
X+                         \ifdim\wd0=0pt \tagform at AmS{*}\else
X+             \if M\tagstyle at AmS\tagform at AmS{$#1$}\else\tagform at AmS{#1}\fi
X+                      \fi\else
X+                \if M\tagstyle at AmS\tagform at AmS{$#1$}\else\tagform at AmS{#1}\fi
X+                      \fi
X+                   \fi\gdef\atag at AmS{F}}
X+
X+ \def\tagform at AmS#1{\hbox{\rm(#1\unskip)}}
X+
X+ \def\AutoTag{\def\autotag at AmS{T}}
X+ \def\NoAutoTag{\def\autotag at AmS{F}}
X+
X+ \NoAutoTag
X+
X+
X+
X+
X+
X+ \def\inaligntag at AmS{F} \def\inbunchtag at AmS{F}                         % NOTE 47
X+
X+ \def\CenteredTagsOnBrokens{\def\centerbroken at AmS{T}}                  % NOTE 48
X+ \def\TopOrBottomTagsOnBrokens{\def\centerbroken at AmS{F}}
X+ \TopOrBottomTagsOnBrokens
X+
X+ \def\broken{\global\setbox0=\vbox\bgroup\Let at AmS\tabskip=0pt
X+  \if T\inaligntag at AmS\else
X+    \if T\inbunchtag at AmS\else\openup3pt\fi\fi\mathsurround=0pt
X+      \halign\bgroup\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfill
X+       \cr}
X+                                                                       % NOTE 49
X+ \def\endbroken{\strut\crcr\egroup\egroup
X+       \global\setbox7=\vbox{\unvbox0\setbox1=\lastbox
X+       \hbox{\unhbox1\unskip\setbox2=\lastbox
X+        \unskip\setbox3=\lastbox
X+          \global\setbox4=\copy3
X+           \box3\box2}}%                                               % NOTE 50
X+   \if L\tagposition at AmS
X+      \if T\inaligntag at AmS
X+            \if T\centerbroken at AmS\gdef\broken at AmS
X+                 {&\vcenter{\vbox{\moveleft\wd4\box7}}}%               % NOTE 51
X+            \else
X+             \gdef\broken at AmS{&\vbox{\moveleft\wd4\vtop{\unvbox7}}}%   % NOTE 52
X+            \fi
X+      \else                                                            % NOTE 53
X+            \if T\centerbroken at AmS\gdef\broken at AmS
X+                 {\vcenter{\box7}}%
X+            \else
X+               \gdef\broken at AmS{\vtop{\unvbox7}}%
X+            \fi
X+      \fi
X+   \else                                                  % NOTE 55 (no note 54)
X+       \if T\inaligntag at AmS
X+            \if T\centerbroken at AmS
X+               \gdef\broken at AmS{&\vcenter{\vbox{\moveleft\wd4\box7}}}%
X+           \else
X+              \gdef\broken at AmS{&\vbox{\moveleft\wd4\box7}}%
X+           \fi
X+       \else
X+           \if T\centerbroken at AmS
X+             \gdef\broken at AmS{\vcenter{\box7}}%
X+           \else
X+              \gdef\broken at AmS{\box7}%
X+           \fi
X+       \fi
X+   \fi\broken at AmS}
X+
X+ \def\cbroken{\xdef\centerbroken@@AmS{\centerbroken at AmS}%
X+                        \def\centerbroken at AmS{T}\broken}               % NOTE 56
X+ \def\endcbroken{\endbroken\def\centerbroken at AmS{\centerbroken@@AmS}}
X+
X+
X+ \def\multline#1${\in at AmS\tag{#1}\if T\cresult at AmS
X+  \def\multline at AmS{\def\atag at AmS{T}\getmltag at AmS#1$}\else
X+    \def\multline at AmS{\def\atag at AmS{F}\setbox9=\hbox{}\multline@@AmS
X+     \multline@@@AmS#1$}\fi\multline at AmS}                              % NOTE 57
X+
X+ \def\getmltag at AmS#1\tag#2${\setbox9=\hbox{\maketag at AmS#2\tagend at AmS}%
X+            \multline@@AmS\multline@@@AmS#1$}
X+
X+ \def\multline@@AmS{\if L\tagposition at AmS
X+      \def\lwidth at AmS{\hskip\wd9}\def\rwidth at AmS{\hskip0pt}\else
X+       \def\lwidth at AmS{\hskip0pt}\def\rwidth at AmS{\hskip\wd9}\fi}      % NOTE 58
X+
X+ \def\multline@@@AmS{\def\vspace##1{\noalign{\vskip ##1}}%
X+  \def\shoveright##1{##1\hfilneg\rwidth at AmS\quad}                      % NOTE 59
X+   \def\shoveleft##1{\setbox                                           % NOTE 60
X+       0=\hbox{$\displaystyle{}##1$}%
X+      \setbox1=\hbox{$\displaystyle##1$}%
X+      \ifdim\wd0=\wd1
X+     \hfilneg\lwidth at AmS\quad##1\else
X+       \setbox2=\hbox{\hskip\wd0\hskip-\wd1}%
X+        \hfilneg\lwidth at AmS\quad\hskip-.5\wd2 ##1\fi}
X+      \vbox\bgroup\Let at AmS\openup3pt\halign\bgroup\hbox to \the\displaywidth
X+       {$\displaystyle\hfil{}##\hfil$}\cr\hfilneg\quad
X+       \if L\tagposition at AmS\hskip-1em\copy9\quad\else\fi}             % NOTE 61
X+
X+
X+ \def\endmultline{\if R\tagposition at AmS\quad\box9                 % NOTES 62, 63
X+    \hskip-1em\else\fi\quad\hfilneg\crcr\egroup\egroup}
X+
X+
X+
X+ \def\aligntag#1$${\def\inaligntag at AmS{T}\openup3pt\mathsurround=0pt   % NOTE 64
X+  \Let at AmS
X+    \def\tag{\gdef\atag at AmS{T}&}                                       % NOTE 65
X+    \def\vspace##1{\noalign{\vskip##1}}                                % NOTE 66
X+     \def\xtext##1{\noalign{\hbox{##1}}}                               % NOTE 67
X+    \def\break{\noalign{\penalty-10000 }}                              % NOTE 68
X+    \def\nobreak{\noalign{\penalty 10000 }}
X+    \def\allowbreak{\noalign{\penalty 0 }}
X+    \def\goodbreak{\noalign{\penalty -500 }}
X+     \gdef\atag at AmS{F}%
X+ \if L\tagposition at AmS\laligntag at AmS#1$$\else
X+    \raligntag at AmS#1$$\fi}
X+
X+ \def\raligntag at AmS#1$${\tabskip\centering
X+    \halign to \the\displaywidth
X+ {\hfil$\displaystyle{##}$\tabskip 0pt
X+     &$\displaystyle{{}##}$\hfil\tabskip\centering
X+    &\llap{\maketag at AmS##\tagend at AmS}\tabskip 0pt\cr\noalign{\vskip-
X+      \lineskiplimit}#1\crcr}$$}
X+
X+ \def\laligntag at AmS#1$${\tabskip\centering                             % NOTE 69
X+    \halign to \the\displaywidth
X+ {\hfil$\displaystyle{##}$\tabskip0pt
X+    &$\displaystyle{{}##}$\hfil\tabskip\centering
X+     &\kern-\displaywidth\rlap{\maketag at AmS##\tagend at AmS}\tabskip
X+     \the\displaywidth\cr\noalign{\vskip-\lineskiplimit}#1\crcr}$$}
X+
X+ \def\endaligntag{}
X+
X+ \def\bunchtag#1$${\def\inbunchtag at AmS{T}\openup3pt\mathsurround=0pt   % NOTE 70
X+     \Let at AmS
X+    \def\tag{\gdef\atag at AmS{T}&}
X+    \def\vspace##1{\noalign{\vskip##1}}
X+    \def\xtext##1{\noalign{\hbox{##1}}}
X+    \def\break{\noalign{\penalty-10000 }}
X+    \def\nobreak{\noalign{\penalty 10000 }}
X+    \def\allowbreak{\noalign{\penalty 0 }}
X+     \def\goodbreak{\noalign{\penalty -500 }}
X+   \if L\tagposition at AmS\lbunchtag at AmS#1$$\else
X+     \rbunchtag at AmS#1$$\fi}
X+
X+ \def\rbunchtag at AmS#1$${\tabskip\centering
X+     \halign to \displaywidth {$\hfil\displaystyle{##}\hfil$&
X+       \llap{\maketag at AmS##\tagend at AmS}\tabskip 0pt\cr\noalign{\vskip-
X+        \lineskiplimit}#1\crcr}$$}
X+
X+ \def\lbunchtag at AmS#1$${\tabskip\centering
X+    \halign to \displaywidth
X+ {$\hfil\displaystyle{##}\hfil$&\kern-
X+     \displaywidth\rlap{\maketag at AmS##\tagend at AmS}\tabskip\the\displaywidth\cr
X+     \noalign{\vskip-\lineskiplimit}#1\crcr}$$}
X+
X+ \def\endbunchtag{}
X+
X+
X+ %  MISCELLANEOUS
X+
X+ \def\hyphen{\mathchar"702D}                                           % NOTE 71
X+ \def\endash{\mathchar"707B}
X+ \def\emdash{\mathchar"707C}
X+ \def\rightquote{\mathchar"7027}
X+ \def\rightquoteii{\mathchar"7022}
X+ \def\leftquote{\mathchar"7060}
X+ \def\leftquoteii{\mathchar"705C}
X+
X+ \def\mod#1{\allowbreak\mkern18mu{\rm mod}\,\,#1}
X+
X+ % CONTINUED FRACTIONS
X+
X+ \def\numeratorleft#1{#1\hskip 0pt plus 1filll\relax at AmS}
X+ \def\numeratorright#1{\hskip 0pt plus 1filll\relax at AmS#1}
X+ \def\numeratorcenter#1{\hskip 0pt plus 1filll\relax at AmS
X+       #1\hskip 0pt plus 1filll\relax at AmS}
X+
X+ \def\cfrac at AmS#1,{\def\numerator at AmS{#1}\cfrac@@AmS*}                 % NOTE 72
X+
X+ \def\cfrac@@AmS#1;#2#3\cfend at AmS{\comp at AmS\cfmark at AmS{#2}\if T\cresult at AmS
X+  \gdef\cfrac@@@AmS
X+   {\expandafter\eat at AmS\numerator at AmS\strut\over\eat at AmS#1}\else
X+   \comp at AmS;{#2}\if T\cresult at AmS\gdef\cfrac@@@AmS
X+   {\expandafter\eat at AmS\numerator at AmS\strut\over\eat at AmS#1}\else
X+ \gdef\cfrac@@@AmS{\if R\cftype at AmS\hfill\else\fi
X+     \expandafter\eat at AmS\numerator at AmS\strut
X+     \if L\cftype at AmS\hfill\else\fi\over
X+        \eat at AmS#1\displaystyle {\cfrac at AmS*#2#3\cfend at AmS}}
X+      \fi\fi\cfrac@@@AmS}
X+
X+ \def\cfrac#1{\def\cftype at AmS{C}\cfrac at AmS*#1;\cfmark at AmS\cfend at AmS}
X+
X+ \def\cfracl#1{\def\cftype at AmS{L}\cfrac at AmS*#1;\cfmark at AmS\cfend at AmS}
X+
X+ \def\cfracr#1{\def\cftype at AmS{R}\cfrac at AmS*#1;\cfmark at AmS\cfend at AmS}
X+
X+ \def\adorn#1#2#3{\mathsurround=0pt\setbox0=\hbox{$\displaystyle{#2}#3$}%
X+    \setbox1=\hbox{$\displaystyle\vphantom{#2}#1{#2}$}%
X+     \setbox2=\hbox{\hskip\wd0\hskip-\wd1}%
X+     \hskip-\wd2\mathop{\hskip\wd2\vphantom{#2}#1{#2}#3}}
X+
X+ %  ARROWS                                                             % NOTE 73
X+
X+ \def\overrightarrow{\mathpalette\overrightarrow at AmS}
X+
X+ \def\overrightarrow at AmS#1#2{\vbox{\halign{$##$\cr
X+     #1{-}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+      \mkern-6mu{\to}\cr
X+      \noalign{\kern -1pt\nointerlineskip}
X+      \hfil#1#2\hfil\cr}}}
X+
X+ \let\overarrow=\overrightarrow
X+
X+ \def\overleftarrow{\mathpalette\overleftarrow at Ams}
X+
X+ \def\overleftarrow at Ams#1#2{\vbox{\halign{$##$\cr
X+      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+       \mkern-6mu{-}\cr
X+      \noalign{\kern -1pt\nointerlineskip}
X+      \hfil#1#2\hfil\cr}}}
X+
X+ \def\overleftrightarrow{\mathpalette\overleftrightarrow at AmS}
X+
X+ \def\overleftrightarrow at AmS#1#2{\vbox{\halign{$##$\cr
X+      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+        \mkern-6mu{\to}\cr
X+     \noalign{\kern -1pt\nointerlineskip}
X+       \hfil#1#2\hfil\cr}}}
X+
X+ \def\underrightarrow{\mathpalette\underrightarrow at AmS}
X+
X+ \def\underrightarrow at AmS#1#2{\vtop{\halign{$##$\cr
X+     \hfil#1#2\hfil\cr
X+      \noalign{\kern -1pt\nointerlineskip}
X+     #1{-}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+      \mkern-6mu{\to}\cr}}}
X+
X+ \let\underarrow=\underrightarrow
X+
X+ \def\underleftarrow{\mathpalette\underleftarrow at AmS}
X+
X+ \def\underleftarrow at AmS#1#2{\vtop{\halign{$##$\cr
X+      \hfil#1#2\hfil\cr
X+      \noalign{\kern -1pt\nointerlineskip}
X+      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+       \mkern-6mu{-}\cr}}}
X+
X+ \def\underleftrightarrow{\mathpalette\underleftrightarrow at AmS}
X+
X+ \def\underleftrightarrow at AmS#1#2{\vtop{\halign{$##$\cr
X+       \hfil#1#2\hfil\cr
X+     \noalign{\kern -1pt\nointerlineskip}
X+      #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill
X+        \mkern-6mu{\to}\cr}}}
X+
X+ % DOTS
X+
X+ \def\dotsc{\mathinner{\ldotp\ldotp\ldotp}}
X+ \def\dotsi{\mathinner{\cdotp\cdotp\cdotp}}
X+ \def\dotsj{\mathinner{\ldotp\ldotp\ldotp}}
X+ \def\dotsb{\mathinner{\cdotp\cdotp\cdotp}}
X+
X+ \def\binary at AmS#1{{\thinmuskip 0mu \medmuskip 1mu \thickmuskip 1mu    % NOTE 74
X+       \setbox0=\hbox{$#1{}{}{}{}{}{}{}{}{}$}\setbox1=\hbox
X+        {${}#1{}{}{}{}{}{}{}{}{}$}\ifdim\wd1>\wd0\gdef\binary@@AmS{T}\else
X+        \gdef\binary@@AmS{F}\fi}}
X+
X+ \def\dots{\relax at AmS\ifmmode\def\dots at AmS{\mdots at AmS}\else
X+     \def\dots at AmS{\tdots at AmS}\fi\dots at AmS}
X+
X+ \def\mdots at AmS{\futurelet\tok at AmS\mdots@@AmS}
X+
X+ \def\mdots@@AmS{\def\thedots at AmS{\dotsj}%
X+   \ifx\tok at AmS\bgroup\else
X+   \ifx\tok at AmS\egroup\else
X+   \ifx\tok at AmS$\else
X+   \iffalse{\fi  \ifx\tok at AmS\\ \iffalse}\fi\else                      % NOTE 75
X+   \iffalse{\fi \ifx\tok at AmS&  \iffalse}\fi\else
X+   \ifx\tok at AmS\left\else
X+   \ifx\tok at AmS\right\else
X+   \ifx\tok at AmS,\def\thedots at AmS{\dotsc}\else
X+   \inttest at AmS\tok at AmS\if T\intflag at AmS\def\thedots at AmS{\dotsi}\else
X+   \binary at AmS\tok at AmS\if T\binary@@AmS\def\thedots at AmS{\dotsb}\else
X+    \def\thedots at AmS{\dotsj}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\thedots at AmS}
X+
X+ \def\tdots at AmS{\unskip\ \tdots@@AmS}
X+
X+ \def\tdots@@AmS{\futurelet\tok at AmS\tdots@@@AmS}
X+
X+ \def\tdots@@@AmS{$\ldots\,
X+    \ifx\tok at AmS,$\else
X+    \ifx\tok at AmS.\,$\else
X+    \ifx\tok at AmS;\,$\else
X+    \ifx\tok at AmS:\,$\else
X+    \ifx\tok at AmS?\,$\else
X+    \ifx\tok at AmS!\,$\else
X+    $\ \fi\fi\fi\fi\fi\fi}
X+
X+
X+ % SET NOTATION
X+
X+ \def\lset{\{\,}
X+ \def\rset{\,\}}
X+
X+
X+ \def\leftset#1\mid#2\rightset{\hbox{$\displaystyle
X+ \left\{\,#1\vphantom{#1#2}\;\right|\;\left.
X+     #2\vphantom{#1#2}\,\right\}\offspace at AmS$}}
X+
X+
X+ % ACCENT SYMBOLS
X+
X+ \def\dotii#1{{\mathop{#1}\limits^{\vbox to -1.4pt{\kern-2pt
X+    \hbox{\tenrm..}\vss}}}}
X+ \def\dotiii#1{{\mathop{#1}\limits^{\vbox to -1.4pt{\kern-2pt
X+    \hbox{\tenrm...}\vss}}}}
X+ \def\dotiv#1{{\mathop{#1}\limits^{\vbox to -1.4pt{\kern-2pt
X+    \hbox{\tenrm....}\vss}}}}
X+
X+ \def\vecsymbol{\rightarrow}
X+ \def\barsymbol{-}
X+ \def\tildesymbol{\mathchar"0218 }
X+ \def\hatsymbol{{\mathchoice{\null}{\null}{\,\,\hbox{\lower 10pt\hbox
X+     {$\widehat{\null}$}}}{\,\hbox{\lower 20pt\hbox
X+        {$\hat{\null}$}}}}}
X+ \def\dotsymbol{{\nonscript\,.}}
X+ \def\dotiisymbol{{\nonscript\,\hbox{\tenrm..}}}
X+ \def\dotiiisymbol{{\nonscript\,\hbox{\tenrm...}}}
X+ \def\dotivsymbol{{\nonscript\,\hbox{\tenrm....}}}
X+ \def\dotsymbol{{\nonscript\,\hbox{\tenrm.}}}
X+
X+
X+
X+ % OVERSET AND OVERBRACE
X+
X+ \def\overset#1\to#2{{\mathop{#2}^{#1}}}
X+
X+ \def\underset#1\to#2{{\mathop{#2}_{#1}}}
X+
X+ \def\oversetbrace#1\to#2{{\overbrace{#2}^{#1}}}
X+ \def\undersetbrace#1\to#2{{\underbrace{#2}_{#1}}}
X+
X+
X+ % ROOTS
X+
X+ \def\uproot#1{\gdef\theuproot{#1 pt}}
X+ \def\theuproot{0 pt}
X+
X+ \def\therightroot{0mu}
X+ \def\rightroot#1{\gdef\therightroot{-#1mu}}
X+
X+
X+ \def\r@@t#1#2{\setbox\z@\hbox{$\m at th#1\sqrt{#2}$}%
X+   \dimen@\ht\z@ \advance\dimen at -\dp\z@ \advance\dimen@\theuproot
X+   \mskip5mu\raise.6\dimen@\copy\rootbox \mskip-10mu \mskip\therightroot
X+     \box\z@\gdef\theuproot{0 pt}\gdef\therightroot{0mu}}              % NOTE 76
X+
X+
X+ %  BOXED
X+
X+
X+ \def\boxed#1{\setbox0=\hbox{$\displaystyle{#1}$}\hbox{\lower.4pt\hbox{\lower
X+    3pt\hbox{\lower 1\dp0\hbox{\vbox{\hrule height .4pt \hbox{\vrule width
X+    .4pt \hskip 3pt\vbox{\vskip 3pt\box0\vskip3pt}\hskip 3pt \vrule width
X+       .4pt}\hrule height .4pt}}}}}}
X+
X+ %  FORMATTING MACROS COMMON TO ALL STYLES
X+
X+ \def\documentstyle#1{\input #1.sty}
X+
X+ \newif\ifretry at AmS
X+ \def\y at AmS{y } \def\y@@AmS{Y } \def\n at AmS{n } \def\n@@AmS{N }
X+ \def\ask at AmS{\message
X+   {Do you want output? (y or n, follow answer by return) }\loop
X+    \read-1 to\answer at AmS
X+   \ifx\answer at AmS\y at AmS\retry at AmSfalse\outputon
X+    \else\ifx\answer at AmS\y@@AmS\retry at AmSfalse\outputon
X+     \else\ifx\answer at AmS\n at AmS\retry at AmSfalse\outputoff
X+      \else\ifx\answer at AmS\n@@AmS\retry at AmSfalse\outputoff
X+       \else \retry at AmStrue\fi\fi\fi\fi
X+   \ifretry at AmS\message{Type y or n, follow answer by return: }\repeat}
X+
X+ \def\outputoff{\global\output{\setbox0=\box255 \deadcycles=0}}
X+
X+ \def\outputon{\global\output{\output at AmS}}
X+ \outputon
X+
X+ \catcode`\@=13
X*** ../mh-6.6.0/./papers/realwork/Makefile	Thu Oct 29 14:59:22 1987
X--- ./papers/realwork/Makefile	Tue Mar  6 14:49:46 1990
X***************
X*** 10,12 ****
X
X! .tex.dvi:;	sh -c 'if phdtex \\nonstopmode\\input $<\\bye; \
X  			  then exit 0; else rm $@; exit 1; fi'
X--- 10,13 ----
X
X! .tex.dvi:;	sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex82 \
X! 			\\nonstopmode\\input $<\\bye; \
X  			  then exit 0; else rm $@; exit 1; fi'
X*** ../mh-6.6.0/./papers/trusted/Makefile	Thu Oct 29 14:59:40 1987
X--- ./papers/trusted/Makefile	Tue Mar  6 14:49:47 1990
X***************
X*** 10,12 ****
X
X! .tex.dvi:;	sh -c 'if phdtex \\nonstopmode\\input $<\\bye; \
X  			  then exit 0; else rm $@; exit 1; fi'
X--- 10,13 ----
X
X! .tex.dvi:;	sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex82 \
X! 			\\nonstopmode\\input $<\\bye; \
X  			  then exit 0; else rm $@; exit 1; fi'
+ END-OF-FILE MH.6.6.5
chmod 'u=rw,g=r,o=r' 'MH.6.6.5'
echo '	-rw-r--r--  1 mh          51675 Apr 13 13:53 MH.6.6.5        (as sent)'
echo -n '	'
/bin/ls -l MH.6.6.5
exit 0



More information about the Comp.sources.bugs mailing list