From: David Levine Date: Wed, 29 Feb 2012 22:36:59 +0000 (-0600) Subject: Merge branch 'master' of git.sv.nongnu.org:/srv/git/nmh X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/ec4adac00f7bfe2caed96fdb645435d578f6d3ca?hp=7565efea3b91264fb6055b2ecb8980807c2da677 Merge branch 'master' of git.sv.nongnu.org:/srv/git/nmh Conflicts: docs/historical/README --- diff --git a/docs/historical/README b/docs/historical/README deleted file mode 100644 index e5c76660..00000000 --- a/docs/historical/README +++ /dev/null @@ -1,127 +0,0 @@ -The most recent versions of the documents in this directory were -downloaded from ftp://ftp.vim.org/pub/mail/mh/doc/ - -These older versions: - ADMIN-19910201.txt - MH-19910201.txt - MH-19921214.pdf - MH-19921214.txt -were downloaded from ftp://munnari.oz.au/pub/mh/doc/ - -designOfMH.pdf was downloaded from -http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA257836 - -The sources for the papers in these directories: - bboards/ - beginners/ - changes/ - doclib/ - mh4/ - mh4mm/ - mh5/ - mh6.5/ - mh6/ - multifarious/ - mznet/ - realwork/ - trusted/ - tutorial/ -were downloaded from -http://stuff.mit.edu/afs/sipb/project/sipb-athena/src/mh/papers/ - - -The README below is retained in its original form for posterity. All -of the txt (.doc and .tty) files have been renamed to .txt. All of -the postscript (.ps) files have been converted to pdf using ps2pdf. - -D. Levine 28 Feb 2012 - ------------------------------------------------------------------------- ------------------------------------------------------------------------- - -mh/doc/README - -These are formatted versions of the major MH documents (written -using the troff "-ms" and "-me" macro packages). The ".doc" files -are formatted for 66 lines/page: - - ADMIN.doc - The MH Administrator's Manual - how to configure MH - MH.doc - The MH User's Manual - changes.doc - Changes from MH 6.6 to MH 6.8 - mh-gen.doc - The "READ-ME" file - how to generate MH (aka mh-gen(8)) - -Postscript versions are also available: - - ADMIN.ps - The MH Administrator's Manual - how to configure MH - MH.ps - The MH User's Manual - changes.ps - Changes from MH 6.6 to MH 6.8 - mh-gen.ps - The "READ-ME" file - how to generate MH (aka mh-gen(8)) - ------------------------------------------------------------------------- - -These are postscript conversions of the MH papers which were written -using the TeX typesetting language: - - bboards.ps - The UCI BBoards Facility - beginners.ps - UCI MH for Beginners - mh4mm.ps - MH for MM users - mh6.ps - Changes from MH 6.0 to MH 6.5 for 4.3BSD - multifarious.ps - MH: A Multifarious User Agen - mznet.ps - MZnet - Mail Service for Personal Micro Comp. Sys. - realwork.ps - MH.5 - How to process 200 messages... - trusted.ps - Design of the TTI Prototype Trusted Mail Agent - tutorial.ps - The MH Tutorial - -These conversions have been provided because they may be of use to some -sites who retrieved MH using FTP, and who do not have TeX to typeset -the papers themselves. Of course, all recipients of an MH distribution -tape receive a complete set of laser-printed manuals. - -These conversions were generated with the "dvips" program. I have -printed them on an Imagen 5320 w/ Turboscript, and the output is -identical to the original "dvi" versions of these papers. - -As yet, I have had no success downloading the postscript files to a Mac- -intosh, and printing them on a Laserwriter. If you are able to generate -copies of these papers which will print (identically to the originals or -otherwise) on a Laserwriter, please contact "Bug-MH@ICS.UCI.EDU". - ------------------------------------------------------------------------- - -These files are tty-readable conversions of the MH papers which were -written using the TeX typesetting language: - - bboards.tty - The UCI BBoards Facility - beginners.tty - UCI MH for Beginners - mh4mm.tty - MH for MM users - mh6.tty - Changes from MH 6.0 to MH 6.5 for 4.3BSD - multifarious.tty - MH: A Multifarious User Agen - mznet.tty - MZnet - Mail Service for Personal Micro Comp. Sys. - realwork.tty - MH.5 - How to process 200 messages... - trusted.tty - Design of the TTI Prototype Trusted Mail Agent - tutorial.tty - The MH Tutorial - -These conversions have been provided because they may be of use to some -sites who retrieved MH using FTP, and who do not have TeX or a laser -printer on which to print the papers. If you have a Postscript -printer, you may want to retrieve the Postscript conversion of these -papers, available in a different tar archive. - -Of course, all recipients of an MH distribution tape receive a complete -set of laser-printed manuals, and these conversions are not a -substitute for properly-formatted copies of the originals. - -The conversion was generated by the "dvi2tty" program. As full use of -TeX's rich typesetting environment was used in writing many of these -papers, and since the output is intended for a line printer, it is -necessarily quite primitive. - -Font changes and special character representations are lost entirely. -White-space between words may be deleted or expanded, especially near -punctuation characters. Blank lines may be added or deleted. - -Since typeset lines are typically longer than 80 tty characters, the -output has been generated for 132-colunm output devices. A typical -page has about 76 lines. Pages are separated by a formfeed character. - -/JLR diff --git a/docs/historical/bboards/Makefile b/docs/historical/bboards/Makefile deleted file mode 100644 index 9a8885e3..00000000 --- a/docs/historical/bboards/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -####################################################################### -# Instructions to Make, for generation of nice-looking papers using TeX -####################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex \ - \\nonstopmode\\input $<\\bye; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# bboards -############################################################# - -i-all: bboards.dvi - -i-print: bboards.dvi true - dvisp -J BBoards bboards.dvi - -i-count: true - detex text.tex | wc -cw - - -# customization files, et. al., not included below -bboards.dvi: version.tex - -version.tex: bboards.tex text.tex refs.tex version.sh - @: version.sh - -true:; - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f bboards.dvi bboards.imp - -clean:; rm -f bboards.lof bboards.log bboards.lot bboards.toc _* diff --git a/docs/historical/bboards/bboards.tex b/docs/historical/bboards/bboards.tex deleted file mode 100644 index f2e25f63..00000000 --- a/docs/historical/bboards/bboards.tex +++ /dev/null @@ -1,45 +0,0 @@ -% run this through PhD-TeX - -\input dcustom -\articlestyle -\draftfalse -\input version - -\input sfwmac - -\header - The Rand MH Message Handling System:\\\\ - The UCI BBoards Facility\title - Marshall T.~Rose$^\dagger$\author - \versiondate/\info -\footnote{}{\hskip -\parindent $^\dagger$ -Computer Mail: {\tx MRose@NRTC.NORTHROP.COM}.} - -\centerline{\sc Abstract} -{\rightskip=0pt\narrower\narrower -\noindent -This document discusses how to process BBoards using the Rand \MH/ system. -In particular, -this guide discusses: -checking the status of a BBoard, -viewing new messages, -archive handling, -composing mail destined for a BBoard, -and replying to a message posted to a BBoard. - -Although this document is based on the standard \MH/ user manual\cite{MH}, -this document is meant to supplement, not supersede, -that lengthier work. - -Comments concerning this documentation should be addressed to the Internet -mailbox {\tx Bug-MH@ICS.UCI.EDU}. -\par} - -\input text -\input refs -\printcontents -\unskip\footnote{}{\hskip -\parskip This document (version \versiontag/) -was \TeX set \today\ with DISS.STY v\version.} -\showsummary - -\bye diff --git a/docs/historical/bboards/refs.tex b/docs/historical/bboards/refs.tex deleted file mode 100644 index 4d9b8b76..00000000 --- a/docs/historical/bboards/refs.tex +++ /dev/null @@ -1,26 +0,0 @@ -\let\journalinfo=\jourinfo -\let\thesis=\book % experimental -\let\thesisinfo=\bookinfo % .. - -\references - -\ref{MH} -\by M.T.~Rose, J.L.~Romine. -\paper The Rand \MH/ Message Handling System: User's Manual -\paperinfo UCI Version -\other -\publ Department of Information and Computer Science -\publaddr University of California, Irvine -\month July\year 1984 -\endref - -\ref{MH.TUT} -\by M.T.~Rose. -\paper The Rand MH Message Handling System: Tutorial -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\endreferences diff --git a/docs/historical/bboards/text.tex b/docs/historical/bboards/text.tex deleted file mode 100644 index e8abccfd..00000000 --- a/docs/historical/bboards/text.tex +++ /dev/null @@ -1,537 +0,0 @@ -% begin text -\banner -\section{Acknowledgements} -The \MH/ system described herein is based on the original Rand \MH/ system. -It has been extensively developed (perhaps too much so) by Marshall Rose and -John Romine at the University of California, Irvine. -Einar Stefferud, Jerry Sweet, and Terry Domae provided numerous suggestions -to improve the UCI version of \MH/. - -In particular, the UCI BBoards facility, -which was suggested by Einar Stefferud, -has been in place at the University of California, Irvine -(in one form or another) for the last two and one-half years. -The UCI BBoards facilities runs under both \MMDF/ and {\sf SendMail}, -and, in a more restricted form, under stand-alone \MH/. - -\section{Disclaimer} -The Regents of the University of California wish to make it known that: -\bigquote -Although each program has been tested by its contributor, -no warranty, express or implied, -is made by the contributor or the University of California, -as to the accuracy and functioning of the program -and related program material, -nor shall the fact of distribution constitute any such warranty, -and no responsibility is assumed by the contributor -or the University of California in connection herewith. -\endbigquote - -\section{Scope} -This document explains how to use the UCI BBoards facility to a user familiar -with \MH/ and the \unix/ operating system in general. -A large degree of expertise is not assumed. -This document does not attempt to introduce \MH/ to the novice user -(for that task, consult the \MH/ tutorial known as \cite{MH.TUT}). -Additional information on the programs discussed here -(particularly \pgm{bbc\/}) is to be found in \cite{MH}. - -\section{Conventions} -In this document, -certain \TeX -formatting conventions are adhered to: -\smallskip -{\advance\leftskip by\parindent -\item{1.} The names of \unix/ commands, such as \pgm{comp}, -are presented in {\it text italics}. -\item{2.} Arguments to programs, such as \arg{msgs}, -are presented in {\tt typewriter style} and delimited by single-quotes. -\item{3.} \unix/ pathnames and envariables, -such as \file{/usr/uci/} and \file{\$SIGNATURE}, -are presented in {\sl slanted roman}. -\item{4.} Text presenting an example, such as -\example comp\ -editor\ zz\endexample -is presented in {\tt typewriter style}. -\smallskip} - -\section{Introduction} -\MH/ is a very powerful message handling system that runs under the \unix/ -operating system. -One of the many features which \MH/ offers is an interface to the UCI BBoards -facility. -This facility permits the efficient distribution of interest group messages -on a single host, a group of hosts under a single administration, and the -ARPA Internet community. - -Described simply, a interest group is composed of a number of subscribers -with a common interest. -These subscribers post mail to a single address, known as a -{\it distribution} address. -From this distribution address, a copy of the message is sent to each -subscriber. -Each group has a {\it moderator}, -which is the person that runs the the group. -This moderator can usually be reached at a special address, -known as a {\it request} address. -Usually, the responsibilities of the moderator are quite simple, -since the mail system handles the distribution to subscribers automatically. -In some cases, the interest group, -instead of being distributed directly to its subscribers, -is put into a {\it digest} format by the moderator and then sent to the -subscribers. -Although this requires more work on the part of the moderator, -such groups tend to be better organized. - -Unfortunately, there are a few problems with the scheme outlined above. -First, if two users on the same host subscribe to the same interest group, -two copies of the message get delivered. -This is wasteful of both processor and disk resources. - -Second, -some of these groups carry a lot of traffic. -Although subscription to an group does indicate interest on the part of a -subscriber, -it is usually not interesting to get $50$ messages or so delivered to -the user's private maildrop each day, -interspersed with {\it personal} mail, -that is likely to be of a much more important and timely nature. - -Third, if a subscriber on the distribution list for a group becomes ``bad'' -somehow, -the originator of the message and not the moderator of the group is notified. -It is not uncommon for a large list to have $10$ or so bogus addresses present. -This results in the originator being flooded with ``error messages'' from -mailers across the ARPA Internet stating that a given address on the list was -bad. -Needless to say, -the originator usually could not care less if the bogus addresses got a copy -of the message or not. -The originator is merely interested in posting a message to the group at large. -Furthermore, the moderator of the group does care if there are bogus -addresses on the list, -but ironically does not receive notification. - -To solve all of these problems, -the UCI BBoards facility introduces a new entity into the picture: -all interest group mail is handled by a special component of the mail system. -The distribution address maps to a special {\it channel} that performs -several actions. -First, if local delivery is to be performed, -then a copy of the message is placed in a global maildrop for the interest -group with a timestamp and a unique number. -Local users can read messages posted for the interest group by reading the -file. -Second, if further distribution is to take place, -a copy of the message is sent to the distribution address in such a way that -if any of the addresses are bogus, -the failure notice is sent to the maintainer of the group and not the -originator. - -This scheme has several advantages: -First, messages delivered to the host are processed and saved once -in a globally accessible area. -The UCI BBoards facility supports software which allows a user to query the -interest group for new messages and to read those messages in the \MH/-style. -Second, once a host subscribes to an interest group, -a user can add or remove him/herself from the list without contacting the -moderator. -Third, a hierarchical distribution scheme can be constructed to further -reduce the amount of message traffic. -Fourth, errors are prevented from propagating. -When an address on the distribution list goes bad, -the request address immediately responsible for the address is notified. -Usually, this is the local PostMaster and not the group moderator. - -In addition to solving the problems outlined above, -the UCI BBoards facility supports several other capabilities. -BBoards may be automatically archived in order to conserve disk space and -reduce processing time when reading them. - -Special alias files may be generated which allow the \MH/ user to shorten -address type-in. -For example, instead of sending to \eg{SF-Lovers@Rutgers}, -a user of \MH/ usually sends to \eg{SF-Lovers} and the \MH/ aliasing -facility automatically makes the appropriate expansion in the headers of the -outgoing message. -Hence, one need only know the name of a interest group and not its address. - -Finally, the UCI BBoards facility supports {\it private} interest groups -using the \unix/ group access mechanism. -This allows a group of people on the same or different machines to conduct a -private discussion. - -The practical upshot of all this is that the UCI BBoards facility automates -the vast majority of BBoards handling from the point of view of both the -PostMaster and the user. - -\section{BBoard Handling} -Usually the term {\it BBoard} is used interchangeably with the terms -{\it discussion group} and {\it interest group}. -This is true of the discussion that follows. - -The messages for a BBoard delivered locally are kept in the same format as -a maildrop.% -\nfootnote{Actually, -your site might be running with all BBoards kept on a single host. -\MH/ supports the remote access of BBoards using a modified version of the -ARPA Post Office Protocol (POP). -This has the advantage that it saves a lot of disk space, -and incurs only a modest performance penalty.} -Unlike the user's private maildrop however, -the \pgm{inc} program is not run to incorporate new BBoard messages into -the user's \MH/ \eg{+inbox} folder. -The programs which are used will be discussed momentarily. - -Each message in a BBoard maildrop has a unique number and a timestamp. -The number, called the {\it BBoard-ID}, is always ascending. -The BBoard-ID of a message should {\bf NOT} be confused with the message -number of a message, which can change as messages are removed from the BBoard. -The BBoard-ID is a value which is unique for every message delivered locally -to the BBoard. - -To read BBoards, the \MH/ user invokes \pgm{bbc}. -The \pgm{bbc} program has several switches to direct it's action. -The \switch{topics} switch to \pgm{bbc} tells the \MH/ user about the -status of a BBoard. -The \switch{check} switch to \pgm{bbc} lets the \MH/ user check on the -activity of a BBoard. -The \switch{read} switch to \pgm{bbc} invokes the \pgm{msh} program on the -BBoard. -\pgm{msh} is a monolithic program which contains most of the functionality of -\MH/ in a single program. -These commands are now discussed in greater detail. - -\subsection{BBoard status} -The \switch{topics} option to the \pgm{bbc} program can be used to report -information about a BBoard that does not pertain to the user's reading habits. -If the \MH/ users types \example bbc\ -topics\endexample -then \pgm{bbc} will list the following information for all BBoards received -on the host: -\smallskip -{\advance\leftskip by\parindent -\item{$\bullet$} the official name of the BBoard -\item{$\bullet$} the number of messages delivered to the BBoard -(but not necessarily present) -\item{$\bullet$} the date and time of the last message delivered to the BBoard -\medskip} -\noindent -In addition to \switch{topics}, -if the \switch{verbose} option is given to \pgm{bbc}, -then more information is listed: -\smallskip -{\advance\leftskip by\parindent -\item{$\bullet$} any aliases the BBoard is known as -\item{$\bullet$} the local leaders of the BBoard -\item{$\bullet$} the file that the BBoard is locally delivered to -\item{$\bullet$} the ``global'' distribution address -\item{$\bullet$} the ``global'' request address -\item{$\bullet$} the host that distributes the BBoard to the local host -\item{$\bullet$} the addresses to which this host distributes -\item{$\bullet$} miscellaneous information (presently only archiving status) -\medskip} -\noindent -Naturally, \pgm{bbc} can be invoked with the \switch{topics} option and one or -more BBoard names listed on its command line. -For example \example bbc\ -topics\ unix-wizards\endexample is completely -acceptable~---~it tells \pgm{bbc} to report the status of the BBoard -\eg{unix-wizards}. - -\subsection{BBoard checking} -The \switch{check} option to the \pgm{bbc} program can be used to check for -new BBoard messages in a synchronous fashion -(i.e., when you specifically ask for it). -The \MH/ users types \example bbc\ -check\endexample and \pgm{bbc} consults -the profile entry for \eg{bboards:} in the user's \profile/ file. -For each BBoard listed, -\pgm{bbc} prints one of several messages depending on the status of both the -BBoard and the user's reading habits -(for example, in the case of the mythical BBoard \eg{foo\/}): -\smallskip -{\advance\leftskip by\parindent -\item{1.} \eg{foo -- n items unseen}\hbreak -This message indicates items in the BBoard have not been seen by the user. -When \pgm{bbc} is invoked with the \eg{quiet} switch, -this is the only informative message that \pgm{bbc} will print out. -Users of \MH/ usually put \example bbc\ -check\ -quiet\endexample -in their \file{\$HOME/.login} file. - -\item{2.} \eg{foo -- empty}\hbreak -The BBoard is empty. - -\item{3.} \eg{foo -- n items (none seen)}\hbreak -The BBoard has $n$ items in it, but the user hasn't seen any. - -\item{4.} \eg{foo -- n items (all seen)}\hbreak -The BBoard is non-empty, and the user has seen everything in it. - -\item{5.} \eg{foo -- n items seen out of m}\hbreak -The BBoard has at most $m-n$ items that the user has not seen. -\medskip} -\noindent -It is important to note that \pgm{bbc} performs its calculations on -BBoard-ID:s and not the messages actually present in a BBoard. -This means that the numbers given by \pgm{bbc} are maximal end-points. -When \pgm{bbc} says $n$, \pgm{bbc} means ``at most $n$''. - -Naturally, \pgm{bbc} can be invoked with the \switch{check} option and one or -more BBoards listed on its command line. -For example \example bbc\ -check\ info-c\ poli-sci\endexample is completely -acceptable~---~it tells \pgm{bbc} to check on the BBoards \eg{info-c} and -\eg{poli-sci} only. - -There are two ways to check for new BBoard messages in an asynchronous fashion: -using the \pgm{CShell} variable \file{\$mail} and running the \pgm{useto} -program. - -\subsubsection{Asynchronous Checking with the CShell} -The \pgm{CShell} has a variable called \file{\$mail}. -This variable can contain one or more words. -Each word should be a filename where the shell should check for new mail. -The check is performed after a specified time interval has elapsed just -before the shell would prompt the user. - -If the first word of \file{\$mail} is a number, -then this number specifies a different checking interval, in seconds, -than the default, which is 10 minutes. - -Whenever the time interval elapses and the shell is ready to prompt the user, -the shell looks at the file and decides if new messages have arrived. -If so, it says \example You have new mail.\endexample -if only one file is present in \file{\$mail}. -Otherwise, -if more than one file is present in \file{\$mail}, -then the shell says \example New mail in foo.\endexample whenever there is new -mail in the file called \eg{foo}. - -To find out what file is associated with a BBoard, say \eg{info-unix}, -the \MH/ user types \example bbc\ -topics\ -verbose\ info-unix\endexample -Usually the local file for a BBoard has an extension of \file{.mbox}. - -\subsubsection{Asynchronous Checking with Useto} -In contrast to using the \file{\$mail} variable in the \pgm{CShell}, -the \MH/ user might employ \pgm{useto} instead.% -\nfootnote{Not all sites have \pgm{useto}; -contact the same people who supplied \MH/ to get a copy.} -The \pgm{useto} program is a continuous update display that prints information -on the status line of your terminal. -Needless to say, -your terminal must support a status line in order to run \pgm{useto}. -Not all terminals have this capability, -but for those that do it's usually well worth the effort to run \pgm{useto}. - -For example, users of \MH/ could put -\example - useto\ -bepf\ \'tcp-ip\ sftp\'\ % - \'\%D\ \%M\ \%d\ \%h:\%m\%z\%b\ \%n.tty\%t:\%l1\'% -\endexample -in their \file{\$HOME/.login} file. -This command line to \pgm{useto} says to inform the user of -\smallskip -{\advance\leftskip by\parindent -\item{$\bullet$} the current date and time -\item{$\bullet$} new mail for the user -\item{$\bullet$} new messages for the BBoards \eg{tcp-ip} and \eg{sftp} -\item{$\bullet$} the name of the host and tty that the user is logged in on -\item{$\bullet$} the 5--minute load average of that host -\smallskip} - -The \pgm{useto} program is really quite amusing and useful.% -\nfootnote{To be honest, -the author considers computing environments without \pgm{useto} -to be less than adequate.} - -\subsection{BBoard reading} -If \pgm{bbc} is not given either the \switch{check} or \switch{topics} option, -the \pgm{bbc} program reads BBoard messages. -For each BBoard listed in the \MH/ user's profile entry for \eg{bboards:}, -\pgm{bbc} checks to see if there is unread mail. -If so, \pgm{bbc} starts \pgm{msh} on the BBoard, -telling \pgm{msh} which messages haven't been seen.% -\nfootnote{If the \switch{verbose} option is given to \pgm{bbc}, -then \pgm{bbc} will start \pgm{msh} on the BBoard regardless of whether there -are unseen messages there.} - -When \pgm{msh} starts it identifies the BBoard being read and indicates how -many messages are present and how many the user has read. -Usually, in the user's \MH/ profile, -the user has the entry \example msh:\ -scan\endexample -This says that when \pgm{msh} starts, -it should print a {\it scan listing} of the messages which the user -hasn't seen yet. - -The \pgm{msh} program now prompts the user for \MH/ commands. -The user may type most of the normal \MH/ command. -The syntax and semantics of the commands typed to \pgm{msh} are identical -to their \MH/ counterparts. -For example, to reply to a message on the BBoard, -the \MH/ user types \eg{repl}; -other \MH/ commands likewise may be applied to BBoard messages. -In cases where the nature of \pgm{msh} would be inconsistent -(e.g., specifying a \arg{+folder} with some commands), -\pgm{msh} will duly inform the user. -In addition to supporting most \MH/ commands, -\pgm{msh} also has a \eg{help} command which gives a brief overview. - -The only command that behaves entirely differently in \pgm{msh} is the -\eg{mark} command when given no arguments. -The \pgm{msh} program maintains a special sequence, \eg{unseen}, -which it uses to keep track of the messages you've seen. -If the \eg{mark} command is given without any arguments, -then \pgm{msh} will interpret it as -\example mark\ -sequence\ unseen\ -delete\ -nozero\ all\endexample -Hence, to discard all of the messages in the current BBoard being read, -the \MH/ user types \eg{mark} which says to remove all messages from sequence -called \eg{unseen}. - -To leave \pgm{msh} use the \eg{quit} command. -This tells \pgm{msh} to terminate and \pgm{bbc} to go to the next BBoard. -Instead, if the user types EOT (usually CTRL-D), -then \pgm{bbc} will exit as well, -updating whatever information was appropriate. - -\section{Current BBoards} -There are many, many active interest groups. -Consult the BBoard called \eg{list-of-lists} for a comprehensive description. -Here are a few of the more popular: -\smallskip -{\advance\leftskip by\parindent -\item{\tx system} -Important announcements for the local system are posted here. - -\item{\tx mh-users} -A discussion group for users of \MH/. - -\item{\tx arpanet-bboards} -Redistribution address for all known BBoards on the ARPAnet. - -\item{\tx editor-people} -Discussion of topics related to computerized text editing, display editors, -and human factors in man/machine interaction. -The theoretical discussion is catholic, -but practical discussion focuses particularly on \tops20/ and \unix/. - -\item{\tx franz-friends} -Discusses the Franz Lisp language. - -\item{\tx header-people} -Interest specifically in the format of message headers and related issues -such as inter-network mail formats/standards, etc. - -\item{\tx human-nets} -{\sf Human-Nets} has discussed many topics, -all of them related in some way to the theme of a world-wide computer and -telecommunications network usually called WorldNet. -The topics have ranged very widely, from something like tutorials, -to state of the art discussions, -to rampant speculation about technology and its impact. - -\item{\tx info-micro} -Information/discussion list on the general interest topic of microcomputers. - -\item{\tx info-unix} -{\sf Info-UNIX} is intended for question/answer discussion, -where ``novice'' system administrators can pose questions. - -\item{\tx msggroup} -Interest in electronic mail, message formats, message systems, and the -sociological implications of the above. - -\item{\tx poli-sci} -A permanent distributed political ``bull'' session. - -\item{\tx sf-lovers} -Science Fiction lovers. -{\sf SF-Lovers} has discussed many topics, -all of them related in some way to the theme of science fiction or fantasy. - -\item{\tx space} -Discussions (daily digest) on space-related topics. - -\item{\tx telecom} -A broad spectrum moderated-digest-format discussion on telecommunictions -technology: the telephone system, modems, and other more technical aspects -of telecommunications systems. - -\item{\tx unix-emacs} -Used for new release announcements and general discussions of Gosling's -\EMACS/. - -\item{\tx unix-wizards} -Distribution list for people maintaining machines running the \unix/ operating -system. -\medskip} -\noindent -As discussed earlier, -to find out about all of the BBoards that the local host subscribes to, -the \MH/ users types \example bbc\ -topics\endexample - -\section{More on BBoards} -Finally, here are a few more operational details: - -\subsection{Creating a BBoard} -Contact the PostMaster at your host to have a BBoard created. -Be sure to indicate its status (public or private) -and scope (where distribution should occur). - -\subsection{Subscribing to a BBoard} -If your local host already receives an interest group, -then simply add the name of the BBoard to the \eg{bboards:} entry in your -\MH/ profile. -If not, ask the PostMaster to create the BBoard and contact the global -request address for you. - -\subsection{BBoard Archives} -BBoard messages are automatically archived on a weekly basis. -Usually, this results in messages older than 12 days being moved to an -{\it archive} area. -To read the archives for a BBoard, the \switch{archive} option is used. -For example, \example bbc\ -archive\ telecom\endexample -tells \pgm{bbc} to invoke \pgm{msh} on the archives for the \eg{telecom} -BBoard. - -Note that the archives may not be present for all BBoards on a given host; -also note that the archives may be periodically moved to tape and expunged -from the system. -Contact your local PostMaster for the details. - -\subsection{BBoard Addresses} -Each BBoard has associated with it 4 addresses -(for example, in the case of the mythical BBoard \eg{foo\/}): -\smallskip -{\advance\leftskip by\parindent -\item{\tx foo} The global distribution list\hbreak -If you post a message addressed to {\tx foo} then the message is distributed -to everyone who subscribes to \eg{foo}. - -\item{\tx dist-foo} The local distribution list\hbreak -If you post a message addressed to {\tx dist-foo} then the message is -distributed to the local BBoard for \eg{foo} -and to any sites which the local system distributes to. - -\item{\tx foo-request} The global moderator\hbreak -If you post a message addressed to {\tx foo-request} then the message is -sent to the moderator for the entire interest group called \eg{foo}. - -\item{\tx local-foo-request} The local moderator\hbreak -If you post a message addressed to {\tx local-foo-request} then the message is -sent to the person responsible for the BBoard \eg{foo} on the local system. -\medskip} -\noindent -These addresses are defined by the \MH/ alias facility. -Users of the BBoards facility who do not use \MH/ may not be able to make use -of them. - -\subsection{Leading a BBoard} -Except for special circumstances, this task is wholly automated. -For more information though, -see the manual entries for \man bbl(1) and \man bbleaders(8). - -\section{Extra for Experts} -Some clever \MH/ users might ask why BBoards aren't kept as folders instead -of \pgm{pack}'d files. -This is a good question. -Perhaps some future release of \MH/ and the UCI BBoards facility will treat -BBoards as a variant of read-only folders. - -The problem with \pgm{msh}, of course, is that it's a monolithic program, -and although it does support input/output redirection and a few other -primitive shell-like properties, it's still not the \pgm{CShell}. diff --git a/docs/historical/bboards/version b/docs/historical/bboards/version deleted file mode 100644 index 1e8b3149..00000000 --- a/docs/historical/bboards/version +++ /dev/null @@ -1 +0,0 @@ -6 diff --git a/docs/historical/bboards/version.sh b/docs/historical/bboards/version.sh deleted file mode 100644 index 9cad3a1c..00000000 --- a/docs/historical/bboards/version.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [ ! -r version ]; then echo 0 > version; fi -touch version -echo '\catcode`\#=12' > version.tex -awk ' { version = $1 + 1; }\ -END { printf "\\def\\versiontag/{#2.%d}%%\n", version >> "version.tex"; \ - printf "%d\n", version > "version"; }' < version -echo '\def\versiondate/{'`date`'}%' >> version.tex -echo '\catcode`\#=6' >> version.tex -echo '\tell{Version \versiontag/ of \versiondate/}' >> version.tex diff --git a/docs/historical/bboards/version.tex b/docs/historical/bboards/version.tex deleted file mode 100644 index 7c3cad91..00000000 --- a/docs/historical/bboards/version.tex +++ /dev/null @@ -1,5 +0,0 @@ -\catcode`\#=12 -\def\versiontag/{#2.6}% -\def\versiondate/{Wed May 21 21:03:57 PDT 1986}% -\catcode`\#=6 -\tell{Version \versiontag/ of \versiondate/} diff --git a/docs/historical/beginners/Makefile b/docs/historical/beginners/Makefile deleted file mode 100644 index 7de86444..00000000 --- a/docs/historical/beginners/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -######################################################################### -# Instructions to Make, for generation of nice-looking papers using LaTeX -######################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if latex \\nonstopmode\\input $<; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# beginners -############################################################# - -i-all: beginners.dvi - -i-print: beginners.dvi true - dvisp $(DFLAGS) -J Beginners beginners - -true:; - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f beginners.dvi beginners.imp - -clean:; rm -f beginners.log beginners.blg beginners.tmp _* diff --git a/docs/historical/beginners/beginners.tex b/docs/historical/beginners/beginners.tex deleted file mode 100644 index a4186444..00000000 --- a/docs/historical/beginners/beginners.tex +++ /dev/null @@ -1,617 +0,0 @@ -\documentstyle [12pt]{article} -\parindent=0pt -\parskip=7pt plus 2pt - -%beginners.tex,v 1.1.1.1 1993/01/30 04:41:03 jtc Exp - -\def\oneline#1{\par\bigskip\leftline{\tt\hskip.75in#1}} -\def\command#1{\par\bigskip\leftline{\tt\hskip.75in\% #1}} -\def\comarg#1#2{\par\bigskip\leftline{\tt\hskip.75in\% #1 {\it#2}}} -\def\MH/{{\sf MH}} -\def\MM/{{\sc mm}} -\def\unix/{{\sc Unix}} -\newfont{\itt}{cmti10} -\begin{document} - -\title{MH for Beginners} -\author{Mary Hegardt \and Tim Morgan} -\maketitle - -This document is intended to be an introduction for new users to the -\MH/ mail system. For more detailed information, users will want to -read the document called {\sl The Rand MH Message Handling System: -User's Manual\/} by Marshall~T. Rose and John~L. Romine. It is available -for Xeroxing in suite CS408. -\footnote{This document is specific to the environment -at the ICS department of U.~C.~Irvine. For a more general document, -see {\sl The Rand MH Message Handling System: Tutorial\/}.} - -\section{Using Electronic Mail} - -Electronic mail (e-mail) is a quick, convenient way to send a message -to another person (or persons). The message recipient can read and -reply to the message at his convenience. E-mail is much faster than -a paper memo and avoids inconveniences associated with the telephone -such as unwanted interruptions and ``phone tag.'' - -At UCI, one can send e-mail to people within the ICS department, people -in other units on campus, and to people at some other institutions -off campus (usually other universities). - -An electronic mail message consists of two parts: the headers and the -body. The body comes after the headers and consists of the ``message'': -whatever the sender types in. The headers are the lines at the top -of the message including the subject and addresses of the people -to whom the message is addressed. It is similar to the top lines -of a memo: {\tt To:}, {\tt From:}, {\tt Subject:}, and so on. The headers -are separated from the body by a blank line. As in memos, the people -listed in the {\tt Cc:}\ field are not intended to be the primary recipients -of the message. The message is for their information only, and they -are not expected to reply. - - -E-mail is also useful for discussions among groups of people. This -``bboards'' (electronic bulletin boards) facility will be discussed later. - -An electronic mail address looks like ``{\it name\/}{\tt@}{\it site\/}''. -The {\it name\/} is -a person's ``mail handle'' --- usually his first initial followed by his -last name. For example, Mary Hegardt's mail handle is ``mhegardt''. -The {\it site\/} is the system where the addressee receives mail. Within -the ICS Department, you need only know the person's mail handle; -the mail system will automatically fill in the ``{\tt @}{\it site\/}'' part. - -\section{Why MH ?} - -The \MH/ system is very different from most mail user agents. Instead of -running one large program which handles all mail functions and keeps -messages in one large file, \MH/ is a collection of smaller -single-purpose programs used to manipulate mail messages -which are kept in individual files. \MH/ may seem to be more complicated -or harder to use than other mail systems (MM, for example), but -\MH/ has been designed to allow -you to take full advantage of existing {\sc Unix}\footnote{{\sc Unix} is -a trademark of AT\&T Bell Laboratories} commands and programs -in connection with mail messages. -For example, you can use your usual text editor, spelling program, and -printer commands on individual messages. - - -\section{The Basics} - -The first time you use an \MH/ command (probably {\it inc\/}), -\MH/ will create a directory called ``Mail'' in your home (login) directory. All -your mail will be stored in directories beneath this one. It will also -create a file in your home directory called \verb|.mh_profile|. It is -a file that allows you to tailor your \MH/ environment. We'll discuss -this more later. - - -\subsection{Reading Mail} - -When someone sends a mail message to you, it is delivered to a file -called your ``mail drop'' file. When you are ready to read your mail, -you have to incorporate (or ``inc'') your mail messages from the mail -drop area into your account. - -Everytime you log in to your {\sc Unix} account, you will be told if you -have new mail messages. When you are ready to read them, type \verb|inc|. -The {\it inc\/} program will copy your mail into your ``inbox'' and generate -a ``scan'' listing of the new messages. For example, - -\begin{scriptsize} -\begin{verbatim} -4.2 BSD UNIX #116: Mon Jul 15 14:03:21 PDT 1985 -You have new ZOTnet mail, type "inc" (or mail) - -TERM = (dm1520) - -% inc - -Incorporating new mail into inbox ... - - 1+ 10/29 1732-PST Tim Morgan new bboard! < - - Please add us to the unix-sw list. Also, if RAJ hasn't mentioned it, - and if it still exists, we should get on the Astronomy bboard. - - Tim -\end{verbatim} -\end{scriptsize} - -If the message is -longer than one screenful, you will see the word ``more'' at the bottom -of the screen. When you are ready to see ``more'' of the message, -press the \fbox{space bar} to see another screenful, or press the -\fbox{return} key to see just one more line. - -To see the next message, you could type a couple of different commands: - - -\oneline{\% next} -or -\oneline{\% show next} -or -\oneline{\% show 2} - -All of these commands would have the same effect: to type out the next message -in the list. The most efficient thing to do is to type ``{\tt next}''. When -You do that, message number 2 will be shown and become the ``current message''. - -\begin{footnotesize} -\begin{verbatim} -% next - -(Message inbox:2) -Received: from UCI-20B by UCI-ICSA id aa01222; 12 Nov 85 0:23 PST -Date: 12 Nov 1985 0016-PST -From: ROODE@uci-20b -Subject: CP6 from the 20s -To: zotnet@uci-20b -cc: dana_roode%ucicp6@UCI.EDU - -What is (will be) the prescribed method of addressing for sending -CP6 mail from the 20s? They dont seem to know about @CF, @UCICP6, -but "Name_Name%UCICP6"@ICSA seems to fly. - - dana -\end{verbatim} -\end{footnotesize} - -\subsection{Selecting Messages} - -As you have seen, messages can be referred to by their message numbers. -Some \MH/ commands, such as {\it show,} can act upon more than one -message at a time. A range of messages can be specified using the -form ``{\it name1-name2\/}'' where {\it name\/} is a message number or -one of the reserved message names described below: - -\bigskip - -\def\titem[#1]{\par\noindent\hbox to .5in{\hfil\it #1\/}\qquad} - -\titem[cur] The current message (the last one that was handled) -\titem[next] The next message (same as ${\it cur\/} + 1$) -\titem[prev] The previous message (${\it cur\/} - 1$) -\titem[first] The first message in the current folder -\titem[last] The last message in the folder -\titem[all] All messages ($\it first-last$) - -\bigskip - -If you do not name a specific message, the command will act upon -the ``current message''. - -\subsection{Sending Messages} - -A mail message consists of two parts: the headers and the body. The -headers are the lines at the top of the message that say ``{\tt To:}'' -and so on. The body is the actual text of the message (what you -want to say). To send someone a message, you start with the -{\it comp\/} command. This will start up an editor called {\it prompter\/} -that will prompt you to fill in the headers. You should type the -requested information for that header or a \fbox{return} to omit it. -You should end the message by typing control-D (press down the key -marked \fbox{ctrl} and strike the D key) at the beginning of a new -line. Here's an example: - -\begin{verbatim} - % comp - To: morgan, raj - Cc: - Subject: Lunch - --------- - Where are we going for lunch today ? - - Mary - - -------- - What now ? send -\end{verbatim} - -At the ``\verb|What now ?|'' prompt you can type a {\tt?} to see -what commands you can type next. -One of the most useful options at this point is to edit the draft -of the message to correct any mistakes. To do this you type: - -\oneline{What now ? edit vi} - -This will put you in the {\it vi\/} editor to edit the message. If you use -{\it emacs\/} or any other editor, just type ``edit emacs'' or whatever. -When you have finished editing, just exit the editor as you would -normally. You will then get another ``\verb|What now ?|'' prompt. Here are some -of the ``What now'' options: - -\bigskip - -\begingroup -\def\titem[#1]{\par\hangafter=1\hangindent=1.4in\noindent - \hbox to\hangindent{\hfil#1\qquad}\ignorespaces} - -\titem[\tt edit \it editor\/] Edit the message using the specified - editor. When you exit, you will be - back at \verb|What now|. - -\titem[\tt list] Shows the message you just typed - -\titem[\tt whom -check] Verifies that the addresses you have - used are valid as far as our system - can tell - -\titem[\tt send] Sends the message to the recipients - -\titem[\tt push] Sends the message in the background - -\titem[\tt quit] Quits without sending the message. - Saves the text of the message as - a ``draft''. Type \verb|comp -use| to - get back to that draft later. - -\titem[\tt quit -delete] Quit, throwing away the draft -\endgroup - -\bigskip - -Make sure you are happy with your message before typing \verb|send|. There -is no way to recall a message once it has been sent. - -\subsection{Replying to Messages} - -To reply to the current message type {\it repl.} When you do this, -the reply headers will be printed out and you will be put in the prompter -editor to type in your reply text. When you are replying to a message, -the name of the sender of the original message will appear in the -``To:'' field. Any people on the ``To:'' or ``Cc:'' lists will also -be copied on your reply message. As with {\it comp,} when you have -finished, type control-D and \verb|send| (or whatever) at \verb|What now ?|. - -\subsection{Forwarding Messages} - -If you receive a particularly interesting message and can't resist -sharing it with others, you can forward it using the {\it forw\/} -command. You will be prompted to fill in the headers (the address -to which the message is to be forwarded, etc.). When you have done this, -you will see the text of the message which you are forwarding and will be -given the opportunity to add some enlightening text to the message. -Exit with control-D and do whatever feels good at the \verb|What now ?| -prompt. - -\subsection{The Advanced Features} - -You will probably want to master the beginning \MH/ concepts before you -tackle the following\dots - -\subsection{Folders} - -Folders are really just directories for storing mail messages in an -organized way. To store a message in a folder named -``inbox'', type: - -\oneline{\% refile 5 +inventory} - -If the folder doesn't exist yet, you will be asked if it should be created. -To access messages in another folder, you can change your current -folder from ``inbox'' to something else. If you want to look at all -the messages pertaining to the inventory, you type: - -\oneline{\% folder +inventory} - -and now you use {\it scan,} {\it show,} etc., to manipulate the messages -in that folder. -To change back to inbox, type: - -\oneline{\% folder +inbox} - -Using the {\it inc\/} command will change your current folder to be the -``inbox'' automatically. - -\section{Mailing files} - -Mailing files is usually not a good idea, especially for large files. -The mail system was never designed for moving big files. You -can use the {\it cp\/} file to move the file to another account much more -efficiently: - -\oneline{\% cp \char`\~frated/desired-file \char`\~./newfile} - -This will copy the file from frated's account to the current directory and -call it ``newfile''. - -You can also copy files across the network using {\it rcp\/}: - -\oneline{\% rcp icsd:frated/desired-file ./newfile} - -This copies frated's file on the system icsd to the current directory. - -If you {\it really\/} have to mail a file, you use the {\it mhmail\/} program. -To mail a file ``myfile'' to another user ``frated'', with ``MyFile'' as -the subject type: - -\oneline{\% mhmail frated -subject MyFile < myfile} - - -\section{Searching for messages} - -The {\it pick\/} program allows you to search your inbox (or any other) -folder to find messages which contain a certain word. If you want to -list all messages from Smith you can type: - -\oneline{\% pick -from smith -list} - -and it will list the numbers of all messages from Smith that are in the -current folder. You can {\it pick\/} messages according to any of the -headers ({\tt -to -from -subj -cc {\rm or} -date}) or just search all the -messages for a given word ({\tt -search}). - -\section{The MH Profile} - -Each \MH/ user has a file in his directory called \verb|.mh_profile|. This -file contains a list of user-specified default options for \MH/ programs. -The only required -entry is the name of your \MH/ -directory: - -\oneline{Path: Mail} -or -\oneline{Path: mhbox} - -To make a change to your \verb|.mh_profile|, you edit the file and add a -line for the applicable program. For example, if you would like to use {\it -vi\/} instead of {\it prompter\/} as your initial editor when composing -messages, you would add this line to your \verb|.mh_profile|: - -\oneline{comp: -editor vi} - -or, if you want to have a format file for {\it scan\/} to use, you should -have: - -\oneline{scan: -form {\it formatfile}} - -Almost all of the \MH/ programs have options that can be set using the -\verb|.mh_profile|. You should consult the {\sl MH User's Manual\/} -for more information about this. - -Many people will want to add a signature line to their \verb|.mh_profile|. -This line will appear as your signature on the From: line in messages -you send. It looks like this: - -\oneline{Signature: John Q. Public} - - -Occasionally people express an interest in getting rid of some of the -header lines in their mail messages. They don't want to see the -``Received from'', ``Via'' information, or some other header. It -is possible to prevent these and other annoying headers from being -displayed by changing your {\it show\/} processor to be {\it mhless.} -To do this you must add this line - -\oneline{showproc: mhless} - -to your \verb|.mh_profile|. You also must create a file -called ``.mhlessrc'' containing the words which -appear at the beginning of the lines you don't want to see. - -The typical ``.mhlessrc'' file will look like this: -\begin{verbatim} - Received - Via - BB-Posted - Return-Path -\end{verbatim} - -The ``.mhlessrc'' file must be in your home directory. - - -\section{BBoards} - -Electronic bulletin boards (BBoards) are a convenient way for a group -of people to discuss a particular topic. Messages are sent to -an address where they can be read and replied to by all interested -parties. In the ICS department we have some ``local'' BBoards which -involve only people in the department. We also subscribe to many -nationally distributed BBoards. BBoards are read using the {\it bbc\/} -program which will allow you to read the messages with -an \MH/-like interface. - -One very important BBoard is ``system''. -It contains vital news about changes in software, system -downtime, new programs, and other information useful to all users. - -To read a BBoard, you type ``\verb|bbc| {\it BBoard\_name\/}''. The {\it -bbc\/} program will check to see if there are new messages in the named -BBoard and if there are, it will start up {\it msh\/} so you can read them. -The {\it msh\/} program allows you to use regular \MH/ commands when reading -BBoards. Type ``{\tt show}'' to see the current message, ``{\tt next}'' to -see the next message, and so on. Type ``{\tt quit}'' to quit reading the -current BBoard. If you have named more than one BBoard on the command line -or in your \verb|.mh_profile|, {\it bbc\/} will continue processing the next -BBoard in the list. - -Here is an example of using {\it bbc\/} to read the system BBoard: - -\newpage -\begin{footnotesize} -\baselineskip=12pt\parskip=0pt -\leftline{\tt\% bbc \itt system} -\leftline{\tt Reading system, currently at message 1 of 22} -\leftline{\tt(msh) \itt show} -\begin{verbatim} -(Message 1, BBoard-ID: 1360) -BBoard-ID: 1360 -BB-Posted: Wed, 29 Jan 86 15:36:39 PST -Received: from localhost by UCI.EDU id a006693; 29 Jan 86 15:20 PST -To: network@UCI.EDU -Subject: Imagen 24300 -Date: Wed, 29 Jan 86 15:19:43 -0800 -From: Tinh Tang - -The Imagen 24300 is now operating normally. It was broken down -due to the paper jammed in the drum. Luckily, it didn't cause -any damage. - -/ttang -\end{verbatim}\leftline{\tt(msh) \itt next}\begin{verbatim} -(Message 4, BBoard-ID: 1363) -BBoard-ID: 1363 -BB-Posted: Fri, 31 Jan 86 13:33:37 PST -Received: from localhost by UCI.EDU id a001631; 31 Jan 86 13:30 PST -To: msgs@UCI.EDU -Subject: uci.edu down 2/7/86 17:10 - 2/7/86 20:30 -Date: Fri, 31 Jan 86 13:30:27 -0800 -From: root@UCI.EDU - -The uci.edu will be down from - February 7,1986 17:10 till February 7,1986 20:30. -The reason for the downtime is: -Both, the Computing Facility and the Physical Sciences Dataswitches -will be unavailable from 5:10pm until 8:30pm on Friday, February 7th. -Therefore all the Computers attached to those switches and the -corresponding tandem link will be unavailable to users on -the specified time. (RJ). - -Downtime Scheduler -\end{verbatim}\leftline{\tt(msh) \itt quit} -\leftline{\tt \%} -\end{footnotesize} -\newpage - -You can see a list of all the available BBoards by typing: - -\command{bbc -topics} - -You can also put a line in your ``\verb|.mh_profile|'' listing all -the BBoards you want to read on a regular basis: - -\oneline{bboards: system movies mh-users events} - -Then you only need to type ``\verb|bbc|'' to read all your BBoards. - - -\section{Checking for Mail} - -Under \unix/, there are many different ways to check for new mail. The -easiest way to do it is to set the {\it csh\/} variable named ``mail'' -to tell {\it csh\/} to check for new mail for you periodically. To -do this, add the line - - \oneline{set mail=(60 /usr/spool/mail/\$USER)} - -to the {\tt .login} file in your home directory. This command says -to check for mail if {\it csh\/} is about to prompt you with a -{\tt \%} sign, and if it has been at least 60 seconds since it last -checked for mail. The advantage of this method of mail notification, -besides simplicity, is that you will never be interrupted by a mail -notification. You will only be notified about new mail when you -are between commands. - -If you want asynchronous mail notification, which will print to your -terminal regardless of what you are currently doing, you may make -use of a ``receive mail hook'' called ``rcvtty''. To do this, -create a file in your home directory called ``{\tt .maildelivery}''. -In this file, put the line - - \oneline{* - pipe R /usr/uci/lib/mh/rcvtty} - -Then, each time mail arrives, you will receive a one--line ``scan'' -listing of the mail if your terminal is world-writable. For more -information on mail delivery files, type: - - \command{man 5 maildelivery} - -This will tell you about all the options available to you if you -use maildelivery files. - - -\section{Aliases} - -Using \MH/, you may specify your own private mail aliases. This feature -allows you to store lists of addresses or long internet addresses of people -with whom you frequently correspond in one file, and then to address them -using short mnemonic names. Typically, you will call your alias file ``{\tt -aliases}''; it must be stored in your \MH/ directory. The format of this -file is simple. The alias is given, followed by a colon, followed by one or -more legal mail addresses separated by commas. For example, you might for -some reason have an alias for all the users named ``Rose'' in the ICS -department: - - \oneline{roses: prose, srose, mrose, drose} - -In addition to your ``{\tt aliases}'' file, you will need to modify your\break -\verb|.mh_profile| in order to use aliases. You should add the flag -``{\tt -alias aliases}'' to the entries for the commands {\it ali, whom, -send,} and {\it push,} creating entries for these programs if they aren't -already in your \verb|.mh_profile|. -Now, messages addressed to ``{\tt roses}'' will be distributed to all -the people listed in the alias. - -The {\it ali\/} command is used to show you what an alias expands to. -You just type - - \comarg{ali}{alias} - -and {\it ali\/} will respond with the expansion of the {\it alias.} {\it -Ali\/} searches the system aliases file in addition to your private ones. - -\section{Blind Lists} - -There are two different types of so-called ``blind addressing'' of messages. -The {\tt BCC:} field allows you to add recipients to your message just -like those who are CC'd, but the normal recipients will not see that the -BCC recipients were copied on the message, their replies will not go to the -blind recipients, and the blind recipients cannot (easily) reply to the -message. - -The second type of blind mailing is actually called a ``group address list'', -although it is commonly referred to as a ``blind list''. -The format of this type of address is - - \oneline{{\it phrase\/}: {\it address\_list\/};} - -where the ``{\it phrase\/}'' is any English phrase of one or more words, -and the {\it address\_list\/} consists of one or more addresses separated by -commas. The recipients of a message addressed in this fashion will -see simply - - \oneline{{\it phrase\/}: ;} - -so when they reply to the message, their reply will come only to the sender -(or the {\tt Reply-To:} field, if one was specified), rather than going to -all the recipients of the original list. For example, to use a group -address list for the ``{\tt roses}'' alias you would type: - - \oneline{To: People Named Rose: roses;} - -This type of group address is very -useful for making up lists of related people, such as all the people working -on a particular research project. - - -\end{document} diff --git a/docs/historical/changes/MHCHANGES b/docs/historical/changes/MHCHANGES deleted file mode 100644 index f1051e23..00000000 --- a/docs/historical/changes/MHCHANGES +++ /dev/null @@ -1,1539 +0,0 @@ - MHCHANGES from MH 6.1 to MH 6.5 - - -Tue Nov 12 11:24:46 1985 /mtr - - MH 6.1 is official. - - -Fri Nov 15 19:14:44 1985 /mtr - - uip/{rcvtty,slocal}.c: touch-ups - - -Sun Nov 17 16:28:23 1985 /mtr - - conf/doc/{ap,mhl,repl,scan}.rf: note that #ifdef BERK kills - address parsing - conf/makefiles/{doc,uip,support/*,zotnet/*}: make tar command visible - sbr/m_convert.c: oops, new message numbering resulted in bad - diagnostic - papers/*/Makefile: fix LaTeX rule for v2.08 - - -Tue Nov 19 23:06:16 1985 /mtr - - uip/send.c: de-referencing NULL due to bad precedence, tsk - - -Wed Nov 20 10:58:40 1985 /mtr - - MH 6.1 covert update for sbr/m_convert.c, uip/send.c - - -Sun Nov 24 18:58:41 1985 /mtr - - uip/slocal.c: some tuning, also fix a bug in usr_pipe() - uip/dropsbr.c: have mbx_copy support noisy - uip/{packf,post,rcvpack,sbboards,slocal}.c: use this change - - -Tue Nov 26 00:22:17 1985 /mtr - - uip/refile.c: oops, forgot copy-back on optimzied m_remsg - - -Sat Nov 30 22:36:49 1985 /mtr - - zotnet/tws/dtime.c: add #ifdef INETONLY - uip/post.c: for #ifdef BERK don't say {Local,UUCP,Network} - Recipients - conf/doc/sortm.rf: note problem with errors - uip/bbc.c: for getbbvis() insist on readability - support/bboards/bbexp.c: oops, calling pick wrong - conf/doc/pick.rf: document -datefield anomaly - conf/makefiles/support/bboards: oops, left context owned by root - h/mh.h: ruserpass -> _ruserpass for SUN. why? - - -Sun Dec 1 07:58:50 1985 /mtr - - uip/vmh.c: remove double-scroll - uip/annosbr.c: oops, closing fd: without unlocking! - sbr/makedir.c: plug an obscure security hole in inc - uip/mhlsbr.c: read_termcap being called prematurely - zotnet/tws/dtime.c: load tw_sday appropriately - zotnet/tws/*.c: try using numeric timezone for official renditions, - under #ifdef MTR for now - - -Sun Dec 1 16:11:03 1985 /mtr - - uip/inc.c: more idiotic de-referncing of NULL, found on SUNs - uip/replsbr.c: ditto - uip/show.c: recognize more of mhl's switches - - -Wed Dec 4 23:38:06 1985 /mtr - - zotnet/mts/mts.h: oops for MMDFONLY - conf/{mh-gen.8,makefiles/zotnet/mts}: talk about -Dlocname - - -Thu Dec 5 19:55:11 1985 /mtr - - uip/scansbr.c: fix machine dependency pointed out by Chuck Collins - dist/READ-ME: new file talking about make bug - COVER-LETTER, conf/{mh-gen.8,doc/MH.rf}: change UCI -> UCI.EDU - - -Fri Dec 6 11:08:20 1985 /mtr - - support/bboards/mmdfII/gen: wrong filename - - -Sun Dec 8 18:39:01 1985 /mtr - - uip/send.c: always remove dist file - uip/vmh.c: work on erase-word handling, a bit - uip/folder.c: -fast -vs- -pack fixup - uip/mhlsbr.c: %text defined for date fields - - -Tue Dec 10 18:39:37 1985 /mtr - - zotnet/mts/client.c: moved from mts/sendmail/client.c - conf/makefiles/{mts/sendmail,zotnet/mts}: changed - mts/support/llib-lsendmail, zotnet/mts/llib-lmts: changed - mts/sendmail/client.c: 4.2BSD specific only! - conf/config/mts.c, zotnet/mts/mts.h: update - conf/mhconfig.c: update - conf/Makefile: simplify - - -Tue Dec 10 21:11:45 1985 /mtr - - conf/mh-gen.8: clear up some sys5 stuff - zotnet/mf/umhook.c: sys5-ize - uip/addrsbr.c: alternate-mailboxes: defaulted wrong under #ifdef - BERK, it's now "*" - conf/doc/mh-profile.rf: fix documentation to reflect reality - - -Tue Dec 10 22:38:23 1985 /mtr - - uip/addrsbr.c: normalize a bit (finally) - uip/addrsbr.c: new routine adrsprintf() to remove #ifdef BANG - dependencies - uip/{post,rcvdist,replsbr,sbboards}.c: use adrsprintf() - uip/post.c: remove #ifdef MF dependency for stand-alone MH, - remove #ifdef DUMB dependency by making addrsbr.c smarter - about being dumber - mts/mmdf/hosts.c: remove #ifdef DUMB dependency (right now, - addrsbr:getm() is the only one that calls it and it doesn't - call it under #ifdef DUMB... - - -Tue Dec 10 23:28:20 1985 /mtr - - uip/sbboards.c: oops, typo found by lint - - -Wed Dec 11 19:08:20 1985 /mtr - - miscellany/libndir: -lndir for non-BSD sites, graciously supplied - by Kirk McKusick - - -Tue Dec 17 08:36:59 1985 /mtr - - uip/send.c: different alert announcement based on -forward - - -Tue Dec 17 08:53:52 1985 /mtr - - conf/makefiles/sbr, sbr/cndfree.c: clean-up a bit - - -Tue Dec 17 18:26:34 1985 /mtr - - sbr/m_getfld.c, uip/{format,mhl,pick}sbr.c: clean-up indirection - code for less tolerant compilers - uip/bbc.c: add -[no]rcfile switch - uip/msh.c: clean up a diagnostic - - -Tue Dec 17 21:42:44 1985 /mtr - - conf/makefiles/sbr, h/mh.h, sbr/llib-lmh: cndfree() removed - sbr/{add,m_{delete,replace}}.c, uip/{mhl,vmh}sbr.c: replace cndfree - sbr/m_foil.c, uip/install-mh.c: compensate - - -Wed Dec 18 13:37:09 1985 /mtr - - uip/bbc.c: make second, optimized pass to catch private bboards - that the user knows about - uip/popsbr.c: ditto - uip/popser.c: slight tune-up - - -Wed Dec 18 20:27:38 1985 /mtr - - uip/slocal.c: minor touch up - uip/umhook.c: moved from zotnet/mf - - -Wed Dec 18 22:51:58 1985 /mtr - - uip/bbc.c: optimize on calling mshproc, check size of maildrop - first; if empty, don't invoke it! - - -Thu Dec 19 08:16:54 1985 /mtr - - uip/refile.c: better diagnostic from Fred Blonder - - -Thu Dec 19 22:34:23 1985 /mtr - - zotnet/mts/client.c: #ifdef BIND code when no gethostent() - conf/{mh-gen.8,doc/mh-tailor.rf}: document it - - -Thu Dec 19 23:58:44 1985 /mtr - - Release MH 6.2 to selected sites, including Berkeley for 4.3BSD testing - - -Sun Dec 29 19:58:43 1985 /mtr - - zotnet/mts/client.c: fix #ifdef BIND stuff a bit - h/mshsbr.h, uip/{mhlsbr,msh,mshcmds}.c: try to fix lost peer - problems... - conf/doc/vmh.rf: update - zotnet/drop/lock.c: not returning right errno - uip/dropsbr.c: ditto, plus not trying enough - conf/makefiles/doc: "make tar" forgetting tmac.h - uip/addrsbr.c: strcpy de-referencing NULL - uip/refile.c: got rid of a spurious \n (!!) - conf/examples/{udel,nrtc-mtr}: new files - h/mh.h, sbr/m_{convert,gmsg}.c, uip/{msh,rcvstore,refile}.c: fix - LOWSEL logic - uip/vmh.c: fix slight bug in sideground handling (misspelled - #ifdef, oops!) - conf/{mh-gen.8,config/mts.c},mts/*/hosts.c: remove the NETWORK option - - -Mon Dec 30 20:03:25 1985 /mtr - - conf/Makefile: options mangled(!?!) - uip/msh.c: if update of mailbox fails, it gets zero'd(!!) - (oops, not checking error condition) - support/pop/popser.c: if update of mailbox fails, clean-up - correctly (no zero problem here!) - uip/inc.c: on truncate of maildrop, remove mailbox map (XXX) - conf/makefiles/uip, uip/{send,whatnowsbr}.c: move send into - the WhatNow shell - uip/sendsbr.c: new file - conf/doc/whatnow.rf: update - - -Tue Dec 31 10:13:44 1985 /mtr - - conf/doc/vmh.rf: back-down last update - conf/mh-gen.8: forgot an \& - conf/examples/nrtc-{gw,mtr}, h/rcvmail.h: tsk, NRTC running an old - MMDF-II - - -Tue Dec 31 13:53:14 1985 /mtr - - conf/doc/whatnow.rf, uip/whatnowsbr.c: remove "headers" option - conf/doc/ADMIN.rf: clear-up post -debug documentation - conf/doc/{mh-chart,send,post}.rf, uip/{post,send,whatnowsbr}.c: remove - -[no]remove switches - uip/{repl,post}.c: some touch-ups - - -Tue Dec 31 19:16:23 1985 /mtr - - zotnet/tws/{dtime,dtimep}.c: dst fix-ups - conf/doc/send.rf: append, not prepend - uip/rmail.c: slight touch-up - uip/ap.c: oops, not printing all info - zotnet/mf/mf.c: botching trailing comment handling! - uip/scansbr.c: have cpy() omit trailing >>blank<< - sbr/m_gmsg.c: not zero'ing msgstats[] under non-MTR code - - -Tue Dec 31 22:23:43 1985 /mtr - - conf/doc/mhook.rf: minor typos - miscellany/rcvtrip/*: update - - -Tue Dec 31 23:21:21 1985 /mtr - - uip/mhlsbr.c: a bit more pipe trickyness (this gets old real fast) - conf/doc/ADMIN.rf: talk about popd and /etc/rc.local - papers/{myths,mznet}/Makefile: update - uip/bbc.c: augment XTND2 botch diagnostic - uip/msh.c: if popd says BBoard-ID: for a message is 0, read it - ourselves - - -Fri Jan 3 13:11:03 1986 /mtr - - uip/bbc.c: SIGTSTP race condition, #undef for now - - -Sun Jan 5 20:06:03 1986 /mtr (agent: Marshall Rose) - - -- Interface TTI TMA to MH #6.2 -- - [ N.B.: The TTI TMA is NOT in the public domain; the MH support for - the TTI TMA IS in the public domain! ] - conf/{mh-gen.8,mhconfig.c,doc/ADMIN.rf}: support "tma on" - conf/makefiles/{doc,uip}: ditto - Makefile: for the moment - - -Mon Jan 6 15:25:20 1986 /mtr - - uip/{msh,mshcmds}.c: work on refile - uip/{vmh,msh}.c: support FAST quit (no final refresh on - updated mailbox) - - -Tue Jan 7 15:06:05 1986 /mtr - - uip/bbc.c: got the SIGTSTP problem, now wait on child to stop prior - to stopping ourselves... - - -Wed Jan 8 23:16:10 1986 /mtr - - uip/trmsbr.c: better defaults for "li" and "co" - - -Thu Jan 9 15:29:09 1986 /mtr - - -- Fixes Suggested by Craig Partridge -- - support/bboards/mmdfII/bboards/mmdfonly.h: if V4_2BSD on, set BSD42 - conf/doc/{mhl,show}.rf: talk more about moreproc - uip/mhlsbr.c: have INTR work as advertised - uip/{send,whatnowsbr}.c: link on dist botched, oops! - - -Thu Jan 9 16:31:28 1986 /mtr - - uip/mshcmds.c: don't rmm() messages which don't get refiled - uip/vmh.c: truncate stuff on Scan window (finally) - uip/scansbr.c: work on diagnostics a bit - - -Thu Jan 9 22:37:29 1986 /mtr - - MH 6.2 is official, awaiting enhancements Berkeley! - - -Fri Jan 10 10:17:57 1986 /mtr - - uip/sbboards.c: botch multiple bboard handling (forgot to rewind - input, thanks to Larry Henry) - support/bboards/mmdfII/bboards/bb_wtmail.c: not handling errors - right - sbr/cpydgst.c: stay symmetric with change to bb_wtmail.c, the code - worked fine, adding matching braces for clarity (!!) - - -Sun Jan 12 14:01:25 1986 /mtr - - miscellany/mh-e: new version from James Larus - - -Sun Jan 12 22:58:34 1986 /mtr - - uip/bbc.c: getbbvis a bit too agressive, use popd algorithm - - -Wed Jan 15 04:43:33 1986 /mtr - - miscellany/netnews/: more stuff - - -Wed Jan 15 18:44:32 1986 /mtr - - uip/addrsbr.c: ismymbox() losing under #ifdef DUMB, oops! - - -Wed Jan 15 19:03:54 1986 /mtr - - COVER-LETTER: update - - -Wed Jan 15 23:15:54 1986 /mtr - - support/pop/popsbr.c: pophack on PASS command - - -Fri Jan 17 13:19:23 1986 /mtr - - uip/ali.c: add -noalias for RaJ - - -Wed Jan 22 11:13:08 1986 /mtr - - support/pop/popwrd.c: squash bug - h/mh.h: remove sigmask definition - uip/{bbc,vmh}.c: add sigmask if not defined in - (4.3BSD finally wised up!) - - -Sun Jan 26 16:57:18 1986 /mtr - - {conf/makefiles/uip,uip/post.c}: lint touch-up - conf/doc/{inc,mh-chart,send,post}.rf: add the #ifdef TMA stuff - sbr/m_remsg.c: tuning - uip/mark.c: re-arrange debug output slightly - h/mh.h: add some padding to fix some m_remsg bugs - uip/{inc,rcvstore}.c: oops, mp -> hghmsg not keeping pace with - m_remsg! - - -Mon Jan 27 17:51:07 1986 /mtr - - uip/whatnowsbr.c: forgot to put -[no]push for built-in send - h/addrsbr.h, uip/{addrsbr,post}.c: introduce auxformat(), the - back-end to adrformat(); post calls auxformat directly in - certain cases - uip/{dp,forw}.c: was cheating on adrformat, now on auxformat - - -Fri Jan 31 13:25:17 1986 /mtr - - COVER-LETTER: update - support/general/mhl.format: Remove length/width constraints - - -Sun Feb 2 14:01:28 1986 /mtr - - zotnet/tws/dtime.c: twsort() fix from John Romine for ALTOS - uip/addrsbr.c: smarter ismymbox for default case - conf/{mh-gen.8,doc/repl.rf}, uip/repl.c: add #ifdef ATHENA code - - -Sun Feb 2 20:47:36 1986 /mtr - - miscellany/replies/: new directory - - -Mon Feb 3 11:21:49 1986 /mtr - - uip/whatnowsbr.c: oops, slight dist botch - support/general/mhl.format: make date display user-friendly - conf/mh-gen.8: clean-up descriptions of options - uip/sbboards.c: normalize code wrt to MMDF-II BBoards channel - uip/msh.c: when running under vmh and not in control of TTY, - ignore TSTP so BPOP can spool ahead! - papers/{usenix/usenix,multifarious/multifarios,trusted/trusted}.tex: - fix up banners a bit - - -Wed Feb 5 09:32:08 1986 /mtr - - support/bboards/mmdfII/READ-ME: update - - -Wed Feb 5 11:25:05 1986 /mtr - - MH 6.3 #1[UCI] (nrtc-gremlin) is official, still awaiting Berkeley - enhancements - - -Wed Feb 5 14:42:55 1986 /mtr - - zotnet/tws/{tws.h,dtime.c}: new argument to dasctime() - uip/{format,pick}sbr.c: make use of it - - -Sun Feb 9 22:14:10 1986 /mtr - - support/pop/syslog.c: #ifdef BSD43 means use standard syslog - - -Sun Feb 16 15:40:20 1986 /mtr - - sbr/m_setvis.c: oops, fix-up unseen sequence stuff - uip/whatnowsbr.c: oops, a couple of typos - - -Sun Feb 16 19:11:33 1986 /mtr - - -- Incorporate Berkeley enhancements, courtesy of Van Jacobson -- - h/{format,scan}sbr.h: updated for new formatsbr stuff - h/mh.h: updated for new m_getfld - conf/MH: new default file - conf/config/config.c: support spost under BERK and SENDMTS - conf/mhconfig.c: support new zotnet/fmt/ directory - conf/makefiles/uip: support spost - conf/makefiles/zotnetM: support new zotnet/fmt/ directory - conf/makefiles/zotnet/fmt: new Makefile - conf/makefiles/zotnet/tws: support for new lex-based date parser - sbr/m_gmsg.c,uip/msh.c: change init of READONLY - sbr/m_getfld.c: re-written, super optimized! - support/general/{digestcomps,mhl.digest,mhl.forward,scan.*}: use - new fmt stuff - zotnet/fmt/: new directory - zotnet/tws/{dtimep.lex,lexedit.sed,lexstring.c}: new files - zotnet/tws/dtime.c: update - uip/{forw,scan,scansbr}.c: use new format stuff - uip/{inc,mhlsbr,mshcmds,replsbr}.c: use new format stuff - uip/trmsbr.c: use stderr for ioctl()s - uip/spost.c: new file - uip/{addr,format}sbr.c: remove, they're in zotnet/fmt/ - - -Sun Feb 16 23:04:34 1986 /mtr - - zotnet/fmt/: move into sbr/ to avoid loading problems - sbr/{addrsbr,formatsbr,fmtcompile,formataddr}.c: new files - h/fmtcompile.h: new file - conf/makefiles/{sbr,zotnetM}: update - sbr/llib-lmh: update - - -Mon Feb 17 20:14:35 1986 /mtr - - support/general/scan.{time,size}: mday/month inverted - sbr/{formatsbr,fmtcompile}.c: bring upto date with MH 6.3+ - sbr/formatsbr.c: missing tzone/sday/dst handling! - h/scansbr.h: slight update - uip/scansbr.c: try using formataddr() routine to do "correct" - formatting of scan'd addresses, didn't work! use friendly - zotnet/tws/dtimep.lex: tsk, use lint! also, fix numeric timezones - sbr/addrsbr.c: some ismymbox fixes for non-BERK code (from 6.3) - sbr/formatsbr.c: not priming the pump! - h/fmtcompile.h, sbr/{formatsbr,fmtcompile}.c: add "friendly" - support/general/scan.time2: call it scan.timely - conf/makefiles/support/general: support scan.timely - - -Tue Feb 18 01:13:51 1986 /mtr - - h/formatsbr.h: updates from Van - - -Tue Feb 18 02:15:00 1986 /mtr - - uip/bbc.c: upgrade for new m_getfld() - support/general/scan.*, h/scansbr.h: still more changes - support/general/replcomps: still more changes - - -Tue Feb 18 22:14:51 1986 /mtr - - sbr/m_getfld.c: eom_action() lacking argument - sbr/m_getfld.c: not working right on packf'd files - uip/{msh,mshcmds}.c: under BPOP, need to fix things so m_getfld() - doesn't dump core! - - -Wed Feb 19 00:16:55 1986 /mtr - - uip/dist.c, support/general/distcomps, sbr/fmtcompile.c: updates - from Van - sbr/formatsbr.c: remove ismymbox prime - sbr/fmtcompile.c: use adios(), not exit()! - - -Wed Feb 19 00:56:30 1986 /mtr - - sbr/m_getfld.c: different fix for packf'd files from Van - - -Wed Feb 19 01:55:40 1986 /mtr - - h/mh.h: add msg_* vars in m_getfld() as externs - uip/{msh,{repl,scan}sbr}.c: remove msg_* declarations - sbr/m_getfld.c: add a bit of BODYEOF support (without slowing it - down, wouldn't want to upset Van!) - - -Wed Feb 19 03:11:42 1986 /mtr - - sbr/{formataddr,fmtcompile,m_{draft,getfld,maildir},printsw,pwd}.c: - lint it - uip/{formatsbr,forw,msh,replsbr,scan,scansbr,spost}.c: lint it - support/pop/popser.c: lint it - sbr/formatsbr.c: remove MHFMTDEBUG code - */Makefile: depend 'em - - -Wed Feb 19 10:50:04 1986 /mtr - - papers/mh6.4: new interim documentation directory, for 4.3BSD - conf/doc/{MH,ap,dp,mh,mh-chart,mhl,repl,scan}.rf: update - conf/doc/mh-format.rf: new file - support/general/replcomps: oops, should call formataddr on all - addrs - - -Thu Feb 20 08:07:49 1986 /mtr - - uip/{a,d}p.c: start working on it - h/formatsbr.h: new variable fmt_norm - sbr/formatsbr.c: use it - h/fmtcompile.c, sbr/{fmtcompile,formatsbr}.c: define "pretty" - sbr/formataddr.c: sight touch-up - uip/formatsbr.c: oops, bug in PUTD() - uip/{fmtcompile,formatsbr}.c: init mn structures in case of error. - This is still buggy since: 1) the structure still doesn't get - reset on errors, and 2) you can still dereference nulls - zotnet/tws/dtimep.lex: slight touch-up - - -Thu Feb 20 19:55:20 1986 /mtr - - uip/mhlsbr.c: add formatsbr support - sbr/addrsbr.c: use better default matching in ismymbox - miscellany/mtrenv: update - support/general/mhl.*: update - - -Thu Feb 20 22:57:33 1986 /mtr - - MH 6.4 #1[UCI] (nrtc-gremlin) made available to Van Jacobson - for inclusion in 4.3BSD UNIX - - -Sun Feb 23 13:59:46 1986 /mtr - - sbr/m_gmsg.c: big bug fix from Terry West. Thanks, Terry! - h/strings.h: System5 bcopy-equivalents from Doug Gwyn - zotnet/tws/tws.h: support #ifdef ATZ - conf/makefiles/uip: slight lint botch - - -Mon Feb 24 17:14:39 1986 /mtr - - uip/inc.c: have -host/-file ask if file doesn't exist - uip/{packf,mshcmds}.c: ditto - - -Tue Feb 25 08:08:43 1986 /mtr - - uip/burst.c: another realloc() fix from Terry West - sbr/vfgets.c: ditto - support/pop/popser.c: enhancmenets from Dave Cohrs - conf/doc/pop5.rf: document it - conf/mhconfig.c: support "debug" directive - makefiles/*: use it - - -Tue Feb 25 09:47:09 1986 /mtr - - uip/{scan,mshcmds}.c: slight touch-ups - uip/mhlsbr.c: fix up SIGPIPE handling, again - support/general/scan.time: fix up for numeric timezone - uip/scansbr.c: re-support "encrypted" - uip/msh.c: add "exit" command for Dave Farber - miscellany/convert: new directory - - -Tue Feb 25 17:45:28 1986 /mtr - - h/mshsbr.h, uip/msh*.c: add direct folder support for symmetry's - sake, ugh! - - -Wed Feb 26 21:05:46 1986 /mtr - - uip/sendsbr.c: better diagnostics when post fails - - -Thu Feb 27 22:12:53 1986 /mtr - - -- Van sends updates -- - conf/makefiles/uip, h/fmtcompile.h, - sbr/{format{addr,sbr},fmtcompile,addrsbr}.c, - support/general/replcomps, uip/{repl,mhl,scan,whatnow}sbr.c - - -Thu Feb 27 22:16:43 1986 /mtr - - sbr/formataddr.c: remove - sbr/addrsbr.c: Van doesn't like "user*" instead of "user" as the - default is-my-mailbox for BERK. Since he's the BERK-author, I'll - assume he knows what he's doing... - support/general/replcomps: Use "tws", instead of "pretty" for - in-reply-to: - uip/whatnowsbr.c: If -draft{folder,message} and -nodraftfolder are - added as no-ops, make them "hidden" from -help output - uip/{{a,d}p,forw,mhlsbr}.c: update - - -Mon Mar 3 10:18:40 1986 /mtr - - -- Van sends fixes to my updates -- - uip/mshcmds.c: not resetting scansbr for formatting - uip/scansbr.c: oops, typo! - - -Mon Mar 3 16:53:19 1986 /mtr - - uip/sendsbr.c: oops, close() on an uninitialized variable! (thanks - to Jim Koda) - - -Tue Mar 4 08:15:17 1986 /mtr - - -- Van sends fixes to my updates -- - uip/mhlsbr.c: not resetting mhlsbr for formatting - zotnet/tws/dtimep.lex: not getting MIL-TZ's right - - -Tue Mar 4 09:53:31 1986 /mtr - - papers/usenix/: change to realwork/ - - -Wed Mar 5 12:48:58 1986 /mtr - - dist/READ-ME: oops, forgot usenix name change - conf/makefiles/uip: hmm, interesting loader problem - - -Thu Mar 6 13:36:26 1986 /mtr - - uip/addrsbr.c: yet another fix for ismymbox() - uip/replsbr.c: #ifdef ISI code to avoid duplicate replies (due to - Jim Koda) - - -Sun Mar 9 14:04:26 1986 /mtr - - conf/mh-gen.8: add a line about chown and sys5 - sbr/m_convert.c: better BADRNG diagnostic - uip/mshcmds.c: oops, typo - - -Sun Mar 9 14:06:54 1986 /mtr - - h/scansbr.h, sbr/fmtcompile.c: better versions from Van - support/general/{replcomps,scan.timely}: better versions from Van - (snuck the %pretty instead of %tws in, eh Van?) - support/general/{digestcomps,mhl.forward,scan.{size,time}}: update - - -Sun Mar 9 18:52:37 1986 /mtr - - h/scansbr.h, support/general/{digestcomps,mhl.forward,scan.*}: update - - -Sun Mar 9 20:09:35 1986 /mtr - - zotnet/bboards/bboards.h: add BB_REMOTE flag for bbc - uip/bbc.c: support BB_REMOTE, under #ifdef MTR for the moment - uip/bbc.c: allow bb_aka (again?!?) - - -Mon Mar 10 00:43:19 1986 /mtr - - uip/{msh,mshcmds}.c: packf hack, ala refile hack - uip/{post,rcvdist}.c, support/bboards/mmdfII/bboards/bb_wtmail.c: - MMDF-II nameserver support from Steve Kille - - -Mon Mar 10 10:17:29 1986 /mtr - - {sbr/formatsbr,uip/scansbr}.c: more optimizations from Van! - sbr/m_getfld.c: Van fixes problems due to losing vanilla-4.2 C - optimizer! - sbr/m_getfld.c: slight touch-up by MTR - uip/bbc.c: remove #ifdef MTR bracketing, code works fine - uip/refile.c: slight touch-ups - sbr/m_getfld.c: on xxxERR returns, forgetting to zero value buffer - - -Mon Mar 10 18:08:37 1986 /mtr - - uip/post.c: fix handling of (in)visible addresses - uip/rcvdist.c: re-do to use format facility - uip/{replsbr,forw}.c: touch-ups - conf/config/config.c, h/mh.h: new variable rcvdistcomps - conf/{makefiles/{uip,support/general},doc/mhook.rf}: update - sbr/m_getfld.c: bstring() support for non BSD42, SYS5 systems - conf/doc/ADMIN.rf: update - - -Tue Mar 11 19:43:27 1986 /mtr - - h/dropsbr.h, uip/dropsbr.c: new routines mbx_read() and mbx_write() - uip/{msh,mshcmds}.c, support/pop/popser.c: use it - h/{addr,format,scan}sbr.h, sbr/addrsbr.c: slight touch-up - uip/inc.c: slight touch-up - - -Sun Mar 16 15:20:27 1986 /mtr - - miscellany/mem: appointment diary support from Ken Yap - - -Wed Mar 19 23:00:53 1986 /mtr - - support/pop/popser.c: one last fix for ENOENT mailboxes - - -Wed Mar 19 23:12:54 1986 /mtr - - -- Changes for MMDF-IIb -- - uip/post.c, support/bboards/mmdfII/bboards/bb_wtmail.c: know about - new mm_winit protocol and RP_NS/RP_DOK responses - - -Thu Mar 20 23:05:10 1986 /mtr - - uip/mhlsbr.c: mhl enhancement from JLR permitting a prefix string - for each line of the body (e.g, "component=" > ") - - -Fri Mar 21 21:12:39 1986 /mtr - - conf/doc/{MH,mh-format}.rf: typos - - -Sat Mar 22 11:51:45 1986 /mtr - - -- Fixes from Phyllis Kantar -- - uip/dropsbr.c: typo - conf/doc/{send,pick}.rf: typos - conf/makefiles/doc: forgot $(OPTIONSn) in $(MAN1) definition - - -Sat Mar 22 18:24:35 1986 /mtr - - uip/mhmail.c: handle -body better - - -Mon Mar 31 15:07:26 1986 /mtr - - uip/replsbr.c: handle bad addresses with better diagnostics - - -Wed Apr 2 17:17:32 1986 /mtr - - sbr/addrsbr.c: slight typo in comment - - -Sun Apr 6 19:22:52 1986 /mtr - - uip/inc.c: forgot to initialize some FILE*'s; dumps core on - celerity - - -Mon Apr 7 09:55:23 1986 /mtr - - mts/sendmail/smail.c: slight "client" check - - -Wed Apr 9 12:04:56 1986 /mtr - - -- Van fixes some more bugs -- - sbr/m_getfld.c: not handling buffer boundary cases right - uip/replsbr.c: not adding "," correctly when concatenating an - address string during message scan - sbr/formatsbr.c: mymbox test dumped core if address parse failed - h/{fmtcompile,formatsbr}.h, sbr/{fmtcompile,formatsbr}.c: more - enhancements - - -Wed Apr 9 12:36:58 1986 /mtr - - -- MTR actually gets to fix something! -- - sbr/m_getfld.c: messages with an empty body caused inc to - prematurely think the maildrop had reached EOF. Believe it - or not, the mhmail fix last month exercised this! - - -Wed Apr 9 22:08:37 1986 /mtr - - uip/vmh.c: output non-standard control characters in carat format - - -Thu Apr 10 02:26:52 1986 /mtr - - Makefile: touch-up "make distribution" - conf/examples/nrtc-*-mtr: remove - conf/makefiles/uip: touch-up - conf/doc/MH.rf: add TMA stuff, conditionally - - -Thu Apr 10 03:47:48 1986 /mtr - - sbr/m_getfld.c: Van fixes Marshall's fix - - -Thu Apr 10 10:42:25 1986 /mtr - - uip/scansbr.c: recognize the 822 "Encrypted:" header instead of - doing a uprf() on the body - uip/{scan,mshcmds}.c: recognize SCNENC return from scan () - - -Thu Apr 10 15:06:59 1986 /mtr - - conf/config/bboards.*: mail reports to PostMaster - - -Sat Apr 12 16:32:21 1986 /mtr - - uip/post.c: try to keep fcc:s under MH-directory so links are - maintained - - -Mon Apr 14 22:56:46 1986 /mtr - - support/bboards/bbexp.c: not ending msh correctly, msh tried - to update the maildrop even though it was already locked - by bbexp - - - -Mon Apr 14 23:52:03 1986 /mtr - - sbr/m_getfld.c: locc() not range checking on cnt - - -Thu Apr 17 13:25:20 1986 /mtr - - sbr/addrsbr.c: fix from Terry West, more alternate-mailbox misery - - -Thu Apr 17 20:51:53 1986 /mtr - - zotnet/mts/lock.c: add some more #ifdefs to support stand-alone - locking library - conf/examples/udel*: update - papers/myths/: remove - conf/makefile/papers: update - - -Mon Apr 21 10:22:09 1986 /mtr - - zotnet/mf/mf.c: sanity check in getadrx() on string to parse - - -Mon Apr 21 17:31:43 1986 /mtr - - uip/{inc,post}.c: slight mods for TMA mods - conf/doc/mh-chart.rf: ditto - - -Thu Apr 24 00:19:35 1986 /mtr - - conf/doc/mh-chart.rf: slight mods for TMA mods - - -Thu Apr 24 10:34:06 1986 /mtr - - zotnet/mts/lock.c: lint touch-up - support/pop/popd.c: ditto - - -Thu Apr 24 19:37:09 1986 /mtr - - conf/doc/ADMIN.rf: typos - - -Thu Apr 24 20:13:28 1986 /mtr - - uip/msgchk.c: print out last read date - conf/makefiles/uip: add tws dependency - - -Thu Apr 24 23:53:57 1986 /mtr - - -- From Craig Partridge -- - support/bboards/mmdfII/bboards/*: bug fixes for MMDF-IIb - conf/mh-gen.8: mention that MMDF-IIb has the BBoards distribution - - -Fri Apr 25 00:01:50 1986 /mtr - - conf/ADMIN.rf: slight touch-up - - -Fri Apr 25 10:47:19 1986 /mtr - - uip/trmsbr.c: use stdout (not stderr) for termcap checking - - -Fri Apr 25 13:39:55 1986 /mtr - - -- From Craig Partridge -- - support/bboards/mmdfII/bboards/getbbent.c: bad field in BBoards file - causes hang, note it and skip! - - -Sun Apr 27 17:23:56 1986 /mtr - - uip/scansbr.c: recognition of 822 Encrypted: header a bit botched - h/scansbr.h, support/general/scan.*: support encrypted - - -Mon Apr 28 21:00:21 1986 /mtr - - -- Yet Another Fix from Terry -- - uip/dropsbr.c: another typo - - -Tue Apr 29 20:17:11 1986 /mtr - - conf/doc/mhook.rf: extra tip with SendMail and slocal - - -Thu May 1 15:30:07 1986 /mtr - - -- From Craig Partridge -- - support/pop/mmdfII/pop/READ-ME: fixes - - -Fri May 2 16:35:11 1986 /mtr - - -- More Bug Fixes from Van -- - uip/scansbr.c: check return from fclose() - uip/inc.c: avoid locking/stat race condition - sbr/m_sync.c: lock signals out during update of sequences - - -Fri May 2 17:02:01 1986 /mtr - - uip/show.c: WHATNOW botch fixed by Jim Valerio - - -Sat May 3 01:37:15 1986 /mtr - - sbr/{m_{sync,update},pidwait}.c, uip/{bbc,sendsbr,vmh}: inspired - by Van's 4.2BSD signal optimizations - - -Sat May 3 02:49:29 1986 /mtr - - zotnet/tws/{tws.h,dtime.c,dtimep.lex}: fixes for DST - conf/makefiles/zotnet/tws: add -n to lex's invocation - - -Sun May 4 13:28:23 1986 /mtr - - uip/msgchk.c: change the "last read" message to use alpha-timezones - - -Sun May 4 14:18:15 1986 /mtr - - support/general/replcomps: use %tws instead of %pretty - support/general/mhl.*: streamline slight - - -Sun May 4 16:10:36 1986 /mtr - - conf/doc/mh.rf: forgot about TMA stuff - conf/makefiles/doc: forgot rcvstore - - -Sun May 4 17:49:43 1986 /mtr - - sbr/pidwait.c, uip/{bbc,sendsbr,vmh}.c: back off signal handling - modifications - -Sun May 4 18:08:47 1986 /mtr - - MH 6.5 #1[UCI] (nrtc-gremlin) made available to Van Jacobson - for inclusion in 4.3BSD UNIX - - -Mon May 5 13:32:37 1986 /mtr - - uip/trmsbr.c: try Van's version for a while - miscellany/patch: updates from Van - - -Mon May 5 16:07:12 1986 /mtr - - support/bboards/mmdfII/bboards/bb_wtmail.c: patch for IDIOTIC change - in qu_rtxt() - - -Wed May 7 13:16:45 1986 /mtr - - uip/post.c: modification for fcc:s broke stand-alone behavior for - daemons, etc.; use old method as a fall-back - sbr/m_foil.c: also improve modification a bit - support/pop/smtpd.c: dead weight - - -Thu May 8 17:50:22 1986 /mtr - - support/bboards/bbexp.c: set the mode on the archive file if - creating it, since m_gmprot() isn't a good default for this - application - - -Sun May 11 12:40:34 1986 /mtr - - miscellany/scripts/READ-ME: add amhmail description - miscellany/scripts/amhmail.sh: new script - - -Mon May 12 09:12:39 1986 /mtr - - sbr/m_getfld.c: new version of matchc() from Van that doesn't - give the SUN indigestion - - -Tue May 13 07:59:36 1986 /mtr - - uip/replsbr.c: some fixes from Van - - -Tue May 13 15:14:07 1986 /mtr - - -- Some Fixes from Hokey -- - uip/vmh.c: a few more SYS5 dependencies - zotnet/tws/dtimep.lex: added #include strings.h - conf/makefiles/zotnet/tws: added dependency for above - uip/post.c: pre-emptive reference of discard to help SYS5 loader - conf/examples/plus5: update - miscellany/less/Makefile: add SHELL=/bin/sh - sbr/m_getfld.c: slight redeclaration for SYS5 - - -Tue May 13 17:44:47 1986 /mtr - - sbr/{fmtcompile,formatsbr}.c, support/pop/popwrd.c, - uip/{ap,inc,rcvtty,post,spost,whatnowsbr}.c: - add some lint stuff - conf/makefiles/uip: better lint support for TMA - - -Thu May 15 16:36:19 1986 /mtr - - uip/{inc,msgchk,post,send}.c: improve #define-dependent - switches declarations - - -Thu May 15 17:09:34 1986 /mtr - - uip/msgchk.c, conf/doc/{mh-chart,msgchk}.rf: add -[no]date, - and -[no]notify type switches - - -Tue May 20 19:09:15 1986 /mtr - - uip/scan.c: free'ing a static, tsk - - -Tue May 20 22:51:13 1986 /mtr - - -- From Steve Smith -- - conf/examples/ridge: config file - sbr/{m_gmsg,pwd}.c: although SYS5, uses - uip/show.c: not null-terminating argvector - uip/{bbc,vmh}.c: although SYS5, has SIGTSTP - uip/sbboards.c: pre-emptive reference of discard to help SYS5 loader - conf/{mh-gen.8,mhconfig.c}: add "oldload none" - - -Wed May 21 10:10:21 1986 /mtr - - uip/{rcvdist,replsbr}.c: malloc/free fixes from Steve Smith - - -Wed May 21 20:51:47 1986 /mtr - - conf/{mh-gen.8,doc/{ADMIN,MH}.rf, papers/*/*, COVER-LETTER: update - mail addresses - - -Thu May 22 08:05:03 1986 /mtr - - -- Two New Documents from UCI -- - conf/makefiles/{papers,dist}: update - dist/READ-ME: remove - conf/doc/MH.rf: update - papers/beginners: new paper "MH for Beginners" - papers/mh4mm: new paper "MH for MM Users" - - -Thu May 22 08:13:17 1986 /mtr - - conf/mh-gen.rf: update - - -Thu May 22 15:08:06 1986 /mtr - - support/general/replcomps: typo - - -Tue May 27 19:35:38 1986 /mtr - - support/pop/popd.c: support for 4.3BSD syslog - - -Wed May 28 12:44:21 1986 /mtr - - sbr/fmtcompile.c: allow literal '%'s in format files - - -Wed May 28 16:56:40 1986 /mtr - - conf/examples/nrtc-gremlin: add -125 switch for GHS compiler - sbr/getans.c,uip/{mhlsbr,prompter,rcvtty,sendsbr}.c: a bit more - careful with the setjmp() - - -Thu May 29 23:42:54 1986 /mtr - - support/general/scan.mailx: mailx scan format from Bob Simpson of - plus5 - support/general/mhl.body: format from mtrenv - - -Sun Jun 1 23:07:24 1986 /mtr - - uip/trmsbr.c: add sc_hardcopy() - uip/mhlsbr.c: use it so we don't fork a more on hardcopy ttys - conf/doc/mhl.rf: document it - - -Fri Jun 6 10:56:40 1986 /mtr - - miscellany/less/screen.c: handle HP terminals better - -Tue 10 Jun 86 15:34 John Romine - - h/scansbr.h: eliminate superfluous space from default format - string - - -Fri 13 Jun 86 10:29 John Romine - - h/scansbr.h, support/general/scan.{timely,time,size}: add ">>" at - end of body in format string - - -Fri Jun 13 15:28:10 1986 /mtr - - sbr/addrsbr.c: another #ifdef BERK fix for the SUN - - -Fri Jun 13 20:08:36 1986 /mtr - - uip/aliasbr.c: not testing for relative names correctly - - -Sun Jun 15 14:20:10 1986 /mtr - - h/scansbr.h, support/general/scan.{timely,time,size}: remove JLR's - fix since it doesn't work right - - -Mon Jun 16 19:56:09 1986 /mtr - - sbr/{m_gmsg,pwd}.c, uip/{bbl,conflict,folder,rmf}.c: add NDIR - compile-time option if -lndir include file is called - instead of (non BSD systems) - h/local.h: new file to make this easier - - -Tue Jun 17 10:44:06 1986 /mtr - - uip/trmsbr.c: no TIOCGWINSZ working on 4.2BSD ULTRIX! - - -Tue Jun 17 14:21:08 1986 /mtr - - uip/scan.c: forgot to make -header always force ATZ behavior - - -Tue Jun 17 15:23:27 1986 /mtr - - h/mh.h: add vfork for hpux - - -Wed Jun 18 11:05:40 1986 /mtr - - support/bboards/bbexp.c: create archives in BBMODE format, private - bboards should have archives created by the BBoards user (just - like the standard file) - - -Wed Jun 18 19:57:09 1986 /mtr - - uip/vmh.c: sanitize for 8-bit whacko characters - - -Thu Jun 19 19:51:43 1986 /mtr - - zotnet/tws/dtimep.lex: fix spelling for august - - -Mon Jun 23 20:45:35 1986 /mtr - - uip/vmh.c: Bob gives us another sys5 fix - - -Sun Jun 29 21:11:30 1986 /mtr - - sbr/addrsbr.c: yet another fix for the SUN (yaffts) - conf/mhconfig.c: if both mts/smtp and options BERK, turn off - SMTP - - -Tue Jul 8 10:50:39 1986 /mtr - - uip/scansbr.c: split-up a statement for the RT compiler - conf/mh-gen.8: add some stuff on POP - conf/doc/{ADMIN,popaka}.rf: ditto - - -Fri Jul 11 10:50:31 1986 /mtr - - MH 6.5 official, out of beta, released for UCI distribution - - -Tue Jul 15 20:26:05 1986 /mtr - - papers/{bboards/bboards,tutorial/tutorial}.tex: botched MTR's - address - - -Sun Jul 27 11:52:37 1986 /mtr - - conf/doc/show.rf: typos - - -Fri Aug 8 12:57:35 1986 /mtr (agent: Marshall Rose) - - conf/config/config.c, h/mh.h, sbr/m_readefs.c, uip/mhlsbr.c: - add support for "faceproc" - - -Mon Aug 11 10:10:33 1986 /mtr (agent: Marshall Rose) - - uip/mhlsbr.c: choose default face from from: line - - -Tue Aug 12 10:53:47 1986 /mtr (agent: Marshall Rose) - - uip/mhlsbr.c: finally stabilize it - - -Tue Aug 12 10:54:47 1986 /mtr (agent: Marshall Rose) - - support/pop/popser.c: small fix from Dave Cohrs - - -Thu Aug 14 22:25:23 1986 /mtr - - support/general/replcomps: add return-path to To: list - - -Fri Aug 15 13:58:25 1986 /mtr (agent: Marshall Rose) - - uip/vmh.c: slight clean-up - - -Fri Aug 15 23:01:06 1986 /mtr - - sbr/advertise.c: slight touch-up - - -Mon Aug 18 10:38:34 1986 /mtr (agent: Marshall Rose) - - uip/wmh.c: new program--Windowing MH for Integrated Solutions - Graphics Workstations; not standardly installed for now since - requires special load libraries - conf/doc/wmh.rf: man page - conf/makefiles/uip: support wmh - - -Wed Aug 20 14:16:12 1986 /mtr (agent: Marshall Rose) - - conf/config/MakeBBoards: smarter rule - - -Wed Aug 20 17:23:39 1986 /mtr (agent: Marshall Rose) - - uip/mhlsbr.c: a bit less demanding on errors when processing the - face - - -Thu Aug 28 19:39:47 1986 /mtr (agent: Marshall Rose) - - uip/send.c: handle dist in a read-only folder - support/pop/popser.c: anonymous fix for DPOP/BPOP - - - -Fri Aug 29 09:08:15 1986 /mtr (agent: Marshall Rose) - - uip/wmh.c: for pTTY() make original window the top one - - -Tue Sep 2 15:27:34 1986 /mtr - - uip/{bbc,burst,popsbr}.c: ULTRIX loses on ferror() vs. feof() - sbr/vfgets.c: ditto - - - -Fri Sep 5 09:08:17 1986 /mtr (agent: Marshall Rose) - - mts/sendmail/smail.c: define discard() as void - - -Fri Sep 5 09:40:35 1986 /mtr (agent: Marshall Rose) - - uip/msh.c: add hidden "advance" command - uip/wmh.c: use it - - -Fri Sep 5 14:02:36 1986 /mtr (agent: Marshall Rose) - - zotnet/bboards/bboards.h: add BB_SEEN to fix list-handling bug in bbc - uip/bbc.c: use it - - -Mon Sep 8 12:47:58 1986 /mtr (agent: Marshall Rose) - - conf/config/MakeBBoards: smarter - - -Thu Oct 2 12:37:57 1986 /mtr - - support/pop/popd.c: fixes for 4.3BSD set setsockopt - - -Mon Oct 6 12:07:02 1986 /mtr (agent: Marshall Rose) - - conf/examples/encore: config file for Encore Multimax, from Mike - Iglesias of UCI - - -Wed Oct 8 15:59:05 1986 /mtr (agent: Marshall Rose) - - uip/vmh.c: more SYS5 mods from Bob Desinger - - -Thu Oct 9 12:52:41 1986 /mtr (agent: Marshall Rose) - - h/mh.h: make ruserpass nonsense based on NFS not SUN - - -Thu Oct 30 12:57:52 1986 /mtr (agent: Marshall Rose) - - sbr/formataddr.c, uip/replsbr.c: another realloc() bug found by - Terry West - - -Thu Oct 30 13:03:02 1986 /mtr (agent: Marshall Rose) - - uip/{rcvtty,ttyw}.c: if no BSD42, turn off TTYD - - -Mon Nov 3 14:11:48 1986 /mtr (agent: Marshall Rose) - - uip/msgchk.c: another SUN fix - - -Mon Nov 3 15:21:38 1986 /mtr (agent: Marshall Rose) - - sbr/m_sync.c: fix for sequent machines - - -Mon Nov 10 08:12:16 1986 /mtr - - -- Stuff from Jef Poskanzer -- - uip/forw.c: add -[no]dashmunging, a hidden option - uip/mhlsbr.c: add -[no]dashmunging, a hidden option - {conf/doc/mhl.rf,uip/mhlsbr.c}: add [no]split variable - - -Mon Nov 10 16:57:41 1986 /mtr (agent: Marshall Rose) - - -- More stuff from Jef -- - zotnet/tws/dtimep.lex: default timezone to localone one - - -Fri Nov 14 17:25:23 1986 /mtr - - conf/doc/mhook: typo found by Phyl - - -Fri Nov 21 14:33:28 1986 /mtr (agent: Marshall Rose) - - sbr/smatch.c: deref null bug - - -Sat Nov 22 20:36:31 1986 /mtr - - uip/bbc.c: set up time-bomb after HUP - - -Tue Dec 2 13:57:41 1986 /mtr (agent: Marshall Rose) - - support/bboards/bbtar.c: fix for sequent machines - - -Wed Dec 3 22:03:58 1986 /mtr - - support/pop/popd.c: minor fix - - -Mon Dec 15 11:11:32 1986 /mtr (agent: Marshall Rose) - - uip/post.c: patch for MMDF-IIb submit - - -Mon Dec 22 12:32:45 1986 /mtr (agent: Marshall Rose) - - -- From Stanford -- - h/dropsbr.h, uip/dropsbr.c, support/pop/popser.c: support LAST - command in POP service - uip/{inc,mshcmds}.c: ditto - - -Fri Jan 2 18:42:55 1987 /mtr - - uip/dropsbr.c: fixes - uip/msh.c, support/pop/popser.c: ditto - - -Fri Jan 2 18:43:09 1987 /mtr - - zotnet/tws/dtimep.lex: ctime w/o TZ hack - - -Fri Jan 2 23:41:19 1987 /mtr - - uip/rcvdist.c: touch-ups to sync with replsbr.c - uip/scansbr.c: trash trailing whitespace in header components for - formating - - -Sat Jan 3 13:11:22 1987 /mtr - - conf/config/mts.c, mts/sendmail/hosts.c: BIND fix-up - - -Sat Jan 3 15:03:00 1987 /mtr - - h/formatsbr.h: parenthesize better, use case-sensitive in - bucket search since hashing is case-sensitive - uip/{rcvdist,replsbr}.c: CT_ADDR hacks - - -Sun Jan 4 11:16:54 1987 /mtr - - uip/mhlsbr.c: "extras" hack for Elz diff --git a/docs/historical/changes/Makefile b/docs/historical/changes/Makefile deleted file mode 100644 index 67d4fe0d..00000000 --- a/docs/historical/changes/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -############################################################################## -# @(#)Makefile,v 1.1.1.1 1993/01/30 04:41:04 jtc Exp - -MAKE = make DESTDIR=$(DESTDIR) $(MFLAGS) -k -SHELL = /bin/sh - - -############################################################################## -# Generation Rules -############################################################################## - -.SUFFIXES: .ms .cat .doc .imp - -.ms.cat:; itroff -t -ms $< > $@ - -.ms.doc:; nroff -ms $< > $@ - -.cat.imp:; catimp -i $@ $< - - -###################################################################### -# Here it is... -###################################################################### - -TARGETS = mh-changes.doc - -all: mh-changes.doc - - -doc: mh-changes.doc - -i-all: all true - lpr -t -J MH-changes mh-changes.cat - -true:; - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - -unconfig clean: unclean - rm -f *.cat *.dvi *.imp *.doc - -unclean:; rm -f *.tmp _* :* core diff --git a/docs/historical/changes/mh-changes.ms b/docs/historical/changes/mh-changes.ms deleted file mode 100644 index 8b2e4341..00000000 --- a/docs/historical/changes/mh-changes.ms +++ /dev/null @@ -1,1010 +0,0 @@ -.\" @(#)mh-changes.ms,v 1.1.1.1 1993/01/30 04:41:04 jtc Exp -.\" Standard -ms macros -.\" with the following changes -.ds lq \\*Q -.ds rq \\*U -.\" remember to update date in text below -.DA "December 14, 1992" -.if n \{\ -.na -.\} -.nr PO 1i -.po 1i -.\" .EH ''Changes to MH 6.7'%' -.\" .OH ''Changes to MH 6.7'%' -.ds LH Changes to MH 6.8 -.ds CH -.ds RH % -.TL -Changes to -.br -The RAND MH Message Handling System: -.br -UCI version MH 6.8 -.AU -John L. Romine -.AI -Computing Support Group -Department of Information and Computer Science -University of California, Irvine -Irvine, CA 92717\-3425 -.AB -.PP -This document describes the changes to the -UCI version of the RAND MH system from MH 6.6 -to this release of MH 6.8. -This document is meant to supplement, -not supersede, -the standard MH User's manual and MH Administrator's manual. -.PP -Comments concerning this documentation should be addressed to the -mailbox \fBBug\-MH@ICS.UCI.EDU\fP, or \fBucbvax!ucivax!bug-mh\fP. -.AE -.SH -ACKNOWLEDGEMENTS -.LP -The \fIMH\fP system described herein is -based on the original RAND \fIMH\fP system. -It has been extensively developed (perhaps too much so) by Marshall T. Rose -and John L. Romine at the University of California, Irvine. -Einar A. Stefferud, Jerry N. Sweet, -and Terry P. Domae provided numerous suggestions -to improve the UCI version of \fIMH\fP. -.PP -Of course, -a large number of people have helped \fIMH\fP along. -The list of \*(lq\fIMH\fP immortals\*(rq is too long to list here. -For this release, numerous \fIMH\-Workers\fP sent in fixes and other -changes. A handful of courageous \fIMH\-Workers\fP volunteered -to beta-test these changes; their help is particularly appreciated. -.KS -.SH -DISCLAIMER -.LP -The Regents of the University of California wish to make it known that: -.QP -Although each program has been tested by its contributor, -no warranty, express or implied, -is made by the contributor or the University of California, -as to the accuracy and functioning of the program -and related program material, -nor shall the fact of distribution constitute any such warranty, -and no responsibility is assumed by the contributor -or the University of California in connection herewith. -.KE -.KS -.SH -CONVENTIONS -.LP -In this document, -certain formatting conventions are adhered to: -.IP -The names of -\s-2UNIX\s+2 -commands, such as \fIcomp\fP -are presented in \fIitalics\fP. -.IP -Arguments to programs, such as `msgs' and `\-nobell' are -delimited by single-quotes. -.IP -Text that should be typed exactly as-is, such as -command lines (e.g., \*(lqfolder \-pack\*(rq), -are delimited by double-quotes. -.IP -\s-2UNIX\s+2 -pathnames and envariables, -such as \fB/usr/uci\fP and \fB$SIGNATURE\fP, -are presented in \fBbold font\fP. -.KE -.ds LH Changes for MH 6.8 -.bp -.SH -CHANGES FOR MH 6.8 -.LP -This is the current released version of \fIMH\fP -as of December 14, 1992. This release includes a number -of bug fixes and internal changes to make the code more -portable. -Two new authentication methods are provided for the POP, -and support for SVR4 shared libraries is complete. -.PP -The major user-visible change in this release is the incorporation -of support for multi-media mail as specified by the -Multi-purpose Internet Mail Extensions (\fBMIME\fP) -RFC\ 1341. -This allows you to include things like audio, -graphics, and the like, in your mail messages. -A new command, \fImhn\fP, -has been provided to support \fBMIME\fP and -a detailed man page is provided in \fImhn\fP\|(1). -.SH -Documentation -.LP -The documentation has some general improvements, and -the \fBREAD-ME\fP document has been re-organized -to help \fIMH\fP administrators find the appropriate -configuration options for their system. -The \fBMakefile\fPs in the \fBpapers/\fP hierarchy have -been changed to invoke \fITeX\fP as -\*(lqtex\*(rq (instead of \*(lqtex82\*(rq). -.LP -The following new man pages are also available: -.IP \fImhn\fP\|(1) \w'\fIpopauth\fP\|(8)'u+2n -\fImhn\fP helps the user process multi-media mail. -.IP \fImhparam\fP\|(1) -\fImhparam\fP lets the user extract information from -the \fIMH\fP profile. -.IP \fIpopauth\fP\|(8) -the APOP database administration program (see below). -.IP \fIpopi\fP\|(1) -the POP initiator (see below). -.IP \fIslocal\fP\|(1) -fully documents \fIslocal\fP. The \fImhook\fP(1) man page now -documents only the \fIMH\fP receive-mail hooks. -.SH -Internal Changes -.LP -The \fIMH\fP source code is in the process of being -cleaned up to make pedantic ANSI C compilers happy. -Occurrences of \*(lqNULL\*(rq have been replaced by -\*(lq0\*(rq where appropriate. -Extra tokens after \*(lq#else\*(rq and \*(lq#endif\*(rq -have been put inside comments (this is still in progress). -The code should now compile cleanly on many more systems, -specifically, more variants of SVR4. -.PP -The version of \fBtws/dtimep.c\fP which was included in -MH 6.7.2 was incompatible with the \fIlex\fP library -on some systems, and has been removed. -.PP -A bug in the handling of blind lists inside alias -files has been fixed. -.KS -.SH -Post Office Protocol -.LP -There were three new options added to the POP. -.IP APOP \w'APOP'u+2n -This option indicates that the POP daemon will -support the non-standard \fBAPOP\fP command which -provides a challenge-based authentication system using -the \fBMD5\fP message digest algorithm. -.IP -This option also causes the -\fIpopauth\fP program to be installed, which -allows the administrator to manipulate the \fBAPOP\fP -authorization database. -.KE -.IP KPOP -Support for KERBEROS with POP. -This code builds -\fIpopd\fP, \fIinc\fP and \fImsgchk\fP to support only the -\*(lqkpop\*(rq protocol. -This code is still expiremental, but is available for -those sites wishing to test it. -.IP MPOP -This option indicates that the POP daemon will -support the non-standard -\fBXTND SCAN\fP command which provides performance -enhancements when using the POP over low-speed connections. -.IP -This option also causes an interactive POP -client program, \fIpopi\fP, to be compiled and installed. -A man page for the \fIpopi\fP program is also provided. -This option requires the configuration to -have \*(lqbboards: pop\*(rq. -.LP -The APOP and MPOP non-standard POP -facilities are documented in -\fIThe Internet Message\fR (ISBN 0\-13\-092941\-7), -a book by Marshall T. Rose. -For more details, see \fBsupport/pop/pop-more.txt\fR -and the \fIAdministrator's Guide\fP. -The APOP option peacefully co-exists with the standard POP, -KPOP completely replaces the standard POP, and -MPOP requires \*(lqbboards: pop\*(rq. -.SH -File Locking -.LP -The file locking code has been cleaned up to support -three kinds of kernel-level file locking. As appropriate -for your system, include the -LOCKF, FCNTL or FLOCK option. For more -details, see \fImh-tailor\fP\|(5). -.SH -.KS -Configuration Directives -.LP -A number of new configuration directives have been added -or changed. The full details are given in the \fBREAD-ME\fP. -.IP cp: \w'MAILGROUP'u+2n -The command used to install new files if not \*(lqcp\*(rq. -.IP ln: -The command used to link files together in the source tree -if not \*(lqln\*(rq. -.IP mts: -Full support for ZMAILER has been added. -.IP popdir: -The directory where \fIpopd\fP will be installed if not \fB/usr/etc\fP. -.IP regtest: -Set to \*(lqon\*(rq to prevent the hostname and compile -date from being included in \fIMH\fP binaries. -.IP sharedlib: -You may now specify \*(lqsun4\*(rq or \*(lqsys5\*(rq -(for SVR4) shared libraries. -.IP signal: -Specifies the base type of the function returned by \fIsignal\fP\|(). -This was previously defined with \*(lqoptions TYPESIG\*(rq. -.KE -.LP -Several `-D' options to \fIcc\fP have been added or changed: -.IP APOP \w'MAILGROUP'u+2n -Authenticated POP (see above). -.IP AUX -Support for A/UX systems. -.IP DBMPWD -The DBM option has been renamed DBMPWD. -.IP HESIOD -Support for the HESIOD name server. -.IP KPOP -KERBEROS POP (see above). -.IP LOCALE -Support for local characters sets; uses the \fIsetlocal\fP\|() function. -.IP MAILGROUP -Makes \fIinc\fP set-group-id. -You may need this option if your \fB/usr/spool/mail\fP -is not world-writeable. -.IP MIME -Multi-media mail. -.IP MPOP -Mobile POP (see above). -.IP MSGID -Enables \fIslocal\fP to detect and surpress duplicate messages. -.IP OSF1 -Support for DEC OSF1 systems. May be incomplete. -.IP RENAME -Include this option if your system has a \fIrename\fP\|() -system call. -.IP SVR4 -Support for System 5 Release 4 or newer systems. -.IP TYPESIG -This option has been dropped. See `signal' above. -.IP UNISTD -Include this option if your system has the include -file \fB\fP. -.IP VSPRINTF -Include this option if your system has the \fIvsprintf\fP\|() -library routine; otherwise, \fI\(rudoprnt\fP\|() will be used. -.IP YEARMOD -Forces the \fImh-format\fP `year' function to -return 2-digit values. -Use this option during a brief transition period if -you have local \fImh-format\fP files which need to -be converted to support 4-digit years. -.SH -FUNCTIONAL CHANGES -.LP -In addition to the configuration changes mentioned above, -a number of functional changes have been made to the system. -Many programs have new features added and a few new -programs have are provided. -Each command's manual page gives -complete information about the its operation. -Here is a short summary of the changes. -.SH -MH Sequences -.LP -A larger number of user-defined sequences are available. -Previously, this number had been 10. -On 32-bit systems, 26 user-defined sequences are available. -.SH -Profile Components -.LP -\fIMH\fP programs will now complain if the -\fB\&.mh\(ruprofile\fR does not end in a newline. -Also, one enhancement and one new profile component are provided: -.IP Aliasfile: \w'AliasfileX'u+2n -Multiple filenames may now be given. -.IP Inbox: -New; the default folder (for \fIinc\fP, etc.) if not \*(lqinbox\*(rq. -.KS -.SH -Format Strings -.LP -A few minor bugs were fixed in format string handling, -and a few new features were added. See \fImh-format\fP\|(5) -for complete details. -.IP Addresses \w'Xxyearxdatexx'u+2n -An attempt is made to decipher X\&.400 RFC\ 987-style addresses. -.IP Comments -Comments may be added to \fImh-format\fP files; a comment -begins with the 2-character sequence \*(lq%;\*(rq, -and ends with an un-escaped newline. -.IP "%(modulo n)" -The `modulo' function escape has been added. -.IP %(year{date}) -The date parser has been enhanced to understand more -illegal date formats; `year' now returns a 4-digit number. -.KE -.SH -User Interface Programs -.LP -A number of \fIMH\fP commands have minor changes: -.IP ali \w'packmbox'u+2n -The output with `\-user\0\-list' was -changed to match the output with `\-nouser\0\-list'. -.IP burst -Will no longer drop the last message of a digest. -.IP inc -Accepts the `\-apop' switch for authenticated POP (see above); -will attempt to detect write -errors (e.g., no space left on device) when incorporating mail; -no longer replaces newline characters with NULLs. -.IP folder -The `\-noprint' option was broken and has been dropped. -.IP forw -Supports `\-mime' to use MIME-style multi-part messages. -.IP mhl -Will no longer put an extra space at the end of the -`%{text}' in a formatfield. -.IP mhn -New; manipulates multi-media (MIME) messages; a detailed -man page is provided. -.IP mhparam -New; reads the \fIMH\fP profile (and context) -and writes the values of the specified components on the -standard output; useful in programmatic constructs. -.IP msgchk -Supports `\-apop' (see above). -.IP packmbox -New; packs an \fIMH\fP folder into a UUCP-style mailbox. -.IP popi -New; a client-side POP initiator; available only if you -built \fIMH\fP with the MPOP option (see above). -.IP refile -A bug where the `rmmproc' did not remove all specified -message files has been fixed. -.IP scan -The `\-file' option is fully supported and will no longer -complain about empty folders. -.IP send -Supports `\-mime' and `\-split' to split large messages -into multiple partial messages using MIME. -.SH -Support Programs -.IP fmtdump \w'packmbox'u+2n -Can now read a format file, or a format string given -on the command line. -.IP popauth -New; manages the APOP authorization database (see above). -.IP sendmail -The \fIsendmail\fP replacement will be installed -only if your `mts' setting uses the `/smtp' option. -.IP slocal -A new man page for \fIslocal\fP is available; -the new `mbox' action is available to write a file -in \fIpackf\fP format; -a bug where extra `>' characters were written to MMDF-style -maildrops has been fixed; -if compiled with the MSGID option, can detect and suppress -reception of duplicate messages. -.IP viamail -New; bundles a directory (like \fIshar\fP\|) and -sends it through multi-media mail. - -.ds LH Changes for MH 6.7.2 -.bp -.ds CF Feb 1, 1992 -.SH -CHANGES FOR MH 6.7.2 -.LP -The MH.6.7.2 patch release is a maintenance -release. -This is the -current released version of \fIMH\fP as of February 1, 1992. -.PP -This release now supports the NCR Tower running SYS5R4. -The WP changes installed in MH.6.7.0 have been removed. -.SH -Shared Libraries -.LP -Support for SYS 5 shared libraries is in progress. -.PP -Support for Sun OS 4.0 shared libraries had been improved. -The \fIMH\fP library has been modified to move initialized -data into a data definition file. The shared library will -now consist of a \fBlibmh.so\fP and \fBlibmh.sa\fP file. -The shared library version number will no longer track the -\fIMH\fP patch release number, and its numbering begins with -version `1.1' with this release. -.SH -Replacement SendMail -.LP -Since many standard system programs expect to post mail by -invoking \fB/usr/lib/sendmail\fP, -a minimal replacement \fISendMail\fP is provided in -this release. This replacement is meant to be installed -on (e.g., diskless) client workstations which post mail -using SMTP, and do not run a message transport system. -It will call \fIpost\fP to post mail; be sure you have -configured \fIMH\fP with the `/smtp' mts option. -This sendmail replacement is installed in your -\fIMH\fP etc directory, and you should link -\fB/usr/lib/sendmail\fP -to it. -.KS -.SH -Format Strings -.LP -A manual page for the \fIfmtdump\fP format string disassembler -is supplied, and some new format functions were added: -.IP folder \w'%getenv'u+2n -In \fIscan\fP, this component escape -contains the name of the current folder. -It is not defined for other \fIMH\fP commands. -.IP getenv -This function escape returns the value of an environment variable. -.KE -.PP -There will be some additional changes in these routines in the -next patch release. -.KS -.SH -Other Bug Fixes and Enhancements -.LP -In addition to some other minor enhancements, -some bugs were fixed which in general were not user\-visible: -.IP "Blind lists" \w'datexparsing'u+2n -Users may now specify RFC822 address groups in their -alias files. These groups are implemented by \fIMH\fP -as blind lists. -.IP "date parsing" -A number of sites have brain-damaged versions of \fBlex\fP. -\fIMH\fP will now come with the date parser already run -through lex. -.IP mark -A bug dealing with \fImark\fP and the sequence named `cur' -is fixed. This was previously a problem for mh-e users. -.IP MH.doc -The \fIMH\fP nroff version of the manual no longer contains -teletype escape sequences. -.IP scan -Can now handle headers as long as 512 bytes. -.IP Signals -\fIMH\fP programs will no longer catch the \fBHUP\fP -and \fBTERM\fP signals while waiting for a sub-process. -This was causing hung processes when your terminal line was -was dropped unexpectedly. -.IP Signature -If your signature is not defined, \fIMH\fP will -use the value of the gecos field of your \fB/etc/passwd\fP -entry as your signature. -.IP "version.sh" -A bug in the \fBawk\fP script in \fBconfig/version.sh\fP -was fixed. -.KE -.ds LH Changes for MH 6.7.1a -.bp -.ds CF January 25, 1991 -.SH -CHANGES FOR MH 6.7.1a -.LP -The MH.6.7.1a patch was made available -on January 25, 1991 for limited distribution only. -(This release had some known bugs, and so was -not widely distributed.) -This release incorporates several new features -of particular note to users of sequences and format strings, -as well as some general documentation improvements. -There are a few minor enhancements and internal bug fixes also. -Complete documentation of these changes is given in -the individual manual pages, and the \fBREAD-ME\fP file. -.SH -Message Sequences -.LP -A new manual page, \fImh\-sequence\0\fP(5), has been added. -This manual page attempts to completely document the -syntax and semantics of \fIMH\fP message sequence specifications. -.PP -A powerful new feature is the ability to specify message -ranges with user-defined sequences. The specification -\*(lqname:n\*(rq may be used, and it designates up to the -first `n' messages (or last `n' messages for `-n') -which are elements of the user-defined sequence `name'. -.PP -The message -specifications \*(lqname:next\*(rq and \*(lqname:prev\*(rq -may also be used, and they -designate the -next or previous message (relative to the current message) -which is an element of the user-defined sequence `name'. -The specifications -\*(lqname:first\*(rq and \*(lqname:last\*(rq are equivalent -to \*(lqname:1\*(rq and \*(lqname:\-1\*(rq, respectively. -The specification \*(lqname:cur\*(rq is not allowed -(use just \*(lqcur\*(rq instead). -.PP -These specifications allow the user to step through -a sequence with a command like \*(lqshow name:next\*(rq. -.SH -Format Strings -.LP -\fIMH\fP format strings now support an if-then-elseif-else -clause (the `elseif' is new). This will make -format strings with multi-case conditions somewhat less complex. -.PP -A new format function `addr' had been added. This function -takes an address header name as its argument, and returns -a rendering of the address contained in that header -as \*(lquser@host\*(rq or \*(lqhost!user\*(rq. -.PP -Format widths now may be specified as a negative number. -This causes the output to be right-justified -within the format width. -.KS -.SH -Other Changes -.LP -Along with a few minor enhancements, -some bugs were fixed which in general were not user-visible: -.IP "fmtdump" \w'whatnow'u+2n -This new program -produces an pseudo-language -representation of an \fIMH\fP format file, vaguely -reminiscent of assembly language. While this output format -is not explicitly documented, -it can still be useful when debugging \fIMH\fP format files. -.IP "refile" -Now takes a `\-\[no\]rmmproc' switch. This makes it -easier to avoid loops when your \*(lqrmmproc\*(rq calls \fIrefile\fP. -.IP "slocal" -A problem with the UUCP-style mailboxes, -the `RPATHS' configuration option, -and the \*(lqReturn-Path:\*(rq header was fixed. -.IP "sortm" -Will ensure that no messages are lost if it is interrupted. -.IP "whatnow" -Will now tell you where it is leaving the draft, when -interrupted in the initial edit. Previously the draft -was simply unlinked. -.KE -.KS -.SH -Compilation Options -.IP "LOCKF" \w'whatnow'u+2n -This option causes \fIMH\fP to use the \fBlockf()\fP -system call for locking (if available), -instead of \fBflock()\fP. -.KE -.ds LH Changes for MH 6.7.1 -.bp -.ds CF December 14, 1990 -.SH -CHANGES FOR MH 6.7.1 -.LP -The MH.6.7.1 patch release is a maintenance -release, and as such, provides few changes from -the previous release. This is the -current released version of \fIMH\fP as of December 14, 1990. -.SH -User-Visible Changes -.LP -The major change in this release is to the -POP daemon (popd). In \fIMH\fP 6.7, -it was changed to be able to read both UUCP and -MMDF-style mailboxes. This did not work as reported. The -code has now been changed to parse MMDF-style mailboxes if -you are configuring MH to run with MMDF as your message -transport system. Otherwise, UUCP-style mailboxes are -expected. -.PP -Since there are number of client programs available for -only the POP2 protocol instead of POP3, popd has been -updated to support both protocols. This is a major -win. If you are compiling -with POP turned on, add the `POP2' option to -your \fIMH\fP config file, and the POP daemon -will respond to POP2 or POP3 commands. If you're using -POP, there's no reason not to include this option; it does -not affect the existing support for POP3. -.KS -.SH -Internal Changes -.LP -Some bugs were fixed which in general were not user-visible: -.IP "context" \w'replnnetcn'u+2n -Errors when writing out sequences are detected correctly. -.IP "inc" -No longer inserts extra blank lines into messages. -.IP "mh-format" -A nil pointer bug in the address parser was fixed. -.IP "repl, etc." -The malloc/free problem has been fixed. -.IP "rmf" -A spelling error in the `\-nointeractive' switch has been corrected. -.IP "rcvtty" -Will not print the message size if not available (i.e., zero). -.IP "send/post" -Illegal signatures (those containing unquoted "."s) will be quoted. -.KE -.ds LH Changes for MH 6.7.0 -.bp -.ds CF April 12, 1990 -.SH -GENERAL CHANGES FOR MH 6.7.0 -.LP -The author is pleased to announce that there are very few -user\-visible -changes to \fIMH\fP 6.7 from the previous \fIMH\fP 6.6 distribution. -The majority of development was in the form of bug fixes and -slight enhancements. -In addition, this release is slightly faster than the -previous release. -With a few minor exceptions, -it is backward\-compatible with the previous release. -\fIMH\fP 6.7.0 is the current released version of \fIMH\fP -as of April 12, 1990. -.PP -The changes were made mainly to generalize the source code to -be compatible with a larger range of systems and compilers. -There were many small changes to add declarations for ANSI C compliance. -The System 5 support has been brought up to SYS5 R3, and there is -support for Sun OS 4.0. -.SH -User\-Visible Changes -.LP -Here a quick summary of the -changes that were made which are not backward\-compatible with the -previous release of \fIMH\fP: -.IP repl \w'sortm'u+2n -The `\-format' and `\-noformat' switches -have not been functional since \fIMH\fP 5, and have been removed. -Any users who have these switches in their \fB\&.mh\(ruprofile\fP, -will have to remove them. -.IP sortm -Previously, in most cases \fIsortm\fP would fill\-in any -gaps in the numbering of a folder, -by renumbering the messages starting with `1'. -This will no longer occur; for this behavior, -use \*(lqfolder \-pack\*(rq. -.PP -.SH -Using Aliases -.LP -A new profile entry `Aliasfile:' has been added. The -\fIali\fP\^, \fIsend\fP\^, and \fIwhom\fP programs will look for -this profile entry and treat it as they would an argument to -`\-alias'. -This should make it easier for novice \fIMH\fP users to begin -using aliases. -.PP -.SH -Reading Network News & BBoards -.LP -The UCI BBoards facility can read local BBoards, and if compiled -with the `bboards: pop' and `pop: on' options, can also read remote -BBoards using the Post Office Protocol (POP ver. 3). -With this release, -\fIMH\fP can instead be compiled to read the Network News -(i.e., USENET) using the Network News Transfer Protocol (NNTP). -.PP -This capability is enabled by compiling \fIMH\fP with -the `bboards: nntp' and `pop: on' options. -Unfortunately, reading remote BBoards via the POP and reading the Network -News via the NNTP are mutually exclusive options. -.PP -To support the NNTP, -a new module, \fBuip/pshsbr.c\fP, is compiled and loaded into -\fIbbc\fP and \fImsh\fP instead of \fBuip/popsbr.c\fP. -The default BBoard is changed from \*(lqsystem\*(rq to \*(lqgeneral\*(rq -for the NNTP. -.PP -When reading BBoards, -\fIbbc\fP will first look for local BBoards, and then contact the -NNTP server to read the Network News. The location of the -NNTP server should be specified with the `nntphost:' -entry in the \fBmtstailor\fP file -(see the \fIMH\fP Administrator's Guide for details), -or may be specified on -the command line with the `\-host' switch. -.PP -.SH -Format Strings -.LP -The manual page \fImh\-format\fP\0(5) has -been rewritten to give a better explanation of how to write format strings, -and how they are interpreted by \fIMH\fP. -A line\-by\-line -description of the -default \fIrepl\fP form file (\fBreplcomps\fP) -is now included in that manual page. -.PP -.KS -Some new format functions were added, and others were augmented: -.IP trim \w'date2local'u+2n -Strips any leading and trailing white\-space from the current string value. -.IP date2local -Will coerce the date to the local timezone. -.IP date2gmt -Will coerce the date to GMT. -.IP divide -Divides the current numeric value by its argument. -This could be useful for -building \fIscan\fP format strings which print large -message sizes in \*(lqKb\*(rq or \*(lqMb\*(rq. -.IP friendly -If the address field cannot be parsed, -this function will return the text of the address header, -instead of a null string. -.IP szone -A flag indicating whether the timezone was explicit -in the date string. -.KE -.SH -PROGRAM CHANGES -.LP -In addition to the general changes mentioned above, -many programs have specific new features added, -either by new switches or by expanded functionality. -Each command's manual page gives complete information about -its new options. Here is a short summary. -.SH -User Interface Programs -.IP anno \w'prompter'u+2n -Accepts a `\-nodate' switch which inhibits the date annotation, -leaving only the body annotation. -.IP folder -When invoked with the `\-pack' switch -and the new `\-verbose' switch, \fIfolder\fP will -give information about the actions taken to renumber the folder. -.IP -On most systems, \fIfolder\fP can now create any non\-existing -parent folders of a new sub\-folder. -.IP forw -When making digests, \fIforw\fP\^ -will put the issue and volume numbers -in addition to the digest list name, in the digest trailer. -.IP inc -Detects NFS write failures, and will -not zero your maildrop in that event. -.IP msh -Supports a variant of the new \fIsortm\fP\^. -.IP prompter -Considers a period on a line by itself to signify end\-of\-file -when the `\-doteof' switch is specified. -.IP repl -The `\-[no]format' switches -have not been used since \fIMH\fP 5 and have been deleted. \fIrepl\fP -will now find filter files in the \fIMH\fP library area. -.IP scan -With the `\-file msgbox' switch, \fIscan\fP\^ -can list a \fIpackf\fP\|'d\-format file directly -(without using \fImsh\fP\^). -.IP -Lists messages in reverse order with the `\-reverse' switch. -This should be considered a bug. -.IP sortm -Now has the options: -`\-textfield field', `\-notextfield', -`\-limit days', and `\-nolimit'. -.IP -With these options, \fIsortm\fP can be instructed to sort a -folder based on the contents of an arbitrary header such -as \*(lqsubject\*(rq. -.IP -\fIsortm\fP minimizes renaming messages, and -will no longer arbitrarily pack folders; for this behavior, -use \*(lqfolder \-pack\*(rq. -.IP whatnow -Deletes the draft by renaming it with leading comma, instead -of unlinking it. -.SH -\fIMH\fP Support Programs -.LP -.KS -The following support programs also have changes or enhancements: -.IP mhl \w'rcvtty'u+2n -Will now accept a format string on any component, not just on -addresses and dates. -.KE -.IP popd -Will use \fIshadow\fP passwords if compiled with the -\fBSHADOW\fP option. It can now also -read UUCP\-style maildrops directly. -.IP rcvtty -If given no arguments, \fIrcvtty\fP will produce a \fBscan\fP -listing as specified by a format string or file; a default -format string is used if one is not specified. -.IP -Before the listing is written to the users terminal, the -terminal's bell is rung and a newline is output. -The `\-nobell' and the `\-nonewline' options -inhibit these functions. -.IP -\fIrcvtty\fP will obey terminal write -notification set by \fImesg\fP. -With the `\-biff' switch, \fIrcvtty\fP will -also obey the mail notification status set by -\fIbiff\fP. -.IP -On \fBBSD43\fP systems, as with \fIwrite\fP, -\fIrcvtty\fP will be installed set\-group\-id to the group \*(lqtty\*(rq. -.IP slocal -Understands UUCP\-style \*(lqFrom \*(rq lines and will write -output files using this format if appropriate. -Before invoking a delivery program, \fIslocal\fP will strip -such lines unless compiled with the \fBRPATHS\fP option, -in which case it will will convert such lines into -\*(lqReturn\-Path:\*(rq headers. -.IP -\fIslocal\fP has a new result code \*(lqN\*(rq, -for use in \fB.maildelivery\fP files. -With this result code, -\fIslocal\fP will -perform the action only if the message has not been delivered -and the previous action succeeded. This allows for performing -an action only if multiple conditions are true. -.SH -DOCUMENTATION -.LP -Several of the older \fIMH\fP papers have been difficult to format -because they depended on an older version of -PhDTeX which was -not supplied. These papers have been updated, and some TeX -library files are supplied in \fBpapers/doclib/\fP, so that -these papers may be generated on any system with TeX. -.PP -Many of the manual pages have been revised to include documentation -of new command options, and some have been expanded to give more detail. -All are now slightly reformatted at installation time -to make them more compatible with programs like \fImakewhatis\fP\^. -.PP -.SH -\fIMH\fP ADMINISTRATION -.LP -This section describes changes in configuring, compiling and -installing \fIMH\fP 6.7 and should not -be of interest to casual \fIMH\fP users. -The \fBREAD\-ME\fP file has been -considerably revised and expanded to give more detail -about the configuration and compilation options which -have been included in this release. Some compilation options -have been removed, and many new options have been added. -.PP -All \fIMH\fP \fBMakefile\fPs have been updated to work around some -incompatibilities introduced in newer versions of \fImake\fP\^. -\fIMH\fP programs will no longer be installed with the sticky\-bit -turned on. -.PP -Reading this section not a substitute for carefully -reading the \fBREAD\-ME\fP file before attempting to compile \fIMH\fP -.PP -.KS -.SH -Bug Fixes -.LP -Some bugs were fixed which in general were not user\-visible: -.IP "address parser" \w'dynamicnmemory'u+2n -Fixed to allow use of the \*(lqAT\*(rq domain, and some -minor bugs were fixed pertaining to address groups. -.IP "date parser" -Improved to accept more forms of illegal dates. Military -timezones were removed. -.IP "dynamic memory" -Many problems with corruption of the dynamic memory pool -have been fixed. -.IP locking -Will open files for write, if necessary to enable locking. -.IP "nil pointers" -All reported nil pointer problems have been fixed. -.IP replcomps -The \*(lqIn\-Reply\-To:\*(rq header had quotes added -around the date field to comply with RFC822. -.KE -.SH -White Pages -.LP -If \fIMH\fP is compiled with the \fBWP\fP option, -\fIsend\fP recognizes an address between \*(lq<<\*(rq and \*(lq>>\*(rq characters -such as: -.DS -To: << rose \-org psi >> -.DE -to be a name meaningful to a whitepages service. In order to expand the -name, \fIsend\fP must be invoked interactively -(i.e., not from \fIpush\fP\^). For each -name, \fIsend\fP will invoke a command called \fIfred\fP\^ -in a special mode asking to expand the name. -.PP -To get a copy of the white pages service, contact wpp\-manager@psi.com. -.SH -Configuration Options -.LP -Some configuration options have been added or changed: -.IP cc \w'bbdelivery'u+2n -To specify an alternate C compiler. -.IP ccoptions -Defaults to `\-O'. -.IP bboards -May now be defined as \*(lqon\*(rq, -\*(lqoff\*(rq, \*(lqpop\*(rq, or \*(lqnntp\*(rq. -.IP bbdelivery -Determines whether the bboard delivery agent -and library files should be installed. -.IP lex -To specify an alternate version of \fIlex\fP\^. -.IP mailgroup -If defined, \fIinc\fP will be made set\-group\-id to this group. -.IP sharedlib -For \fBSUN40\fP systems; if \*(lqon\*(rq, makes \fBlibmh.a\fP -into a shared library. -.IP slibdir -The directory where the above shared library should be installed. -.IP sprintf -Set this to \*(lqint\*(rq if that's what your \fIsprintf\fP\0(3) library -routine returns. -.SH -Compilation Options -.LP -For different configurations, -several `\-D' options to \fIcc\fP have been added or changed: -.IP BERK \w'SENDMAILBUG'u+1n -This disables the address and date parsing routines. If you -want to do much with \fImh\-format\fP\0(5), don't enable this. -.IP BSD43 -Will make \fIrcvtty\fP set\-group\-id to the group \*(lqtty\*(rq. -.IP DBM -For sites with a dbm\-style password file (such as with Yellow -Pages), \fIMH\fP will not read the entire passwd file into a cache. -At one site that runs YP on a large passwd file, using this -showed a 6:1 performance improvement. -.IP NETWORK -This option has been deleted. See \fBSOCKETS\fP. -.IP NOIOCTLH -Tells \fIMH\fP not to include the file \fBsys/ioctl.h\fP. Use this -if this file is not present on your system. -.IP NTOHLSWAP -On systems with TCP/IP networking, -\fImsh\fP will try to use the \fBntohl()\fP macro from the -file \fBnetinet/in.h\fP to byte\-swap the binary map files -it writes. -.IP SENDMAILBUG -Some versions of \fIsendmail\fP return a \fB451\fP (failure) reply code -when they don't mean to indicate failure. This option considers -that code to be equivalent to \fB250\fP (OK). -.IP SHADOW -Causes \fIpopd\fP to read the file \fB/etc/shadow\fP for -encrypted passwords instead of \fB/etc/passwd\fP. Use this if you -have a shadow password file (such as on newer versions of SYSTEM 5). -.IP SOCKETS -Enable this if you are on a non\-BSD system with a -socket interface for TCP/IP networking compatible with 4.2BSD -.SM -UNIX. -.NL -.IP SUN40 -Use on Suns running Sun OS 4.0 and later. -.IP SYS5 -This option has been updated to refer to SYS5 R3 and later systems. -.IP SYS5DIR -Use this if your system uses \*(lqstruct dirent\*(rq instead of -\*(lqstruct direct\*(rq. This should be true for systems based -on SYS5 R3 and later. -.IP TYPESIG -Defines the base type for the \fIsignal\fP system call. This -defaults to \*(lqint\*(rq, but should be defined as \*(lqvoid\*(rq -if appropriate for your system. -.IP WP -Enables support for the White Pages service. -.SH -Installation -.LP -\fIMH\fP will now -explicitly set the protection mode on every file it installs. -.PP -Previously any existing file installed by \fIMH\fP -would be backed up into -the source tree, and then overwritten. -Now, a few system\-dependent files will not be overwritten, and your -changes will have to be merged in by hand. -See the \fBREAD\-ME\fP file for more details. diff --git a/docs/historical/doclib/READ-ME b/docs/historical/doclib/READ-ME deleted file mode 100644 index 3063cefe..00000000 --- a/docs/historical/doclib/READ-ME +++ /dev/null @@ -1,39 +0,0 @@ -@(#)READ-ME,v 1.1.1.1 1993/01/30 04:41:04 jtc Exp - -This directory contains the TeX style and macro files necessary to -typset the following documents: - -mh4 Changes to The Rand MH Message Handling System: MH.4 -mh5 Changes to The Rand MH Message Handling System: MH.5 -realwork MH.5: How to process 200 messages a day ... -bboards The Rand MH Message Handling System: The UCI BBoards Facility -tutorial The Rand MH Message Handling System: Tutorial -multifarious MH: A Multifarious User Agent -trusted Design of the TTI Prototype Trusted Mail Agent - -These documents were originally designed to be typset with the AM font -family using UCI PhDTeX, which was AmSTeX with the UCI diss.sty style -preloaded. Since (not surprisingly) few sites had UCI PhDTeX, diss.sty -was included with the documents. - -In the intervening years, AmSTeX has evolved and few sites are still -using the AM font family. Although some of these documents are -now outdated, some sites may still want to generate and print them. -For this reason, this directory contains all files necessary to typeset -these documents using plain TeX (as of Version 2.991). - -The following newer documents are typset using LaTeX; the needed style -and macro files are present in each directory: - -beginners MH for Beginners -mh4mm MH for MM Users -mh6 Changes to The Rand MH Message Handling System: MH.6 -mh6.5 Changes to The Rand MH - Message Handling System: MH #6.5 for 4.3BSD UNIX -mznet MZnet: Mail Service for Personal Micro-Computer Systems - -Updating the older documents to use LaTeX would be possible but tedious, -especially considering how outdated most of the documents are. - - - John Romine 1/31/90 diff --git a/docs/historical/doclib/amstex.tex b/docs/historical/doclib/amstex.tex deleted file mode 100644 index 9eb17c1a..00000000 --- a/docs/historical/doclib/amstex.tex +++ /dev/null @@ -1,889 +0,0 @@ -% AMS-TEX VERSION 0.999999 - FOR USE WITH TEX VERSION 1.0 -% COPYRIGHT (C) 1983 BY AMERICAN MATHEMATICAL SOCIETY - - -% NOTE 1, NOTE 2, ... REFER TO NOTES IN THE FILE AMSTEX.DOC - - -% SPECIAL CATCODES - -\catcode`\@=13 % NOTE 1 -\def@{\errmessage{AmS-TeX error: \string@ has no current use - (use \string\@\space for printed \string@ symbol)}} -\catcode`\@=11 % NOTE 2 -\def\@{\char'100 } -\catcode`\~=13 % NOTE 3 - - -% AMSTEX ERROR MESSAGES - -\def\err@AmS#1{\errmessage{AmS-TeX error: #1}} % NOTE 4 - - -% SOME BASIC CONTROL SEQUENCES USED IN OTHER DEFINITIONS - -\def\eat@AmS#1{} - -\long\def\comp@AmS#1#2{\def\@AmS{#1}\def\@@AmS{#2}\ifx - \@AmS\@@AmS\def\cresult@AmS{T}\else\def\cresult@AmS{F}\fi} % NOTE 5 - -\def\in@AmS#1#2{\def\intest@AmS##1#1##2{\comp@AmS##2\end@AmS\if T\cresult@AmS - \def\cresult@AmS{F}\def\in@@AmS{}\else - \def\cresult@AmS{T}\def\in@@AmS####1\end@AmS{}\fi\in@@AmS}% - \def\cresult@AmS{F}\intest@AmS#2#1\end@AmS} % NOTE 6 - - -% BASIC MECHANICSMS TO ALLOW USER TO MAKE DEFINITIONS - -\let\relax@AmS=\relax % NOTE 7 - -% CHANGES IN plain WHERE THERE IS \relax, THAT MUST NOW BE \relax@AmS - -\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi - \relax@AmS} - -\def\iterate{\body\let\next\iterate \else\let\next\relax@AmS\fi \next} - -\def\enskip{\hskip.5em\relax@AmS} - -\def\strut{\relax@AmS\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi} - -\let\+=\relax@AmS -\def\sett@b{\ifx\next\+\let\next\relax@AmS - \def\next{\afterassignment\s@tt@b\let\next}% - \else\let\next\s@tcols\fi\next} -\def\s@tt@b{\let\next\relax@AmS\us@false\m@ketabbox} - -\def\smash{\relax@AmS % \relax@AmS, in case this comes first in \halign - \ifmmode\def\next{\mathpalette\mathsm@sh}\else\let\next\makesm@sh - \fi\next} - -% (END OF CHANGES TO plain) - -\def\define#1{\expandafter\ifx\csname\expandafter\eat@AmS\string#1\endcsname - \relax@AmS\def\dresult@AmS{\def#1}\else - \err@AmS{\string#1\space is already defined}\def - \dresult@AmS{\def\garbage@AmS}\fi\dresult@AmS} % NOTE 8 - -\let\redefine=\def - -\def\predefine#1#2{\let#1=#2} - - -% MACROS FOR DEFICIENT KEYBOARDS - -\chardef\plus=`+ -\chardef\equal=`= -\chardef\less=`< -\chardef\more=`> - - -% MACROS FOR HANDLING TEXT - -\let\ic@AmS=\/ -\def\/{\unskip\ic@AmS} - -\def\Space@AmS.{\futurelet\Space@AmS\relax@AmS} -\Space@AmS. % % NOTE 10 (no NOTE 9) - -\def~{\unskip\futurelet\tok@AmS\s@AmS} -\def\s@AmS{\ifx\tok@AmS\Space@AmS\def\next@AmS{}\else - \def\next@AmS{\ }\fi\penalty 9999 \next@AmS} % NOTE 11 - -\def\period{\unskip.\spacefactor3000 { }} - - -\def\srdr@AmS{\thinspace} % NOTE 12 -\def\drsr@AmS{\kern .02778em } -\def\sldl@AmS{\kern .02778em} -\def\dlsl@AmS{\thinspace} - -\def\lqtest@AmS#1{\comp@AmS{#1}`\if T\cresult@AmS\else\comp@AmS{#1}\lq\fi} - - % NOTE 13 - -\def\qspace#1{\unskip - \lqtest@AmS{#1}\let\fresult@AmS=\cresult@AmS\if T\cresult@AmS - \def\qspace@AmS{\ifx\tok@AmS\Space@AmS\def\next@AmS{\dlsl@AmS`}\else - \def\next@AmS{\qspace@@AmS}\fi\next@AmS}\else - \def\qspace@AmS{\ifx\tok@AmS\Space@AmS\def\next@AmS{\drsr@AmS'}\else - \def\next@AmS{\qspace@@AmS}\fi\next@AmS}\fi - \futurelet\tok@AmS\qspace@AmS} % NOTE 14 - -\def\qspace@@AmS{\futurelet\tok@AmS\qspace@@@AmS} - -\def\qspace@@@AmS{\if T\fresult@AmS \ifx\tok@AmS`\sldl@AmS`\else - \ifx\tok@AmS\lq\sldl@AmS`\else \dlsl@AmS`\fi \fi - \else \ifx\tok@AmS'\srdr@AmS'\else - \ifx\tok@AmS\rq\srdr@AmS'\else \drsr@AmS'\fi \fi - \fi} - - - -\def\dash{\unskip\penalty0---} -\def\slash{\unskip/\penalty\exhyphenpenalty} - -\def\{{\relax@AmS\ifmmode\delimiter"4266308 \else - $\delimiter"4266308 $\fi} % NOTE 16 (No NOTE 15) - -\def\}{\relax@AmS\ifmmode\delimiter"5267309 \else$\delimiter"5267309 $\fi} - - -\def\AmSTeX{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em - $\cal S$-\TeX} - -\def\smallvspace{\vskip\smallskipamount} % NOTE 17 -\def\medvspace{\vskip\medskipamount} -\def\bigvspace{\vskip\bigskipamount} - - -\def\linebreak{\unskip\penalty-10000 } % NOTE 18 -\def\pagebreak{\vadjust{\penalty-10000 }} -\def\newpage{\par\vfill\eject} - -\def\newline{\ifvmode \err@AmS{There's no line here to break}\else - \hfil\penalty-10000\fi} - -\def\topspace#1{\insert\topins{\penalty100 \splittopskip=0pt - \vbox to #1{}}} -\def\midspace#1{\setbox0=\vbox to #1{}\advance\dimen0 by \pagetotal - \ifdim\dimen0>\pagegoal\topspace{#1}\else\vadjust{\box0}\fi} - -\long\def\comment{\begingroup - \catcode`\{=12 \catcode`\}=12 \catcode`\#= 12 \catcode`\^^M=12 - \catcode`\%=12 \catcode`^^A=14 - \comment@AmS} -\begingroup\catcode`^^A=14 -\catcode`\^^M=12 ^^A -\long\gdef\comment@AmS#1^^M#2{\comp@AmS\endcomment{#2}\if T\cresult@AmS^^A -\def\comment@@AmS{\endgroup}\else^^A - \long\def\comment@@AmS{\comment@AmS#2}\fi\comment@@AmS}\endgroup % NOTE 19 - - -% STYLE, SPACING AND ALTERNATE NAMES - -\let\dsize=\displaystyle -\let\tsize=\textstyle -\let\ssize=\scriptstyle -\let\sssize=\scriptscriptstyle - -\def\text#1{\hbox{\rm#1}} - -\def\quad{\relax@AmS\ifmmode - \hbox{\hskip1em}\else\hskip1em\relax@AmS\fi} % NOTE 20 -\def\qquad{\quad\quad} -\def\,{\relax@AmS\ifmmode\mskip\thinmuskip\else$\mskip\thinmuskip$\fi} -\def\;{\relax@AmS - \ifmmode\mskip\thickmuskip\else$\mskip\thickmuskip$\fi} - - -\def\stack#1#2{{#1\atop #2}} - -\def\frac#1#2{{#1\over#2}} -\def\Frac#1#2{{\displaystyle{#1\over#2}}} - -\def\thickfrac#1#2{{#1\above1pt #2}} - -\def\binom#1#2{{#1\choose #2}} -\def\Binom#1#2{{\displaystyle{#1\choose #2}}} - - -\mathchardef\:="603A % NOTE 21 - - -% BIG DELIMITERS - -\def\big@AmS#1{{\hbox{$\left#1\vbox to\big@@AmS{}\right.\offspace@AmS$}}} -\def\Big@AmS#1{{\hbox{$\left#1\vbox to\Big@@AmS{}\right.\offspace@AmS$}}} -\def\bigg@AmS#1{{\hbox{$\left#1\vbox to\bigg@@AmS{}\right.\offspace@AmS$}}} -\def\Bigg@AmS#1{{\hbox{$\left#1\vbox to\Bigg@@AmS{}\right.\offspace@AmS$}}} -\def\offspace@AmS{\nulldelimiterspace0pt \mathsurround0pt } - -\def\big@@AmS{8.5pt} % NOTE 24 (no NOTES 22, 23) -\def\Big@@AmS{11.5pt} -\def\bigg@@AmS{14.5pt} -\def\Bigg@@AmS{17.5pt} - -\def\bigl{\mathopen\big@AmS} -\def\bigm{\mathrel\big@AmS} -\def\bigr{\mathclose\big@AmS} -\def\Bigl{\mathopen\Big@AmS} -\def\Bigm{\mathrel\Big@AmS} -\def\Bigr{\mathclose\Big@AmS} -\def\biggl{\mathopen\bigg@AmS} -\def\biggm{\mathrel\bigg@AMS} -\def\biggr{\mathclose\bigg@AmS} -\def\Biggl{\mathopen\Bigg@AmS} -\def\Biggm{\mathrel\Bigg@AmS} -\def\Biggr{\mathclose\Bigg@AmS} - - -% MAKING ' WORK FOR PRIMES - -{\catcode`'=13 \gdef'{^\bgroup\prime\prime@AmS}} -\def\prime@AmS{\futurelet\tok@AmS\prime@@AmS} -\def\prime@@@AmS#1{\futurelet\tok@AmS\prime@@AmS} -\def\prime@@AmS{\ifx\tok@AmS'\def\next@AmS{\prime\prime@@@AmS}\else - \def\next@AmS{\egroup}\fi\next@AmS} - - -% SMASHES % NOTE 25 - -\def\topsmash{\relax@AmS\ifmmode\def\topsmash@AmS - {\mathpalette\mathtopsmash@AmS}\else - \let\topsmash@AmS=\maketopsmash@AmS\fi\topsmash@AmS} - -\def\maketopsmash@AmS#1{\setbox0=\hbox{#1}\topsmash@@AmS} - -\def\mathtopsmash@AmS#1#2{\setbox0=\hbox{$#1{#2}$}\topsmash@@AmS} - -\def\topsmash@@AmS{\vbox to 0pt{\kern-\ht0\box0}} - - -\def\botsmash{\relax@AmS\ifmmode\def\botsmash@AmS - {\mathpalette\mathbotsmash@AmS}\else - \let\botsmash@AmS=\makebotsmash@AmS\fi\botsmash@AmS} - -\def\makebotsmash@AmS#1{\setbox0=\hbox{#1}\botsmash@@AmS} - -\def\mathbotsmash@AmS#1#2{\setbox0=\hbox{$#1{#2}$}\botsmash@@AmS} - -\def\botsmash@@AmS{\vbox to \ht0{\box0\vss}} - - - -% LARGE OPERATORS - -\def\LimitsOnSums{\let\slimits@AmS=\displaylimits} % NOTE 26 -\def\NoLimitsOnSums{\let\slimits@AmS=\nolimits} - -\LimitsOnSums - -\mathchardef\coprod@AmS"1360 \def\coprod{\coprod@AmS\slimits@AmS} -\mathchardef\bigvee@AmS"1357 \def\bigvee{\bigvee@AmS\slimits@AmS} -\mathchardef\bigwedge@AmS"1356 \def\bigwedge{\bigwedge@AmS\slimits@AmS} -\mathchardef\biguplus@AmS"1355 \def\biguplus{\biguplus@AmS\slimits@AmS} -\mathchardef\bigcap@AmS"1354 \def\bigcap{\bigcap@AmS\slimits@AmS} -\mathchardef\bigcup@AmS"1353 \def\bigcup{\bigcup@AmS\slimits@AmS} -\mathchardef\prod@AmS"1351 \def\prod{\prod@AmS\slimits@AmS} -\mathchardef\sum@AmS"1350 \def\sum{\sum@AmS\slimits@AmS} -\mathchardef\bigotimes@AmS"134E \def\bigotimes{\bigotimes@AmS\slimits@AmS} -\mathchardef\bigoplus@AmS"134C \def\bigoplus{\bigoplus@AmS\slimits@AmS} -\mathchardef\bigodot@AmS"134A \def\bigodot{\bigodot@AmS\slimits@AmS} -\mathchardef\bigsqcup@AmS"1346 \def\bigsqcup{\bigsqcup@AmS\slimits@AmS} - - -\def\LimitsOnInts{\let\ilimits@AmS=\displaylimits} -\def\NoLimitsOnInts{\let\ilimits@AmS=\nolimits} - -\NoLimitsOnInts - -\mathchardef\int@AmS"1352 -\def\int{\gdef\intflag@AmS{T}\int@AmS\ilimits@AmS} % NOTE 27 - -\mathchardef\oint@AmS"1348 \def\oint{\gdef\intflag@AmS{T}\oint@AmS\ilimits@AmS} - -\def\inttest@AmS#1{\def\intflag@AmS{F}\setbox0=\hbox{$#1$}} - - -\def\intic@AmS{\mathchoice{\hbox{\hskip5pt}}{\hbox - {\hskip4pt}}{\hbox{\hskip4pt}}{\hbox{\hskip4pt}}} % NOTE 28 -\def\negintic@AmS{\mathchoice - {\hbox{\hskip-5pt}}{\hbox{\hskip-4pt}}{\hbox{\hskip-4pt}}{\hbox{\hskip-4pt}}} -\def\intkern@AmS{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}} -\def\intdots@AmS{\mathchoice{\cdots}{{\cdotp}\mkern 1.5mu - {\cdotp}\mkern 1.5mu{\cdotp}}{{\cdotp}\mkern 1mu{\cdotp}\mkern 1mu - {\cdotp}}{{\cdotp}\mkern 1mu{\cdotp}\mkern 1mu{\cdotp}}} - -\newcount\intno@AmS % NOTE 29 - -\def\intii{\gdef\intflag@AmS{T}\intno@AmS=2\futurelet % NOTE 30 - \tok@AmS\ints@AmS} -\def\intiii{\gdef\intflag@AmS{T}\intno@AmS=3\futurelet\tok@AmS\ints@AmS} -\def\intiv{\gdef\intflag@AmS{T}\intno@AmS=4\futurelet\tok@AmS\ints@AmS} -\def\intdotsint{\gdef\intflag@AmS{T}\intno@AmS=0\futurelet - \tok@AmS\ints@AmS} - -\def\ints@AmS{\findlimits@AmS\ints@@AmS} - -\def\findlimits@AmS{\def\ignoretoken@AmS{T}\ifx\tok@AmS\limits - \def\limits@AmS{T}\else\ifx\tok@AmS\nolimits\def\limits@AmS{F}\else - \def\ignoretoken@AmS{F}\ifx\ilimits@AmS\nolimits\def\limits@AmS{F}\else - \def\limits@AmS{T}\fi\fi\fi} - -\def\multintlimits@AmS{\int@AmS\ifnum \intno@AmS=0\intdots@AmS - \else \intkern@AmS\fi - \ifnum\intno@AmS>2\int@AmS\intkern@AmS\fi - \ifnum\intno@AmS>3 \int@AmS\intkern@AmS\fi \int@AmS} - -\def\multint@AmS{\int\ifnum \intno@AmS=0\intdots@AmS\else\intkern@AmS\fi - \ifnum\intno@AmS>2\int\intkern@AmS\fi - \ifnum\intno@AmS>3 \int\intkern@AmS\fi \int} - -\def\ints@@AmS{\if F\ignoretoken@AmS\def\ints@@@AmS{\if - T\limits@AmS\negintic@AmS - \mathop{\intic@AmS\multintlimits@AmS}\limits\else - \multint@AmS\nolimits\fi}\else\def\ints@@@AmS{\if T\limits@AmS - \negintic@AmS\mathop{\intic@AmS\multintlimits@AmS}\limits\else - \multint@AmS\nolimits\fi\eat@AmS}\fi\ints@@@AmS} - - - -\def\LimitsOnNames{\let\nlimits@AmS=\displaylimits} -\def\NoLimitsOnNames{\let\nlimits@AmS=\nolimits} - -\LimitsOnNames - -\def\operatorname#1{\mathop{\mathcode`'="7027 \mathcode`-="70 - \rm #1}\nolimits} % NOTE 31 - -\def\operatornamewithlimits#1{\mathop{\mathcode`'="7027 \mathcode`-="702D - \rm #1}\nlimits@AmS} - -\def\operator#1{\mathop{#1}\nolimits} -\def\operatorwithlimits#1{\mathop{#1}\displaylimits} - -\def\limover{\mathop{\overline{\rm lim}}} -\def\limunder{\mathop{\underline{\vrule height 0pt depth .2ex width 0pt - \rm lim}}} -\def\liminj{\setbox0=\hbox{\rm lim}\mathop{\rm lim} - \limits_{\topsmash{\hbox to \wd0{\leftarrowfill}}}} -\def\limproj{\setbox0=\hbox{\rm lim}\mathop{\rm lim} - \limits_{\topsmash{\hbox to \wd0{\rightarrowfill}}}} - - -% SUBSIDIARY CONSIDERATIONS FOR LARGE OPERATORS -- BUFFER AND SHAVE - -\newdimen\buffer@AmS -\buffer@AmS=\fontdimen13\tenex % NOTE 32 -\newdimen\buffer -\buffer=\buffer@AmS - -\def\changebuffer#1{\fontdimen13 \tenex=#1 \buffer=\fontdimen13 \tenex} -\def\resetbuffer{\fontdimen13 \tenex=\buffer@AmS \buffer=\buffer@AmS} - -\def\shave#1{\mathop{\hbox{$\fontdimen13\tenex=0pt % NOTE 33 - \displaystyle{#1}$}}\fontdimen13\tenex=1\buffer} - - -\def\topshave#1{\topsmash{#1}\vphantom{\shave{#1}}} - -\def\botshave#1{\botsmash{#1}\vphantom{\shave{#1}}} - - - -% ALIGNED UNITS - -\def\Let@AmS{\relax@AmS\iffalse{\fi\let\\=\cr\iffalse}\fi} % NOTE 34 - -\def\align{\def\vspace##1{\noalign{\vskip ##1}} % NOTE 35 - \,\vcenter\bgroup\Let@AmS\tabskip=0pt\openup3pt\mathsurround=0pt % NOTE 35.1 - \halign\bgroup\strut - \hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil\cr} % NOTES 36, 37 - -\def\endalign{\strut\crcr\egroup\egroup} - - -\def\bunch{\def\vspace##1{\noalign{\vskip ##1}} - \,\vcenter\bgroup\Let@AmS\tabskip=0pt\openup3pt\mathsurround=0pt - \halign\bgroup\strut\hfil$\displaystyle{##}$\hfil\cr} - -\def\endbunch{\strut\crcr\egroup\egroup} - -\def\matrix{\catcode`\^^I=4 \futurelet\tok@AmS\matrix@AmS} % NOTE 38 - -\def\matrix@AmS{\relax@AmS\iffalse{\fi \ifnum`}=0\fi\ifx\tok@AmS\format - \def\next@AmS{\expandafter\matrix@@AmS\eat@AmS}\else - \def\next@AmS{\matrix@@@AmS}\fi\next@AmS} - -\def\matrix@@@AmS{ - \ifnum`{=0\fi\iffalse}\fi\,\vcenter\bgroup\Let@AmS\tabskip=0pt - \normalbaselines\halign\bgroup $\strut\hfil##\hfil$&&\quad$\strut - \hfil##\hfil$\cr\strut\cr\noalign{\kern-\baselineskip}} % NOTE 39 - -\def\matrix@@AmS#1\\{ - \def\premable@AmS{#1}\toks@{##} - \def\c{$\copy\strutbox\hfil\the\toks@\hfil$}\def\r - {$\copy\strutbox\hfil\the\toks@$}% - \def\l{$\copy\strutbox\the\toks@\hfil$}% -\setbox0= -\hbox{\xdef\Preamble@AmS{\premable@AmS}} - \def\vspace##1{\noalign{\vskip ##1}}\ifnum`{=0\fi\iffalse}\fi -\,\vcenter\bgroup\Let@AmS - \tabskip=0pt\normalbaselines\halign\bgroup\span\Preamble@AmS\cr - \mathstrut\cr\noalign{\kern-\baselineskip}} - % NOTE 40 - -\def\endmatrix{\crcr\mathstrut\cr\noalign{\kern-\baselineskip - }\egroup\egroup\,\catcode`\^^I=10 } - - - -\def\matrixp{\left(\matrix} -\def\endmatrixp{\endmatrix\right)} - -\def\matrixb{\left[\matrix} -\def\endmatrixb{\endmatrix\right]} - -\def\matrixv{\left|\matrix} -\def\endmatrixv{\endmatrix\right|} - -\def\matrixvv{\left\|\matrix} -\def\endmatrixvv{\endmatrix\right\|} - - -\def\spacedots#1for#2{\multispan#2\leaders\hbox{$\mkern#1mu.\mkern - #1mu$}\hfill} -\def\dotsfor#1{\spacedots 1.5 for #1} % NOTE 41 - - -\def\enabletabs{\catcode`\^^I=4 \enabletabs@AmS} -\def\enabletabs@AmS#1\disabletabs{#1\catcode`\^^I=10 } % NOTE 42 - -\def\Enabletabs{\catcode`\^^I=4 } -\def\Disabletabs{\catcode`\^^I=10 } - - -\def\smallmatrix{\futurelet\tok@AmS\smallmatrix@AmS} % NOTE 43 - -\def\smallmatrix@AmS{\relax@AmS\iffalse{\fi \ifnum`}=0\fi\ifx\tok@AmS\format - \def\next@AmS{\expandafter\smallmatrix@@AmS\eat@AmS}\else - \def\next@AmS{\smallmatrix@@@AmS}\fi\next@AmS} - -\def\smallmatrix@@@AmS{ - \ifnum`{=0\fi\iffalse}\fi\,\vcenter\bgroup\Let@AmS\tabskip=0pt - \baselineskip8pt\lineskip1pt\lineskiplimit1pt - \halign\bgroup $\strut\hfil##\hfil$&&\;$\strut - \hfil##\hfil$\cr\strut\cr\noalign{\kern-\baselineskip}} - -\def\smallmatrix@@AmS#1\\{ - \def\premable@AmS{#1}\toks@{##} - \def\c{$\copy\strutbox\hfil\the\toks@\hfil$}\def\r - {$\copy\strutbox\hfil\the\toks@$}% - \def\l{$\copy\strutbox\the\toks@\hfil$}% -\hbox{\xdef\Preamble@AmS{\premable@AmS}} - \def\vspace##1{\noalign{\vskip ##1}}\ifnum`{=0\fi\iffalse}\fi -\,\vcenter\bgroup\Let@AmS - \tabskip=0pt\baselineskip8pt\lineskip1pt\lineskiplimit1pt -\halign\bgroup\span\Preamble@AmS\cr - \mathstrut\cr\noalign{\kern-\baselineskip}} - -\def\endsmallmatrix{\crcr\mathstrut\cr\noalign{\kern-\baselineskip} - \egroup\egroup\,} - - -\def\cases{\left\{ \,\vcenter\bgroup\Let@AmS\normalbaselines\tabskip=0pt - \halign\bgroup$##\hfil$&\qquad$##\hfil$\cr} % NOTE 44 - -\def\endcases{\crcr\egroup\egroup\right.} - - -% TAGGING - -\def\TagsOnLeft{\def\tagposition@AmS{L}} -\def\TagsOnRight{\def\tagposition@AmS{R}} -\def\TagsAsMath{\def\tagstyle@AmS{M}} -\def\TagsAsText{\def\tagstyle@AmS{T}} - -\TagsOnLeft -\TagsAsText - -\def\tag#1$${\if L\tagposition@AmS - \leqno\else\eqno\fi\def\atag@AmS{T}\maketag@AmS#1\tagend@AmS$$} % NOTE 45 - -\def\maketag@AmS{\futurelet\tok@AmS\maketag@@AmS} % NOTE 46 -\def\maketag@@AmS{\ifx\tok@AmS[\def\next@AmS{\maketag@@@AmS}\else - \def\next@AmS{\maketag@@@@AmS}\fi\next@AmS} -\def\maketag@@@AmS[#1]#2\tagend@AmS{\if F\atag@AmS\else % NOTE 46.1 - \if M\tagstyle@AmS\hbox{$#1$}\else\hbox{#1}\fi\fi - \gdef\atag@AmS{F}} -\def\maketag@@@@AmS#1\tagend@AmS{\if F\atag@AmS \else - \if T\autotag@AmS \setbox0=\hbox - {\if M\tagstyle@AmS\tagform@AmS{$#1$}\else\tagform@AmS{#1}\fi} - \ifdim\wd0=0pt \tagform@AmS{*}\else - \if M\tagstyle@AmS\tagform@AmS{$#1$}\else\tagform@AmS{#1}\fi - \fi\else - \if M\tagstyle@AmS\tagform@AmS{$#1$}\else\tagform@AmS{#1}\fi - \fi - \fi\gdef\atag@AmS{F}} - -\def\tagform@AmS#1{\hbox{\rm(#1\unskip)}} - -\def\AutoTag{\def\autotag@AmS{T}} -\def\NoAutoTag{\def\autotag@AmS{F}} - -\NoAutoTag - - - - - -\def\inaligntag@AmS{F} \def\inbunchtag@AmS{F} % NOTE 47 - -\def\CenteredTagsOnBrokens{\def\centerbroken@AmS{T}} % NOTE 48 -\def\TopOrBottomTagsOnBrokens{\def\centerbroken@AmS{F}} -\TopOrBottomTagsOnBrokens - -\def\broken{\global\setbox0=\vbox\bgroup\Let@AmS\tabskip=0pt - \if T\inaligntag@AmS\else - \if T\inbunchtag@AmS\else\openup3pt\fi\fi\mathsurround=0pt - \halign\bgroup\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfill - \cr} - % NOTE 49 -\def\endbroken{\strut\crcr\egroup\egroup - \global\setbox7=\vbox{\unvbox0\setbox1=\lastbox - \hbox{\unhbox1\unskip\setbox2=\lastbox - \unskip\setbox3=\lastbox - \global\setbox4=\copy3 - \box3\box2}}% % NOTE 50 - \if L\tagposition@AmS - \if T\inaligntag@AmS - \if T\centerbroken@AmS\gdef\broken@AmS - {&\vcenter{\vbox{\moveleft\wd4\box7}}}% % NOTE 51 - \else - \gdef\broken@AmS{&\vbox{\moveleft\wd4\vtop{\unvbox7}}}% % NOTE 52 - \fi - \else % NOTE 53 - \if T\centerbroken@AmS\gdef\broken@AmS - {\vcenter{\box7}}% - \else - \gdef\broken@AmS{\vtop{\unvbox7}}% - \fi - \fi - \else % NOTE 55 (no note 54) - \if T\inaligntag@AmS - \if T\centerbroken@AmS - \gdef\broken@AmS{&\vcenter{\vbox{\moveleft\wd4\box7}}}% - \else - \gdef\broken@AmS{&\vbox{\moveleft\wd4\box7}}% - \fi - \else - \if T\centerbroken@AmS - \gdef\broken@AmS{\vcenter{\box7}}% - \else - \gdef\broken@AmS{\box7}% - \fi - \fi - \fi\broken@AmS} - -\def\cbroken{\xdef\centerbroken@@AmS{\centerbroken@AmS}% - \def\centerbroken@AmS{T}\broken} % NOTE 56 -\def\endcbroken{\endbroken\def\centerbroken@AmS{\centerbroken@@AmS}} - - -\def\multline#1${\in@AmS\tag{#1}\if T\cresult@AmS - \def\multline@AmS{\def\atag@AmS{T}\getmltag@AmS#1$}\else - \def\multline@AmS{\def\atag@AmS{F}\setbox9=\hbox{}\multline@@AmS - \multline@@@AmS#1$}\fi\multline@AmS} % NOTE 57 - -\def\getmltag@AmS#1\tag#2${\setbox9=\hbox{\maketag@AmS#2\tagend@AmS}% - \multline@@AmS\multline@@@AmS#1$} - -\def\multline@@AmS{\if L\tagposition@AmS - \def\lwidth@AmS{\hskip\wd9}\def\rwidth@AmS{\hskip0pt}\else - \def\lwidth@AmS{\hskip0pt}\def\rwidth@AmS{\hskip\wd9}\fi} % NOTE 58 - -\def\multline@@@AmS{\def\vspace##1{\noalign{\vskip ##1}}% - \def\shoveright##1{##1\hfilneg\rwidth@AmS\quad} % NOTE 59 - \def\shoveleft##1{\setbox % NOTE 60 - 0=\hbox{$\displaystyle{}##1$}% - \setbox1=\hbox{$\displaystyle##1$}% - \ifdim\wd0=\wd1 - \hfilneg\lwidth@AmS\quad##1\else - \setbox2=\hbox{\hskip\wd0\hskip-\wd1}% - \hfilneg\lwidth@AmS\quad\hskip-.5\wd2 ##1\fi} - \vbox\bgroup\Let@AmS\openup3pt\halign\bgroup\hbox to \the\displaywidth - {$\displaystyle\hfil{}##\hfil$}\cr\hfilneg\quad - \if L\tagposition@AmS\hskip-1em\copy9\quad\else\fi} % NOTE 61 - - -\def\endmultline{\if R\tagposition@AmS\quad\box9 % NOTES 62, 63 - \hskip-1em\else\fi\quad\hfilneg\crcr\egroup\egroup} - - - -\def\aligntag#1$${\def\inaligntag@AmS{T}\openup3pt\mathsurround=0pt % NOTE 64 - \Let@AmS - \def\tag{\gdef\atag@AmS{T}&} % NOTE 65 - \def\vspace##1{\noalign{\vskip##1}} % NOTE 66 - \def\xtext##1{\noalign{\hbox{##1}}} % NOTE 67 - \def\break{\noalign{\penalty-10000 }} % NOTE 68 - \def\nobreak{\noalign{\penalty 10000 }} - \def\allowbreak{\noalign{\penalty 0 }} - \def\goodbreak{\noalign{\penalty -500 }} - \gdef\atag@AmS{F}% -\if L\tagposition@AmS\laligntag@AmS#1$$\else - \raligntag@AmS#1$$\fi} - -\def\raligntag@AmS#1$${\tabskip\centering - \halign to \the\displaywidth -{\hfil$\displaystyle{##}$\tabskip 0pt - &$\displaystyle{{}##}$\hfil\tabskip\centering - &\llap{\maketag@AmS##\tagend@AmS}\tabskip 0pt\cr\noalign{\vskip- - \lineskiplimit}#1\crcr}$$} - -\def\laligntag@AmS#1$${\tabskip\centering % NOTE 69 - \halign to \the\displaywidth -{\hfil$\displaystyle{##}$\tabskip0pt - &$\displaystyle{{}##}$\hfil\tabskip\centering - &\kern-\displaywidth\rlap{\maketag@AmS##\tagend@AmS}\tabskip - \the\displaywidth\cr\noalign{\vskip-\lineskiplimit}#1\crcr}$$} - -\def\endaligntag{} - -\def\bunchtag#1$${\def\inbunchtag@AmS{T}\openup3pt\mathsurround=0pt % NOTE 70 - \Let@AmS - \def\tag{\gdef\atag@AmS{T}&} - \def\vspace##1{\noalign{\vskip##1}} - \def\xtext##1{\noalign{\hbox{##1}}} - \def\break{\noalign{\penalty-10000 }} - \def\nobreak{\noalign{\penalty 10000 }} - \def\allowbreak{\noalign{\penalty 0 }} - \def\goodbreak{\noalign{\penalty -500 }} - \if L\tagposition@AmS\lbunchtag@AmS#1$$\else - \rbunchtag@AmS#1$$\fi} - -\def\rbunchtag@AmS#1$${\tabskip\centering - \halign to \displaywidth {$\hfil\displaystyle{##}\hfil$& - \llap{\maketag@AmS##\tagend@AmS}\tabskip 0pt\cr\noalign{\vskip- - \lineskiplimit}#1\crcr}$$} - -\def\lbunchtag@AmS#1$${\tabskip\centering - \halign to \displaywidth -{$\hfil\displaystyle{##}\hfil$&\kern- - \displaywidth\rlap{\maketag@AmS##\tagend@AmS}\tabskip\the\displaywidth\cr - \noalign{\vskip-\lineskiplimit}#1\crcr}$$} - -\def\endbunchtag{} - - -% MISCELLANEOUS - -\def\hyphen{\mathchar"702D} % NOTE 71 -\def\endash{\mathchar"707B} -\def\emdash{\mathchar"707C} -\def\rightquote{\mathchar"7027} -\def\rightquoteii{\mathchar"7022} -\def\leftquote{\mathchar"7060} -\def\leftquoteii{\mathchar"705C} - -\def\mod#1{\allowbreak\mkern18mu{\rm mod}\,\,#1} - -% CONTINUED FRACTIONS - -\def\numeratorleft#1{#1\hskip 0pt plus 1filll\relax@AmS} -\def\numeratorright#1{\hskip 0pt plus 1filll\relax@AmS#1} -\def\numeratorcenter#1{\hskip 0pt plus 1filll\relax@AmS - #1\hskip 0pt plus 1filll\relax@AmS} - -\def\cfrac@AmS#1,{\def\numerator@AmS{#1}\cfrac@@AmS*} % NOTE 72 - -\def\cfrac@@AmS#1;#2#3\cfend@AmS{\comp@AmS\cfmark@AmS{#2}\if T\cresult@AmS - \gdef\cfrac@@@AmS - {\expandafter\eat@AmS\numerator@AmS\strut\over\eat@AmS#1}\else - \comp@AmS;{#2}\if T\cresult@AmS\gdef\cfrac@@@AmS - {\expandafter\eat@AmS\numerator@AmS\strut\over\eat@AmS#1}\else -\gdef\cfrac@@@AmS{\if R\cftype@AmS\hfill\else\fi - \expandafter\eat@AmS\numerator@AmS\strut - \if L\cftype@AmS\hfill\else\fi\over - \eat@AmS#1\displaystyle {\cfrac@AmS*#2#3\cfend@AmS}} - \fi\fi\cfrac@@@AmS} - -\def\cfrac#1{\def\cftype@AmS{C}\cfrac@AmS*#1;\cfmark@AmS\cfend@AmS} - -\def\cfracl#1{\def\cftype@AmS{L}\cfrac@AmS*#1;\cfmark@AmS\cfend@AmS} - -\def\cfracr#1{\def\cftype@AmS{R}\cfrac@AmS*#1;\cfmark@AmS\cfend@AmS} - -\def\adorn#1#2#3{\mathsurround=0pt\setbox0=\hbox{$\displaystyle{#2}#3$}% - \setbox1=\hbox{$\displaystyle\vphantom{#2}#1{#2}$}% - \setbox2=\hbox{\hskip\wd0\hskip-\wd1}% - \hskip-\wd2\mathop{\hskip\wd2\vphantom{#2}#1{#2}#3}} - -% ARROWS % NOTE 73 - -\def\overrightarrow{\mathpalette\overrightarrow@AmS} - -\def\overrightarrow@AmS#1#2{\vbox{\halign{$##$\cr - #1{-}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill - \mkern-6mu{\to}\cr - \noalign{\kern -1pt\nointerlineskip} - \hfil#1#2\hfil\cr}}} - -\let\overarrow=\overrightarrow - -\def\overleftarrow{\mathpalette\overleftarrow@Ams} - -\def\overleftarrow@Ams#1#2{\vbox{\halign{$##$\cr - #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill - \mkern-6mu{-}\cr - \noalign{\kern -1pt\nointerlineskip} - \hfil#1#2\hfil\cr}}} - -\def\overleftrightarrow{\mathpalette\overleftrightarrow@AmS} - -\def\overleftrightarrow@AmS#1#2{\vbox{\halign{$##$\cr - #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill - \mkern-6mu{\to}\cr - \noalign{\kern -1pt\nointerlineskip} - \hfil#1#2\hfil\cr}}} - -\def\underrightarrow{\mathpalette\underrightarrow@AmS} - -\def\underrightarrow@AmS#1#2{\vtop{\halign{$##$\cr - \hfil#1#2\hfil\cr - \noalign{\kern -1pt\nointerlineskip} - #1{-}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill - \mkern-6mu{\to}\cr}}} - -\let\underarrow=\underrightarrow - -\def\underleftarrow{\mathpalette\underleftarrow@AmS} - -\def\underleftarrow@AmS#1#2{\vtop{\halign{$##$\cr - \hfil#1#2\hfil\cr - \noalign{\kern -1pt\nointerlineskip} - #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill - \mkern-6mu{-}\cr}}} - -\def\underleftrightarrow{\mathpalette\underleftrightarrow@AmS} - -\def\underleftrightarrow@AmS#1#2{\vtop{\halign{$##$\cr - \hfil#1#2\hfil\cr - \noalign{\kern -1pt\nointerlineskip} - #1{\leftarrow}\mkern-6mu\cleaders\hbox{$#1\mkern-2mu{-}\mkern-2mu$}\hfill - \mkern-6mu{\to}\cr}}} - -% DOTS - -\def\dotsc{\mathinner{\ldotp\ldotp\ldotp}} -\def\dotsi{\mathinner{\cdotp\cdotp\cdotp}} -\def\dotsj{\mathinner{\ldotp\ldotp\ldotp}} -\def\dotsb{\mathinner{\cdotp\cdotp\cdotp}} - -\def\binary@AmS#1{{\thinmuskip 0mu \medmuskip 1mu \thickmuskip 1mu % NOTE 74 - \setbox0=\hbox{$#1{}{}{}{}{}{}{}{}{}$}\setbox1=\hbox - {${}#1{}{}{}{}{}{}{}{}{}$}\ifdim\wd1>\wd0\gdef\binary@@AmS{T}\else - \gdef\binary@@AmS{F}\fi}} - -\def\dots{\relax@AmS\ifmmode\def\dots@AmS{\mdots@AmS}\else - \def\dots@AmS{\tdots@AmS}\fi\dots@AmS} - -\def\mdots@AmS{\futurelet\tok@AmS\mdots@@AmS} - -\def\mdots@@AmS{\def\thedots@AmS{\dotsj}% - \ifx\tok@AmS\bgroup\else - \ifx\tok@AmS\egroup\else - \ifx\tok@AmS$\else - \iffalse{\fi \ifx\tok@AmS\\ \iffalse}\fi\else % NOTE 75 - \iffalse{\fi \ifx\tok@AmS& \iffalse}\fi\else - \ifx\tok@AmS\left\else - \ifx\tok@AmS\right\else - \ifx\tok@AmS,\def\thedots@AmS{\dotsc}\else - \inttest@AmS\tok@AmS\if T\intflag@AmS\def\thedots@AmS{\dotsi}\else - \binary@AmS\tok@AmS\if T\binary@@AmS\def\thedots@AmS{\dotsb}\else - \def\thedots@AmS{\dotsj}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\thedots@AmS} - -\def\tdots@AmS{\unskip\ \tdots@@AmS} - -\def\tdots@@AmS{\futurelet\tok@AmS\tdots@@@AmS} - -\def\tdots@@@AmS{$\ldots\, - \ifx\tok@AmS,$\else - \ifx\tok@AmS.\,$\else - \ifx\tok@AmS;\,$\else - \ifx\tok@AmS:\,$\else - \ifx\tok@AmS?\,$\else - \ifx\tok@AmS!\,$\else - $\ \fi\fi\fi\fi\fi\fi} - - -% SET NOTATION - -\def\lset{\{\,} -\def\rset{\,\}} - - -\def\leftset#1\mid#2\rightset{\hbox{$\displaystyle -\left\{\,#1\vphantom{#1#2}\;\right|\;\left. - #2\vphantom{#1#2}\,\right\}\offspace@AmS$}} - - -% ACCENT SYMBOLS - -\def\dotii#1{{\mathop{#1}\limits^{\vbox to -1.4pt{\kern-2pt - \hbox{\tenrm..}\vss}}}} -\def\dotiii#1{{\mathop{#1}\limits^{\vbox to -1.4pt{\kern-2pt - \hbox{\tenrm...}\vss}}}} -\def\dotiv#1{{\mathop{#1}\limits^{\vbox to -1.4pt{\kern-2pt - \hbox{\tenrm....}\vss}}}} - -\def\vecsymbol{\rightarrow} -\def\barsymbol{-} -\def\tildesymbol{\mathchar"0218 } -\def\hatsymbol{{\mathchoice{\null}{\null}{\,\,\hbox{\lower 10pt\hbox - {$\widehat{\null}$}}}{\,\hbox{\lower 20pt\hbox - {$\hat{\null}$}}}}} -\def\dotsymbol{{\nonscript\,.}} -\def\dotiisymbol{{\nonscript\,\hbox{\tenrm..}}} -\def\dotiiisymbol{{\nonscript\,\hbox{\tenrm...}}} -\def\dotivsymbol{{\nonscript\,\hbox{\tenrm....}}} -\def\dotsymbol{{\nonscript\,\hbox{\tenrm.}}} - - - -% OVERSET AND OVERBRACE - -\def\overset#1\to#2{{\mathop{#2}^{#1}}} - -\def\underset#1\to#2{{\mathop{#2}_{#1}}} - -\def\oversetbrace#1\to#2{{\overbrace{#2}^{#1}}} -\def\undersetbrace#1\to#2{{\underbrace{#2}_{#1}}} - - -% ROOTS - -\def\uproot#1{\gdef\theuproot{#1 pt}} -\def\theuproot{0 pt} - -\def\therightroot{0mu} -\def\rightroot#1{\gdef\therightroot{-#1mu}} - - -\def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}% - \dimen@\ht\z@ \advance\dimen@-\dp\z@ \advance\dimen@\theuproot - \mskip5mu\raise.6\dimen@\copy\rootbox \mskip-10mu \mskip\therightroot - \box\z@\gdef\theuproot{0 pt}\gdef\therightroot{0mu}} % NOTE 76 - - -% BOXED - - -\def\boxed#1{\setbox0=\hbox{$\displaystyle{#1}$}\hbox{\lower.4pt\hbox{\lower - 3pt\hbox{\lower 1\dp0\hbox{\vbox{\hrule height .4pt \hbox{\vrule width - .4pt \hskip 3pt\vbox{\vskip 3pt\box0\vskip3pt}\hskip 3pt \vrule width - .4pt}\hrule height .4pt}}}}}} - -% FORMATTING MACROS COMMON TO ALL STYLES - -\def\documentstyle#1{\input #1.sty} - -\newif\ifretry@AmS -\def\y@AmS{y } \def\y@@AmS{Y } \def\n@AmS{n } \def\n@@AmS{N } -\def\ask@AmS{\message - {Do you want output? (y or n, follow answer by return) }\loop - \read-1 to\answer@AmS - \ifx\answer@AmS\y@AmS\retry@AmSfalse\outputon - \else\ifx\answer@AmS\y@@AmS\retry@AmSfalse\outputon - \else\ifx\answer@AmS\n@AmS\retry@AmSfalse\outputoff - \else\ifx\answer@AmS\n@@AmS\retry@AmSfalse\outputoff - \else \retry@AmStrue\fi\fi\fi\fi - \ifretry@AmS\message{Type y or n, follow answer by return: }\repeat} - -\def\outputoff{\global\output{\setbox0=\box255 \deadcycles=0}} - -\def\outputon{\global\output{\output@AmS}} -\outputon - -\catcode`\@=13 diff --git a/docs/historical/doclib/article.tex b/docs/historical/doclib/article.tex deleted file mode 100644 index fdc0e752..00000000 --- a/docs/historical/doclib/article.tex +++ /dev/null @@ -1,45 +0,0 @@ -% Support for the Article style of DISS.STY (do not explicitly load...) - - -\catcode`\@=11 % for a little while - - -% usage: \header text\title text\author text\info -\outer\def\header#1\title#2\author#3\info{% - \null\vskip .8in plus .1in minus .1in - \begingroup - \titlefont - \let\\=\cr - \tabskip=0pt - \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr#1\cr}% - \endgroup - \bigskip - - \begingroup - \authorfont - \let\\=\cr - \tabskip=0pt - \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr#2\cr}% - \endgroup - \medskip - - \begingroup - \let\\=\cr - \tabskip=0pt - \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr#3\cr}% - \endgroup - \vskip .5in plus .1in - - \def\banner{\bop\chapter#1\endchapter}% -} - - -% Parameters different than the AmS-TeX dissertation style - -\quiet - \oddpagesfalse - \singlespace -\verbose - - -\catcode`\@=12 % back to normal diff --git a/docs/historical/doclib/dcustom.tex b/docs/historical/doclib/dcustom.tex deleted file mode 100644 index c84da28c..00000000 --- a/docs/historical/doclib/dcustom.tex +++ /dev/null @@ -1,198 +0,0 @@ -% Customize the dissertation style of AmS-TeX - -\expandafter\ifx\csname documentstyle\endcsname\relax \input amstex\fi -\expandafter\ifx\csname ask\endcsname\relax \documentstyle{diss}\fi - - -\catcode`\@=11 % for a little while - - -% Parameters different that diss.sty - -\hoffset=.175in % center it... - -% \def\contitle{\jobname.toc} -% \def\figtitle{\jobname.lof} -% \def\tabtitle{\jobname.lot} - - -% Figure Support - -\def\tagfigure#1#2#3{% - \figure{figure#1}{#2}% - \ifundefined{#3}% - \expandafter\let\csname#3\endcsname=\lastfigure - \else - \tell{Warning: #3 is already defined}% - \fi -} - -\def\tagdiagram#1#2#3{% - \diagram{diagram#1}{#2}% - \ifundefined{#3}% - \expandafter\let\csname#3\endcsname=\lastfigure - \else - \tell{Warning: #3 is already defined}% - \fi -} - -\def\tagtable#1#2#3{% - \table{#2}% - \input table#1\relax - \endtable - \ifundefined{#3}% - \expandafter\let\csname#3\endcsname=\lasttable - \else - \tell{Warning: #3 is already defined}% - \fi -} - - -% Page Numbering - -\newif\ifdraft \draftfalse - -\def\draftstring{{\ifdraft \tt Draft\fi}} -\def\draftext{% - \ifdraft - \begingroup - \tt - \ifodd\pageno - \TeX set \today\ with DISS.STY v\version - \else - Draft \versiontag/ of \versiondate/ - \fi - \endgroup - \fi -} -\def\versiontag/{\errmessage{version.tex not loaded!}} -\let\versiondate=\versiontag -\def\uci@headpage{\draftext\hfil\rm\folio} -\def\uci@footpage{\draftstring\hfil\rm\folio\hfil\draftstring} - - -% Draft style - -\def\draftstyle{% - \quiet - \drafttrue - \nochapternumbers - \verbose -} - - -% Article and Galley styles - -\let\@articlestyle=\articlestyle - -\outer\def\articlestyle{% - \quiet - \@articlestyle - \input article - \verbose -} - -\outer\def\galleystyle{% - \quiet - \@articlestyle - \input galley - \verbose -} - - -% Theorems, Equations, and the like - -\outer\def\proclaim #1. #2\par{% - \medbreak\vskip-\parskip - \begingroup - \singlespace - \noindent{\smallertype\sc#1.\enspace}{\sl#2}\par - \endgroup - \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi -} - -\def\proof #1.{\lp{\smallertype\sc Proof of #1.\enspace}} - -\def\thm#1{{\smallertype\sc#1}} - -\def\eqn#1{\ifmmode {\it(#1\/)}\else $\it(#1\/)$\fi} - -\def\implies{\quad\supset\ } - -\def\tdots{\ldots\thinspace} - - -% References... - -\let\journalinfo=\jourinfo -\let\thesis=\book % experimental -\let\thesisinfo=\bookinfo % .. - - -% Miscellaneous Macros - -\let\bop=\newpage - -\def\hbreak{\hfil\break} - -\def\lp{\par\noindent} - -% usage: \boxit{text} -\def\boxit#1{% - \leavevmode - \thinspace - \hbox{% - \smallertype - \vrule - \vtop{% - \vbox{% - \hrule\kern\p@ - \hbox{\vphantom{\sc/}\thinspace{\sc#1}\thinspace} - }% - \kern\p@\hrule - }% - \vrule - }% - \thinspace -} - - -% Additional verbatim support - -\def\?{\char'077} - -\def\verbatimlines{% - \lineno@uci=\z@ - \begingroup - \setupverbatim - \parskip=\z@ plus .05\baselineskip - \parindent=20\p@ - \everypar{\advance\lineno@uci by\@ne \llap{\the\lineno@uci\ \ }}% - \catcode`\ =13 \catcode`\^^M=13 \catcode`\?=\z@ - \verbatimgobble -} - - -% Trademarks... - -\input trademark - - -% Parameters different than the AmS-TeX dissertation style - -\quiet - \twosided - \useolddigits - \raggedbottom - \raggedright - \AuthorsInCSC - \refdef@AmS\yr\oldstyle - \halfspace - \twelvepoint -\verbose - - -\catcode`\@=12 % back to normal - - -\let\dcustom=\empty diff --git a/docs/historical/doclib/diss.sty b/docs/historical/doclib/diss.sty deleted file mode 100644 index 399c4951..00000000 --- a/docs/historical/doclib/diss.sty +++ /dev/null @@ -1,2164 +0,0 @@ -% UCI Dissertation Style for AmSTeX. -% @(#)diss.sty,v 1.1.1.1 1993/01/30 04:41:05 jtc Exp - -% Tim Morgan with many suggestions, bug fixes, etc, from Marshall Rose -% Based originally on Michael Spivak's AMSPPT.STY. - -% When edits are made to this file, the version number should be incremented. -\def\version{103} -\let\fmtversion=\version % These two control sequences are defined -\def\fmtname{dissertation} % in plain.tex, so we do it here too. - -% Assumes the following hidden definitions from plain.tex: -% \z@ is defined from plain.tex as 0pt (and magically can -% be used as the integer constant 0 also). -% \p@ is the same, but 1pt -% \@ne is 1 -% \m@ne is -1 -% \tw@ is 2 -% \thr@@ is 3 -% \@m is 1000 -% \@M is 10000 -% And the following scratch register definitions: -% \dimen@ is \dimendef'd to be \dimen0 -% \skip@ is \skipdef'd to be \skip0 -% \count@ is \count255 - -\catcode`\@=11 % So we can use a special character - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% PARAMETERS DIFFERENT THAN IN PLAIN % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% These are words which TeX doesn't hyphenate perfectly. -% Unfortunately, the plural forms must be included also. -\hyphenation{com-put-er com-mun ap-pen-dix cart-wheel data-base Dijk-stra} -\hyphenation{in-fra-struc-ture man-u-script mi-cro-fiche para-mil-i-tary} -\hyphenation{post-am-ble pre-am-ble sub-scrib-er wave-guide sub-scrib-ers} -\hyphenation{com-put-ers cart-wheels data-bases in-fra-struc-tures} -\hyphenation{man-u-scripts mi-cro-fiches post-am-bles pre-am-bles} -\hyphenation{buf-fer buf-fers des-ig-na-ted par-a-graph par-a-graphs} -\hyphenation{key-stroke key-strokes usu-al-ly} - - -\def\normal@topskip{0.48cm} -\topskip=\normal@topskip % For correct page positioning, do NOT -\hoffset=0.5in % change any of these values!!! -\voffset=0.07cm -\hsize=15.2cm -\vsize=22.2cm - -\normallineskiplimit=\p@ % Min. dist. btw. lines. -\parindent=1cm % Normal indentation. -\hfuzz=0.115\p@ % So we hear fewer complaints. Good up to -\vfuzz=0.115\p@ % 300 dpi. - -\pretolerance=200 % At 12pt, these margins are kind of narrow -\tolerance=300 % so we have to be more tolerant. -\clubpenalty=\@M % Never allow these. -\widowpenalty=\@M -\newlinechar=`\^^J % For writing output to tty. -\uchyph=\z@ % Don't take any chances. -\brokenpenalty=\@M % Never hyphenate last line on a page. -\newcount\defaultinterlinepenalty % This probably won't make any -\defaultinterlinepenalty=\thr@@ % difference, so why not?? -\interlinepenalty=\defaultinterlinepenalty - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% PARAMETERS DIFFERENT from AmSTeX % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\TagsOnRight % Set tags like a sane person does - - -%%%%%%%%%%%%%%%%%%%%%%%% -% EXTRA FONTS NEEDED % -%%%%%%%%%%%%%%%%%%%%%%%% - -\newif\ifolddigits -\olddigitsfalse % Allow use of amcscod10 for citations -\def\useolddigits{% - \olddigitstrue - \oktell{Old Digits Mode}% -} - -\font\sixrm=cmr6 \font\sixbf=cmbx6 -\font\sixi=cmmi6 \skewchar\sixi='177 -\font\sixsy=cmsy6 \skewchar\sixsy='60 - -\font\eightrm=cmr8 \font\eightsl=cmsl8 \font\eightit=cmti8 -\font\eightsy=cmsy8 \skewchar\eightsy='60 -\skewchar\eightsy='60 \font\eightbf=cmbx8 -\font\eightex=cmex10 at 8\p@ -\font\eighti=cmmi8 \skewchar\eighti='177 - -\font\ninerm=cmr9 \font\nineit=cmti9 -\font\ninei=cmmi9 \skewchar\ninei='177 -\font\ninesy=cmsy9 \skewchar\ninesy='60 -\font\ninesl=cmsl9 \font\ninebf=cmbx9 - -\font\twelvecsc=cmcsc10 scaled \magstep1 -\font\tencsc=cmcsc10 -\font\eightcsc=cmcsc10 at 8\p@ -\font\elevencsc=cmcsc10 scaled \magstephalf -\font\ninecsc=cmcsc10 at 9\p@ - -\let\tencscod=\tencsc -\let\eightcscod=\eightcsc - -\font\eightsf=cmss10 at 8\p@ -\font\tensf=cmss10 -\font\twelvesf=cmss10 at 12\p@ - -\font\twelvett=cmtt10 scaled \magstep1 -\font\eighttt=cmtt10 at 8\p@ % \tentt is predefined in plain.tex - -\font\twelvebti=cmbti at 12\p@ -\font\tenbti=cmbti -\font\eightbti=cmbti at 8\p@ - -\font\twelveex=cmex10 scaled \magstep1 \font\twelverm=cmr10 scaled \magstep1 -\font\twelvesl=cmsl10 scaled \magstep1 \font\twelvebf=cmbx10 scaled \magstep1 -\font\twelvei=cmmi10 scaled \magstep1 \skewchar\twelvei='177 -\font\twelvesy=cmsy10 scaled \magstep1 \skewchar\twelvesy='60 -\font\twelveit=cmti10 scaled \magstep1 - -\font\twelvechap@font=cmssbx10 at 14\p@ -\font\twelvesec@font=cmss10 at 13\p@ -\font\twelvesubsec@font=cmssi10 scaled \magstep1 - -\font\tenchap@font=cmssbx10 scaled \magstep1 -\font\tensec@font=cmssbx10 scaled \magstephalf -\font\tensubsec@font=cmssi10 - -\font\eightchap@font=cmssbx10 -\font\eightsec@font=cmss10 at 9\p@ -\font\eightsubsec@font=cmssqi8 - -% Font selection -\newcount\font@no -\def\curfont{\ifcase\font@no\rm\or\it\or\sl\or\bf\or\tt\or\csc\or\bti\or\sf - \else\errmessage{Internal font confusion}\fi} - -%%%%%%%%%%%%%%%%%%%%% -% SPACING CONTROL % -%%%%%%%%%%%%%%%%%%%%% - -\newskip\normalabovedisplayskip -\newskip\normalbelowdisplayskip -\newskip\normalabovedisplayshortskip -\newskip\normalbelowdisplayshortskip -\newdimen\normalparskip \normalparskip=22.5\p@ -\newdimen\parstretch \parstretch=8\p@ - -\newif\ifsinglespacing % Tells if we are currently in single space mode -\newif\ifhalfspacing % Special version of singlespacing, a little bigger. - -% Actually tell TeX what spacing is wanted -\def\setbaselines{% - \baselineskip=\normalbaselineskip - \abovedisplayskip=\normalabovedisplayskip - \belowdisplayskip=\normalbelowdisplayskip - \abovedisplayshortskip=\normalabovedisplayshortskip - \belowdisplayshortskip=\normalbelowdisplayshortskip - % Compute \parskip for even paragraph spacing at all pt sizes - \dimen@=\normalparskip - \advance\dimen@ by -\normalbaselineskip - \parskip=\dimen@ plus\parstretch -} - -% Go from double to single spacing -\def\reducespacing{% - \normalbaselineskip=0.64\normalbaselineskip - \normalabovedisplayskip=0.64\normalabovedisplayskip - \normalbelowdisplayskip=0.64\normalbelowdisplayskip - \normalabovedisplayshortskip=0.64\normalabovedisplayshortskip - \normalbelowdisplayshortskip=0.64\normalbelowdisplayshortskip -} - -% Set halfspacing baseline etc starting from singlespacing mode -\def\sethalfspacing{% - \normalbaselineskip=1.28125\normalbaselineskip - \abovedisplayskip=1.28125\abovedisplayskip - \belowdisplayskip=1.28125\belowdisplayskip - \abovedisplayshortskip=1.28125\abovedisplayshortskip - \belowdisplayshortskip=1.28125\belowdisplayshortskip -} - -% Go to single spacing if we're not there already -\def\singlespace{% - \normalspacing \reducespacing - \halfspacingfalse \singlespacingtrue - \setbaselines -} - -% Go to 1-1/2 spacing. -\def\halfspace{% - \normalspacing \reducespacing \sethalfspacing - \singlespacingtrue \halfspacingtrue - \setbaselines -} - -% Go to normal, doublespacing mode -\def\doublespace{% - \normalspacing - \singlespacingfalse \halfspacingfalse - \setbaselines -} - -% Make sure we're doing the spacing we're supposed to be. -\def\setspacing{% - \normalspacing - \ifsinglespacing - \reducespacing - \ifhalfspacing \sethalfspacing \fi - \fi - \setbaselines -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% FOUR DIFFERENT POINT SIZES % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\def\twelvepoint{% - \def\big@@AmS{10.2\p@}% - \def\Big@@AmS{13.8\p@}% - \def\bigg@@AmS{17.4\p@}% - \def\Bigg@@AmS{21.0\p@}% - \let\smallertype=\tenpoint - \let\curtype=\twelvepoint - \def\biggertype{\errmessage{No larger point size available}}% - \def\normalspacing{% - \normalbaselineskip=22.8\p@ - \normalabovedisplayskip=14.5\p@ plus 3\p@ minus 9\p@ - \normalbelowdisplayskip=14.5\p@ plus 3\p@ minus 9\p@ - \normalabovedisplayshortskip=\z@ plus 4\p@ - \normalbelowdisplayshortskip=9\p@ plus 4\p@ minus 5\p@ - }% - \def\rm{\font@no=0\fam\z@\twelverm}% - \def\it{\font@no=1\fam\itfam\twelveit}% - \def\sl{\font@no=2\fam\slfam\twelvesl}% - \def\bf{\font@no=3\fam\bffam\twelvebf}% - \def\tt{\font@no=4\fam\ttfam\twelvett \spaceskip.5em plus.25em - minus.15em }% - \def\csc{\font@no=5\twelvecsc}% - \def\bti{\font@no=6\twelvebti}% - \def\sf{\font@no=7\twelvesf}% - \let\sc=\csc - \ifolddigits - \let\cite@font=\tencscod - \else - \let\cite@font=\elevencsc - \fi - \textfont\z@=\twelverm \scriptfont\z@=\ninerm \scriptscriptfont\z@=\sixrm - \textfont\@ne=\twelvei \scriptfont\@ne=\ninei \scriptscriptfont\@ne=\sixi - \textfont\tw@=\twelvesy \scriptfont\tw@=\ninesy \scriptscriptfont\tw@=\sixsy - \textfont\thr@@=\twelveex \scriptfont\thr@@=\twelveex - \scriptscriptfont\thr@@=\twelveex - \textfont\itfam=\twelveit - \textfont\slfam=\twelvesl - \textfont\ttfam=\twelvett - \textfont\bffam=\twelvebf \scriptfont\bffam=\ninebf - \scriptscriptfont\bffam=\sixbf - \let\chap@font=\twelvechap@font - \let\sec@font=\twelvesec@font - \let\subsec@font=\twelvesubsec@font - \let\subsubsec@font=\twelvebf - \def\oldstyle{\fam1\twelvei}% - \setspacing - \curfont - \ifundefined{everypointsize}\else\everypointsize{twelve}{12}\fi -} - -\def\tenpoint{% - \def\big@@AmS{8.5\p@}% - \def\Big@@AmS{11.5\p@}% - \def\bigg@@AmS{14.5\p@}% - \def\Bigg@@AmS{17.5\p@}% - \let\smallertype=\eightpoint - \let\curtype=\tenpoint - \let\biggertype=\twelvepoint - \def\normalspacing{% - \normalbaselineskip=18.9\p@ - \normalabovedisplayskip=12\p@ plus 3\p@ minus 9\p@ - \normalbelowdisplayskip=12\p@ plus 3\p@ minus 9\p@ - \normalabovedisplayshortskip=\z@ plus 3\p@ - \normalbelowdisplayshortskip=7\p@ plus 3\p@ minus 4\p@ - }% - \def\rm{\font@no=0\fam\z@\tenrm}% - \def\it{\font@no=1\fam\itfam\tenit}% - \def\sl{\font@no=2\fam\slfam\tensl}% - \def\bf{\font@no=3\fam\bffam\tenbf}% - \def\tt{\font@no=4\fam\ttfam\tentt \spaceskip.5em plus.25em - minus.15em }% - \def\csc{\font@no=5\tencsc} - \def\bti{\font@no=6\tenbti}% - \def\sf{\font@no=7\tensf}% - \let\sc=\csc - \ifolddigits - \let\cite@font=\eightcscod - \else - \let\cite@font=\ninecsc - \fi - \textfont\z@=\tenrm \scriptfont\z@=\sevenrm \scriptscriptfont\z@=\fiverm - \textfont\@ne=\teni \scriptfont\@ne=\seveni \scriptscriptfont\@ne=\fivei - \textfont\tw@=\tensy \scriptfont\tw@=\sevensy \scriptscriptfont\tw@=\fivesy - \textfont\thr@@=\tenex \scriptfont\thr@@=\tenex - \scriptscriptfont\thr@@=\tenex - \textfont\itfam=\tenit - \textfont\slfam=\tensl - \textfont\ttfam=\tentt - \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf - \scriptscriptfont\bffam=\fivebf - \let\chap@font=\tenchap@font - \let\sec@font=\tensec@font - \let\subsec@font=\tensubsec@font - \let\subsubsec@font=\tenbf - \def\oldstyle{\fam1\teni}% - \setspacing - \curfont - \ifundefined{everypointsize}\else\everypointsize{ten}{10}\fi -} - -\def\eightpoint{% - \def\big@@AmS{6.8\p@}% - \def\Big@@AmS{9.2\p@}% - \def\bigg@@AmS{11.6\p@}% - \def\Bigg@@AmS{14.0\p@}% - \def\smallertype{\errmessage{No smaller point size available}}% - \let\curtype=\eightpoint - \let\biggertype=\tenpoint - \def\normalspacing{% - \normalbaselineskip=15\p@ - \normalabovedisplayskip=10\p@ plus 2.4\p@ minus 7.2\p@ - \normalbelowdisplayskip=10\p@ plus 2.4\p@ minus 7.2\p@ - \normalabovedisplayshortskip=\z@ plus 2.4\p@ - \normalbelowdisplayshortskip=55.6\p@ plus 2.4\p@ minus 3.2\p@ - }% - \def\rm{\font@no=0\fam\z@\eightrm}% - \def\it{\font@no=1\fam\itfam\eightit}% - \def\sl{\font@no=2\fam\slfam\eightsl}% - \def\bf{\font@no=3\fam\bffam\eightbf}% - \def\tt{\font@no=4\fam\ttfam\eighttt \spaceskip.5em plus.25em - minus.15em }% - \def\csc{\font@no=5\eightcsc}% - \def\bti{\font@no=6\eightbti}% - \def\sf{\font@no=7\eightsf}% - \let\sc=\csc - \def\cite@font{\errmessage{You may not do citations in 8 point}} - \textfont\z@=\eightrm \scriptfont\z@=\sixrm \scriptscriptfont\z@=\fiverm - \textfont\@ne=\eighti \scriptfont\@ne=\sixi \scriptscriptfont\@ne=\fivei - \textfont\tw@=\eightsy \scriptfont\tw@=\sixsy \scriptscriptfont\tw@=\fivesy - \textfont\thr@@=\eightex \scriptfont\thr@@=\eightex - \scriptscriptfont\thr@@=\eightex - \textfont\itfam=\eightit - \textfont\slfam=\eightsl - \textfont\ttfam=\eighttt - \textfont\bffam=\eightbf \scriptfont\bffam=\sixbf - \scriptscriptfont\bffam=\fivebf - \let\chap@font=\eightchap@font - \let\sec@font=\eightsec@font - \let\subsec@font=\eightsubsec@font - \let\subsubsec@font=\eightbf - \def\oldstyle{\fam1\eighti}% - \setspacing - \curfont - \ifundefined{everypointsize}\else\everypointsize{eight}{10}\fi -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% TABLE of CONTENTS Macros % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% This set of macros allows you to build a table of contents for a document -% automatically in TeX. There are only three control sequences which you -% will need to use. The first is \inicont, which initializes the macros. -% This package works by writing the appropriate lines into a file called -% \jobname.toc in your account. This file is read by \printcontents or -% by \printcont in PRINT-PRELIM.TEX. -% -\newwrite\cont@file % Get a free channel to write to -\newif\ifcont@closed -\cont@closedtrue % Haven't opened contents file yet -\newwrite\fig@file -\newwrite\tab@file -\newif\iffig@closed -\fig@closedtrue % Or the list of figures file -\newif\iftab@closed -\tab@closedtrue % Or the tables file - -\def\contitle{\jobname.toc} % Default name of contents file -\def\figtitle{\jobname.lof} % ditto for figures file -\def\tabtitle{\jobname.lot} % ditto for tables file - -% Make sure the contents file is open before writing to it -\def\opencontfile{% - \ifcont@closed - \immediate\openout\cont@file=\contitle - \cont@closedfalse - \fi -} - -% -% This control sequence adds its argument to the table of contents. -% -\def\content#1{% - \opencontfile - \let\\=\space - \write\cont@file{\string\Z{#1}{\the\pageno}}% -} - -% -% This control sequence is the same as \content except that the first -% box written will have two leading spaces to indent it. -% -\def\subcontent#1{% - \opencontfile - \let\\=\space - \write\cont@file{\string\Z{\string\hskip \parindent{}#1}{\the\pageno}}% -} - -% And the same thing for sub-sections -\def\subsubcontent#1{% - \opencontfile - \let\\=\space - \write\cont@file{\string\Z{\string\hskip 2\parindent{}#1}{\the\pageno}}% -} - -% And the same thing for sub-sub-sections -\def\subsubsubcontent#1{% - \opencontfile - \let\\=\space - \write\cont@file{\string\Z{\string\hskip 3\parindent{}#1}{\the\pageno}}% -} - -% Simple table-of-contents printer for \articlestyle. -% For dissertations, use the one in print-prelim.tex. -% Use this macro as the last thing in your report, since it makes -% the page numbers be in romannumerals at the bottom of the page. -\def\printcontents{% - \closeout \cont@file - \null\vfill\supereject % Close output, end last page - \twelvepoint\rm % Make sure we're in normal mode - \pageno=\m@ne % Contents get roman numerals. - \plain@page@numbers % Put page #s at bottom only - \oktell{Table of Contents} - \null \vskip .8in minus\baselineskip - \centerline{\chap@font Contents} - \vskip \tw@\baselineskip - \rightline{Page} - \begingroup % Temporarily change \baselineskip to avoid - % underfull \vbox's during output errors. - \baselineskip=\@ne\baselineskip plus .05\baselineskip - \def\Z##1##2{\line{\ignorespaces##1\leaders - \hbox to.7em{.\hfil}\hfil\hbox to2em{\hss##2}}} - \catcode`@=11 - \let\\=\space - \input\contitle \relax - \endgroup % Also undoes the \catcode change -} - - -%%%%%%%%%%%%%%%%%%%%%%%% -% NUMBERED FOOTNOTES % -%%%%%%%%%%%%%%%%%%%%%%%% - -% First, modify \vfootnote from Plain to use smallertype and singlespace -\def\vfootnote#1{% - \insert\footins\bgroup\tenpoint\singlespace - \interlinepenalty\interfootnotelinepenalty - \splittopskip\ht\strutbox % top baseline for broken footnotes - \splitmaxdepth\dp\strutbox \floatingpenalty\@MM - \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip - \parindent=.13in - \textindent{#1}\footstrut\futurelet\next\fo@t -} - -% Allocate a counter for the numbered footnotes -\newcount\note@count \note@count=\@ne - -\def\nfootnote#1{% - \unskip\footnote{$^{\number\note@count}$}{#1}% - \global\advance\note@count by\@ne -} - -% Same except that trailing period or comma is ``tucked'' under -% the note mark. \ntucknote provides auto numbering. -\def\ntucknote#1#2{\nfootnote{#1}\llap{#2}} -\def\tucknote#1#2#3{\footnote{#1}{#2}\llap{#3}} - - -%%%%%%%%%%%%%%%%%%%% -% UTILITY MACROS % -%%%%%%%%%%%%%%%%%%%% - -% Insert a discretionary hyphen. For use in restricted -% horizontal mode, as in the bibliography. -\def\hyphenbreak{\discretionary{-}{}{-}} - -% Check if a macro name is currently undefined (from The TeXbook) -\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax} - -% Terminal input and output routines and auxilary stuff -\newwrite\undef@out@chan % Allocate a channel for the tty -\def\tell#1{{\let\\=\space\immediate\write\undef@out@chan{#1}}} -\def\ask#1{\read-16 to #1} % Read from tty w/o prompt - -% Sanitize a string before \write'ing it. -% Call with \unexpanded{op}{msg} -% Modified from version in The TeXbook, originally by Todd Allen -\long\def\unexpanded#1#2{% - \def\finwrite{#1}% - {\aftergroup\finwrite\aftergroup{\sanitize@uci#2\endsanity@uci}}% -} -\def\sanitize@uci{\futurelet\next@uci\sanswitch@uci} -\def\sanswitch@uci{\ifx\next@uci\endsanity@uci - \else\ifx\next@uci\\\aftergroup\space\let\next@uci=\eat@uci - \else\ifcat\noexpand\next@uci\space\aftergroup\space\let\next@uci=\eat@uci - \else\ifcat\noexpand\next@uci\bgroup\aftergroup{\let\next@uci=\eat@uci - \else\ifcat\noexpand\next@uci\egroup\aftergroup}\let\next@uci=\eat@uci - \else\let\next@uci=\copytoken@uci\fi\fi\fi\fi\fi \next@uci -} -\def\eat@uci{\afterassignment\sanitize@uci \let\next@uci= } -\long\def\copytoken@uci#1{% - \ifcat\noexpand#1\relax\aftergroup\noexpand - \else\ifcat\noexpand#1\noexpand~\aftergroup\noexpand - \fi - \fi - \aftergroup#1\sanitize@uci -} -\def\endsanity@uci\endsanity@uci{} - -% Now use the sanity stuff to make a sane tell command. This macro -% actually takes one argument, but since it's the last for \unexpanded, -% we avoid scanning it twice by not picking it up here. -\def\sanetell{\unexpanded{\immediate\write\undef@out@chan}} - -% Produce verbatim listings of various sorts - -\def\uncatcodespecials{\def\do##1{\catcode`##1=12 } \dospecials} -\def\setupverbatim{% - \par \tt \spaceskip=\z@ % Want fixed tt spacing now - \obeylines \uncatcodespecials \obeyspaces \verbatimdefs -} - -% This macro turns on verbatim mode until ?endverbatim is seen. -\def\verbatim{% - \begingroup \setupverbatim - \parskip=\z@ plus .05\baselineskip \parindent=\z@ - \catcode`\ =13 \catcode`\^^M=13 \catcode`\?=\z@ - \verbatimgobble -} -{\catcode`\^^M=13{\catcode`\ =13\gdef\verbatimdefs{\def^^M{\ \par}\let =\ }} - \gdef\verbatimgobble#1^^M{}% -} - -% This defines ?endverbatim to end the group which begins with \verbatim -\let\endverbatim=\endgroup - -% Input a file in verbatim mode. Sometimes useful for including -% real-life examples into a paper. -\def\verbfile#1{% - \begingroup\setupverbatim - \parskip=\z@ plus .05\baselineskip \parindent=\z@ - \input#1 \endgroup -} - -% This is the same as the above, but it adds line numbers to each -% line of the file printed. \lineno@uci has the obvious use. -\newcount\lineno@uci -\def\listing#1{% - \lineno@uci=\z@ - \begingroup\setupverbatim - \parskip=\z@ plus .05\baselineskip \parindent=20\p@ - \everypar{\advance\lineno@uci by\@ne \llap{\the\lineno@uci\ \ }}% - \input#1 - \endgroup -} - -% Draw a little qed symbol (black box) -\def\qed{\hbox{\hskip\p@ \vrule width4\p@ height6\p@ depth1.5\p@ \hskip\p@}} - -% Conditions -- from AmSppt -\newif\ifrunin@AmS -\runin@AmSfalse -\let\runin=\runin@AmStrue -\newdimen\cond@dimen -\newdimen\condindent % Amount each nested condition is indented -\condindent=.5in % Default indentation amount - -% This is used in \conditions -\def\firstcon@AmS#1:{% - \ifrunin@AmS - {\rm\ignorespaces#1\unskip}\ignorespaces - \runin@AmSfalse - \else - \par - \ifdim\lastskip<\smallskipamount - \removelastskip \penalty55 \smallskip - \fi - \\#1:% - \fi -} - -% Do one item of the conditions. This is really \\ in disguise. -\def\cond@item#1:{% - \par\noindent - \hbox to \cond@dimen{\hfil\rm\ignorespaces#1\unskip\quad}% - \hangafter1 - \hangindent\cond@dimen\ignorespaces -} - -\cond@dimen=\z@ % Value for outermost block -% Do the main stuff for \conditions. -\def\conditions{% - \par - \let\\=\cond@item - \begingroup - \advance\cond@dimen by\condindent - \firstcon@AmS -} - -% Exit special stuff for \conditions. -\def\endconditions{% - \par\smallbreak\endgroup - \ifdim\cond@dimen>\z@ \cond@item \fi % If ending an inner condition -} - -% Automatically numbered items -\newcount\item@count -\newdimen\item@dimen \item@dimen=\z@ -\def\item@prefix{} -\def\beginitems{% - \begingroup - \advance \parindent by\item@dimen - \ifnum\item@dimen>\z@ - \edef\item@prefix{\item@prefix\number\item@count.} - \else - \item@dimen=1cm - \fi - \item@count=\z@ \singlespace \interlinepenalty=200 -} -\def\enditems{\par\endgroup} -\def\nitem{\advance\item@count by\@ne \item{\item@prefix\number\item@count.}} - -% Turn back on the \+ construct of plain TeX. -\def\tabalign{\us@true\m@ketabbox} -\outer\def\+{\tabalign} - -% Fix AmSTeX's definition used in its definition of ~ (tie). -\def\s@AmS{\penalty\@M\ifx\tok@AmS\Space@AmS\else\ \fi} - -% And make \/ work the way it does in plain.tex -\let\/=\ic@AmS - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% PAGE CONTROL and OBJECT MANIPULATION % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% This definition doesn't blow up if you're in vertical mode already -\def\pagebreak{\ifhmode\vadjust{\break}\else\break\relax} - -% This definition clears out all previous inserts etc to -% guarantee that the following stuff is at the top of a page. -\def\clearpage{\vfill\supereject} - -% This macro keeps the stuff in the argument on the same page, leaving -% blank space on this page if necessary -\def\keep{\par\setbox\z@=\vbox\bgroup} -\def\endkeep{% - \egroup - \dimen@=\ht\z@ - \advance\dimen@ by\dp\z@ - \vskip\z@ plus\dimen@ - \penalty\z@ - \vskip\z@ plus-\dimen@ - \vskip\parskip - \box\z@ - \goodbreak -} -\def\filkeep{% - \egroup - \filbreak - \vskip\parskip - \box\z@ - \goodbreak -} - -% List macros from the TeXbook - -\toksdef\ta=\z@ \toksdef\tb=\tw@ -\newif\ifresult@uci - -% usage: \newlist\list -\def\newlist#1{\let#1=\empty} - -% usage: \append{item}\to\list -\def\append#1\to#2{\ta={\\{#1}}\tb=\expandafter{#2}\edef#2{\the\tb\the\ta}} -\def\gappend#1\to#2{\ta={\\{#1}}\tb=\expandafter{#2}\xdef#2{\the\tb\the\ta}} - -% usage: \cardinality\list\to\counter -\def\cardinality#1\to#2{#2=\z@ \long\def\\##1{\advance#2 by\@ne }#1} - -% usage: \ifismember{item}\of\list ... \else ... \fi -\def\ifismember#1\of#2{% - \def\given@uci{#1}% - \result@ucifalse - \def\\##1{% - \def\next@uci{##1}% - \ifx\next@uci\given@uci \result@ucitrue\fi - }% - #2% - \ifresult@uci -} - -% usage: \ifwasmember{item}\of\list ... \else ... \fi -% side effect: removes {item} from \list if present -\def\ifwasmember#1\of#2{% - \newlist\ref@mtr - \def\given@uci{#1}% - \result@ucifalse - \def\\##1{% - \def\next@uci{##1}% - \ifx\next@uci\given@uci - \result@ucitrue - \else - \append ##1\to\ref@mtr - \fi - }% - #2% - \let#2=\ref@mtr - \ifresult@uci -} - -% Append #1 to list #2 if #1 is not already in #2 -\def\addtolist#1\to#2{% - \ifismember#1\of#2% - \else - \append #1\to #2% - \fi -} -% Same thing, but do it \global'ly -\def\gaddtolist#1\to#2{% - \ifismember#1\of#2% - \else - \gappend#1\to#2% - \fi -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% STUFF for BIBLIOGRAPHY and APPENDICES % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Bibliography Package: -% Original version by Michal Spivak -% Updated for JACM format and automated by Tim Morgan -% Final cleanup, and much-improved automation, by Marshall Rose -% Additional work and IEEE support by TM. - -% Simple appendix entry builder -\def\appendix#1#2{% - \par - \clearpage - \ifoddpages - \ifodd\pageno \else \null\vfill\eject\fi - \fi - \pageno@foot - \begingroup - \setbox\z@=\hbox{#1}% - \ifdim\wd\z@>\z@ - \content{Appendix #1: #2}% - \oktell{Appendix #1: #2}% - \def\title{Appendix #1\\#2}% - \else - \content{Appendix: #2}% - \oktell{Appendix: #2}% - \def\title{Appendix\\#2}% - \fi - \let\\=\cr \tabskip=\z@ \chap@font - \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr\title\cr}% - \endgroup - \nobreak - \vskip 1.0in minus 0.15in -} - - -% Citations: -% We keep a running list, \ref@set, which is -% all the things which were \cite'd throughout the paper, with -% only one entry for each different key. -% -% There are three versions of each of the citation -% commands: -% 1. The \def'd version is the normal one used throughout the paper. -% 2. Within a figure, table, etc,'s caption, because of the use of -% \def and \edef, a special version which just produces the -% citation without the \gaddtolist command is used. These -% definitions are predefined, and are \let to be \cite etc with -% \no@cites, for speed. -% -% When the user requests a citation with key, we first look it up -% in a translation table called \key@table, organized as a list of -% pairs, to see if it really should be -% printed differently. The user can specify this translation table using -% the \printkey command. If a key is not in the table, it is printed -% as-is. - -% We keep the dimension \key@size as the largest printed key so far. -% This value can then be used to print the keys in the bibliography -% optimally, rather than just trying to guess. Each time we print a -% (in \use@key), we see if it's longer than \key@size, and if so then -% we set \key@size = its width. -\newdimen\key@size -\key@size=\z@ % Init. value so \key@size is made as small as possible - -% Invisible citation. usage: \icite{key} -\def\icite#1{% - \gaddtolist#1\to\ref@set -} - -% Management of \key@table stuff. This table is formatted as -% \\{real-key}{printed-key}... -\newlist\key@table - -% Add a pair of items to the list. This should be done before any -% citations are made, for obvious reasons. -% #1=real key (the one you use in the paper and bibliography) -% #2=the key that gets printed in the output -\def\printkey#1#2{% - \ta={\\{#1}{#2}}% - \tb=\expandafter{\key@table}% - \xdef\key@table{\the\tb\the\ta}% -} - -% Print a key, looking it up in the table. #1 is \whatever which -% expands to the key used by the user. The definition of \\ here -% makes use of the format of the \key@table, so that the table is -% actually EXECUTED, hence making lookup relatively fast. -\newif\if@not@printed@ -\def\use@key#1{% - \@not@printed@true - \def\\##1##2{% - \if@not@printed@ - \def\temp@uci{##1}% - \ifx\temp@uci#1% - \@not@printed@false - \setbox\z@=\hbox{[##2]\enspace}% - \ifdim\wd\z@>\key@size \global\key@size=\wd\z@ \fi - ##2% - \fi - \fi - }% - \key@table - \if@not@printed@ - \setbox\z@=\hbox{\cite@font[\ignorespaces#1\unskip]\enspace}% - \ifdim\wd\z@>\key@size \global\key@size=\wd\z@ \fi - #1% - \fi -} - -% This macro moves forward until it hits \end, skipping spaces. -% Each time it hits a comma, or when it hits and \end, it -% adds whatever has been collected so far (in \@total) to -% \ref@set and to the output list. It is assumed that \@total -% has been set to \empty before this routine is called (this is done -% by \@@cite, below). -\def\@icite#1{% - \if#1\end - \expandafter\gaddtolist\@total\to\ref@set - \use@key\@total - \let\@next=\relax % Exit loop after this time - \else - \if#1,% % We have a complete key now. - \expandafter\gaddtolist\@total\to\ref@set - \use@key\@total,\space - \global\let\@total=\empty - \else - \xdef\@total{\@total#1}% Add new char to total - \fi - \let\@next=\@icite % Continue looping until done - \fi - \@next -} - -% Initialize and call \@icite. Used in \cite, \citep, \citepp -\def\@@cite#1{\global\let\@total=\empty\@icite#1\end} - -% usage: \cite{key [, key...]} -\def\cite#1{% - {\cite@font[\@@cite{#1}]}% -} - -% usage: \citep{key}{page} -\def\citep#1#2{% - {\cite@font[\@@cite{#1}, \hbox{\rm p \ignorespaces#2\unskip}]}% -} - -% usage: \citepp{key}{pages} -\def\citepp#1#2{% - {\cite@font[\@@cite{#1}, \hbox{\rm pp \ignorespaces#2\unskip}]}% -} - -% These three definitions are used in \no@cites, below. They -% don't handle extraneous spaces as well as the normal -% definition, but they should be sufficient for most people. -\def\i@cite#1{{\cite@font[\noexpand\noexpand\noexpand\@@cite{#1}]}} - -\def\i@citep#1#2{{\cite@font[\noexpand\noexpand\noexpand\@@cite{#1},\space - \hbox{\noexpand\noexpand\noexpand\rm p \ignorespaces#2\unskip}]}% -} - -\def\i@citepp#1#2{{\cite@font[\noexpand\noexpand\noexpand\@@cite{#1},\space - \hbox{\noexpand\noexpand\noexpand\rm pp \ignorespaces#2\unskip}]}% -} - -% Turn off adding citations to \ref@set. This is needed when -% using \cite etc inside a caption for tables, figures, etc. -% \no@cites is undone by exiting an enclosing group. -\def\no@cites{% - \let\citepp=\i@citepp - \let\citep=\i@citep - \let\cite=\i@cite -} - -%%%%%%%%%%%%%%%%%%%%%% -% References Section % -%%%%%%%%%%%%%%%%%%%%%% - -% The basic strategy is as follows. We read the bib. file, which is -% assumed to be in sorted order of keys/author names. Each -% entry is of the form \ref{key}. We see if that key is in the table -% \ref@set, which is a table of all the keys we've \cite'd. If the key -% isn't in the list, we print it in parens and go on to the next entry. -% Otherwise, we print the key in square brackets, and format the -% bibliography entry according to the format (JACM or IEEE). We print a -% warning if the key is in the \ref@seen list. We add the key to -% the \ref@seen list. The key is removed from the \ref@set list if it -% was there. At the end of the references (\endreferences), we check -% if there are any keys left in \ref@set. If so, the bib. file was -% deficient, and we print a warning message (it should probably be a -% fatal error message). - -% Annotation control -\newif\ifinclude@annos % Should annotations be printed? -\include@annosfalse % By default, no -\def\annotate{% % ``official'' command - \include@annostrue - \oktell{Annotating bibliography}% -} - -\newif\ifin@anno % True while doing an annotation -\in@annofalse - -\def\refi@AmS{F} % This starts as False - -% Begin an annotation -- must be in vertical mode. Just gather -% text into box0 for use by \endanno. We do a couple of consistency -% checks at the beginning. -\def\anno{% - \ifhmode - \message{You forgot the \noexpand\endref command!} - \message{I've inserted one for you.} - \endanno - \fi - \if F\refi@AmS - \errmessage{No \noexpand\ref command before first \noexpand\anno} - \fi - \let\\=\newline - \in@annotrue - \setbox\z@=\vbox\bgroup -} - -% End of an annotation. Decide if it should be typeset or skipped. -\def\endanno{% - \egroup % End the group for box0 - \in@annofalse % No longer doing an annotation - \if T\refed@uci % If previous reference was used, - \ifinclude@annos {% And if we're producing an annotated bib., - \vskip\parskip - \interlinepenalty=\defaultinterlinepenalty - \unvbox\z@ % Then include annotation as normal paragraph(s) - \par - }\fi - \fi -} - -\global\newlist\ref@set % list of all references cited -\global\newlist\ref@seen % list of all references defined - -\def\reftitle{References} % Default title for bibliography - -% usage: \references (begin the References section) -\def\references{% - \vfill\supereject % Begin new page, clear out everything - \ifoddpages % Make sure start on even page. - \ifodd\pageno \relax \else \null\vfill\eject \fi - \fi - \begingroup % Following changes are local to bib. - - \twelvepoint % Get good appearance - \singlespace - \no@cites % \cite's just produce [key] - \parskip=0.6\baselineskip plus5\p@ minus4\p@ - \tolerance=5000 % Must be extremely tolerant! - \pretolerance=300 - \interlinepenalty=400 % To discourage breaking a reference - % across page boundaries - \uchyph=\@ne % Needed to try hyphenating title words - \sfcode`.=\@m % Like \frenchspacing, but only for - % periods - - % Now we output the title and so forth. - \centerline{\csc \reftitle}% - \nobreak - \medskip - \content\reftitle % Tell user and TOC. - \oktell\reftitle - \pageno@foot % Put page # in special place - - % Special definitions within reference mode - \let\year=\yr - \let\month=\mon -} - -% usage: \endreferences (end the References section) -\def\endreferences{% - \par % Make sure last printed reference is finished up. - \cardinality\ref@set\to\count@ - \ifnum\count@>\z@ - \def\\##1{[##1] } - \ifnum\count@>1 - \message{Warning: \number\count@\space undefined citations: \ref@set} - \else - \message{Warning: One undefined citation: \ref@set} - \fi - \fi - \endgroup % End of \references group -} - - -% References Database - - -\newbox\bybox@AmS \newbox\bysamebox@AmS -\newbox\paperbox@AmS \newbox\paperinfobox@AmS -\newbox\jourbox@AmS \newbox\jourinfobox@AmS -\newbox\volbox@AmS \newbox\issuebox@AmS -\newbox\monbox@AmS \newbox\yrbox@AmS -\newbox\pagesbox@AmS \newbox\editorbox@AmS -\newbox\bookbox@AmS \newbox\bookinfobox@AmS -\newbox\publbox@AmS \newbox\publaddrbox@AmS -\newbox\finalinfobox@AmS\newbox\wastebox@uci -\newbox\talkbox@AmS \newbox\keybox@AmS -\newbox\editorsbox@AmS - -\def\using@IEEE{F} % By default, not using IEEE format - -% reset a \keyword to the ``not used'' condition -\def\refset@AmS#1{% - \expandafter\gdef\csname is\expandafter\eat@AmS - \string#1@AmS\endcsname{F}\expandafter - \setbox\csname\expandafter\eat@AmS\string#1box@AmS\endcsname=\null -} - -% reset \keyword's -\def\ref@AmS{% - \refset@AmS\key \refset@AmS\finalinfo - \refset@AmS\by \gdef\isbysame@AmS{F}% - \refset@AmS\paper \refset@AmS\paperinfo - \refset@AmS\jour \refset@AmS\jourinfo - \refset@AmS\vol \refset@AmS\issue - \refset@AmS\mon \refset@AmS\yr - \refset@AmS\pages \gdef\ispage@AmS{F}% - \refset@AmS\book \refset@AmS\bookinfo - \refset@AmS\publ \refset@AmS\publaddr - \refset@AmS\editor \refset@AmS\talk - \refset@AmS\editors - \gdef\istoappear@AmS{F}% - \gdef\isinbook@AmS{F}% - \bgroup - \ignorespaces -} - -% usage: \ref{citation} \keywords arguments ... \endref. We make sure -% we aren't still doing an \anno first. -\def\ref#1{% - \ifin@anno - \message{You forgot an \noexpand\endanno command,} - \message{but I forgive you this time.} - \endanno - \fi - \def\refi@AmS{T}% - \ifwasmember#1\of\ref@set - \def\refed@uci{T}% - \okmessage{[#1]}% - \else - \def\refed@uci{F}% - \okmessage{(#1)}% - \fi - \ifismember#1\of\ref@seen - \sanetell{multiply defined: [#1]}% - \else - \append#1\to\ref@seen - \fi - \def\refl@AmS{F}% - \def\\{\egroup\endref@AmS\gdef\refi@AmS{F}\ref@AmS}% - \ref@AmS - \gdef\@total{#1}% - \key \if T\refed@uci - \use@key\@total - \fi\egroup\setbox\wastebox@uci=\hbox\bgroup\ignorespaces -} - -% End of a reference. -% -% Note that \endref@AmS is \let to be whichever \endref@xxx command -% is being used; default is \endref@JACM for JACM format. -% -% If we printed the reference, \endref@AmS will -% have set \bysamebox@AmS to be a box containing a box -% containing a rule and a period. This is unboxed if a subsequent -% reference which gets printed uses \bysame. Otherwise, we here -% save the \by field (if given) so that if a subsequent reference -% using \bysame gets used, we'll know who the author was, even though -% the reference which gave the author(s) wasn't printed. Tricky, huh? -\def\endref{% - \egroup\gdef\refl@AmS{T}% - \if T\refed@uci - \endref@AmS - \else - \if T\isby@AmS - \setbox\bysamebox@AmS=\box\bybox@AmS - \fi - \fi - \par -} - -% define a \keyword. #1=keyword, #2=font to use, or {} -\def\refdef@AmS#1#2{% - \def#1{% - \egroup - \expandafter\gdef - \csname is\expandafter\eat@AmS\string#1@AmS\endcsname{T}% - \expandafter\setbox - \csname\expandafter\eat@AmS\string#1box@AmS\endcsname - =\hbox\bgroup#2\ignorespaces - }% -} - -% define the keywords - -\refdef@AmS\by\by@font \refdef@AmS\paper{} -\refdef@AmS\paperinfo{} \refdef@AmS\jour\book@font -\refdef@AmS\vol\book@font \refdef@AmS\issue{} -\refdef@AmS\mon{} \refdef@AmS\yr{} -\refdef@AmS\pages{} \refdef@AmS\talk{} -\refdef@AmS\book\book@font \refdef@AmS\bookinfo{} -\refdef@AmS\publ{} \refdef@AmS\publaddr{} -\refdef@AmS\finalinfo{} \refdef@AmS\editor{} -\refdef@AmS\jourinfo{} \refdef@AmS\key\cite@font -\refdef@AmS\editors{} - -% These don't fit the normal pattern. -\def\bysame{\egroup\gdef\isbysame@AmS{T}\bgroup} -\def\page{\egroup\gdef\ispage@AmS{T}\setbox\pagesbox@AmS=\hbox\bgroup - \ignorespaces} -\def\toappear{\egroup\gdef\istoappear@AmS{T}\bgroup} -\def\inbook{\egroup\gdef\isinbook@AmS{T}\setbox\bookbox@AmS=\hbox\bgroup - \book@font\ignorespaces -} - -% This is the font we normally print book and journal titles in, but we -% use \twelveit for IEEE format. -\let\book@font=\twelvesl - -% Similarly, this is the font to use for the author's name(s). -% Optionally, the user can ask for the cite font instead (this is -% not necessarily related to use of the IEEE format). -\let\by@font=\twelverm - -% As an option, the user can have the author's name(s) in caps-small-caps. -\def\AuthorsInCSC{% - \let\by@font=\elevencsc - \oktell{Authors in CSC mode}% -} - -% Define some aliases for some of the above, for user convenience. -\let\pp=\pages -\let\pgs=\pages -\let\pg=\page -\let\p=\page -\let\journal=\jour -\let\volume=\vol -\let\author=\by -\let\authors=\by -\let\ieee@editors=\editors % Save it in case we use IEEE format -\let\editors=\editor % If using default JACM format -\let\other=\talk -\let\no=\issue - -% Helpers to \endref@AmS, which speed things up a lot, and/or -% make the code more compact. -\def\a@comma{, } % Used in next routine. Predefined for speed of \let. -\def\setpunct@AmS{\let\prepunct@AmS=\a@comma} -\def\ppunbox@AmS#1{\prepunct@AmS\unhbox#1\unskip} - - -% Actually do some typesetting (finally). As mentioned above, -% \endref@AmS is called to print a reference if we want it. It -% is \let to be either \endref@JACM or \endref@IEEE (or possibly -% some other format in the future) depending on the desired -% format. -% -% For some reason, the ~'s don't see to tie things, so some -% \hbox's were introduced. -% -% There is unfortunately a lot of common code between the -% different formats. Here are some sections which were easy to -% pull out: -\def\endref@startup{% - % Test to see if there is anything in the wastebox - \setbox\wastebox@uci=\hbox{\unhbox\wastebox@uci\unskip}% - \ifdim\wd\wastebox@uci>\z@ - \errmessage{Keyword omitted after \noexpand\ref}% - \fi - \let\prepunct@AmS=\empty - \vskip\parskip - \noindent \hangafter=\@ne -} - -% This is the text printed for the JACM format for papers -% appearing in a book. -\def\appearing@in{Appearing in } - -% Common code at the end of \endref@JACM and \endref@IEEE. -% The argument is the date routine to use. -\def\endref@finishup#1{% - \if T\istalk@AmS - \dimen@=\wd\talkbox@AmS - \ifdim\dimen@>\z@ - \ppunbox@AmS\talkbox@AmS\setpunct@AmS - \fi - \fi - \if T\isbook@AmS - \ppunbox@AmS\bookbox@AmS \setpunct@AmS - \editor@ref - \fi - \if T\isinbook@AmS - \prepunct@AmS\appearing@in\unhbox\bookbox@AmS\unskip \setpunct@AmS - \editor@ref \gdef\isbook@AmS{T}% - \fi - \if T\isbookinfo@AmS - \ppunbox@AmS\bookinfobox@AmS\setpunct@AmS - \fi - \if T\using@IEEE - \if T\ispubladdr@AmS - \ppunbox@AmS\publaddrbox@AmS - \if T\ispubl@AmS \def\prepunct@AmS{: }\else\setpunct@AmS\fi - \fi - \if T\ispubl@AmS - \ppunbox@AmS\publbox@AmS\setpunct@AmS - \fi - \else - \if T\ispubl@AmS - \ppunbox@AmS\publbox@AmS\setpunct@AmS - \fi - \if T\ispubladdr@AmS - \ppunbox@AmS\publaddrbox@AmS\setpunct@AmS - \fi - \fi - \if T\isbook@AmS - \if T\isvol@AmS - \prepunct@AmS Vol.~\unhbox\volbox@AmS\unskip\setpunct@AmS - \fi - \if T\isyr@AmS - \ppunbox@AmS\yrbox@AmS\setpunct@AmS - \fi - \if T\istoappear@AmS - \ (to appear)\setpunct@AmS - \fi - \if T\ispages@AmS - \prepunct@AmS pp.~\unhbox\pagesbox@AmS\unskip\setpunct@AmS - \fi - \if T\ispage@AmS - \prepunct@AmS p.~\unhbox\pagesbox@AmS\unskip\setpunct@AmS - \fi - \fi - \if T\istalk@AmS - #1% This is the date routine to use. - \fi - \if T\isfinalinfo@AmS - \period\unhbox\finalinfobox@AmS - \else - \if T\refl@AmS . - \else ; - \fi - \fi -} - -% Print editor(s) if and as appropriate. -\def\editor@ref{% - \if T\using@IEEE - \if T\iseditor@AmS - \ppunbox@AmS\editorbox@AmS, Ed.\setpunct@AmS - \fi - \if T\iseditors@AmS - \ppunbox@AmS\editorsbox@AmS, Eds.\setpunct@AmS - \fi - \else - \if T\iseditor@AmS - \ppunbox@AmS\editorbox@AmS\ (ed.)\setpunct@AmS - \fi - \fi -} - -% This routine prints the date in the JACM format -\def\date@JACM{% - \if T\isyr@AmS - \/\ (% - \if T\ismon@AmS - \unhbox\monbox@AmS\unskip, - \fi - \unhbox\yrbox@AmS\unskip)\setpunct@AmS - \else - \if T\ismon@AmS - \ppunbox@AmS\monbox@AmS\setpunct@AmS - \fi - \fi -} - -% This prints the date in the IEEE format. -\def\date@IEEE{% - \if T\isyr@AmS - \prepunct@AmS - \if T\ismon@AmS - \unhbox\monbox@AmS\unskip\a@comma - \fi - \unhbox\yrbox@AmS\unskip\setpunct@AmS - \else - \if T\ismon@AmS - \ppunbox@AmS\monbox@AmS\setpunct@AmS - \fi - \fi -} - - -% This version produces JACM format references. -\def\endref@JACM{% - \endref@startup - \if T\refi@AmS - \hbox to \key@size{\cite@font [\unhbox\keybox@AmS\unskip]\hfil}% - \hangindent=\key@size - \if T\isby@AmS - \unhcopy\bybox@AmS\unskip - \def\prepunct@AmS{\hskip7\p@ plus5\p@\relax}% - \setbox\z@=\hbox{\unhbox\bybox@AmS\unskip}% - \dimen@=\wd\z@ % We want \dimen0=max(\wd0, 2in) - \ifdim\dimen@>2in \dimen@=2in \fi - \setbox\bysamebox@AmS=\hbox{\hbox to\dimen@{\leaders\hrule\hfill.}}% - \else - \if T\isbysame@AmS - \unhcopy\bysamebox@AmS\unskip - \def\prepunct@AmS{\hskip7\p@ plus5\p@\relax}% - \fi - \fi - \fi - \if T\ispaper@AmS - \ppunbox@AmS\paperbox@AmS\def\prepunct@AmS{. }% - \fi - \if T\ispaperinfo@AmS - \ppunbox@AmS\paperinfobox@AmS\def\prepunct@AmS{. }% - \fi - \if T\isjour@AmS - \ppunbox@AmS\jourbox@AmS\setpunct@AmS - \editor@ref - \if T\isjourinfo@AmS - \ppunbox@AmS\jourinfobox@AmS\setpunct@AmS - \fi - \if T\isvol@AmS - \ \unhbox\volbox@AmS\unskip - \fi - \if T\isissue@AmS - \ppunbox@AmS\issuebox@AmS\setpunct@AmS - \fi - \date@JACM - \if T\istoappear@AmS - \ (to appear)\setpunct@AmS - \fi - \if T\ispages@AmS - \ppunbox@AmS\pagesbox@AmS\setpunct@AmS - \fi - \if T\ispage@AmS - \prepunct@AmS p.~\unhbox\pagesbox@AmS\unskip\setpunct@AmS - \fi - \fi - \endref@finishup\date@JACM -} - - -% This version produces IEEE format references. -\def\endref@IEEE{% - \endref@startup - \if T\refi@AmS - \hbox to \key@size{\cite@font [\unhbox\keybox@AmS\unskip]\hfil}% - \hangindent=\key@size - \if T\isby@AmS \unhcopy\bybox@AmS\unskip\setpunct@AmS - \setbox\z@=\hbox{\unhbox\bybox@AmS\unskip}% - \dimen@=\wd\z@ % We want \dimen0=max(\wd0, 2in) - \ifdim\dimen@>2in \dimen@=2in \fi - \setbox\bysamebox@AmS=\hbox{\hbox to\dimen@{\leaders\hrule\hfill}}% - \else - \if T\isbysame@AmS - \unhcopy\bysamebox@AmS\unskip\setpunct@AmS - \fi - \fi - \fi - \if T\ispaper@AmS - \prepunct@AmS``\unhbox\paperbox@AmS\unskip,'' - \let\prepunct@AmS=\empty - \fi - \if T\ispaperinfo@AmS - \ppunbox@AmS\paperinfobox@AmS\def\prepunct@AmS{, }% - \fi - \if T\isjour@AmS - \ppunbox@AmS\jourbox@AmS\setpunct@AmS - \editor@ref - \if T\isjourinfo@AmS - \ppunbox@AmS\jourinfobox@AmS\setpunct@AmS - \fi - \if T\isvol@AmS - \prepunct@AmS vol.~\unhbox\volbox@AmS\unskip\setpunct@AmS - \fi - \if T\isissue@AmS - \prepunct@AmS no.~\unhbox\issuebox@AmS\unskip\setpunct@AmS - \fi - \if T\istoappear@AmS - \ (to appear)\setpunct@AmS - \fi - \if T\ispages@AmS - \prepunct@AmS pp.~\unhbox\pagesbox@AmS\unskip\setpunct@AmS - \fi - \if T\ispage@AmS - \prepunct@AmS p.~\unhbox\pagesbox@AmS\unskip\setpunct@AmS - \fi - \if T\ispubladdr@AmS - \ppunbox@AmS\publaddrbox@AmS - \if T\ispubl@AmS \def\prepunct@AmS{: }\else\setpunct@AmS\fi - \fi - \if T\ispubl@AmS - \ppunbox@AmS\publbox@AmS\setpunct@AmS - \fi - \let\ispubl@AmS=F\let\ispubladdr@AmS=F% For finishup routine - \date@IEEE - \fi - \endref@finishup\date@IEEE -} - - -% By default, we use JACM format references -\let\endref@AmS=\endref@JACM - -% But it's possible to get the other format -\def\IEEE{% - \gdef\using@IEEE{T}% Now we're using IEEE format. - \let\editors=\ieee@editors - \let\endref@AmS=\endref@IEEE - \refdef@AmS\vol{}% Vol not printed in slanted any more. - \global\let\appearing@in=\empty % Don't say that in IEEE format. - \let\volume=\vol - \let\book@font=\twelveit % Book and journal titles in this font. - \oktell{IEEE Bibliography Style}% -} - - -% References Dump - -\newwrite\dump@file - -\catcode`\{=12 \catcode`\}=12 \catcode`\%=12 \catcode`\[=1 \catcode`\]=2 -\def\ref@open[{] -\def\ref@close[}] -\def\ref@comment[%] -\catcode`\{=1 \catcode`\}=2 \catcode`\%=14 \catcode`\[=12 \catcode`\]=12 - -\def\refdump{% - \vfill\supereject - \begingroup - \content\reftitle - \tell{Dumping \reftitle\space to refdump.tex}% - \immediate\openout\dump@file=refdump - \immediate\write\dump@file{% - \noexpand\catcode`\noexpand\@=11 ^^J% - \noexpand\let\noexpand\content=\noexpand\eat@AmS^^J% - \noexpand\pageno=\the\pageno^^J% - \noexpand\def\noexpand\ref@set\ref@open\ref@comment - }% - \def\\##1{\immediate\write\dump@file{ \noexpand\\{##1}\ref@comment}}% - \ref@set - \immediate\write\dump@file{% - \ref@close^^J% - }% - \immediate\closeout\dump@file - \endgroup -} - - -%%%%%%%%%%%%%%%%%%%% -% OUTPUT CONTROL % -%%%%%%%%%%%%%%%%%%%% - -% Control for informational messages. Default is \verbose mode. -\newif\iftell@all -\let\verbose=\tell@alltrue -\let\quiet=\tell@allfalse -\verbose -\def\oktell#1{\iftell@all\tell{#1}\fi} -\def\okmessage#1{\iftell@all\message{#1}\fi} - -% Chapter macro parameters -\newcount\chapterno -\chapterno=\z@ % Number of current chapter -\newif\ifnumber@chapters -\number@chapterstrue % By default, number the chapters -\def\nochapternumbers{% - \number@chaptersfalse - \oktell{No Chapter Numbers mode}% -} - -% Same thing for sections, subsections, etc -\newcount\sectno \sectno=\@ne -\newcount\subsectno \subsectno=\@ne -\newcount\subsubsectno \subsubsectno=\@ne -\newif\ifnumber@sections -\def\numbersections{% - \number@sectionstrue - \oktell{Section Numbers mode}% -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%% -% OUTPUT CONTROL MACROS % -%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -% Center, left justify, right justify -- avoid exceeding margins -\def\centerline#1{\line{\hfill#1\hfill}} -\def\leftline#1{\line{#1\hfill}} -\def\rightline#1{\line{\hfill#1}} -\def\threepart#1#2#3{\line{\hskip\leftskip\rlap{#1}\hfill#2\hfill - \llap{#3}\hskip\rightskip}} - -% End of the main body of the document -\let\enddiss=\bye - -% Summary Information -\outer\def\showsummary{% - \begingroup - \def\note##1##2##3##4{% - \count@=##1 - \advance\count@ by##3 - \ifcase\count@ - \message{No ##2s##4}\or - \message{1 ##2##4}\else - \message{\the\count@\space ##2s##4}\fi - }% - \note\fignumber{figure}{-1}{,}% - \note\tablenumber{table}{-1}{,}% - \note\note@count{footnote}{-1}{,}% - \cardinality\ref@set\to\count@ - \note\count@{citation}{0}{.}% - \endgroup -} - - -% Real version of ragged right margins -\def\raggedright{% - \rightskip=\z@ plus 2em - \oktell{Raggedright mode}% -} - -% Disallow hyphenation -- a very dangerous thing -\def\nohyphens{% - \hyphenpenalty=\@M\tolerance=500\pretolerance=\@M - \oktell{Nohyphens mode}% -} - -% Allow capitalized words to be hyphenated -\def\hyphenall{% - \uchyph=\@ne - \oktell{Hyphenating all words}% -} - -% Handle a long quotation in a standard way -\def\bigquote#1\endbigquote{% - \par - \vskip \baselineskip \vskip -\parskip - { \advance\rightskip by30\p@ - \advance\leftskip by30\p@ - \smallertype - \singlespace - \let\\=\newline - \noindent\llap{``}\ignorespaces#1\unskip''\par - }% End of singlespacing and special indentation - \vskip \baselineskip \vskip -\parskip -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% CHAPTERS, SECTIONS, FIGURES, TABLES % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% What to do at the beginning of a chapter -\def\chapter#1\endchapter{ - \chapter@base #1\endchapter - \oktell{Chapter \number\chapterno: #1} - \content{Chapter \number\chapterno: #1} -} - - -% This boolean controls whether chapters are made to start only on -% odd pages. -\newif\ifoddpages -\oddpagesfalse -\def\twosided{% This is the ``official'' command - \oddpagestrue - \oktell{Twosided mode}% -} - -% The guts of the \chapter command. \chapter==\chapter@base when -% in \articlestyle. -\def\chapter@base#1\endchapter{ - \par - \clearpage % Clean up from prev chapter - \ifoddpages % Make sure start on even page. - \ifodd\pageno \relax \else \null\vfill\eject \fi - \fi - \pageno@foot % Page #ing special for chap pages - \advance\chapterno by\@ne - \ifnumber@chapters - \centerline{\chap@font CHAPTER \number\chapterno}% Do heading - \fi - \sectno=\z@ - \subsectno=\z@ - \subsubsectno=\z@ - {\let\\=\cr \tabskip=\z@ \chap@font % Center the chapter title - \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr#1\cr} - } - \nobreak % Shouldn't happen anyway - \vskip 1.0in minus 0.15in -} - -% What to do at the beginning of a section -\outer\def\section{\dosection} -\def\dosection#1{% - \skip@=\lastskip % \par resets \lastskip, apparently - \par - % This junk trys to provide consistent spacing - \dimen@=\baselineskip - \ifdim\skip@<\dimen@ - \ifdim\skip@=\z@ - \penalty-200 - \fi - \vskip \dimen@ plus .5\baselineskip - \fi - \ifnumber@sections - \advance\sectno by\@ne - \subsectno=\z@ - \subsubsectno=\z@ - \leftline{\sec@font\number\sectno. #1} - \else - \leftline{\sec@font#1} - \fi - \subcontent{#1} - \sanetell{ Section: #1} - \nobreak - \vskip \z@ plus .15\baselineskip - \vskip -\parskip -} - -% And for sub-sections -\outer\def\subsection{\dosubsection} -\def\dosubsection#1{% - \skip@=\lastskip - \par - \dimen@=.6\baselineskip - \ifdim\skip@<\dimen@ - \ifdim\skip@=\z@ - \penalty-100 - \fi - \vskip \dimen@ plus .3\baselineskip - \fi - \ifnumber@sections - \advance\subsectno by\@ne - \subsubsectno=\z@ - \leftline{\subsec@font\number\sectno.\number\subsectno. #1} - \else - \leftline{\subsec@font#1} - \fi - \subsubcontent{#1} - \sanetell{ \\Subsection: #1} - \nobreak - \vskip \z@ plus .1\baselineskip - \vskip -\parskip -} - -% And for sub-sub-sections -\outer\def\subsubsection{\dosubsubsection} -\def\dosubsubsection#1{% - \skip@=\lastskip - \par - \dimen@=.5\baselineskip - \ifdim\skip@<\dimen@ - \ifdim\skip@=\z@ - \penalty-50 - \fi - \vskip \dimen@ plus .3\baselineskip - \fi - \ifnumber@sections - \advance\subsubsectno by\@ne - \leftline{\subsubsec@font\number\sectno.\number\subsectno - .\number\subsubsectno. #1} - \else - \leftline{\subsubsec@font#1} - \fi - \subsubsubcontent{#1} - \sanetell{ \\\\Subsubsection: #1} - \nobreak - \vskip -\parskip -} - -% This is an alternate definition for plain TeX's \@ins, -% omitting the \par. It is for use during \figure etc. Reason: -% If you use \figure right after \section, it would otherwise -% become a legal place for a page break. -\def\@ins@uci{\begingroup\setbox\z@\vbox\bgroup} - -% This is \endinsert from plain.tex, but \midinsert's are not converted -% to \topinsert's, since that can lead to figures getting out of order. -% This can lead to excessive blank space at the bottom of the page, but -% that's life. Makes use of \keep...\endkeep type stuff. -\def\endinsert{\egroup % finish the \vbox - \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ - \advance\dimen@12\p@ - \vskip\z@ plus\dimen@ - \penalty\z@ - \vskip\z@ plus-\dimen@ - \bigskip\box\z@\bigbreak - \else\insert\topins{\penalty100 % floating insertion - \splittopskip\z@skip - \splitmaxdepth\maxdimen \floatingpenalty\z@ - \ifp@ge \dimen@\dp\z@ - \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero - \else \box\z@\nobreak\bigskip\fi}\fi\endgroup} - - -% This macro provides rudamentary support for figures. The -% argument to \figure is the name of the file containing the tpic (or whatever) -% output. The second argument is the caption for the picture. -% As usual, TeX's delayed paging and midinserting causes expansion-timing -% problems which have to be kludged around. -\newif\iftopfigs \topfigstrue -\def\domidfigs{% - \topfigsfalse - \oktell{Midfigs mode}% -} - -% Counters for figures/diagrams/examples and tables -\newcount\fignumber \fignumber=\@ne -\newcount\tablenumber \tablenumber=\@ne - -% Helper for \figure, \example, and \diagram. Define \lastfigure and -% \this@insert, increment the figure number for next time, and make sure -% the figures list file is open for writing. -% #1=the caption, to be written to the figures list file -\def\advance@figno#1{% - \xdef\lastfigure{\the\fignumber}% Remember the current figure number - \begingroup\no@cites - \let\\=\space - \xdef\this@insert{\write\noexpand\fig@file{\noexpand\noexpand - \noexpand\listfig{\lastfigure}{#1}% - {\noexpand\number\noexpand\pageno}% - }% - }% - \endgroup - \global\advance\fignumber by\@ne - \iffig@closed % Open figures file if not already - \immediate\openout\fig@file=\figtitle - \global\fig@closedfalse - \fi -} - -% Bump the table number after defining \lasttable. Prepare \this@insert. -% Define \table@caption. -\def\advance@tablenumber#1{% - \xdef\lasttable{\the\tablenumber}% Remember the current figure number - \begingroup \no@cites \let\\=\space - \xdef\this@insert{\write\noexpand\tab@file{\noexpand\noexpand - \noexpand\listfig{\lasttable}{#1}% - {\noexpand\number\noexpand\pageno}% - }% - }% - \endgroup - \global\advance\tablenumber by\@ne - \gdef\table@caption{#1}% -} - -\newif\ifpage@figs \page@figsfalse - -% Special mode to put figures/diagrams/examples on separate pages -\def\pagefigs{% - \oktell{Page Figures mode}% - \page@figstrue -} - -% Usage: \figure{filename}{caption with \\'s} -\def\figure#1#2{% - \begingroup % Hide anything that crazy user does! - \advance@figno{#2}% - % Now do mid or top insert as appropriate - \let\@ins=\@ins@uci - \ifpage@figs - \shipout\vbox to\vsize\bgroup - {\smallertype\rm\input #1\relax\centerline{\box\graph}}% - \vfill - \centerline{Figure \lastfigure}\this@insert - \egroup - \else \iftopfigs \topinsert \else \midinsert \fi - \hrule - \vskip .5\baselineskip - {\smallertype\rm\input #1\relax\centerline{\box\graph}}% - \vskip .5\baselineskip plus .5\baselineskip - \centerline{\twelvebf Figure \lastfigure}% - \this@insert - \let\\=\cr \tabskip=\z@ - \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr#2\cr}% - \vskip2\p@ - \hrule - \endinsert - \fi - \endgroup -} - - -% Allow user to specify arbitrary diagrams. The arguments are: -% #1=name of the file containing the commands to form the diagram, -% #2=caption for the figure, possibly containing \\'s. -\def\diagram#1#2{% - \begingroup - \advance@figno{#2}% - % Do mid or top insert as appropriate - \let\@ins=\@ins@uci - \ifpage@figs - \shipout\vbox to\vsize\bgroup - {\smallertype\rm\input #1\relax}% - \vfill - \centerline{\twelverm Figure \lastfigure}\this@insert - \egroup - \else \iftopfigs \topinsert \else \midinsert \fi - \hrule - \vskip .5\baselineskip - {\smallertype\rm\input #1\relax}% - \vskip .5\baselineskip plus .5\baselineskip - \centerline{\twelvebf Figure \lastfigure}% - \this@insert - \let\\=\cr \tabskip=\z@ - \halign to \hsize{\centerline{\ignorespaces##\unskip}\cr#2\cr}% - \vskip2\p@ - \hrule - \endinsert - \fi - \endgroup -} - - -% Allow user to include verbatim examples from files. The arguments are: -% #1=name of the file containing the text of the example, -% #2=caption for the figure, possibly containing \\'s. -\def\example#1#2{% - \begingroup - \advance@figno{#2}% - % Do mid or top insert as appropriate - \let\@ins=\@ins@uci - \ifpage@figs - \shipout\vbox to\vsize\bgroup - \vbox{\smallertype\singlespace\verbfile{#1}}% - \vfill - \centerline{\twelverm Figure \lastfigure}\this@insert - \egroup - \else \iftopfigs \topinsert \else \midinsert \fi - \hrule - \vskip .5\baselineskip - \vbox{\smallertype\singlespace\verbfile{#1}}% - \vskip .5\baselineskip plus .5\baselineskip - \centerline{\twelvebf Figure \lastfigure}% - \this@insert - \let\\=\cr \tabskip=\z@ - \halign to \hsize{\centerline{\ignorespaces##\unskip}\cr#2\cr}% - \vskip2\p@ - \hrule - \endinsert - \fi - \endgroup -} - - -% Similar thing for tables -% usage: \table{caption} ...text... \endtable -\def\table#1{% - \begingroup % Hide user zingers - \advance@tablenumber{#1}% - \setbox\z@=\vbox\bgroup -} - - -% End of the table body specification. -\def\endtable{% - \egroup % End the definition of \box0. - % Now do top or mid insert - \let\@ins=\@ins@uci - \iftab@closed % Open output file if necessary - \immediate\openout\tab@file=\tabtitle - \global\tab@closedfalse - \fi - \ifpage@figs - \shipout\vbox to\vsize\bgroup - \box\z@ - \vfill - \centerline{\twelverm Table \lasttable}\this@insert - \egroup - \else \iftopfigs \topinsert \else \midinsert \fi - \hrule - \vskip .5\baselineskip - \box\z@ % Insert the material here. - \vskip .5\baselineskip plus .5\baselineskip - \centerline{\twelvebf Table \lasttable}% - \this@insert - \let\\=\cr \tabskip=\z@ - \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr\table@caption - \cr}% - \vskip2\p@ - \hrule - \endinsert - \fi - \endgroup -} - - -% End of the table body specification for a full-page table. -\def\endtablepage{% - \egroup % End the definition of \box0. - % Now do top or mid insert - \let\@ins=\@ins@uci - \iftab@closed % Open output file if necessary - \immediate\openout\tab@file=\tabtitle - \global\tab@closedfalse - \fi - \ifpage@figs - \shipout\vbox to\vsize\bgroup - \box\z@ - \vfill - \centerline{\twelverm Table \lasttable}\this@insert - \egroup - \else \pageinsert - \hrule - \vskip .5\baselineskip - \box\z@ % Insert the material here. - \vskip .5\baselineskip plus .5\baselineskip - \centerline{\twelvebf Table \lasttable}% - \this@insert - \let\\=\cr \tabskip=\z@ - \halign to\hsize{\centerline{\ignorespaces##\unskip}\cr\table@caption - \cr}% - \vskip2\p@ - \hrule - \endinsert - \fi - \endgroup -} - -% Environment for report generation -- use only at the beginning! -% Since sections are the biggest division, the table of contents -% stuff is redefined, and chapter numbering is turned off so that -% \chapter can be used for the first-page title. The title page -% gets no page number (page # 0). The user can get to the -% normal chapter font as \titlefont, and the section font as -% \authorfont. -\def\articlestyle{% - \nochapternumbers - \let\subsubsubcontent=\subsubcontent - \let\subsubcontent=\subcontent - \let\subcontent=\content - \let\chapter=\chapter@base - \pageno=\z@ - \let\titlefont=\chap@font - \let\authorfont=\sec@font - \oktell{Articlestyle mode}% -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% PAGE NUMBERING and OUTPUT ROUTINES % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% This macro produces a blank, numbered page of output -\def\blankpage{\pageinsert \null\vfill \endinsert} - -% This defintion of \folio differs from Plain's in that (a) page -% numbers are printed in 12pt, and (b) roman numeral ones are -% printed in italics. It makes use of a trick, that -% \romannumeral0 produces no output, which we need for title -% pages and things, so we make their page numbers be 0. -\def\folio{\ifnum\pageno>\z@ - {\twelverm\number\pageno}\else - {\twelveit\romannumeral-\pageno}\fi -} - -% Permanent definitions of macros which get switched in and out -% with \let's. Do not change any of these !!! -\def\uci@headpage{\hfill\folio} -\def\uci@footpage{\hfill\folio\hfill} -\headline={\uci@headline} -\footline={\uci@footline} - -% If this is used as the footline, it causes a page number to be -% printed, but with the side-effect of making the headline blank -% and the footline a page number again. This is used on pages -% like the first of a chapter. -\def\no@foot{% - \uci@footpage - \global\let\uci@footline=\hfil - \global\let\uci@headline=\uci@headpage -} - -% This macro causes the page number to be at the bottom of the current -% page, and after it has been used there once, it moves to the -% top right of each page. It also sets \dimen\topins=0pt so that -% any material \topinsert'd on these pages will get carried over -% to subsequent pages. -\def\pageno@foot{% - \dimen\topins=\z@ - \let\uci@headline=\hfil - \let\uci@footline=\no@foot -} - -% Executing this causes page numbers to be at the bottom only, as -% with the plain TeX format. -\def\plain@page@numbers{% - \let\uci@headline=\hfil % Initial values similar to plain's - \let\uci@footline=\uci@footpage -} - -% Change plain's \makeheadline and \makefootline to position page -% numbers as required. -\def\makeheadline{% - \vbox to\z@{\vskip-22.65\p@ - \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip -} -\def\makefootline{\baselineskip=1.6cm\line{\the\footline}} - -% Define an output routine which will restore \dimen\topins -% after \chapter, \references, etc, title pages, which have -% \dimen\topins=0pt -\def\dissoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}% - \advancepageno \global\dimen\topins=\vsize - \ifnum\outputpenalty>-\@MM \else\dosupereject\fi -} -\let\output@AmS=\dissoutput -\dimen\topins=\vsize % Don't insert more than will fit on one page - -% Output Routines: We adjust the \raggedbottom command of plain -% TeX so that the extra space is no more than 1in, and so that -% the space is put above footnotes instead of below. NOTE: Since -% we put a \vfil below the page contents, the topskip glue will -% never actually be stretched. Its stretchability is just to -% let TeX know about the raggedness in computing when to make a -% page break. Since it's 1in, the \vfil will never be stretched to -% more than that amount. - -\def\raggedbottom{\topskip=\normal@topskip plus1in \r@ggedbottomtrue - \oktell{Ragged bottom mode}} -\def\normalbottom{\topskip=\normal@topskip\r@ggedbottomfalse - \oktell{Normal bottom mode}} - -\def\pagecontents{% - \ifvoid\topins\else\unvbox\topins\fi - \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255 - \ifr@ggedbottom \kern-\dimen@ \vfil\fi - \ifvoid\footins \else % footnote info is present - \vskip\skip\footins - \footnoterule - \unvbox\footins - \fi -} - - -%%%%%%%%%%%%%%%%%%%% -% INITIALIZATION % -%%%%%%%%%%%%%%%%%%%% - -\font@no=0 % Default font=\rm, -\twelvepoint % point size, -\doublespace % and spacing -\plain@page@numbers % Page nos like plain's - -% Note that normally in AmSTeX, the @ character may not be used. -% But in the dissertation style, @ may be used as a normal character, -% As it can in plain TeX. -\catcode`\@=12 - -% Eat any further \documentstyle commands -\def\documentstyle#1{} - -% This prints out our welcome message, and it computes the time -% and date string once per run, which saves time if they're used -% more than once. Since \catcode`@=12 at the time this is -% executed, it can't contain any @-type macros. -\everyjob={% - \begingroup - \xdef\today{% - \ifcase\month - \the\month\or - January\or - February\or - March\or - April\or - May\or - June\or - July\or - August\or - September\or - October\or - November\or - December\else - \the\month - \fi\space\the\day, \the\year - }% - \count0=\time - \count1=\count0 - \divide\count0by60 - \count2=\count0 - \multiply\count0by60 - \advance\count1by-\count0 - \ifnum\count2>11 - \ifnum\count2>12 \advance\count2by-12\fi - \def\ampm{PM}% - \else - \ifnum\count2=0 \advance\count2by12\fi - \def\ampm{AM}% - \fi - \xdef\daytime{% - \ifnum\count2<10 0\fi \the\count2:% - \ifnum\count1<10 0\fi \the\count1 - \ampm - }% - \endgroup - \tell{AmSTeX Dissertation Style, version \version}% -} - -\edef\temp@uci{\the\everyjob} -\temp@uci diff --git a/docs/historical/doclib/sfwmac.tex b/docs/historical/doclib/sfwmac.tex deleted file mode 100644 index ee42e240..00000000 --- a/docs/historical/doclib/sfwmac.tex +++ /dev/null @@ -1,120 +0,0 @@ -% Support for writing UNIX-style documentation (based on webmac.tex) - - -\catcode`\@=11 % for a little while - - -% More fonts - -\font\sixteentex=cmtex10 scaled\magstep2 -\font\twelvetex=cmtex10 scaled\magstep1 -\font\tentex=cmtex10 -\font\eighttex=cmtex10 - -\def\curfont{% - \ifcase\font@no - \rm\or - \it\or - \sl\or - \bf\or - \tt\or - \sc\or - \sf\or - \tx - \else \errmessage{font madness}\fi -} - -\chardef\AM=`\& % ampersand -\chardef\BS=`\\ % backslash -\chardef\LB=`\{ % left brace -\chardef\RB=`\} % right brace -\def\LQ{{\tt\char'22}} % left quote -\def\RQ{{\tt\char'23}} % right quote -\def\SP{{\tt\char`\ }} % space -\chardef\TL=`\~ % tilde -\chardef\UL=`\_ % underline - -\def\everypointsize#1#2{% - \def\tx{% - \font@no=8 - \csname#1tex\endcsname - \let\&=\AM \let\\=\BS \let\{=\LB \let\`=\LQ - \let\}=\RB \let\'=\RQ \let\ =\SP \let\~=\TL - \let\_=\UL - }% -} - -\curtype - - -% Standard Characters - -\def\#{\hbox{\tt\char`\#}} % parameter sign -\def\${\hbox{\tt\char`\$}} % dollar sign -\def\%{\hbox{\tt\char`\%}} % percent sign -\def\^{\ifmmode\mathchar"222 \else\char`^ \fi} % pointer or hat - - -% Examples - -\def\eg#1{\hbox{\tx``#1''}} % in-line - -\def\example#1\endexample{% % multi-line - $$% - \displayindent=\leftskip - \advance\displayindent by1.5\parindent - \let\\=\cr - \tabskip=0pt - \halign{% - \leftline{\tx\ignorespaces##\unskip}\cr - #1\cr - }$$% -} - - -% Miscellany - -\def\pgm#1{{\it#1}} % UNIX programs -\def\man#1(#2){\pgm{#1\/}(#2)} % manual entries -\def\arg#1{\hbox{\tx`{}#1'{}}} % arguments to programs -\def\switch#1{\hbox{\tx`{}-#1'{}}} % switches to programs -\def\file#1{\hbox{\sl#1}} % filename -\def\bq#1{`{}#1`{}} % back-quoted command - - -% Commonly used software systems - -\def\EMACS/{{\sf EMACS}} -\def\INFO/{{\sf INFO}} -\def\MLisp/{{\sf MLisp}} - -\def\MH/{{\sf MH}} -\def\UUCP/{{\sf UUCP}} -\def\SendMail/{{\sf SendMail}} -\def\Mail/{{\sf Mail}} -\def\sequences/{{sequences}} -\def\mh#1{{\sf mh.#1}} -\def\context/{\file{context}} -\def\profile/{\file{.mh\_profile}} -\def\whatnow/{{\tx What now?\/}} - -\def\MMDF/{{\sf MMDF}} -\def\MMDFII/{{\sf MMDF-II}} - -\def\AMSPPT.STY/{{\tt amsppt.sty}} -\ifundefined{AmsTeX} - \def\AmSTeX{% - $\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em - $\cal S$-\TeX - }% -\fi - -\def\DISS.STY/{{\tt diss.sty}} -\def\PhDTeX{PhD-\TeX} - -\def\ROFF/{{\sf ROFF}} - -\def\TTYD/{{\sf TTYD}} - - -\catcode`\@=12 % back to normal diff --git a/docs/historical/doclib/trademark.tex b/docs/historical/doclib/trademark.tex deleted file mode 100644 index 926f720a..00000000 --- a/docs/historical/doclib/trademark.tex +++ /dev/null @@ -1,53 +0,0 @@ -% Trademarks... - -\def\gobble#1{} - -\def\tradeORGfont{\sc} % used for organizations (e.g., ACM) -\def\tradeNAMfont{\sf} % used for names (e.g., Ada) - -\def\tradeorg#1{\tradeaux{#1}{\expandafter\gobble\string#1}\empty\tradeORGfont} -\def\tradename#1#2#3{\tradeaux{#1}{#2}{#3}\tradeNAMfont} -\def\trademark#1#2{% - \tradeaux{#1}{\expandafter\gobble\string#1}{#2}\tradeNAMfont -} - -\def\tradeaux#1#2#3#4{% - \def#1/{\relax}% % in case #3 references #1 - \setbox0=\hbox{#3}% % when we make the \hbox - \ifdim\wd0>0pt - \gdef#1/{% - \tradeaux{#1}{#2}\empty{#4}% - #1/\nfootnote{#1/ is a trademark of #3.}% - }% - \else - \gdef#1/{{#4#2}}% - \fi -} - -\tradeorg\acm -\tradeorg\ansi -\tradename\Ada{Ada} - {the Department of Defense (\Ada/ Joint Program Office)} -\tradeorg\bsd -\tradeorg\ccitt -\tradename\cms{CMS} {International Business Machines, Incorporated} -\tradename\cpm{CP/M} {Digital Research Corporation} -\tradename\decnet{DECnet} {Digital Equipment Corporation} -\tradeorg\dod -\tradename\ethernet{Ethernet} {the Xerox Corporation} -\tradename\eunice{Eunice} \empty -\tradeorg\ieee -\tradename\lattice{Lattice} {Lattice, Incorporated} -\tradename\locus{Locus} {Locus Computing Corporation} -\tradename\msdos{MS-DOS} {Microsoft Corporation} -\tradeorg\milstd -\tradename\pcinterface{PC-Interface}% - {Locus Computing Corporation} -\tradename{\tops20}{Tops20} {Digital Equipment Corporation} -\tradename\trustedmail{Trusted\ Mail}% - {Trusted Technologies, Incorporated} -\tradename\unix{UNIX} {AT\&T Bell Laboratories} -\tradename\vax{VAX} {Digital Equipment Corporation} -\tradename\vm{VM} {International Business Machines, Incorporated} -\tradename\vms{VMS} {Digital Equipment Corporation} -\tradename\xenix{Xenix} {Microsoft Corporation} diff --git a/docs/historical/mh4/MHCHANGES b/docs/historical/mh4/MHCHANGES deleted file mode 100644 index 14889178..00000000 --- a/docs/historical/mh4/MHCHANGES +++ /dev/null @@ -1,347 +0,0 @@ - MHCHANGES from mh.3 to mh.4 - - -Wed Feb 17 14:47:18 1984 PostMaster (agent: Marshall Rose) - - Decide that mh.3 is finished. This file keeps track of the - changes made between the mh.3 and mh.4 versions. Note that it's - being kept in add-source-change format instead of the usual - add-change-log-entry format. - - -Thu Feb 16 10:19:12 1984 PostMaster (agent: Marshall Rose) - - uip/bbr.c - Have bbr use a different prompt based on the name it - was invoked with. This is useful, since it used to use the same - prompt as "ex". This got confusing since sometimes you'd be - editing a file in ex while composing a message from bbr. - - -Fri Feb 17 09:10:55 1984 Rand MH System (agent: John Romine) - - uip/bbc.c: output last update date with -topics in short form - instead of local leaders. local leaders are listed with the other - fields with -topics -verbose. - - -Sat Mar 31 08:26:29 1984 PostMaster (agent: John Romine) - - uip/mhmail.c: unlink temp file when exiting due to null input. - - -Mon Apr 2 07:34:35 1984 PostMaster (agent: John Romine) - - uip/refile.c: remove(): bug fix. call delete-prog if (filep > 0) - instead of if (filep > 1). - - -Fri Apr 6 10:52:26 1984 PostMaster (agent: - - uip/show.c: mhl wasn't seeing its name so it wasn't checking its - profile entry. (fix from spencer thomas at utah-gr). - - -Sat Jun 30 12:28:21 1984 Rand MH mail system (agent: Marshall Rose) - - sbr/m_getdefs.c: make sure $MH is non-empty before using it. - - -Sat Jun 30 12:28:48 1984 Rand MH mail system (agent: Marshall Rose) - - config/mh.h: compact msgs structure a bit. Also add new entry, - mp -> attrstats, which tells if the corresponding attribute named - in mp -> msgattrs is public or private. - - -Sat Jun 30 12:29:53 1984 Rand MH mail system (agent: Marshall Rose) - - config/mh.h: Raise MAXFOLDER to 2K-1 and modify DMAXFOLDER as - appropriate. Also, make LOWSEL dependent on MAXFOLDER. - - -Sat Jun 30 16:23:01 1984 Rand MH mail system (agent: Marshall Rose) - - Add the SMTP option to the SendMail configuration. Extend - post/send to accept -mail, -soml, -saml, and -send. Also add - -client host and -server host. - - -Sat Jun 30 16:23:20 1984 Rand MH mail system (agent: Marshall Rose) - - Add the -[no]public switches to bbr$mark, bbr$pick, mark, and pick. - - -Sat Jun 30 16:40:22 1984 Rand MH mail system (agent: Marshall Rose) - - sbr/m_edit.c: On first edit, if "-editor pgm" not specified, try - to use $EDITOR prior to using the profile entry for editor. - - -Sat Jun 30 23:27:27 1984 Rand MH mail system (agent: Marshall Rose) - - uip/send: if $SIGNATURE is empty, and there's a "signature" entry - in the profile, set $SIGNATURE to that for post. - - -Mon Jul 2 02:07:37 1984 Rand MH mail system (agent: Marshall Rose) - - uip/post, uip/send: rework BCC handling to allow the use of a - filter file. - - -Sat Jul 7 01:03:02 1984 Rand MH mail system (agent: Marshall Rose) - - sbr/m_edit.c: #undef the $EDITOR stuff, maybe it's not such a good - idea... - - -Sat Jul 7 18:51:02 1984 Rand MH mail system (agent: Marshall Rose) - - mhmts/hosts.c: add '#include ' for #ifdef BSD42. - sbr/m_gmsg.c: fix initializatino of flags[]. - uip/whom.c: close down fd:s, just like send does, to avoid the - infamous "too many open" files error with the MMDFMTS version - of post. - uip/pick.c: fix-up "[Folder xyz being re-used]" message. It was - using the wrong string for the folder name. - - -Sun Jul 8 23:58:56 1984 Rand MH mail system (agent: Marshall Rose) - - uip/bbr.c: add the hidden "-prompt string" switch for JLR. - - -Mon Jul 9 00:01:01 1984 Rand MH mail system (agent: Marshall Rose) - - uip/prompter.c: with BSD42, do a clearerr() on stdin when we get - an EOF. Otherwise, with an EOF in the headers, we lose big... - - -Mon Jul 9 14:48:51 1984 Rand MH mail system (agent: Marshall Rose) - - config/mh.h: add extern char *version. - sbr/help.c: have help() print out program name and version info. - conf/makefiles/uip: use version.sh to create version.c for loading - with uip:s. - - -Mon Jul 9 17:05:09 1984 Rand MH mail system (agent: Marshall Rose) - - sbr/showfile.c: take arg vector from caller. - uip/show.c: new "-file file" switch for showfile. - sbr/m_edit.c: take arg vector from caller. If present, give to - editor in exec. - - -Mon Jul 9 23:15:20 1984 Rand MH mail system (agent: Marshall Rose) - - uip/{scan,inc,bbr}.c: new switches -[no]size to show the size - of the message. - uip/scansbr.c: implement -size for scan, inc, and bbr$scan. - uip/folder.c: new switches to implement the folder stack. - uip/clrsbr.c: consolidate clear_screen() into one file. - - -Tue Jul 10 01:15:22 1984 Rand MH mail system (agent: Marshall Rose) - - config/mh.h, conf/config/config.c, sbr/m_{getdefs,update}.c: add - "context" file in addition to the MH-profile. The former is - dynamic, it contains pfolder and private sequences. The latter is - static, it contains switches, etc. The ctx file defaults to - Mail/context. But in the MH-profile, you can define the entry for - "context" to be whatever you want... - - -Wed Jul 11 02:25:25 1984 Rand MH mail system (agent: Marshall Rose) - - uip/repl.c: toss the hidden -[no]ccme switches. - - -Wed Jul 11 18:41:07 1984 Rand MH mail system (agent: Marshall Rose) - - uip/folder.c: remove -up, -down, and -short - uip/pick.c: toss all the file-op:s, -scan, and -show. Just define - sequences, or spit 'em to stdout. - The select sub-folder is dead! - Long live user-defined sequences! - Pick got rid of 11 (!!) switches this way, and we've taken our - first step into a new age of functionality. - -Fri Jul 13 13:17:48 1984 Rand MH mail system (agent: Marshall Rose) - - uip/folder.c: Set up things so DMAXFOLDER is used when formatting - the output strings. - - -Fri Jul 13 13:37:21 1984 Rand MH mail system (agent: Marshall Rose) - - uip/scansbr.c: Compress the fields a bit. Right-justify some - parts of the header. - - -Sun Jul 15 03:01:12 1984 Rand MH mail system (agent: Marshall Rose) - - uip/{comp,dist,forw,repl}.c: If send of draft loses, come back to - "What now?" level. Also fix bug with invocation of editor. - - -Sun Jul 15 17:10:38 1984 Rand MH mail system (agent: Marshall Rose) - - uip/{comp,dist,forw,repl}.c: Add -[no]unique switch. - uip/send.c: Remove -[no]unique switch, also read ~/.signature file - and define $SIGNATURE if need be. - uip/post.c: Don't read ~/.signature file, use $SIGNATURE only. - uip/{bbr$scan,inc,scan,scansbr}.c: Only do the ftell() business - with -size on an inc. The others can do an fstat or pointer - arithmentic to calculate the size. - - - -Mon Jul 16 00:18:49 1984 Rand MH mail system (agent: Marshall Rose) - - uip/{comp,dist,forw,repl}.c: If "quit" with no "delete, tell the - user the name of the draft file. - uip/send.c: if invoked as "push", act accordingly - sbr/m_send.c: know about "push". - uip/mhpath.c: -help wasn't any. - uip/rcv{cron,tty}.c: set-up for an MMDF system. - - -Mon Jul 16 00:21:52 1984 Rand MH mail system (agent: Marshall Rose) - - Install the new Previous-Sequence mechanism. Introduce the SEQMOD - flag to the msgs structure. Just about every MH program now calls - m_setseq () upon parsing the messages and calls m_sync() prior to - exiting. - - -Mon Jul 16 15:51:28 1984 Rand MH mail system (agent: Marshall Rose) - - Gather up the ZOTnet libraries into zotnet/libzot.a, makes things - less complicated. - - -Mon Jul 16 22:07:40 1984 Rand MH mail system (agent: Marshall Rose) - - uip/*.c: Change arguments[50] to arguments[MAXARGS]; change - msgs[100] to msgs[MAXARGS] to avoid argument overflow with new - pick. - - -Tue Jul 17 00:08:52 1984 Rand MH mail system (agent: Marshall Rose) - - Install the Sequence-Negation mechanism. - - -Tue Jul 17 16:02:02 1984 Rand MH mail system (agent: Marshall Rose) - - uip/bbr.c: bring dist, forw, and repl up to date with -[no]unique. - - -Tue Jul 17 16:19:14 1984 Rand MH mail system (agent: Marshall Rose) - - uip/folder.c: handle +folder and msg argument with -all. - - -Tue Jul 17 19:20:10 1984 Rand MH mail system (agent: Marshall Rose) - - uip/anno.c: don't require -text. Also fix bug in prompting. - - -Wed Jul 18 03:01:11 1984 Rand MH mail system (agent: Marshall Rose) - - Install the code necesary for the @folder notation, meaning - +cwf/folder (TSUBCWF). - - -Wed Jul 18 05:35:14 1984 Rand MH mail system (agent: Marshall Rose) - - uip/{comp,dist,forw,repl}.c: Add -draft{folder,message} switches, - remove -[no]unique switches - sbr/m_draft.c: New module to interpret -draft switches - uip/send.c: Handle multiple messages, add -draft{folder,message} - switches, add -push switch - uip/bbr.c: bring dist, forw, and repl up to date with all these - changes - conf/config/config.c: change mh_deliver to postproc - - -Wed Jul 18 20:39:29 1984 Rand MH mail system (agent: Marshall Rose) - - sbr/path.c: add compath() logic to compress things like @.. and so - on. - - -Thu Jul 19 19:56:16 1984 Rand MH Mail Handler (agent: Marshall Rose) - - sbr/m_edit.c: put back in the draft preserve/delete logic from mh.2 - sbr/m_draft.c: add the "use" parameter saying whether "new" or - "cur" should be the default. - - -Fri Jul 20 21:27:03 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/{comp,dist,forw,repl}.c: new logic if draft exists. - uip/{comp,dist,forw,refile,repl,send}.c: fix miscalculation in - path of draft/source folder. - - -Sat Jul 21 14:15:43 1984 Rand MH Mail Handler (agent: Marshall Rose) - - sbr/{m_gmsg,m_seq}.c: allow "compressed" sequence descriptors - (e.g., x-y instead of x x+1 ... y-1 y). Makes things run - faster and avoids problems if a sequence is really *big*. - - -Mon Jul 23 09:08:12 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/{dist,forw,repl}.c: fix busted logic when m_draft() is called - after we've built the msgs structure for the folder we're working - on. Call m_draft() first. Other solution was to have m_draft() - do a pwd(), save the result, do its work, and then chdir() back. - Sigh. - - -Mon Jul 23 09:11:27 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/scansbr.c: If the message has no date, flag it and use the - date on the file, if appropriate (e.g., from 'scan' not 'inc'). - - -Mon Jul 23 14:27:51 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/{comp,dist,forw,repl,send}.c: add -nodraftfolder switch to - turn off draft folder. - uip/send.c: add -[no]unique switch to enable/disable message - renaming on pushes. - - -Mon Jul 23 16:09:04 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/{scan,replsbr}.c: use ismymbox to determine if address is my - mailbox. - uip/addrsbr.c: add ismymbox() to say just that. - - -Mon Jul 23 19:07:00 1984 Rand MH Mail Handler (agent: Marshall Rose) - - sbr/m_getdefs.c: allow long lines in MH profile. - uip/ptt.c: rename ptt.c to ap.c and install in MH etc directory. - - -Wed Jul 25 08:49:44 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/bbr.c: bring upto date with dist/forw/repl's -nodraftfolder. - sbr/trimcpy.c: fold tabs into spaces in addition to newlines. - - -Thu Aug 2 15:05:29 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/rcv{cron,tty}.c: move the ``#include '' above the - ``#include "mmdf.h"'' - mf/*.{h,c}: change lexequ() to lequal() to avoid conflict with - MMDF-II routine name. - -Fri Oct 26 22:19:42 1984 Rand MH Mail Handler (agent: John Romine) - conf/Makefile: make CFLAGS=-O, LDFLAGS=-ns - sendmts/smail.c: line 99: formal parameter 'watch' was missing. diff --git a/docs/historical/mh4/Makefile b/docs/historical/mh4/Makefile deleted file mode 100644 index c783629f..00000000 --- a/docs/historical/mh4/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -####################################################################### -# Instructions to Make, for generation of nice-looking papers using TeX -####################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex \ - \\nonstopmode\\input $<\\bye; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# mh4 -############################################################# - -i-all: mh4.dvi - -i-print: mh4.dvi true - dvisp -V -J MH4 $(DFLAGS) mh4.dvi - -i-count: true - detex text.tex | wc -cw - - -# customization files, et. al., not included below -mh4.dvi: version.tex - -version.tex: mh4.tex text.tex version.sh - @: version.sh - -true:; - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f mh4.dvi mh4.imp - -clean:; rm -f CONTENTS.tex FIGURES.tex \ - mh4.lof mh4.log mh4.lot mh4.toc _* diff --git a/docs/historical/mh4/mh4.tex b/docs/historical/mh4/mh4.tex deleted file mode 100644 index cd1753fd..00000000 --- a/docs/historical/mh4/mh4.tex +++ /dev/null @@ -1,58 +0,0 @@ -% run this through PhD-TeX - -\input dcustom -\articlestyle -\draftfalse -\input version - -\input sfwmac - -% these are special for mh4.tex -\def\entry#1{\boxit{#1:}} -\def\whatnow/{{\tt What now?\/}} - -\def\pgm#1{{\it#1}} % UNIX programs -\def\man#1(#2){\pgm{#1\/}(#2)} % Manual entries -\def\arg#1{\hbox{\sl\`{}#1\'{}}} % arguments to programs -\def\switch#1{\hbox{\`{}\tt-\sl#1\'{}}} % switches to programs -\def\eg#1{\hbox{\tt#1}} % example -\def\file#1{\hbox{\sl#1}} % filename -\def\bq#1{\`{}#1\`{}} % back-quoted command - -\header - Changes to\\ - The Rand MH Message Handling System:\\\\ - MH.4\title - Marshall T.~Rose\author - \versiondate/\info -\footnote{}{\hskip -\parskip $^\dagger$ Computer Mail: {\tx MRose@ICS.UCI.EDU}.} -\centerline{\sc Abstract} -{\rightskip=0pt\narrower\narrower -\noindent -This document describes user-visible changes to the -UCI version of the Rand \MH/ system that were made -from \mh3 to \mh4. -In particular, -four facilities are discussed: -multiple composition of drafts, -user-defined sequences, -the folder-stack, -and, -relative folder addressing. -This document does not describe bug-fixes, per se, -or internal changes, -unless these activities resulted in a visible change for the \MH/ user. -\par -This document is meant to supplement, -not supersede, the standard \MH/ user manual\cite{MH}. -\par -Comments concerning this documentation should be addressed to the Internet -mailbox {\sf Bug-MH@ICS.UCI.EDU}. -\par} - -\input text -\input refs -\printcontents -\showsummary - -\bye diff --git a/docs/historical/mh4/refs.tex b/docs/historical/mh4/refs.tex deleted file mode 100644 index 3278715f..00000000 --- a/docs/historical/mh4/refs.tex +++ /dev/null @@ -1,16 +0,0 @@ -\let\journalinfo=\jourinfo -\let\thesis=\book % experimental -\let\thesisinfo=\bookinfo % .. - -\references - -\ref{MH} -\paper The Rand \MH/ Message Handling System: User's Manual -\paperinfo UCI Version -\other -\publ Department of Information and Computer Science -\publaddr University of California, Irvine -\month July\year 1984 -\endref - -\endreferences diff --git a/docs/historical/mh4/text.tex b/docs/historical/mh4/text.tex deleted file mode 100644 index 419b1b8e..00000000 --- a/docs/historical/mh4/text.tex +++ /dev/null @@ -1,723 +0,0 @@ -% begin text -\banner -\section{Acknowledgements} -The \MH/ system described herein is based on the original Rand \MH/ system. -It has been extensively developed (perhaps too much so) by Marshall Rose and -John Romine at the University of California, Irvine. -Einar Stefferud, Jerry Sweet, and Terry Domae provided numerous suggestions -to improve the UCI version of \MH/. -\section{Disclaimer} -The Regents of the University of California wish to make it known that: -\bigquote -Although each program has been tested by its contributor, -no warranty, express or implied, -is made by the contributor or the University of California, -as to the accuracy and functioning of the program -and related program material, -nor shall the fact of distribution constitute any such warranty, -and no responsibility is assumed by the contributor -or the University of California in connection herewith. -\endbigquote -\section{Conventions} -In this document, -certain \TeX -formatting conventions are adhered to: -{\advance\leftskip by\parindent -\item{1.} The names of \unix/ commands, such as \pgm{comp}, -are presented in {\it text italics}. -\item{2.} Arguments to programs, such as \arg{msgs}, -are presented in {\sl slanted roman} and delimited by single-quotes. -\item{3.} \unix/ pathnames and envariables, -such as \file{/usr/uci/} and \file{\$SIGNATURE}, -are also presented in {\sl slanted roman}. -\item{4.} Text presenting an example, such as \eg{frated}, -is presented in {\tt typewriter style}. -\item{5.} Entries in the user's \MH/ \profile/ and \context/ files, -such as \entry{Current-Folder}, -are presented in {\sc Caps-Small-Caps} and delimited by a box. -\smallskip} -\bop\section{General Changes} -This section discusses system-wide changes to \MH/ that are general in nature. -\subsection{Message Numbering} -In previous versions of \MH/, a folder could have up to \eg{999} messages; -in \mh4, this limit has been raised to \eg{1999}. -\subsection{Version Information} -When any \MH/ command is invoked with the \switch{help} switch, -in addition to listing the syntax of the command, -the program will list information pertaining to its version. -This information includes the version of \MH/, -the host it was generated on, -and the date the program was loaded. -For example, -\example MH \#4.25[UCI] (uci-750b) of Thu Jul 19 21:07:01 PDT 1984\endexample -The \eg{\#4.25[UCI]} indicates that the program is from the UCI \mh4 -version of \MH/. -The program was generated on \eg{uci-750b}, -on \eg{Thu Jul 19 21:07:01 PDT 1984}. -\par -This information is sometimes useful in the unusual circumstance when a bug -is found in \MH/. -By providing the version information, -along with the circumstances concerning the problem with \MH/, -the local \MH/ maintainer is better able to track-down the problem. -\subsection{The User Context} -The \MH/ profile for the user now consists of two parts: -a static part, the \profile/, which is found in the user's \file{\$HOME/} -directory, -and, a dynamic part, the \context/, which is usually found in the user's \MH/ -directory. -The former file contains information which \MH/ commands read, -but {\it never\/} write -(e.g., command switches). -The latter contains information that \MH/ commands read and write, -(e.g., \entry{Current-Folder}). -\par -This change has three advantages over the way things were done in \mh3. -\underbar{First}, -a lot less information gets written out when an \MH/ command exits, -if the context changes. -This is due to the fact that the user's \context/ file is often much, -much smaller than a user's \profile/ file. -\underbar{Second}, -one can keep different context files around -(the entry \entry{context} is changed in the user's \profile/ file).% -\nfootnote{Note that this entry must be given {\it entirely} in lowercase in -the \profile/ file.} -Hence, the \MH/ user can maintain different sets of private sequences -(explained later), -by manipulating different \context/ files. -\underbar{Third}, -if more than one person uses a \unix/ login -(say a maintenance account), -then each can define their own \file{\$MH} envariable to point to their -\profile/ file. -As a result, -each user has the \MH/ environment which that user is accustomed to. -Further, -depending on the needs of the users who share the \unix/ login, -the same or different contexts may be automatically maintained for that login. -\par -See \man{mh-profile}(5) for more details on the user context file. -\section{Message Selection} -A new facility has been added to give the \MH/ user greater power in -selecting and referencing messages: -first, a change to the \pgm{pick} program is described; -second, the notion of user-defined sequences is detailed. -\subsection{Selecting Messages} -The \pgm{pick} command now does only one thing: -it defines sequences based on the selection criterion it is given. -In addition, with the \switch{list} switch, -\pgm{pick} can be directed to list the numbers of the messages which -satisfied the criterion, to the standard output. -This is very handy for using \pgm{pick} in backquoted operations with the -shell. -\subsection{User-Defined Sequences} -User-defined sequences allow the \MH/ user a tremendous amount of power -in dealing with groups of messages in the same folder -by allowing the user to bind a group of messages to a meaningful symbolic -name. -The user may choose any name for a message sequence, -as long as it consists of alphanumeric characters and does not conflict with -the standard \MH/ reserved message names (e.g., \arg{first}, etc). -After defining a sequence, -it can be used wherever a \MH/ command expects a \arg{msg} or \arg{msgs} -argument. -Although all \MH/ commands expand user-defined sequences as appropriate, -there are two commands that allow the user to define and manipulate them: -\pgm{pick} and \pgm{mark}. -\subsubsection{Pick and User-Defined Sequences} -Most users of \MH/ will use only the \pgm{pick} command. -By giving the \switch{sequence~name} switch to \pgm{pick} -(which can occur more than once on the command line), -each sequence named is defined as those messages which \pgm{pick} matched, -according the the selection criteria it was given. -Hence, -\example pick -from frated -seq fred\endexample -finds all those messages in the current folder which were from -\eg{frated}, -creates a sequence called \eg{fred}, -and then adds them to the sequence. -The user could then invoke -\example scan fred\endexample -to get a \pgm{scan} listing of those messages. -Note that by default, -\pgm{pick} creates the named sequences -before it adds the selected messages to the sequence. -Hence, if the named sequence already existed, -the sequence is destroyed prior to being re-defined -(nothing happens to the messages that were a part of this sequence, -they simply cease to be members of that sequence). -By using the \switch{nozero} switch, this behavior can be inhibited, -as in -\example - pick -from frated -seq sgroup\\ - pick -from fear -seq sgroup -nozero\\ - pick -from freida -seq sgroup -nozero% -\endexample -which finds all those messages in the current folder which were from -\eg{frated}, \eg{fear}, or \eg{freida}, -and defines the sequence called \eg{sgroup} as exactly those messages. -These operations amounted to an ``inclusive-or'' of three selection -criteria. -Using \pgm{pick}, -one can also generate the ``and'' of some selection criteria as well: -\example - pick -from frated -seq fred\\ - pick -before friday -seq fred -nozero fred% -\endexample -This example defines the sequence called \eg{fred} as exactly those -messages from \eg{frated} that were dated prior to \eg{friday}. -\par -\pgm{Pick} is normally used as a back-quoted command, -for example, -\example scan \bq{pick -from postmaster}\endexample -Now suppose that the user decides that another command should be issued, -using exactly those messages. -Since, -\pgm{pick} wasn't given a \switch{sequence~name} argument in this example, -the user would end-up typing the entire back-quoted command again. -A simpler way is to add a default sequence name to the \profile/ file. -For example, -\example pick: -sequence select -list\endexample -will tell \pgm{pick} to always define the sequence \eg{select} whenever -it's run. -The \switch{list} is necessary since the \switch{sequence~name} switch sets -\switch{nolist} -whenever the former is encountered. -Hence, this profile entry makes \pgm{pick} define the \eg{select} -sequence and otherwise behave exactly as if it had no profile entry at all. -\par -Finally, -previous versions of \pgm{pick} balked if a selection criterion was not given. -The \mh4 version of \pgm{pick} does not, and merely matches the messages that -were specified. -This lets the \MH/ user type something such as -\example show \bq{pick last:20 -seq fear}\endexample -instead of typing -\example - mark -add -nozero -seq fear last:20\\ - show fear% -\endexample -\subsubsection{Mark and User-Defined Sequences} -The \pgm{mark} command lets the user perform low-level manipulation of -sequences, -and also provides a well-needed debug facility to the -implementors/developers/maintainers of \MH/ (the \MH/-hacks). -In the future, a user-friendly ``front-end'' for \pgm{mark} will -probably be developed to give the \MH/ user a way to take better -advantage of the underlying facilities. -\subsubsection{Public and Private User-Defined Sequences} -There are two kinds of sequences: {\it public\/} sequences, -and {\it private\/} sequences. -{\it Public\/} sequences of a folder are accessible to any \MH/ user who -can read that folder. -{\it Private\/} sequences are accessible only to the \MH/ user who defined -those sequences. -By default, -\pgm{pick} (and \pgm{mark\/}) create {\it public\/} sequences -if the folder for which the sequences are being defined is writable by the -\MH/ user. -Otherwise, {\it private\/} sequences are created. -This can be overridden with the \switch{public} and \switch{private} switches. -\subsubsection{Sequence Negation} -In addition to telling a \MH/ command to use the messages in the sequence -\eg{seen}, as in -\example refile seen +old\endexample -it would be useful to be easily able to tell a \MH/ command to use all -messages {\it except\/} those in the sequence. -One way of doing this would be to use \pgm{mark} and define the sequence -explicitly, -as in -\example mark -delete -zero seen -seq notseen\endexample -which, -owing to \pgm{mark\/}'s cryptic interpretation of \switch{delete} and -\switch{zero}, -defines the sequence \eg{notseen} to be all messages not in the sequence -\eg{seen}. -Naturally, -anytime the sequence \eg{seen} is changed, -\eg{notseen} will have to be updated. -Another way to achieve this is to define the entry -\entry{Sequence-Negation} in the \profile/ file. -If the entry was -\example Sequence-Negation: not\endexample -then anytime a \MH/ command was given \eg{notseen} as a \arg{msg} or -\arg{msgs} argument, -it would substitute all messages that are not a member of the sequence -\eg{seen}. -That is, -\example refile notseen +new\endexample -does just that. -The value of the \entry{Sequence-Negation} entry in the profile can be -any string. -Hence, -experienced users of \MH/ do not use a word, -but rather a special character which their shell does not interpret -(users of the \pgm{CShell} use a single carat, \eg{`\^'}, -while users of the Bourne shell use an exclamation-mark, \eg{`!'\/}). -This is because there is nothing to prevent a user of \MH/ from defining a -sequence with this string as its prefix, -if the string is nothing but letters and digits. -Obviously, -this could lead to confusing behavior -if the \entry{Sequence-Negation} entry leads \MH/ to believe that two -sequences are opposites, by virtue of their names differing by the prefix -string. -\subsubsection{The Previous Sequence} -Many times users find themselves issuing a series of commands on the same -sequences of messages. -If the user first defined these messages as a sequence, -then considerable typing may be saved. -If the user doesn't have this foresight, -\MH/ provides a handy way of remembering the \arg{msgs} or -\arg{msg} argument last given to a \MH/ command by the user. -If the entry \entry{Previous-Sequence} is defined in the \profile/ file, -then when the command finishes, -it will define the sequence(s) named in the value of this entry as being -defined as those messages that were specified. -Hence, a profile entry of -\example Previous-Sequence: pseq\endexample -directs any \MH/ command that accepts a \arg{msg} or \arg{msgs} argument to -define the sequence \eg{pseq} as those messages when it finishes. -More than one sequence name may be placed in this entry, -separated with spaces. -The one disadvantage of this approach -is that all \MH/ commands have to update the sequence information for -the folder each time they run -(although most commands read this information, -usually only \pgm{pick} and \pgm{mark} have to write this information out). -\section{Composition of Mail} -Two new facilities have been added to give the \MH/ user greater power in -composing and sending mail: -the {\it draft folder}, -which allows a user to maintain a folder of message drafts; -and, {\it draft pushing}, -which permits a user to \pgm{send} the current draft in the background. -\subsection{The Draft Folder} -The \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} commands have two -hidden switches, \switch{draftfolder~+folder} and \switch{draftmessage~msg}. -If \switch{draftfolder~+folder} is used, -these commands are directed to construct a draft message in the indicated -folder. -If \switch{draftmessage~msg} is not used, it defaults to \arg{new} -(unless the user invokes \pgm{comp} with \switch{use}, -in which case the default is \arg{cur}). -Hence, the user may have several message compositions in progress -simultaneously. -Now, all of the \MH/ tools are available on each of the user's message -drafts -(e.g., \pgm{show}, \pgm{scan}, \pgm{pick}, and so on). -If the folder does not exist, -the user is asked if it should be created (just like with \pgm{refile\/}). -Also, -the last draft message the user was composing is known as \arg{cur} in the -draft folder. -\par -Furthermore, -the \pgm{send} command has these switches as well. -Hence, from the shell, -the user can send off whatever drafts desired using the -standard \MH/ \arg{msgs} convention with \switch{draftmessage msgs}. -If no \arg{msgs} are given, it defaults to \arg{cur}. -\par -In addition, -all five programs have a \switch{nodraftfolder} switch, -which undoes the last occurance of \switch{draftfolder~folder} -(useful if the latter occurs in the user's \MH/ profile). -\par -If the user does not give the \switch{draftfolder~+folder} switch, -then all these commands act ``normally''. -Note that the \switch{draft} switch to \pgm{send} and \pgm{show} -still refers to the file called \eg{draft} in the user's \MH/ -directory. -In the interests of economy of expression, -when using \pgm{comp} or \pgm{send}, -the user needn't prefix the draft \arg{msg} or \arg{msgs} with -\switch{draftmessage}. -Both of these commands accept a \arg{file} or \arg{files} argument, -and they will, if given \switch{draftfolder~+folder} treat these arguments -as \arg{msg} or \arg{msgs}.% -\nfootnote{This may appear to be inconsistant, at first, -but it saves a lot of typing.} -Hence, -\example send -draftf +draft first\endexample -is the same as -\example send -draftf +draft -draftm first\endexample -\par -To make all this a bit more clear, here are some examples. -Let's assume that the following entries are in the \profile/ file: -\example - comp: -draftfolder +draft\\ - dist: -draftfolder +draft\\ - forw: -draftfolder +draft\\ - repl: -draftfolder +draft\\ - sendf: -draftfolder +draft% -\endexample -Furthermore, -let's assume that the program \pgm{sendf} is a symbolic link in the user's -\file{\$HOME/bin/} directory to \pgm{send}. -Then, any of the commands -\example - comp\\ - dist\\ - forw\\ - repl% -\endexample -constructs the message draft in the \eg{draft} folder using the \arg{new} -message number. -Furthermore, -they each define \arg{cur} in this folder to be that message draft. -If the user were to use the \pgm{quit} option at \whatnow/ level, -then later on, -if no other draft composition was done, -the draft could be sent with simply -\example sendf\endexample -Or, -if more editing was required, -the draft could be edited with -\example comp -use\endexample -Instead, -if other drafts had been composed in the meantime, -so that this message draft was no longer known as \arg{cur} in the \eg{draft} -folder, -then the user could \pgm{scan} the folder to see which message draft in the -folder should be used for editing or sending. -Clever users could even employ \pgm{pick} to do the work: -\example - comp -use \bq{pick +draft -to bug-mh}\\ -\noalign{\leftline{or}} - sendf \bq{pick +draft -to bug-mh}% -\endexample -Note that in the \pgm{comp} example, -the output from \pgm{pick} must resolve to a single message draft -(it makes no sense to talk about composing two or more drafts with one -invocation of \pgm{comp\/}). -In contrast, -in the \pgm{send} example, -as many message drafts as desired can appear, -since \pgm{send} doesn't mind sending more than one draft at a time. -\par -Note that the argument \switch{draftfolder~+folder} is not -included in the profile entry for \pgm{send}, -since when \pgm{comp}, et. al., invoke \pgm{send} directly, -they supply \pgm{send} with the \unix/ pathname of the message draft, -and {\it not} a \arg{draftmessage~msg} argument. -As far as \pgm{send} is concerned, -a {\it draft folder} is not being used. -\par -It is important to realize that \MH/ treats the draft folder like a standard -\MH/ folder in nearly all respects. -There are two exceptions: -\underbar{first} -under no circumstancs will the \arg{draftfolder~folder} switch cause the -named folder to become the current folder.% -\nfootnote{Obviously, -if the folder appeared in the context of a standard \arg{+folder} -argument to an \MH/ program, as in -\example scan +draft\endexample -it might become the current folder, depending on the context changes of the -\MH/ program in question.} -\underbar{Second}, -although conceptually \pgm{send} deletes the \arg{msgs} named in the draft -folder, -it does not call \entry{delete-prog} to perform the deletion. -\subsection{What Happens if the Draft Exists} -When the \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} commands are -invoked and the draft you indicated already exists, -these programs will prompt the user for a reponse directing the program's -action. -In \mh4, the prompt is -\begingroup - \smallertype - \example - ``/usr/src/uci/mh/mhbox/draft'' exists; replace, list, or quit?% - \endexample -\endgroup -The appropriate responses and their meanings are: -\smallskip -{\advance\leftskip by\parindent -\item{\underbar{replace}:} deletes the draft and starts afresh. -\item{\underbar{list}:} lists the draft. -\item{\underbar{quit}:} leaves the draft intact and exits. -\smallskip} -\noindent -In addition, if you specified \switch{draftfolder~folder} to the command, -then one other response will be accepted: -\smallskip -{\advance\leftskip by\parindent -\item{\underbar{new}:} finds a new draft, -just as if \switch{draftmessage~new} had been given. -\smallskip} -\noindent -Finally, the \pgm{comp} command will accept one more response: -\smallskip -{\advance\leftskip by\parindent -\item{\underbar{use}:} re-uses the draft, -just as if \switch{use} had been given. -\smallskip} -\subsection{The Push Option at\/{ }\whatnow/ Level} -The \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} commands take -an additional option for the \whatnow/ query. -The \pgm{push} option, which must be spelled out fully, -directs the command to \pgm{send} the draft -in a special detached fashion, -with all normal output is discarded. -If \pgm{push} is used and the draft can not be sent, -then \MH/ will send the user a message, -indicating the name of the draft file, -and an explanation of the failure. -Although using \pgm{push} calls \man{send}(1), -the \pgm{send} command will consult the profile entry for \pgm{push}. -\par -The user can also invoke \pgm{send} from the shell with the \switch{push} -switch, -which makes \pgm{send} act like it had been \pgm{push\/}'d by one of the -composition commands.% -\nfootnote{Note that in this case, -\pgm{send} consults the profile entry for whatever name it was invoked as, -such as \pgm{sendf}.} -\par -The \pgm{send} program also has two other switches, -\switch{unique} and \switch{nounique}. -If \pgm{push\/}'d, -then the \switch{unique} switch tells \pgm{send} to rename the draft file to -a unique filename. -This allows the user to have several drafts being sent simultaneously -(after {\it push\/}ing one draft, -another draft may be composed and edited immediately). -The \switch{unique} switch, -which is the default when \pgm{send} is \pgm{push\/}'d, -is not really useful if you're using {\it draft folders}, -as the user generally gets a new message draft for each composition. -Hence, users of the {\it draft folder} mechanism should put -\example send: -nounique\endexample -in their \profile/ file. -This has the added advantage of making -\example comp -use\endexample -easy to use when a draft fails to be posted properly. -\par -By using \pgm{push}, the user can free the shell to do other things, -because it appears to the shell that the \MH/ command has finished. -As a result the shell will immediately prompt for another command, -despite the fact that the command is really still running. -Note that if the user indicates that annotations are to be performed -(with \switch{annotate}), -the annotations will be performed after the message has been -successfully sent. -This action will appear to occur asynchronously. -Obviously, if one of the messages that is to be annotated is -removed before the draft has been successfully sent, -then when \MH/ tries to make the annotations, -it won't be able to do so, -and an error message will mysteriously appear on the user's terminal. -\subsection{Options at\/{ }\whatnow/ Level} -When using the \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} commands at -\whatnow/ level, -the \pgm{edit}, \pgm{list}, \pgm{headers}, -and (for the \pgm{dist} and \pgm{repl} commands) the \pgm{display} options -will pass on any additional arguments given them to whatever program they -invoke. -\par -In addition, -in \mh1 (the original Rand \MH/) -and \mh2 (the first UCI version of \MH/), -\MH/ used a complicated heuristic to determine if the draft should be deleted -or preserved after an unsuccessful edit. -In \mh3, -\MH/ was changed to always preserve the draft, -since \pgm{comp}, et. al., -could usually look at a draft, apply another set of heuristics, -and decide if it was important or not. -With the notion of a {\it draft folder}, -in which one by default gets a \arg{new} message draft, -\mh4 has again re-implemented the edit deletion/preservation -algorithm (with a minor bug-fix), -to keep the draft folder from being cluttered with aborted edits. -\par -Also, -note that by default, -if the draft cannot be successfully sent, -these commands return to \whatnow/ level. -But, when \pgm{push} is used, this does not happen (obviously). -Hence, -if these commands were expected to annotate any messages, -this will have to be done by hand, later on, with the \pgm{anno} command. -\par -Finally, if the \switch{delete} switch is given to the \pgm{quit} option, -then these commands will inform the user of the name of the unsent draft file. -\subsection{Posting of Mail} -\mh4 does a few different things when mail is posted. -\subsubsection{Signature} -There's now a \entry{Signature} entry in the \profile/ file. -If the \file{\$SIGNATURE} envariable is not set, -then \pgm{send} will consult this profile entry to determine the -personal name of the \MH/ user. -This personal name is placed in the \eg{From:} field of the message. -If this profile entry doesn't exist, -then \pgm{send} will consult the file \file{\$HOME/.signature}. -\subsubsection{Blind Carbon Copies} -The \pgm{post} command now handles blind carbon copies in an entirely -different fashion from the way they were handled in \mh3. -In particular, -the message sent to ``blind'' recipients contains minimal information in its -headers, -namely \eg{Date:}, -\eg{Message-ID:} (if \switch{msgid} was given), -\eg{From:}, -\eg{Subject:} (if given in the message draft), -and a standard blind carbon copy disclaimer. -The body of the message sent to the blind recipients is simply the actual -message sent to the ``sighted'' recipients. -However, -if the \switch{filter~filterfile} switch was given to \pgm{post}, -then the body of the message is given to \pgm{mhl} to be formatted with the -named \arg{filterfile}. -\subsubsection{Server Interaction} -In \mh4, \MH/ supports a mail transport configuration which allows -\pgm{post} to talk directly to an SMTP server. -A possible extension of this, -which looks particularly promising for when \MH/ is used on small -workstations, -is the ability to post mail on a different host, -such as a ``mail relay''. -In this way, -the load on the local host may be reduced, -and mail traffic may be handled more efficiently. -\section{Folder Handling} -Two new facilities have been added to give the \MH/ user greater power in -manipulating folders: -{\it relative folder addressing}, -which allows a user to shorten the typing of long folder names; -and the {\it folder-stack}, -which permits a user to keep a stack of current folders. -\subsection{Relative Folder Addressing} -By default, when \arg{+folder} is given, -and the folder name is not absolute -(i.e., does not start with \file{/}, \file{./}, or \file{../}), -then the \unix/ pathname of the folder is interpreted relative to the user's -\MH/ directory. -Although this mechanism works fine for top-level folders and their immediate -sub-folders, -once the depth of the sub-folder tree grows, it becomes rather unwieldly: -\example scan +mh/mh.4/draft/flames\endexample -is a lot of typing. -\MH/ can't do anything if the current folder was \eg{+inbox}, -but if the current folder was, say, \eg{+mh/mh.4/draft}, -\MH/ has a short-hand notation to reference a sub-folder of the -current folder. -Using the \arg{@folder} notation, -the \MH/ user can direct any \MH/ command which expects a \arg{+folder} -argument to look for the folder relative to the current folder instead of the -user's \MH/ directory. -Hence, if the current folder was \eg{+mh/mh.4/draft}, -then -\example scan @flames\endexample -would do the trick handily. -In addition, if the current folder was \eg{+mh/mh.4/draft}, -\example scan @../pick\endexample -would scan the folder \eg{+mh/mh.4/pick}, -since, in the \unix/ fashion, -it references the folder \eg{pick} which is a sub-folder of -the folder that is the parent of the current folder. -Since most advanced \MH/ users seem to exhibit a large degree of locality -in referencing folders when they process mail, -this convention should receive a lot of use. -\subsection{The Folder Stack} -The {\it folder-stack\/} mechanism in \MH/ gives the \MH/ user a -facility similar to the {\it CShell\/}'s directory-stack. -Simply put, -\example folder -push +foo\endexample -makes \eg{foo} the current folder, -saving the folder that was previously the current folder on the -{\it folder-stack}. -As expected, -\example folder -pop\endexample -takes the top of the {\it folder-stack\/} and makes it the current folder. -Each of these switches lists the {\it folder-stack\/} when they execute. -It is simple to write a {\it pushf\/} command as a shell script. -It's one line: -\example exec folder -push \$@\endexample -Probably a better way is to link \pgm{folder} to your \file{\$HOME/bin/} -directory under the name of \pgm{pushf} and then add the entry -\example pushf: -push\endexample -to the \profile/ file. -\par -The manual page for \man{folder}(1) discusses the analogy between the -\pgm{CShell} directory stack commands and the switches in \pgm{folder} -which manipulate the {\it folder-stack}. -\section{Other Changes} -This last section discusses the other, -more program-specific changes made to \MH/. -\subsection{Address Parsing} -There's a new library program, \pgm{ap}, which parses addresses according to -the rules that the \MH/ programs use. -It's often useful for figuring out how \MH/ sees a particular address. -The \pgm{rcvtrip} rcvmail hook, -described at the end of this report, -uses this facility. -\subsection{Alternate Mailboxes} -There's a new entry in the profile, \entry{Alternate-Mailboxes}, -which is read by \pgm{repl} and \pgm{scan} to determine which addresses in a -messages are under the user's administration. -Hence, -\example - Alternate-Mailboxes: mh@uci-750a, bug-mh -\endexample -says that the mailbox \eg{mh@uci-750a} -and any mailbox whose local part is \eg{bug-mh} -is read by the user. -Hence, \pgm{repl} will not include them in the reply list, -and \pgm{scan} will act accordingly if it encounters a message which is from -any of these addresses. -A current restriction is that the hostnames given must be the ``official'' -hostnames for the mailboxes, -as local nicknames for hosts are not replaced with their official site names. -\subsection{Annotation} -The \pgm{anno} command no longer prompts for a \eg{text} component -if the \switch{text~body} switch isn't given. -\subsection{More on Folder Handling} -If \pgm{folders} -(or \pgm{folder} when invoked with the \switch{all} switch) -is given a \arg{+folder} or \arg{msg} argument, -then it will set the current folder and/or message -(in previous versions of \MH/, -\pgm{folders} ignored any \arg{+folder} or \arg{msg} arguments). -In addition, -the top-level folders of the current folder will be listed -(if \switch{norecurse} is in effect), -or the current folder will be listed recursively -(if \switch{recurse} was given). -\subsection{Scanning} -The \pgm{scan} and \pgm{inc} commands now have a \switch{size} switch -(and a complementary switch, \switch{nosize}), -which indicate if the {\it scan listing\/} should include the size of the -message in bytes. -\par -Furthermore, -the fields in the {\it scan listing\/} have been compressed a bit to allow -more of the \eg{Subject} and \eg{Body} portions of the listing to appear. -\par -Finally, -if \pgm{scan} encounters a message without a date field, -rather than leaving that portion of the {\it scan listing} blank, -as had been done in previous versions of \MH/, -the date is filled-in with the last write date of the message, -and post-fixed with a `*'. -This is particularly handy for scanning a {\it draft folder}, -as message drafts usually aren't allowed to have dates in them. -\subsection{BBoards Support} -The \pgm{bbr} command now uses the name it was invoked with as its prompting -string. -To override this, -the \MH/ user can specify the \switch{prompt~string} switch to \pgm{bbr}. -\par -The \pgm{bbc} command now lists the \eg{last update time} of a {\it BBoard}, -instead of the \eg{local leaders} when \switch{topics} is used without -\switch{verbose}. -The \eg{local leaders} are now listed when \switch{verbose} is given with -\switch{topics}. -\subsection{RcvMail Support} -The \pgm{rcvcron} and \pgm{rcvtty} are now standard in all \mh4 -configurations. -Further, there's a shell script, \pgm{rcvtrip}, -that demonstrates the power (and utility) of a {\it hook\/} operating in the -\MH/ environment. diff --git a/docs/historical/mh4/version b/docs/historical/mh4/version deleted file mode 100644 index 8f92bfdd..00000000 --- a/docs/historical/mh4/version +++ /dev/null @@ -1 +0,0 @@ -35 diff --git a/docs/historical/mh4/version.sh b/docs/historical/mh4/version.sh deleted file mode 100644 index 9ec1e792..00000000 --- a/docs/historical/mh4/version.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [ ! -r version ]; then echo 0 > version; fi -touch version -echo '\catcode`\#=12' > version.tex -awk ' { version = $1 + 1; }\ -END { printf "\\def\\versiontag/{#1.%d}%%\n", version >> "version.tex"; \ - printf "%d\n", version > "version"; }' < version -echo '\def\versiondate/{'`date`'}%' >> version.tex -echo '\catcode`\#=6' >> version.tex -echo '\tell{Version \versiontag/ of \versiondate/}' >> version.tex diff --git a/docs/historical/mh4/version.tex b/docs/historical/mh4/version.tex deleted file mode 100644 index db4c095b..00000000 --- a/docs/historical/mh4/version.tex +++ /dev/null @@ -1,5 +0,0 @@ -\catcode`\#=12 -\def\versiontag/{#1.35}% -\def\versiondate/{Fri Jul 27 11:23:07 PDT 1984}% -\catcode`\#=6 -\tell{Version \versiontag/ of \versiondate/} diff --git a/docs/historical/mh4mm/Makefile b/docs/historical/mh4mm/Makefile deleted file mode 100644 index fa9c890c..00000000 --- a/docs/historical/mh4mm/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -######################################################################### -# Instructions to Make, for generation of nice-looking papers using LaTeX -######################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if latex \\nonstopmode\\input $<; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# mh4mm -############################################################# - -i-all: mh4mm.dvi - -i-print: mh4mm.dvi true - dvisp $(DFLAGS) -J Mh4mm mh4mm - -true:; - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f mh4mm.dvi mh4mm.imp - -clean:; rm -f mh4mm.log mh4mm.blg mh4mm.tmp _* diff --git a/docs/historical/mh4mm/mh4mm.tex b/docs/historical/mh4mm/mh4mm.tex deleted file mode 100644 index 8603218b..00000000 --- a/docs/historical/mh4mm/mh4mm.tex +++ /dev/null @@ -1,660 +0,0 @@ -\documentstyle [12pt]{article} -\parindent=0pt -\parskip=7pt plus 2pt - -\def\oneline#1{\par\bigskip\leftline{\tt\hskip.75in#1}} -\def\command#1{\par\bigskip\leftline{\tt\hskip.75in\% #1}} -\def\comarg#1#2{\par\bigskip\leftline{\tt\hskip.75in\% #1 {\it#2}}} -\def\tcom#1{\par\bigskip\leftline{\tt\hskip.75in@#1}} -\def\MH/{{\sf MH}} -\def\tops20/{{\sc Tops-20}} -\def\unix/{{\sc Unix}} -\def\MM/{{\sc mm}} -\newfont{\itt}{cmti10} -\sloppy -\begin{document} - -\title{MH for MM Users} -\author{Mary Hegardt \and Tim Morgan} -\maketitle - -\section{Introduction} - -This document is another in a continuing series on use of the \MH/ mail -system at UCI. It is intended for those users accustomed to the \MM/ ``user -agent'' (mail program) under \tops20/ and who are already familiar with -network mail, but who may not be experienced \unix/ users. For an -introduction to \MH/, see ``MH For Beginners'' by Mary -Hegardt and Tim Morgan. For complete, detailed information on the \MH/ -system, see {\sl The Rand MH Message Handling System: User's Manual\/} by -Marshall~T. Rose and John~L. Romine. Both documents are available for -Xeroxing in suite CS408. - -\subsection{UNIX Versus Tops-20} - -The \unix/\footnote{\unix/ is a trademark of AT\&T Bell Laboratories} -paradigm is that each command, or program, should perform only one -function. An extension of this idea is that the operating system -implements only those functions which are necessary, but it does so in -a very general way so that programs may still accomplish their functions. -This philosophy probably evolved because the original versions -of \unix/ ran on PDP-11 minicomputers which had only a small memory -space for each process. - -Consequently, all commands in \unix/, with a very few exceptions, are -in actuality programs. On \tops20/, in contrast, many of the most frequently -used commands are built into the user's shell, or {\em exec.} Both the -Exec and {\it csh,} which is typically the user's command interface on -\unix/, will accept and parse command lines, attempting to invoke a command -as a program if it is not one of the built-in commands. \unix/ and \tops20/ -are surprisingly similar internally: the use of the shell, separate -processes for each command or program to execute, standard input and output -for each program, and many other ideas are common to both operating -systems. Users should be familiar with the capabilities of the shell, -which is described in the document ``Introduction to the Csh.'' - -\subsection{The MH User Interface} - -The \MH/ mail ``user agent'' is different from most other mail systems. -\MM/, for example, is a {\em monolithic\/} system because one program -implements all the mail-related functions. The disadvantages of monolithic -systems are that (a)~they are large, so they tend to put more burden on the -computer system, and (b)~they allow for much less flexibility. In contrast, -\MH/ implements each mail command as a separate program: there is no single -program called {\it mh.} This approach facilitates interspersing mail -commands with other, perhaps unrelated, commands. - -Another unique feature of \MH/ is that it takes advantage of the facilities -provided by the operating system. Most mail agents, such as \MM/, maintain -a file containing the user's mail in a special, usually undocumented, format. -When a message is deleted, \MM/ must take care of compacting the mail file. -It must be able to distinguish the separate messages contained in the file. -\MM/ must also implement a simple text editor to allow the user to enter -and modify a message while it is being composed. -These functions are essentially those provided by the operating system when -separate files are stored within a directory. Therefore, the approach -taken by \MH/ is that -each message is kept in a separate file. This file simply contains the -message, with no other special formatting characters or requirements. -All the messages are stored within a normal \unix/ directory. This approach -makes it easy to add new \MH/ commands, to edit messages using standard -text editors, etc. - -All your \MH/ related files are stored in a directory within your home -directory. Usually this directory is called {\tt Mail} or {\tt mhbox}, -although you are free to name it as you choose. Another file in your home -directory called \verb|.mh_profile| is equivalent to the {\tt MM.INIT} file -under \MM/. It contains all the options which you prefer for the various -\MH/ commands. It also contains the name of the \MH/ directory and the -name that you want on your outgoing mail in the {\tt From:} field (your -``{\em signature\/}''). - -\section{Getting Started} - -\subsection{Incorporating Mail} - -Another important difference between \MM/ and \MH/ is the concept of the -{\em maildrop\/} file. Under \tops20/, the mail transport system delivers -new messages directly into the recipient's {\tt MAIL.TXT} file, where they may -then be processed with \MM/. In contrast, the \unix/ mail transport system, -called {\it MMDF-II,} makes no assumptions about the user agent used by the -recipient. Instead, it puts all new mail into a special file called the -{\em maildrop.} This file is in the \verb|/usr/spool/mail| directory. -When you log in, if there is new mail for you in your -maildrop, you will be so notified by the message - - \oneline{You have new ZOTnet mail -- type inc (or mail)} - -When you are ready to process this new mail, you may type the command - - \command{inc} - -(``incorporate'') which will copy the new mail into separate files, one per -message, stored in your ``inbox'' folder. A folder is a subdirectory -beneath your \MH/ directory which is used to store related messages. -Additional information on folders is given in Section~\ref{Folders}, -page~\pageref{Folders}. The -``inbox'' is a distinguished folder because by default {\it inc\/} will -always copy new mail into that folder, removing it from the maildrop. - -If this is the first time you have used {\it inc\/} or any other \MH/ -command, the {\it mh-install\/} program will inform you that it is -creating your {\tt Mail} directory. It will also create -the ``inbox'' folder directory, and \verb|.mh_profile|. - -\subsection{Message Numbers}\label{Scan} - -As {\it inc\/} processes each message, it prints a ``scan'' listing showing -the message number, the date the message was sent, -the name of the sender, the subject, and sometimes the initial part of the -text of the message. A ``scan'' listing is thus similar to the output of -the {\tt HEADERS} command in \MM/. Each message within a folder is given a -number, starting with 1, by which it can be referenced. {\it -Inc\/} will display the numbers assigned to each new message in its ``scan'' -listing. - -As in \MM/, there is a ``current message'' number which usually identifies the -message most recently manipulated by the user. With most \MH/ commands, -this will be the default message if no messages are explicitly specified in -a command. {\it Inc\/} makes the first new message the current message, -which is indicated by a ``{\tt+}'' character in the scan listing, just after -the message number. - -Many \MH/ commands take a list of messages to process. A message designation -is either a single message number, two message numbers separated by a dash. -The dash format indicates a range of messages including the endpoints. A -message list consists of one or more message designations separated by -spaces. For example, messages 11 through 15 and message 17 may be indicated -by typing - - \oneline{11-15 17} - -as the argument to some command. There are also several predefined names -for messages or lists of messages which may be used in place of message -numbers: - -\bigskip -\begingroup\parskip=0pt -\def\titem[#1]{\par\hangafter=1\hangindent=.7in\noindent - \hbox to\hangindent{\it\hfil#1\qquad}\ignorespaces} - -\titem[cur] The current message (the last one that was handled). Equivalent - to ``.'' or ``{\tt CURRENT}'' in \MM/. -\titem[next] The next message -\titem[prev] The previous message -\titem[first] The first message in the current folder. -\titem[last] The last message in the folder. Equivalent to {\tt\%} or - {\tt*} in \MM/. -\titem[all] All messages ($\it first-last$). Same as in \MM/. -\endgroup - -It is also possible for you to define your own named {\em sequences\/} of -messages. See the {\it pick\/} command description for more details. - -\section{Processing Messages} - -This section contains a list of the common \MM/ commands and their -equivalents in the in \MH/ mail system. A short textual note describes how -the \MH/ commands differ from their \MM/ counterparts. - -\subsection{Listing Messages} - -As mentioned in Section~\ref{Scan}, -the {\it scan\/} command may be used to summarize the -messages in a folder, similar to the {\tt HEADERS} command in \MM/. Unlike -most \MH/ commands, however, {\it scan\/} defaults to {\em all\/} the -messages in the current folder unless you specify one or messages on the -command line to be scanned. So simply typing - - \command{scan} - -is equivalent to typing {\tt HEADERS ALL} (or {\tt H A}) in \MM/. - -\subsection{Reading Mail} - -Unlike the {\tt READ} command in \MM/, in \MH/ there is no special -mail-reading mode (indicated in \MM/ by the {\tt R>} prompt). -The command to read messages in \MH/ is {\it show.} If no message list is -specified, then the current message is displayed. The message is displayed -by your ``showproc'', as specified in the \verb|.mh_profile|, described -in Section~\ref{Tailoring}. -Normally, your ``showproc'' will be {\it more\/} or {\it mhless.} -Both of these programs will display your messages one screenful at a time. -You press the \fbox{space bar} on your terminal to see the next screenful, -or the \fbox{return} key to see the next line. - -The command - - \command{show next} - -(which will display the first message following the current message in the -current folder) can be abbreviated as simply - - \command{next} - -Similarly, the command ``{\tt show prev}'' can be abbreviated as simply ``{\tt -prev}''. - -To get a paper copy of a mail message, take the output from the {\it show\/} -command and pipe it into the {\it imprint\/} command. - - \command{show 5 | imprint} - -See the manual page for {\it imprint\/} for more information. - - -\subsection{Deleting Messages} - -The equivalent of the {\tt DELETE} command in \MM/ is {\it rmm\/} in \MH/ -(remove messages). It acts on the current message unless messages are -specified on the command line. Unlike \MM/, the deleted messages will -no longer show up in a ``scan'' listing. But the messages are not -completely removed; they are renamed to have a comma -prepended to the name of the file containing the message within its folder -directory. Therefore, if you need to recover a message, it is possible to -go into the directory and rename the message back. Be careful in doing this -not to overwrite a new message with the same message number! It is a \unix/ -convention that files whose names begin with a comma will be removed from -disk ({\em expunged\/}) early each morning. Therefore, your deleted -messages will be available for the rest of the day, unless you remove another -message subsequently which has the same message. Then the previously deleted -message is gone. - -\subsection{Replying to Mail} - -The equivalent of the {\tt REPLY} command in \MM/ is {\it repl\/} in \MH/. -{\it Repl\/} may be given the number of the message to which you wish to -reply, or it will default to the current message. When replying in \MM/, -you are prompted asking if you wish to reply to all the recipients of the -message to which you are replying, or only to its sender. In \MH/, normally -the reply will be constructed to be sent to all the recipients. You may -select which recipients receive copies of your reply by using the {\tt --query} option on {\it repl,} or by putting this option in your -\verb|.mh_profile|, as described in Section~\ref{Tailoring}. If you -wish a reply to go to everyone but yourself, you can -use \verb|repl -nocc me|. - -\subsection{Sending Mail} - -The equivalent of the {\tt SEND} \MM/ command is {\it comp\/} (``compose'') -in \MH/. These two commands are fairly similar, except that the recipient of -the message cannot be specified on the {\it comp\/} command line. -The {\it comp\/} program invokes a simple editor called {\it prompter\/} -which will prompt you for the {\tt To:}, {\tt Cc:}, -and {\tt Subject:} fields of the message. Then a line of dashes is typed, -and you may enter the body of your message (its {\em text,} in \MM/ terms). -When you are finished, type \fbox{ctrl}--D (equivalent to typing \fbox{ESC} or -control-Z in \MM/). Then you'll receive the prompt - - \oneline{What now?} - -which is similar to \MM/'s {\tt S>} prompt. You may receive a list of the -options that you have at this point by typing ``{\tt?}'' followed by -\fbox{return}. Here is a short list of the options and their meanings. -Notice that, unlike \MM/, there are very few commands to modify the message -(such as the {\tt TEXT}, {\tt TO}, {\tt CC}, etc., commands which may be -typed at the {\tt S>} prompt in \MM/). In place of these commands, you use -the {\tt edit} command to invoke your favorite text editor on the message, -and you use it to make the equivalent changes. You also use your editor -to include other files into the body of the message, rather than using -control-B, as in \MM/. One additional use of the {\tt edit} command is -for spelling checking. In \MM/, you may use the command {\tt SPELL} -for this purpose. -In \MH/, you type ``{\tt edit spell}''\footnote{ Actually, any -program named after the ``{\tt edit}'' command will be invoked with -whatever arguments you have given and a path to the file containing -the message you are editing.} instead. This will -cause the spelling checker to be run, giving you a list of the possibly -misspelled words in your message. - -\bigskip - -\begingroup -\def\titem[#1]{\par\hangafter=1\hangindent=1.4in\noindent - \hbox to\hangindent{\hfil#1\qquad}\ignorespaces} - -\titem[\tt edit \it editor\/] Edit the message using the specified - editor. When you exit, you will be - back at \verb|What now?|. - -\titem[\tt list] Shows the message you just typed - -\titem[\tt whom -check] Verifies that the addresses you have - used are valid as far as our system - can tell - -\titem[\tt send] Sends the message to the recipients - -\titem[\tt push] Sends the message in the background - -\titem[\tt quit] Quits without sending the message. - Saves the text of the message as - a ``draft''. Type \verb|comp -use| to - get back to that draft later. - -\titem[\tt quit -delete] Quit, throwing away the draft -\endgroup - -\bigskip - -\subsection{Forwarding Mail} - -The {\it forw\/} command is used in \MH/ to forward messages. It will take -a list of messages on the command line to be forwarded, or it will default -to the current message if none are specified. It will prompt you like {\it -comp\/} does for the {\tt To:}, {\tt Cc:}, and {\tt Subject:}\ fields. Note -that, unlike \MM/'s {\tt FORWARD} command, {\it forw\/} will not construct a -subject line automatically. Also as with {\it comp,} you will have the -opportunity to add additional text to the message(s) which you are -forwarding, ended with a control-D. - -\subsection{Resending Mail} - -The equivalent of the {\tt RESEND} command in \MM/ is the {\it dist\/} -(``distribute'') command in \MH/. {\it Dist\/} works very much like the -{\it forw\/} command, except that the prompts will be {\tt Resend-To:}, -{\tt Resend-Cc:}, etc. After filling in the headers, a line of dashes -is typed giving the impression that additional text can be entered. -Nothing could be further from the truth; if you add any text at this -point the {\it dist\/} will fail. Your only opportunity to add text -is in the {\tt Resend-Note:} field. - -\section{Advanced Topics} - -\subsection{Selecting Messages} - -In \MM/, you may use several reserved command words to select messages -in place of an explicit list of message numbers. For example, you can -type ``{\tt DELETE FROM SMITH}'' to remove all the messages from a user named -``Smith''. Rather than building such a capability into each \MH/ program -which can process message lists, a special program called {\it pick\/} is -used instead. Just as there are predefined sequences of messages, such as -``{\tt all}'', ``{\tt cur}'', etc., you may use {\it pick\/} to define your -own sequences. {\it Pick\/} is capable of selecting messages from a folder -based on the {\tt To:}, {\tt From:}, {\tt Subject:}, {\tt Cc:}, or {\tt -Date:} fields, or by searching the body of the message. The patterns to be -searched for may include full regular expressions (see the ``man'' page for -{\it ed(1)\/} for more information) or simple strings. - -{\it Pick\/} may be used in one of two ways. First, it may output the -sequence of message numbers which match the search parameters. Using the -backquoting mechanism of the shell, these message numbers may then become -the arguments to other \MH/ programs. The second way to use {\it pick\/} is -to have it define a new sequence name which will be the messages which were -selected. Only this second method of using {\it pick\/} will be described -here; see {\it pick(l)\/} if you wish to use the first method. - -In your \verb|.mh_profile|, add the line - - \oneline{pick: -seq sel} - -Then each time you use the {\it pick\/} command, it will define the -resulting sequence of messages to be called ``sel''. Then to ``pick'' all -the messages in the current folder which are from ``Smith'', just type - - \command{pick -from smith} - -To see a summary of those messages, type - - \command{scan sel} - -Then to the remove the messages, type the command - - \command{rmm sel} - -You can {\it pick\/} messages according to any of the headers ({\tt -to --from -subj -cc {\rm or} -date}) or just search all the messages for a given -word ({\tt -search}). - -\subsection{Customizing Your Mail Environment}\label{Tailoring} - -In \MM/, you use the {\tt PROFILE} command to tailor your mail environment. -This command writes a file called {\tt MM.INIT} in your home directory which -is then read by subsequent executions of \MM/. In the \MH/ system, the file -\verb|.mh_profile| serves the same purpose. It is edited with any normal -text editor, rather than using a special-purpose command to modify it. The -format of the file is line oriented, one line per \MH/ program or \MH/ -option to be set. The only required line in the profile is the name of the -primary \MH/ mail directory, which is by default {\tt Mail}. This -information is specified by the line - - \oneline{Path: Mail} - -The textual name you would like to have on your outgoing mail is specified -by the {\tt Signature:} line. For example, - - \oneline{Signature: Mary Hegardt} - -The BBoards which you like to read should also be listed in the -\verb|.mh_profile| (see Section~\ref{BBoards}, page~\pageref{BBoards}, for -additional information). For example, if you read the ``system'' BBoard -(where all important announcements are posted), as well as ``whimsey'' -and ``imagen-users'' BBoards, your \verb|.mh_profile| should contain the line - - \oneline{bboards: system whimsey imagen-users} - -Other options may be specified on a per-program basis. The format for these -lines is the same. First, the program name is given followed by a colon. -Then any flags which are to be the default options for that program are -given. Here is a short list of the most common options which you may want -to set in your \verb|.mh_profile|: - - \oneline{showproc: mhless} - -The {\it showproc\/} is the program used to show messages to you. By -default, it is the {\it more\/} command. {\it Mhless\/} is the same as -{\it more\/} except that it omits the headers of the messages which you -indicate that you wish not to see. Type - - \command{man mhless} - -for more information about this program. - - \oneline{msh: -scan} - -Selecting this option causes an automatic scan of new messages on BBoards to be -made when reading BBoards with {\it bbc,} similar to the scan listing -produced by {\it inc.} - - \oneline{repl: -query} - -causes {\it repl\/} to ask for each address in the message being replied to -if it should be included in the {\tt To:} or {\tt Cc:} fields of the reply -being composed. - - \oneline{pick: -seq sel} - -This line will cause messages ``picked'' by the {\it pick\/} command to be -put into a sequence named ``sel''. This sequence name may then be used -just as the built-in sequences (``last'', ``first'', etc.). - -\subsection{Aliases} - -Using \MH/, you may specify your own private mail aliases. This feature -allows you to store lists of addresses or long internet addresses of people -with whom you frequently correspond in one file, and then to address them -using short mnemonic names. Typically, you will call your alias file ``{\tt -aliases}''; it must be stored in your \MH/ directory. The format of this -file is simple. The alias is given, followed by a colon, followed by one or -more legal mail addresses separated by commas. For example, you might for -some reason have an alias for all the users named ``Rose'' in the ICS -department: - - \oneline{roses: prose, srose, mrose, drose} - -In addition to your ``{\tt aliases}'' file, you will need to modify your -\verb|.mh_profile| in order to use aliases. You should add the flag -``{\tt -alias aliases}'' to the entries for the commands {\it ali, whom, -send,} and {\it push,} creating entries for these programs if they aren't -already in your \verb|.mh_profile|. -Now, messages addressed to ``{\tt roses}'' will be distributed to all -the people listed in the alias. - -The {\it ali\/} command is used to show you what an alias expands to. -You just type - - \comarg{ali}{alias} - -and {\it ali\/} will respond with the expansion of the {\it alias.} {\it -Ali\/} searches the system aliases file in addition to your private ones. - -\subsection{Blind Lists} - -There are two different types of so-called ``blind addressing'' of messages. -Users of \MM/ may already be familiar with the ``Blind Carbon Copy'', or -{\tt BCC:} field. It allows you to add recipients to your message just -like those who are CC'd, but the normal recipients will not see that the -BCC recipients were copied on the message, their replies will not go to the -blind recipients, and the blind recipients cannot (easily) reply to the -message. - -The second type of blind mailing is actually called a ``group address list'', -although it is commonly referred to as a ``blind list''. -The format of this type of address is - - \oneline{{\it phrase\/}: {\it address\_list\/};} - -where the ``{\it phrase\/}'' is any English phrase of one or more words, -and the {\it address\_list\/} consists of one or more addresses separated by -commas. The recipients of a message addressed in this fashion will -see simply - - \oneline{{\it phrase\/}: ;} - -so when they reply to the message, their reply will come only to the sender -(or the {\tt Reply-To:} field, if one was specified), rather than going to -all the recipients of the original list. For example, to use a group -address list for the ``{\tt roses}'' alias you would type: - - \oneline{To: People Named Rose: roses;} - -This type of group address is very -useful for making up lists of related people, such as all the people working -on a particular research project. - -\subsection{Folders}\label{Folders} - -As mentioned previously, folders are directories within your \MH/ directory -used to store related messages. There is no equivalent of the folder -concept in the \MM/ system. Usually, you will use only the folder ``inbox'', -so you won't have to worry about folders. However, if you process a large -volume of mail, then folders become invaluable in managing the messages -which you wish to keep for future reference. - -Just as there is a ``current message,'' \MH/ maintains a ``current folder,'' -which will normally be ``inbox''. You can change folders either by -specifying the folder on the command line of \MH/ programs which take a -list of messages as an argument, or by using the {\tt folder} command: - - \command{folder +{\it folder\_name}} - -In general, the folder name is indicated by a ``{\tt+}'' sign followed -immediately by the folder name, all preceeding any list of messages. For -example, you may read the most recent message in a folder called -``job\_offers'' using the command - - \command{show +job\_offers last} - -This command will have the side-effect of setting the current folder to be -``job\_offers''. You may move messages from the current folder into the -``job\_offers'' folder using the command - - \comarg{refile +job\_offers}{messages} - -where, as usual, the {\it messages\/} list will default to the current -message in the current folder if none are specified. Note that, in contrast -with the {\it show\/} command and most other \MH/ commands, the {\it -messages\/} are {\em not\/} considered to be in the folder ``job\_offers''. -You may obtain a summary of all your folders by typing the command - - \command{folders} - -When you remove messages from a folder using the {\it rmm\/} command, -the deleted messages will show up as a ``hole'' in the message numbering. -The command - - \command{folder -pack} - -will cause all the messages within one folder to be renumbered starting -with~1. Similarly, the command - - \command{folders -pack} - -will do the same thing for all your folders. - -To remove an empty folder, use the command - - \command{rmf +{\it folder}} - -\subsection{Reading BBoards}\label{BBoards} - -Two special-purpose programs are utilized in reading BBoards. The first is -{\it bbc,} which is used to check a list of BBoards for new messages. -The list of messages may be given on the command line, or if not, it will be -taken from the {\tt BBoards:} list in your \verb|.mh_profile|. You may -obtain a list of all the available BBoards by typing the command - - \command{bbc -topics} - -For each BBoard with unseen messages, {\it bbc\/} will invoke the \MH/ -shell, {\it msh,} whose prompt is - - \oneline{(msh)} - -The {\it msh\/} program allows you to read BBoard mail as if it were normal -messages in one of your folders. Almost all the \MH/ commands will work -just as the normally do. Typing the command ``{\tt quit}'' to {\it msh\/} -causes it to stop reading the current BBoard and go on to the next one -containing unseen messages, or to exit if there are no more such BBoards. -Typing control-D causes {\it msh\/} to exit unconditionally. The command -{\tt mark} followed by a message number causes {\it msh\/} to act as if you -have seen that message and all previous ones. - -\subsection{Checking for Mail} - -Under \unix/, there are about a dozen different ways to check for new mail. -The easiest way to do it is to set the {\it csh\/} variable named ``mail'' -to tell {\it csh\/} to check for new mail for you periodically. To do this, -add the line - - \oneline{set mail=(60 /usr/spool/mail/\$USER)} - -to your {\tt .login} file in your home directory. This command says to -check for mail if {\it csh\/} is about to prompt you with a {\tt\%} sign, -and if it has been at least 60 seconds since it last checked for mail. -The advantage of this method of mail notification, besides simplicity, is -that you will never be interrupted by a mail notification. You will only be -notified of new mail when you are between commands, when the shell is about to -prompt you. - -If you desire asynchronous mail notification, which will print to your -terminal regardless of what you are currently doing, you may make use of a -``Receive Mail Hook'' called ``rcvtty''. To do this, create a file in your -home directory called ``{\tt .maildelivery}''. In this file, put the line - - \oneline{* - pipe R /usr/uci/lib/mh/rcvtty} - -Then each time new mail arrives, you will receive a one-line ``scan'' -listing of the mail if your terminal is world-writable. For more information -on ``maildelivery'' files, type: - - \command{man 5 maildelivery} - - -\subsection{Saving Drafts} - -Normally when you use {\it comp,} it creates the message being composed in a -file called ``{\tt draft}'' in your \MH/ directory. If you use the ``{\tt -quit}'' option at the ``{\tt What now?}'' prompt, this file will remain -there. You may later use the command - - \command{comp -use} - -to resume composing the message. - -If you begin composing a new message and there is already a ``draft'' file, -you will be asked for the disposition of this file. Typing {\tt?} -\fbox{return} will give you a list of the options at this point. Normally -you will either {\tt replace} (delete) the old draft and begin -a new one or {\tt use} the old one. - -The {\tt -file} switch to {\it comp\/} may be used to specify the name of a -draft other than ``{\tt draft}''. For example, one might type - - \command{comp -file mary} - -to begin composing a message maintained in the draft file ``{\tt mary}''. -Typing - - \command{comp -file mary -use} - -would cause {\it comp\/} to resume composing this same draft after a -``{\tt quit}'' command to the ``{\tt What now?}'' prompt. - -Very advanced users of \MH/ maintain multiple draft files in a {\it draft -folder.} This is a normal folder which holds all your drafts, rather than -having just one draft in your \MH/ directory named ``{\tt draft}''. If you -feel that you need to use draft folders, you should consult the {\sl MH -User's Manual\/} for additional information. - -\end{document} diff --git a/docs/historical/mh5/MHCHANGES b/docs/historical/mh5/MHCHANGES deleted file mode 100644 index 3365f669..00000000 --- a/docs/historical/mh5/MHCHANGES +++ /dev/null @@ -1,1462 +0,0 @@ - MHCHANGES from mh.4 to mh.5 - - -Mon Aug 27 05:00:44 1984 Rand MH Mail Handler (agent: Marshall Rose) - - Decide that mh.4 is finished. This file keeps track of the - changes made between the mh.4 and mh.5 versions. As usual, it's - being kept in add-source-change format. [Actually, mh.4 was - finished on July 1, 1984. For obscure reasons, this ChangeLog - didn't start until August 27th though.] - - -Mon Aug 27 05:07:37 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/inc.c: examine the profile entry "maildrop" to override the - default maildrop if necessary. "maildrop" is interpreted with - m_mailpath(), so if not an absolute path, it's interpreted relative - to the user's MH directory. - - -Tue Sep 11 19:59:24 1984 Rand MH Mail Handler (agent: Marshall Rose) - - tws/dtime.c: have it know about EDT. Really, dtimezone needs to - get fixed up and use two tables instead of one... - - -Wed Sep 12 20:02:22 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/rcv{cron,tty}.c: if not reading mmdf.h, then read smail.h to - get proper definitions of RP_M{ECH,OK}. - - -Sun Sep 16 16:08:39 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/folder.c: change capitalization of "%d Folder%s" to - "%d folder%s". - - -Tue Sep 18 14:16:53 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/folder.c: if folder is unreadable (errno==EACCES), just say - "unreadable", don't bother to call admonish(). - - -Tue Sep 18 14:30:57 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/inc.c: Check $MAILDROP prior to checking the Maildrop: profile - entry. - - -Wed Sep 19 16:02:18 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/scan..c: if message is unreadable (errno==EACCES), just say - "unreadble", don't bother to call admonish(). - - -Fri Sep 21 19:25:25 1984 Rand MH Mail Handler (agent: Marshall Rose) - - sendmts/hosts.c: change ALLHOSTS logic: if we're running with an - exception file, then turn ALLHOSTS on (let mail system be final - arbitrator). Also, if using an exception file, play along if the - file can't be opened. - - -Sat Sep 22 19:03:02 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/sbboards.c: forgot a few arguments in a couple of printf-like - strings. - - -Sat Sep 22 20:19:40 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/rcvlink.c: new rcvmail hook, just like the old rcvlink hook - used in the ZOTnet. - - -Mon Oct 1 20:48:25 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/{scan,inc,scansbr}.c: change scansbr.h to #define the return - codes from scansbr$scan(). Modify scan.c to say if a null message - is empty. - - -Mon Oct 1 20:49:32 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/repl{,sbr}.c: add the -[no]query switch which interactively - prompts the user for info on who should be replied-to. - - -Wed Oct 10 09:15:23 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/install-mh.c: fix minor typo in display of help message. - - -Wed Oct 10 14:41:30 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/rcv{cron,link,tty}.c: foil m_getdefs() for JLR. - - -Fri Oct 12 09:52:19 1984 Rand MH Mail Handler (agent: Marshall Rose) - - sbr/m_edit.c: change rindex() to r1bindex(). Silly typo. - - -Fri Oct 12 09:53:56 1984 Rand MH Mail Handler (agent: Marshall Rose) - - uip/ap.c: be sure to foil m_getdefs() for consistency. - - -Mon Oct 15 08:27:13 1984 /mtr (agent: Marshall Rose) - - conf/{mhconfig.c,config/config.c}: make the default editor - configurable. - conf/mhconfig.c: add support for othersupport/Makefile. - Makefile,conf/{config/mts.c,makefiles/mts}: add support for the - mtstailor file. - othersupport/tutorial/: include the MH tutorial - uip/{ap,bbr,conflict,inc,post,rcvcron,rcvlink,rmail,sbboards,slocal}.c, - mts/msgchk.c: add support for the mtstailor file. - uip/{rmail,sbboards,slocal}.c: foil m_getdefs() (just in case). - - -Wed Oct 17 10:02:27 1984 /mtr (agent: Marshall Rose) - - uip/inc.c: more mtstailor fixes, always read MAILDIR. - uip/prompter.c: add the -[no]rapid switch. - - -Thu Oct 18 11:14:15 1984 /mtr (agent: Marshall Rose) - - uip/annosbr.c: if file doesn't exist, don't spit out error - diagnostic (comp/dist/forw/send -anno followed by push). - - -Fri Oct 19 08:57:23 1984 /mtr (agent: Marshall Rose) - - uip/dist.c: instead of introducing Prev-Resent-Header: just prepend - Prev- to previous resent-XXX: fields. - uip/{post,dist}.c: append resent-XXX: fields instead of prepending - them. Also some minor clean-up. - tws/dtime.c: use a better structure to permit "fool-proof" - generation of time with dst. - tws/dtimep.c: minor clean-up. - - -Sat Oct 20 11:47:26 1984 /mtr (agent: Marshall Rose) - - uip/post.c: let fcc: fields have more than one folder entry. - - -Mon Oct 22 11:37:30 1984 /mtr (agent: Marshall Rose) - - sendmts/smail.c: forgot to declare parameter watch for -DSENDMAIL. - conf/makefiles/*: make "make install" a synonym for "make inst-all". - conf/makefiles/*: support $(DESTDIR) convention. - - -Tue Oct 23 12:35:58 1984 /mtr (agent: Marshall Rose) - - conf/config/mts.c, mts/mts.h: remove the mbx_lock() and mbx_unlk() - routines and replace them with the lock-and-open routines - lkopen(), lkclose(), lkfopen(), and lkfclose(). lkopen() acquires - an exclusive lock on the named file (which *must* exist) and then the - appropriate open. lkclose() releases the lock and closes the - file. lkfopen() is to lkopen() as fopen() is to open(). lkfclose() - is to lkclose() as fclose() is to close(). I had to do all this - so with 4.2BSD we can use flock to do the locking instead of the - link/unlink business. - - -Wed Oct 24 11:00:55 1984 /mtr (agent: Marshall Rose) - - -- All fixes from Terry Domae at NRTC -- - conf/mhconfig.c: invoke mhdoc with csh explicitly since V7 doesn't. - conf/config/config.c, config/mh.h: add new global variable libpath. - uip/mhlsbr.c: support libpath for system-wide forms. - config/mh.h,mf/mf.c,sbr/getusr.c,uip/post.c: add -DNRTC for MAILID - support - uip/replsbr.c: don't panic if the host for the sender/from field - is unknown. - uip/{send,whom}.c: forgot to use m_draft() instead of m_maildir(draft). - sbr/m_draft.c: fix things up for show -draft. - uip/show.c: add a "-form formfile" switch. Also, support for -draft - to reflect draftfolders. - - -Wed Oct 24 21:46:22 1984 /mtr (agent: Marshall Rose) - - conf/config/config.c, config/mh.h: add libpath() which looks first - in m_maildir and then etcpath for the file. Get rid of the - std* variables since libpath() now does the same thing. - With libpath, we now search m_maildir and then etcpath for - alias files for send and whom, form files for comp, dist, forw, - and repl, and filter files for forw and mhl. - - -Sat Oct 27 23:08:23 1984 /mtr (agent: Marshall Rose) - - sbr/m_getdefs.c: create the MH-directory if it's not there. - uip/rmf.c: when rmf'ing a folder make sure parent's folder is - writable as well as the folder. - - -Sun Oct 28 10:32:06 1984 /mtr (agent: Marshall Rose) - - uip/*.c: remove calls to m_news(), also add m_foil() to foil - implicit calls to m_getdefs (). - {sbr/m_getdefs,uip/rmf}.c: make mp->others checking a bit smarter - for #ifdef UCI. - - -Sun Oct 28 20:36:45 1984 /mtr (agent: Marshall Rose) - - uip/folder.c: On "folder +foo", if +foo doesn't exist, ask if it - should be. - - -Sun Oct 28 22:12:22 1984 /mtr (agent: Marshall Rose) - - uip/bbr$repl: forgot to support -[no]query. - conf/doc/tmac.h: add .nf and .fi at the right spots for "FILES", - etc. - -Mon Oct 29 19:23:10 1984 /mtr (agent: Marshall Rose) - - uip/bbc.c: remove a couple of calls to setbbent(). They were - defeating setbbfile(). They weren't even needed since the - first thing that bbc does (even before parsing arguments) is - to call setbbent(). - uip/show.c: force -noformat, -noheader, and -nopr to be at least - three characters for recognition. - uip/post.c: when invoking fileproc, add a '+' only if it doesn't - start with '+' or '@'. - - -Tue Oct 30 08:12:50 1984 /mtr (agent: Marshall Rose) - - uip/{comp,dist,forw,repl}.c: make the "push" option at "What now?" - level visible. Document the draftfolder switches in the - manual page - uip/bbc.c: document `-file BBoardsfile' in manual page - uip/bbl.c: remove -debug switch - uip/repl.c: remove -debug switch - uip/send.c: document -[no]remove in manual page, make -push - visible and add -nopush. Document the draftfolder switches in - the manual pages - - - -Tue Oct 30 16:35:37 1984 /mtr (agent: Marshall Rose) - - uip/prompter.c: if the skeleton lacked a body sometimes prompter - would ask for a body and sometimes it wouldn't. Now it doesn't. - uip/dist.c: call ready_msg() each time ready_draft() is called so - user can edit message being dist'd. (sigh) - - -Tue Oct 30 18:59:45 1984 /mtr (agent: Marshall Rose) - - mf/mf.c: very minor clean-up of isfrom(). - mhmts/{hosts.c,netmail.c},{mmdf,sendmts}/hosts.c: include mts.h - - -Tue Oct 30 21:30:38 1984 /mtr (agent: Marshall Rose) - - tws/dtimep.c: parse ctime(3) strings, since some fool hosts - actually permit that to get into the Internet. - - -Tue Oct 30 22:14:19 1984 /mtr (agent: Marshall Rose) - - uip/post.c: if we get an address-bearing field without any address, - just ignore it instead of complaining about it. - - -Wed Oct 31 07:54:41 1984 /mtr (agent: Marshall Rose) - - mmdf/hosts.c: somehow "mmdf.h" and "util.h" weren't included. - - -Wed Oct 31 08:13:36 1984 /mtr (agent: Marshall Rose) - - uip/prompter.c: if the skeleton lacked a body sometimes prompter - would ask for a body and sometimes it wouldn't. Now it ALWAYS - does. - uip/show.c: "show -pr -f n" exec'd "pr inbox/-f inbox/n". Now it - exec's "pr -f inbox/n" like it should. - - -Wed Oct 31 14:41:06 1984 /mtr (agent: Marshall Rose) - - uip/scansbr.c: change SLINE to 78 (instead of 79). We really - should read termcap or an MH profile entry though. - - -Wed Oct 31 19:12:58 1984 /mtr (agent: Marshall Rose) - - uip/rcv{cron,tty}.c: include "../mmdf/util.h" when MMDFMTS. - - -Wed Oct 31 20:23:13 1984 /mtr (agent: Marshall Rose) - - -- All fixes from Phyllis Kantar at Rand -- - uip/repl.c: should use done(1) if the initial m_edit fails instead - of done(0). - sendmts/smail.c: comment out passing of "-ov" to SendMail if - compiled at Rand. - -Wed Oct 31 22:27:33 1984 /mtr (agent: Marshall Rose) - - uip/repl.c: since post can handle multiple folders in an fcc: - line, take advantage of it. - - -Thu Nov 1 00:33:24 1984 /mtr (agent: Marshall Rose) - - bbsupport/{bboards.{daily,weekly},bb{save,remove}} - use /bin/sh - not /bin/csh - bbsupport/bb{aka,exp,tar}.c - call setbbent() with the right - argument. Where applicable use /bin/sh not /bin/csh - conf/config/MakeBBoards - remove dependencies - conf/mhconfig.c - support for empty mmdfldir and non-empty - mmdflfil. - - -Thu Nov 1 15:14:43 1984 /mtr (agent: Marshall Rose) - - support/mhl.format: change terminal length from 40 to 23. - - -Thu Nov 1 18:42:44 1984 /mtr (agent: Marshall Rose) - - sbr/brkstring.c: brkany() wasn't checking for a null string. It - does now. - - -Fri Nov 2 07:56:36 1984 /mtr (agent: Marshall Rose) - - uip/pick.c: if no matches and -list output a "0" so backquoting - fails. - - -Fri Nov 2 13:17:27 1984 /mtr (agent: Marshall Rose) - - uip/replsbr.c: don't bomb if returnee's host is unknown (use - AD_HOST instead of AD_NAME). - mmdf/hosts.c: when calling mmdf_init() use invo_name and not "mh". - - -Fri Nov 2 13:44:50 1984 /mtr (agent: Marshall Rose) - - uip/{forw,forwsbr}.c: change encapsulation algorithm to use - different bit-stuffing scheme. - uip/mhlsbr.c: with -forward (interface from forw), support change - in encapsulation algorithm. - - -Fri Nov 2 17:08:18 1984 /mtr (agent: Marshall Rose) - - uip/forwsbr.c: remove, put cpydgst() into sbr/cpydata.c - config/mh.h, sbr/llib-lmh: declare cpydgst(). - - -Sat Nov 3 19:56:51 1984 /mtr (agent: Marshall Rose) - - uip/bbc.c: get this: "bbc -quiet" with no other arguments and a - bogus "bboards:" entry in the profile would yield a core dump. - Marvelous. - - -Sun Nov 4 15:00:20 1984 /mtr (agent: Marshall Rose) - - sbr/m_getfld.c: in the interests of speed-up, change eom() to a - macro that calls the auxilary function Eom() if need be. This, - along with the addition of a new mbx_style, DEFAULT, should - give a significant speed-up in parsing individual files and - the MH profile. Finally, make Getc() a macro as well, which - calls the routine GETC() only on special occasions. - config/mh.h,sbr/{llib-lmh,m_getfld.c}: change mbx_unknown() to - m_unknown(). - - -Sun Nov 4 17:40:04 1984 /mtr (agent: Marshall Rose) - - uip/folder.c: forgot the m_sync() after m_setcur(). This - prevented "folder +folder msg" from setting msg as cur. - - -Mon Nov 5 13:14:36 1984 /mtr (agent: Marshall Rose) - - uip/replsbr.c: don't adios() when can't understand "From:" or - "Sender:" field. Continue on, gracefully (ha!) - - -Mon Nov 5 18:15:01 1984 /mtr (agent: Marshall Rose) - - -- ALTOS port of MH.5 (under #ifdef ALTOS) -- - conf/config/config.c: "more" resides in /usr/bin/. "ls" resides - in /bin/. - conf/config/mts.c: read /etc/mhid for {Local,System}Name(). Also - add routine gethostname () which reads /etc/systemid. - config/mh.h: #include "../config/altos.h" on #ifdef ALTOS. Also, - new #define LINK which is "@" unless ALTOS else "#". - config/altos.h: to get past V7 compiler... - mf/msgchk.c: was using NULL instead of "" - mf/mf.h: #include "../config/altos.h" on #ifdef ALTOS. - sbr/m_edit.c: use LINK instead of "@" - sbr/m_gmsg.c: use LINK instead of "@" - sbr/m_seq.c: was using NULL instead of "" - uip/clrsbr.c: use minimum of 2048 size for termcap buffer - uip/dist.c: use LINK instead of "@" - uip/install-mh.c: use (FILE *)NULL instead of NULL - uip/msh.c: don't #include if ALTOS - uip/repl.c: use link instead of "@" - uip/rmf.c: use link instead of "@" - - -Tue Nov 6 09:56:21 1984 /mtr (agent: Marshall Rose) - - conf/mhconfig.c: add "oldload" option for ALTOS. - - -Tue Nov 6 09:56:55 1984 /mtr (agent: Marshall Rose) - - sbr/{m_edit.c,llib-lmh}: add extra argument for $cwd for edit. - uip/{comp,dist,forw,repl}.c: call pwd() and invoke m_edit with the - extra argument. - - -Tue Nov 6 21:16:42 1984 /mtr (agent: Marshall Rose) - - uip/msh.c: call m_unknown() since advanced m_getfld() algorithm - loses otherwise (a long story). - - -Tue Nov 6 21:33:39 1984 /mtr (agent: Marshall Rose) - - uip/dist.c: on "push" call ready_draft() prior to actual push() - since if dist is invoked from bbr the file being distributed - will get zapped prior to ready_draft() getting called. Moby - hack. - - -Wed Nov 7 20:12:04 1984 /mtr (agent: Marshall Rose) - - sbr/m_draft.c: "Draft-Folder: +drafts" loses. Strip the '+' if - need-be. - - - -Wed Nov 7 20:45:44 1984 /mtr (agent: Marshall Rose) - - uip/{clr,scan}sbr.c: read termcap to ascertain the length of the - scan line. - uip/trmsbr.c: used to be called uip/clrsbr.c - - -Wed Nov 7 21:51:56 1984 /mtr (agent: Marshall Rose) - - uip/post.c: make Bcc:s look more line a forwarded message. - uip/mhl.c: add -forwall flag to help forw for batching. the -forward - flag now just uses the encapsulation algorithm. - - -Thu Nov 8 16:59:37 1984 /mtr (agent: Marshall Rose) - - uip/bbc.c: trap sigTERM just like sigEMT so user can kill bbc and - "have the right thing happen". - - -Sat Nov 10 16:10:33 1984 /mtr (agent: Marshall Rose) - - sbr/trimcpy.c: remove all trailing [lt]wsp. - - -Mon Nov 12 08:15:59 1984 /mtr (agent: Marshall Rose) - - uip/msh.c: msh$show didn't know about the `-form formfile' switch. - - -Mon Nov 12 08:29:19 1984 /mtr (agent: Marshall Rose) - - conf/makefiles/bbsupport: when MH profile was installed for the - BBoards login, the context file wasn't. - sbr/m_getdefs.c: if "context:" isn't set in the MH profile, then - don't complain if it's not there. - - -Mon Nov 12 11:01:51 1984 /mtr (agent: Marshall Rose) - - uip/post.c: re-arrange the code a bit for better organization. - - -Mon Nov 12 22:15:53 1984 /mtr (agent: Marshall Rose) - - -- All fixes from Fred Blonder at UMCP-CS -- - conf/doc/mh.rf: add more details (mini tutorial). - sbr/{concat.c,llib-lmh}: use - sbr/m_name.c: use simpler method, sprintf(). Also fix size of - name[] buffer. - - -Tue Nov 13 00:08:01 1984 /mtr (agent: Marshall Rose) - - uip/{burst,msh}.c: fix bursting algorithm to support forwardings/bcc:s. - uip/{forw,mhlsbr,post}.c: strip one extra \n from last encapsulation - boundary. - - -Tue Nov 13 00:58:41 1984 /mtr (agent: Marshall Rose) - - uip/msh.c: add "inc" and "mhmail" commands (big deal). - - -Tue Nov 13 13:08:41 1984 /mtr (agent: Marshall Rose) - - newsupport/mh_receive: make it generated during MH configuration. - conf/mhconfig.c: support above change. - - -Tue Nov 13 18:58:43 1984 /mtr (agent: Marshall Rose) - - tws/{tws.h,dtime.c}: move tws_compare() from uip/picksbr.c to - dtime.c, call it twsort(). - - -Tue Nov 13 21:05:53 1984 /mtr (agent: Marshall Rose) - - uip/msh.c: add "sortm" command. - uip/sortm.c: clean it up a bit. - - -Wed Nov 14 10:23:19 1984 /mtr (agent: Marshall Rose) - - -- All suggestions from Phyllis Kantar at Rand -- - mf/mf.{h,c}: add new field entry "note" for 822-style comments. - config/addrsbr.h: add corresponding field entry m_note. - also change m_hnum to m_type. - uip/addrsbr.c: add a new argument to getm() to say what type the - default host is. - - -Wed Nov 14 13:30:00 1984 /mtr (agent: Marshall Rose) - - sbr/m_convert.c: if "0" is given as a message number, print - special error message (for use with backquoted pick). - sbr/m_gmsg.c: be more careful about saying when "cur" exists. - (don't set "curmsg" unless "mp -> msgstats[curmsg] & EXISTS"). - - -Wed Nov 14 19:06:24 1984 /mtr (agent: Marshall Rose) - - sbr/m_{gmsg,seq}.c: fix various logic bugs that prevented private - sequences from being recognized as such. - - -Wed Nov 14 20:16:04 1984 /mtr (agent: Marshall Rose) - - sbr/adios.c: for 4.2BSD use writev() on the adios() family of - routines, gives much smoother output. - uip/mhlsbr.c: call the adios() family of routines instead of - explicitly using stderr. - - -Wed Nov 14 22:19:10 1984 /mtr (agent: Marshall Rose) - - sbr/m_gmsg.c: undo curmsg "fix" above, it broke MH mightily! - sbr/m_convert.c: check curmsg here, so explicit references to - "cur", when it doesn't exist, fails. - - -Wed Nov 14 23:24:56 1984 /mtr (agent: Marshall Rose) - - -- All suggestions from Phyllis Kantar at Rand -- - sbr/{ssequal,uleq}.c: default arguments to "" if NULL. - uip/addrsbr.c: have ismymbox() recognize localhost!user. - uip/folder.c: have "folder -fast msg" set "msg" as cur. - sbr/m_getdefs.c: if using $MH, and it isn't relative, - after expanding it, setenv it to an absolute pathname for - subshells. - - -Thu Nov 15 09:24:32 1984 /mtr (agent: Marshall Rose) - - -- More fixes from Fred Blonder at UMCP-CS -- - sbr/concat.c: botched installation for the pyramid. - use Fred's code. - - -Thu Nov 15 09:29:43 1984 /mtr (agent: Marshall Rose) - - -- Fixes from John Romine at TGC -- - uip/{forw,mhlsbr}.c: using NULL instead of "" in a couple of - places. - - -Thu Nov 15 12:11:58 1984 /mtr (agent: Marshall Rose) - - mmdf/hosts.c: at the suggestion of Doug Kingston, use dm_v2route() - to map host references to official domain strings. - - -Thu Nov 15 21:15:41 1984 /mtr (agent: Marshall Rose) - - -- Fixes from John Romine at TGC -- - sbr/m_getdefs.c: use (FILE *)NULL instead of NULL when testing - fopen()'s return value. - - -Fri Nov 16 08:20:50 1984 /mtr (agent: Marshall Rose) - - sbr/m_getdefs.c: close up COMPAT code slightly. - conf/makefiles/*: change "-cp $(BINDIR)/cmd zcmd" to use "-mv". - (On a trial basis.) - -Fri Nov 16 08:21:08 1984 /mtr (agent: Marshall Rose) - - -- More fixes from Fred Blonder at UMCP-CS -- - conf/mhconfig.c: #define SVAL(s) to handle those pesky - de-references to NULL. - - -Fri Nov 16 19:01:32 1984 /mtr (agent: Marshall Rose) - - uip/msh.c: remove -[no]burst switches. Add "rmm" command, but don't - document it yet. Still have to resolve a few problems. - - -Sat Nov 17 13:49:12 1984 /mtr (agent: Marshall Rose) - - config/mh.h,uip/{folder,refile}.c: add NFOLDERS to denote max number - of folders/files on command line. - - -Sat Nov 17 15:33:14 1984 /mtr (agent: Marshall Rose) - - uip/{mhl,trm}sbr.c: add sc_length() to return li#. Have mhl - assume co# and li# based on termcap entry if not given on - command line. If entries aren't present in termcap, use - values in template. - - -Sat Nov 17 21:22:35 1984 /mtr (agent: Marshall Rose) - - conf/makefiles/{mts,uip}: change PGMPROT to 755 for dpk. - - -Sat Nov 17 22:43:11 1984 /mtr (agent: Marshall Rose) - - uip/msh.c: add msh$pack command. - uip/pack.c: simplify a bit. - - -Sun Nov 18 15:00:07 1984 /mtr (agent: Marshall Rose) - - uip/pick.c: if -help, set -nozero so done() doesn't print "0". - Moby hack. - - -Mon Nov 19 23:36:57 1984 /mtr (agent: Marshall Rose) - - uip/bbc.c: neaten handling of distribution addresses on - `-topics' output. - - -Tue Nov 20 16:56:14 1984 /mtr (agent: Marshall Rose) - - bboards/{bboards.h,getbbent.c}: change bboard structure to make - life easier for bbc. Also add new structure for use with msh. - - -Wed Nov 21 13:35:33 1984 /mtr (agent: Marshall Rose) - - config/dropsbr.h: new include file - uip/dropsbr.c: add support for maildrop mapping - uip/dropsbr.c: add new parameter to mbx_open() for default mode on - creation - uip/{msh,pack,post,rcvpack,s{bboards,local}}.c: modify to use new - support for maildrop mapping - - -Fri Nov 23 19:26:35 1984 /mtr (agent: Marshall Rose) - - uip/{bbc,post,prompter,rcvdist,rmail,{repl,scan}sbr,s{bboards,local}}.c: - minor clean-up - - -Fri Nov 23 21:08:04 1984 /mtr (agent: Marshall Rose) - - -- More Changes for the ALTOS -- - config/altos.h: didn't work, idiotic V7 compiler (cpp) didn't do - "the right thing", so get rid of it and change the variable - names in-line - conf/config/mts.c: make isdlm{1,2} into macros instead of routines - in mf/mf.c; also move getusr() there. - conf/config/mts.c: make getfullname () standard and add new - mtstailor option, mailid, to do the BRL/NRTC stuff with - pw_gecos - - -Sat Nov 24 09:59:31 1984 /mtr (agent: Marshall Rose) - - -- Fixes from John Romine at TGC -- - conf/mh-gen.8: include "dm.h" in list of include files for MMDF2 - conf/mh-gen.8: typo "ggenerate" - conf/examples/READ-ME: BSD41a => BSD41A - conf/mhconfig.c: V7 compiler tosses its cookies on reasonably - formed structure members. Fix - conf/config/config.c: remove comment about "pick -show" - conf/{config/config.c,doc/mh-profile.rf}, config/mh.h sbr/m_getdefs.c: - remove scanproc, since that's used only by "pick -scan" which does - not exist - conf/mhdoc: make into a Bourne shell script. - - -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".) - -Sat Nov 24 22:29:09 1984 /mtr (agent: Marshall Rose) - - uip/mhlsbr.c: into the fold - - -Sun Nov 25 13:28:47 1984 /mtr (agent: Marshall Rose) - - uip/{{mhl,trm}sbr,msh}.c: use and support SOprintf() for output - to terminal - uip/mhlsbr.c: add support for built-in mhl in msh, mhlsbr() - uip/msh.c: use new support for built-in mhl - sbr/m_getfld.c: some mis-logic in Eom(); if style is UNKNOWN, - ALWAYS figure out what it is prior to going on - - -Sun Nov 25 19:30:46 1984 /mtr (agent: Marshall Rose) - - bbsupport/bboards.{dai,week}ly: if the bboards login shell is csh, - can't use /bin/sh format... - - -Sun Nov 25 23:36:59 1984 /mtr (agent: Marshall Rose) - - uip/{mhl,trm}sbr.c: move discard() from mhlsbr to trmsbr - - -Mon Nov 26 10:20:07 1984 /mtr (agent: Marshall Rose) - - uip/send.c: add -[no]forward - - -Mon Nov 26 12:26:28 1984 /mtr (agent: Marshall Rose) - - uip/mhlsbr.c: add -[no]bell - - -Mon Nov 26 20:34:18 1984 /mtr (agent: Marshall Rose) - - sbr/refile.c: new module; implements the "refile" option at "What - now?" level - uip/{comp,dist,forw,repl}.c: new switch -noedit, says to skip the - initial edit and proceed directly to "What now?" level. - Also make use of the new "refile" option at "What now?" level - uip/comp.c: support for JLR's comp from a folder/msg notion - - -Tue Nov 27 14:19:18 1984 /mtr (agent: Marshall Rose) - - uip/post.c: ignore Fcc:s when disting - - -Tue Nov 27 16:54:51 1984 /mtr (agent: Marshall Rose) - - sbr/m_draft.c: add new result parameter which tells if a - draft-folder is being used - uip/{comp,dist,forw,repl,show,send,whom}.c: modified appropriately - for extra parameter; this info is needed to decide which prompt and - options to offer the user if the draft chosen exists - - -Tue Nov 27 19:08:46 1984 /mtr (agent: Marshall Rose) - - uip/addrsbr.c: in addition to griping about bogus addresses in the - "alternate-mailboxes:" entry, add a line saying to fix it (and - where) - uip/scansbr.c: very minor cosmetic change in cpyfrm() for group - handling - - -Tue Nov 27 19:22:51 1984 /mtr (agent: Marshall Rose) - - sbr/m_getfld.c: add m_eomsbr() for msh$mhl for bursting (sigh) - - -Tue Nov 27 20:44:45 1984 /mtr (agent: Marshall Rose) - - -- More Changes for the ALTOS -- - conf/makefiles/{mts,tws}: @(LDOPTIONS) was being left out of - LDFLAGS - config/aliasbr.h,uip/{ali,aliasbr}.c: prefix members of the aka - structure with ak_, prefix members of the adr structure with ad_ - tws/tws.h: type "void" undefined - uip/rcv{dist,pack,tty}.c: include only if not on - ALTOS - uip/ttyw.c: put everything under #ifdef TTYD - - -Tue Nov 27 21:02:41 1984 /mtr (agent: Marshall Rose) - - uip/send.c: re-implement the -[no]unique switches for JLR. - - -Wed Nov 28 00:15:25 1984 /mtr (agent: Marshall Rose) - - uip/trmsbr.c: always read termcap and do what we can. When called - from in a non-interactive environment, do the right thing at - the right time... - uip/msh.c: call sc_width() at start-up to read good values from - trmsbr - - -Wed Nov 28 08:24:04 1984 /mtr (agent: Marshall Rose) - - uip/refile.c: if +folder arg is forgotten, don't print usage - string. Also add -draft switch. - - -Wed Nov 28 11:28:56 1984 /mtr (agent: Marshall Rose) - - uip/mhlsbr.c: ignores wasn't being handled properly (logic bug) - - -Wed Nov 28 19:57:44 1984 /mtr (agent: Marshall Rose) - - uip/rcv{pack,tty}.c: move inclusion of and - to the not MMDFMTS part, since "util.h" includes - 'em - - -Wed Nov 28 20:37:16 1984 /mtr (agent: Marshall Rose) - - uip/comp.c: restore old context-sensitive behavior - - -Wed Nov 28 20:42:21 1984 /mtr (agent: Marshall Rose) - - conf/makefiles/*: for installations, use mv -f to save backup - - -Wed Nov 28 22:59:34 1984 /mtr (agent: Marshall Rose) - - uip/msh.c: add -draft argument to msh$refile; clean-up -draft - argument in msh$show - sbr/m_draft.c: call path() on value of Draft-Folder: so relative - folders work (!!) - uip/repl.c: expand fcc: @folder arguments - - -Thu Nov 29 01:55:12 1984 /mtr (agent: Marshall Rose) - - uip/pick.c: don't output that "0" on error exits if stdout is a - tty... (yep, pick acts differently for ttys, just like ls) - - -Fri Nov 30 08:47:52 1984 /mtr (agent: Marshall Rose) - - uip/news.c: forgot to include mh.h; no one must be using it, love - to trash it from the distribution. - - - -- Enter BETA Testing -- - - -Wed Dec 5 14:28:18 1984 /mtr (agent: Marshall Rose) - - mts/msgchk.c, Makefile, conf/makefiles/mts: honor MF conventions - in msgchk, required MH sbr library - uip/inc.c: better check of umincproc - uip/{dist,forw,repl}.c: typo prevented annotation with the pyramid - cc - conf/makefiles/{bbsupport,uip}: give path to chown - uip/dropsbr.c: no diagnostic if map is empty - conf/config/mts.c, bboards/getbbent.c: more ALTOS stuff for v7 cc - sbr/m_getfld.c, uip/mhlsbr.c: botched pointer to function notation, - visible on v7 cc - bbsupport/bbexp.c: forgot to foil m_getdefs() - sbr/m_{setcur,seq}.c: handle "cur" correctly - sbr/m_getfld.c: in msh$mhl with a message with no body, big loss - uip/post.c: don't ask - sbr/m_getfld.c, conf/makefiles/sbr: use the mts stuff to - initialize the delimiter. The programs that need this will - call mts_init() themselvess prior to calling m_getfld() - - -Wed Dec 5 22:58:11 1984 /mtr (agent: Marshall Rose) - - uip/sbboards.c: on distribution, if a particular address loses, - keep on going and report the error later on. - bboards/mmdf/mmdf.{1,2}/bboards/bb_wtmail.c: in addition to above - fix to sbboards, post failure notices to the local-XXX-request - address. - - -Fri Dec 7 00:25:24 1984 /mtr (agent: Marshall Rose) - - uip/{inc,show}.c: implement "unseen" for TGC. This feature is - currently undocumented pending field-testing. - - - -Sat Dec 8 18:16:20 1984 /mtr (agent: Marshall Rose) - - uip/rcvtty.c: minor-cleanup - - -Sat Dec 8 18:16:41 1984 /mtr (agent: Marshall Rose) - - config/mh.h, tws/tws.h, conf/config/mts.c: remove the void - definitions - conf/Makefile, config/makefiles/*: remove -ns from LDFLAGS - conf/makefiles/uip: don't use the -g option for ls for - s{bboards,local} - conf/makefiles/*: use -l to ls not -ls - - -Mon Dec 10 23:38:05 1984 /mtr (agent: Marshall Rose) - - config/scansbr.h, uip/{inc,scansbr,send,post}.c: add support for - TTI's prototype TMA under #ifdef TMA - uip/tmasbr.c: new module for support - - -Tue Dec 11 17:05:36 1984 /mtr (agent: Marshall Rose) - - uip/trmsbr.c: minor fix in discard() for #ifdef ALTOS - - -Tue Dec 11 22:35:58 1984 /mtr (agent: Marshall Rose) - - -- Fixes from Julian Onions at Nottingham -- - conf/makfiles/*: "ld -x -r" terminates with status 1 even if all - goes well, so tell make not to worry about it - config/mh.h,conf/examples/READ-ME: talk about void=int - uip/{msh,post,rcv{dist,pack,tty},slocal}.c: include if - not V7 - - -Wed Dec 12 11:51:52 1984 /mtr (agent: Marshall Rose) - - tws/{tws.h,dtime.c}: use modified version of gtime() to add new - structure element to (struct tws *). This makes time - comparisons insensitive to timezones, etc. - -Thu Dec 13 00:05:42 1984 /mtr (agent: Marshall Rose) - - sbr/m_getfld.c: big fields were having their headers zero'd - - -Tue Dec 18 15:59:34 1984 /mtr (agent: Marshall Rose) - - sbr/m_getfld.c, uip/scansbr.c: some speed improvements from Jim - Larus at UCB - - -Tue Dec 18 16:00:07 1984 /mtr (agent: Marshall Rose) - - bboards/getbbent.c, conf/config/mts.c, sbr/m_backup.c, - uip/dropsbr.c: for ALTOS "%.*s" doesn't work if * evals to 0, - so kludge around it - - -Tue Dec 18 16:00:48 1984 /mtr (agent: Marshall Rose) - - uip/{bbc,msh}.c: for Farber, say name of BBoard not name of file - - -Tue Dec 18 16:48:17 1984 /mtr (agent: Marshall Rose) - - bboards/*.c, conf/config/mts.c, mhmts/*.c, mmdf/*.c, sendmts/*.c, - tws/*.c: register madness - - -Wed Dec 19 12:49:42 1984 /mtr (agent: Marshall Rose) - - sbr/m_getfld.c: advise() with inverted arguments - - -Sat Dec 29 10:43:12 1984 /mtr (agent: Marshall Rose) - - uip/msh.c: improved $mhfolder handling for -prompt. - - -Sat Dec 29 10:45:08 1984 /mtr (agent: Marshall Rose) - - sbr/m_sync.c: handle public and read-only sequences correctly - uip/rmf.c: fix botch for handling read-only folders - - -Sat Dec 29 12:17:50 1984 /mtr (agent: Marshall Rose) - - conf/{config/config.c,doc/{folder,mh-profile}.rf}, sbr/m_getdefs.c, - uip/folder.c: fix folder -fast -recurse - - -Sat Dec 29 16:56:59 1984 /mtr (agent: Marshall Rose) - - conf/makefiles/sbr, config/mh.h, sbr/llib-lmh, sbr/closefds.c, - uip/{msh,post,rcvtty,replsbr,send,slocal,whom}.c: implement - closefds () - - -Sun Dec 30 11:50:57 1984 /mtr (agent: Marshall Rose) - - uip/post.c: one more -noverbose fix - - -Sun Dec 30 12:01:08 1984 /mtr (agent: Marshall Rose) - - uip/sortm.c: fix for holes in "msgs" from Mike O'Brien - - -Sun Dec 30 12:11:45 1984 /mtr (agent: Marshall Rose) - - uip/post.c: have non-recipient addresses honor aliases - - -Sun Dec 30 19:52:27 1984 /mtr (agent: Marshall Rose) - - conf/config/{config,mts}.c, mmdf/hosts.c, uip/trmsbr.c, - bboards/getbbent.c, config/mh.h: minor cleanup. - - -Mon Dec 31 17:43:49 1984 /mtr (agent: Marshall Rose) - - tws/{tws.h,dtime.c}: add dgmtime() - - -Mon Dec 31 21:28:07 1984 /mtr (agent: Marshall Rose) - - uip/packf.c, conf/doc/packf.c, conf/{config/config.c,makefiles/uip}, - change pack to packf - config/mh.h: make MAXFOLDERS smaller for the ALTOS - - -Wed Jan 2 13:20:42 1985 /mtr (agent: Marshall Rose) - - uip/addrsbr.c: #ifdef DUMB inserted - - -Fri Jan 4 16:28:49 1985 /mtr (agent: Marshall Rose) - - uip/addrsbr.c: SENDMTS was botching UUCP addrs - - -Mon Jan 7 19:05:22 1985 /mtr (agent: Marshall Rose) - - uip/inc.c: add -[no]truncate - conf/doc/*: change up documentation a bit - - -Tue Jan 8 09:12:42 1985 /mtr (agent: Marshall Rose) - - conf/{mh-gen,doc/MH}.rf: last change, fix public domain notice - config/notice.h: remove - uip/version.sh: don't include ../config/notice.h - - -Tue Jan 8 09:45:25 1985 /mtr (agent: Marshall Rose) - - sbr/m_edit.c: from Mike O'Brien on 4.2BSD use symlinks if "@" is - across file systems - uip/inc.c: slight botch in -[no]truncate - -Tue Jan 8 13:54:13 1985 /mtr (agent: Marshall Rose) - - MH.5 is finished, finally. - - -Sat Jan 26 09:05:52 1985 /mtr (agent: Marshall Rose) - - -- Fixes for MHMTS configuration -- - conf/makefiles/uip: shouldn't build rcvdist on an MHMTS system - conf/doc/mhook.rf: ditto - conf/config/mts.c, mhmts/netmail.c, mts/mts.h, uip/rmail.c: - some typos in the declarations of global MTS variables that - are MHMTS specific - mf/mmuu.c: addr_convert() conflicted with routine of same name - in uumm.c - uip/news.c: looking in the wrong place for on 4.2BSD - systems - - -Sat Jan 26 09:08:43 1985 /mtr (agent: Marshall Rose) - - uip/{inc,post}.c: changes for #ifdef TMA; this stuff is still - under non-disclosure (not the MH code, just the -ltma library - which doesn't come with MH) - - -Sat Jan 26 09:38:08 1985 /mtr (agent: Marshall Rose) - - tws/dtime.c: #define dysize(), since could be a macro in ctime.c - (thanks, Fred) - - -Sat Jan 26 09:12:27 1985 /mtr (agent: Marshall Rose) - - MH #5.310[UCI] (uci-750a) released to MH-Workers - - -Sun Jan 27 17:41:03 1985 /mtr (agent: Marshall Rose) - - sendmts/smail.c, uip/post.c: with -DSMTP, keep one SMTP connection - open, instead of starting a new one for each transaction - othersupport/pop/{Makefile,{popd,popser,inc,popsbr}.c}: support - "rpop" under #ifdef RPOP - othersupport/pop/client.c: remove - conf/{config/mts.c,tailor/READ-ME,makefiles/sendmts}, mts/mts.h, - sendmts/{smail,client}.c: support new server search list - facility used by both -DSMTP and -DPOP - - -Sun Jan 27 18:42:49 1985 /mtr (agent: Marshall Rose) - - conf/makefiles/mts: dependency screw-up on mts.o - - -Tue Feb 12 19:33:14 1985 /mtr (agent: Marshall Rose) - - uip/mhlsbr.c: clear_screen() logic between messages botched - - -Mon Feb 18 12:53:50 1985 /mtr (agent: Marshall Rose) - - conf/doc/send.rf, uip/send.c: de-implement ~/.signature support - - -Wed Feb 20 20:40:14 1985 /mtr (agent: Marshall Rose) - - uip/inc.c: fix suggested by John Dilley at Purdue, inc now ignore - signals if it's going to zero the maildrop. - - -Wed Feb 20 20:48:12 1985 /mtr (agent: Marshall Rose) - - sbr/adios.c: save errno prior to doing fancy perror stuff - - -Fri Mar 1 19:48:53 1985 /mtr (agent: Marshall Rose) - - conf/config/config.c: if MORE is defined, used that instead of - /usr/ucb/more. The #ifdef ALTOS dependency is removed. - ALTOS users should use options MORE='"/usr/bin/more"', - just like users of the Dual. - conf/examples/READ-ME: document same - - -Fri Mar 1 19:56:43 1985 /mtr (agent: Marshall Rose) - - conf/config/mts.c: for the DUAL, you can't link to a file that you - can't read, unbelievable, eh?, so change the creat (foo, 0000) - to creat (foo, 0400). Also, fix up some botched args to a - sprintf() call. - - -Fri Mar 1 19:59:32 1985 /mtr (agent: Marshall Rose) - - uip/trmsbr.c: forgot to make a termcap buffer TXTSIZ'd instead - of BUFSIZ'd. - - -Sat Mar 1 20:21:17 1985 /mtr (agent: Marshall Rose) - - MH #5.321[UCI] (uci-750a) released to MH-Workers - - -Wed Mar 6 18:08:11 1985 /mtr (agent: Marshall Rose) - - uip/{dropsbr,packf,post,slocal}.c: fix to maildrop mapping bug - with MHMTS and local delivery in post, and SENDMTS and local - delivery in slocal - -Wed Mar 6 18:19:46 1985 /mtr (agent: Marshall Rose) - - TODO, config/addrsbr.h, sendmts/smail.c, mf/mf.{c,h}, - uip/{addrsbr,ap,post,rcvdist,sbboards}.c: handle 822-style - routing - - -Wed Mar 6 18:59:22 1985 /mtr (agent: Marshall Rose) - - -- Fixes from Robert Elz -- - sbr/makedir.c: use mkdir() under #ifdef BSD42 - uip/rmf.c: use rmdir() under #ifdef BSD42 - - -Sat Mar 9 15:36:13 1985 /mtr (agent: Marshall Rose) - - bboards/mmdf/mmdf.{1,2}/bboards/bb_wtmail.c, uip/sbboards.c: - fix minor bug requiring nearly major re-write!!! - - -Sat Mar 9 15:54:40 1985 /mtr (agent: Marshall Rose) - - uip/dropsbr.c: fix bug when fixing stomped maildrop. - - -Tue Mar 12 18:07:44 1985 /mtr (agent: Marshall Rose) - - othersupport/pop/pop.txt: a few minor corrections to typos. - - -Wed Mar 13 22:01:37 1985 /mtr (agent: Marshall Rose) - - -- Fixes suggested by Phyllis Kantar -- - uip/{comp,dist,forw,repl}.c: fix quit -delete logic - conf/doc/{comp,mh-chart}.rf: document "-file file" switch - uip/send.c: "send -help" should done (1) for comp, et. al. - uip/send.c: typo "tempoary" - conf/doc/{send,whom}.rf: Profile Components forgot Draft-Folder - uip/ali.c: always load system aliases - conf/doc/{MH,comp,dist,forw,mhook,repl,send,show,mh-alias,mh-mail, - mh-profile,mhl,post}.rf: typo fixes - conf/doc/send.rf, uip/send.c: -forward now the default, also - don't gripe about "show -draft file" - - -Wed Mar 13 22:24:07 1985 /mtr (agent: Marshall Rose) - - uip/send.c: fix "use xxx logic" - uip/msh.c: a NULL vs. "" typo - - -Thu Mar 14 22:41:37 1985 /mtr (agent: Marshall Rose) - - -- Fixes suggested by John Dilley -- - conf/{config/mts.c,tailor/READ-ME}: add new mtstailor variables - localname, systemname, and uucpchan - mts/mts.h, conf/{mh-gen.8,config/{mts.c,mtstailor},tailor/READ-ME}: - add new mtstailor variable lockstyle to control style of locking - sbr/m_getfld.c: catch the UNIX "from user" line - uip/scansbr.c: make use of the UNIX "from user" line - uip/addrsbr.c: more #ifdef DUMB support - uip/inc.c: minor bug in inc w.r.t. closing locked file - uip/post.c: more #ifdef DUMB support - uip/replsbr.c: support Return-Path: for defaulting host names - as a last resort - - -Fri Mar 15 11:45:00 1985 /mtr (agent: Marshall Rose) - - othersupport/emh/READ-ME: new file - - -Fri Mar 15 23:05:43 1985 /mtr (agent: Marshall Rose) - - bbsupport/bbexp.c: fix string botch for command to popen. - also allow extra arguments to indicate aging period. - - -Fri Mar 15 23:21:29 1985 /mtr (agent: Marshall Rose) - - sbr/printsw.c: compress output of printed switches - sbr/m_getdefs.c: let $MHCONTEXT override context variable - sbr/m_{getdefs,gmsg,sync}.c, conf/doc/mh-profile.rf: let the profile - entry "mh-sequences" override .mh_sequences - sbr/m_seq.c: optimization - - -Sat Mar 16 00:28:01 1985 /mtr (agent: Marshall Rose) - - uip/{inc,msh,rcvtty,scan,scansbr}.c: clean up handling of - inc -silent - sbr/{llib-lmh,m_send.c}, uip/{annosbr,comp,dist,forw,repl}.c: move - annotations into send - conf/makefiles/uip, uip/{send,post}.c: ditto - conf/doc/{dist,forw,repl}.rf: ditto - uip/anno.c: forgot to check (mp -> msgstats[msgnum] & SELECTED) - - -Sat Mar 16 01:38:06 1985 /mtr (agent: Marshall Rose) - - conf/config/mts.c: add a few calls to mts_init ("mts") at - strategic places - - -Sat Mar 16 12:23:37 1985 /mtr (agent: Marshall Rose) - - uip/{mark,msh}.c: don't set previous-sequence to make debugging - easier - - -Sat Mar 16 12:49:48 1985 /mtr (agent: Marshall Rose) - - Makefile: simply Makefile using sh, also make DESTDIR work - conf/makefiles/othersupport: simplify Makefile - - -Tue Mar 19 14:17:30 1985 /mtr (agent: Marshall Rose) - - othersupport/mtrenv/bin/{distf,mpick,packit}: updates - - -Tue Mar 19 17:31:14 1985 /mtr (agent: Marshall Rose) - - conf/doc/{ap,mh-chart}.rf, uip/ap.c: accept -help switch - - -Tue Mar 19 18:16:33 1985 /mtr (agent: Marshall Rose) - - conf/doc/msgchk.rf: new file - conf/{doc/{mh,mh-chart,MH}.rf,makefiles/doc}: update for msgchk - - -Thu Mar 21 08:45:11 1985 /mtr (agent: Marshall Rose) - - sendmts/smail.c: fix logic error in sm_end(); MMDF-I has this - problem, MMDF-II might! - - -Sat Mar 23 12:48:30 1985 /mtr (agent: Marshall Rose) - - -- Support the WhatNow shell -- - conf/makefiles/{sbr,uip}: updates for all of this - uip/{comp,dist,forw,repl}.c: remove What now? code, - add -whatnow program, -nowhatnow - sbr/m_whatnow.c: new module - conf/config/config.c,config/mh.h,sbr/m_getdefs.c: new variable - whatnowproc - sbr/llib-lmh: update - uip/whatnow.c: new program, the first WhatNow shell - conf/doc/{mh-chart,whom}.rf, uip/whom.c: upgrade to take draftfolder - arguments - sbr/putenv.c: update for above - sbr/m_send.c: undo previous edits, m_whatnow() takes care of it - uip/distsbr.c: new module for dist-style support - uip/{send,whom}.c: call distout() in distsbr.c - conf/doc/whatnow.rf: new file - conf/doc/{MH,comp,dist,forw,mh,mh-{chart,profile},repl}.rf: updates - conf/doc/template: fix - - -Sun Mar 24 18:32:47 1985 /mtr (agent: Marshall Rose) - - sbr/m_draft.c, - uip/{comp,dist,forw,refile,repl,send,show,whatnow,whom}.c: have - -nodraftfolder override "Draft-Folder:" profile entry - - -Mon Mar 25 18:06:48 1985 /mtr (agent: Marshall Rose) - - mf/mf.c: avoid (incorrectly) recognizing " at " for "@" by using a - heuristic suggested by JSol. - - -Tue Mar 26 18:02:52 1985 /mtr (agent: Marshall Rose) - - conf/doc/repl.rf: document bug in replcomps - - -Tue Mar 26 18:32:49 1985 /mtr (agent: Marshall Rose) - - conf/{config/mts.c,tailor/READ-ME}, config/aliasbr.h, mts/mts.h, - uip/aliasbr.c: make "*" logic mts-tailorable (ugh), you get - to choose highest non-user uid and non-user shell - - -Wed Apr 3 23:52:13 1985 /mtr (agent: Marshall Rose) - - sendmts/smail.c: comment out an extra RSET for UCI's losing - MMDF-I SMTP server - - -Wed Apr 3 23:53:12 1985 /mtr (agent: Marshall Rose) - - ohtersupport/mtrenv/bin/whatnow: new file - - -Sat Apr 6 16:17:23 1985 /mtr (agent: Marshall Rose) - - MH #5.348[UCI] (uci-750a) released to MH-Workers - - -Fri Apr 19 18:27:16 1985 /mtr (agent: Marshall Rose) - - conf/{config/mts.c,tailor/READ-ME}, mts/mts.h, uip/inc.c: - support the new MTS variable "pophost" - - -Fri Apr 19 18:28:44 1985 /mtr (agent: Marshall Rose) - - bboards/bboards.h, uip/bbc.c: support BB_INVIS for "hidden" - BBoards in -topic - uip/bbc.c: catch a long name that got past us - uip/bbc.c: fix -topics logic when BBoards given - - -Fri Apr 19 18:32:13 1985 /mtr (agent: Marshall Rose) - - conf/doc/MH.rf, sbr/m_send.c: de-implement "push" in whatnow - having send look for profile-entry of "push" rather than "send" - to confusing to the user "community" - - -Fri Apr 19 19:13:44 1985 /mtr (agent: Marshall Rose) - - uip/post.c: more #ifdef DUMB madness, for local addresses, - if no host portion given, then don't give it to sm_wadr() - uip/post.c: back #ifdef DUMB off a bit in From: for MMDFMTS - - -Fri Apr 19 19:23:39 1985 /mtr (agent: Marshall Rose) - - uip/whatnow.c: if edit fails, it's time to go away - sbr/m_edit.c: minor cosmetic change - - -Fri Apr 19 19:44:25 1985 /mtr (agent: Marshall Rose) - - uip/send.c: on annotations, if push'd avoid getting upset - if message to annotate isn't there - uip/send.c: fix "typo" for r1bindex () - uip/send.c: put ~/.signature support back in under #ifdef UCI - uip/send.c: use mktemp() instead of bogus makename! - uip/send.c: fix screwy interaction between msh, dist, whatnow, - and send (oh no!) - - -Sat Apr 20 14:46:10 1985 /mtr (agent: Marshall Rose) - - sbr/m_send.c, uip/whatnow.c: on "push", let send do push() instead - of whatnow - - -Wed Apr 24 22:44:30 1985 /mtr (agent: Marshall Rose) - - sbr/m_whatnow.c, uip/{dist,forw,repl}.c: fix obscure "@" bug. - - -Wed Apr 24 22:45:39 1985 /mtr (agent: Marshall Rose) - - conf/doc/MH.rf: just a few more fixes... - - -Thu May 2 21:13:03 1985 /mtr (agent: Marshall Rose) - - uip/sbboards.c: fdopen() called with wrong arg! - - -Thu May 2 21:13:32 1985 /mtr (agent: Marshall Rose) - - uip/post.c: a few more back-offs with #ifdef DUMB... - - -Thu May 2 21:13:32 1985 /mtr (agent: Marshall Rose) - - conf/makefiles/uip: make whatnow chmod +t'd - - -Thu May 2 21:14:56 1985 /mtr (agent: Marshall Rose) - - MH #5.360[UCI] (uci-750a) released to MH-Workers diff --git a/docs/historical/mh5/Makefile b/docs/historical/mh5/Makefile deleted file mode 100644 index 5eb4134f..00000000 --- a/docs/historical/mh5/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -####################################################################### -# Instructions to Make, for generation of nice-looking papers using TeX -####################################################################### - -.SUFFIXES: .pic .web .tex .dvi - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex \ - \\nonstopmode\\input $<\\bye; \ - then exit 0; else rm $@; exit 1; fi' - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# mh5 -############################################################# - -i-all: mh5.dvi - -i-print: mh5.dvi true - dvisp -J mh5 mh5.dvi - -i-count: true - detex text.tex | wc -cw - - -# customization files, et. al., not included below -mh5.dvi: version.tex - -version.tex: mh5.tex text.tex diagram1.tex diagram2.tex refs.tex version.sh - @: version.sh - -true:; - - - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f mh5.dvi mh5.imp - -clean:; rm -f CONTENTS.tex FIGURES.tex \ - mh5.lof mh5.log mh5.lot mh5.toc _* diff --git a/docs/historical/mh5/diagram1.tex b/docs/historical/mh5/diagram1.tex deleted file mode 100644 index c0a620a0..00000000 --- a/docs/historical/mh5/diagram1.tex +++ /dev/null @@ -1,12 +0,0 @@ -% diagram 1 - -\verbatim -From: @(digest)-Request -To: @(digest) Distribution: dist-@(digest); -Subject: @(digest) Digest V@(volume) #@(issue) -Reply-To: @(digest) --------- -@(digest) Digest @(date) Volume @(volume) : Issue @(issue) - -Today's Topics: -?endverbatim diff --git a/docs/historical/mh5/diagram2.tex b/docs/historical/mh5/diagram2.tex deleted file mode 100644 index 1d3467e6..00000000 --- a/docs/historical/mh5/diagram2.tex +++ /dev/null @@ -1,10 +0,0 @@ -% diagram 2 - -\verbatim -width=80,length=0,overflowtext=,overflowoffset=0 -Date:leftadjust,compress,compwidth=9 -From:leftadjust,compress,compwidth=9 -Subject:leftadjust,compress,compwidth=9 -: -body:nocomponent,overflowtext=,overflowoffset=0 -?endverbatim diff --git a/docs/historical/mh5/mh5.tex b/docs/historical/mh5/mh5.tex deleted file mode 100644 index 49b63df8..00000000 --- a/docs/historical/mh5/mh5.tex +++ /dev/null @@ -1,41 +0,0 @@ -% run this through PhD-TeX - -\input dcustom -\articlestyle -\drafttrue -\input version - -\input sfwmac - -\header - Changes to\\ - The Rand MH Message Handling System:\\\\ - MH.5\title - Marshall T.~Rose$^\dagger$\author - \versiondate/\info -\footnote{}{\hskip -\parskip $^\dagger$ Computer Mail: {\tx MRose@ICS.UCI.EDU}.} - -\centerline{\sc Abstract} -{\rightskip=0pt\narrower\narrower -\noindent -This document describes the user-visible change to the -UCI version of the Rand \MH/ system that were made from \mh4 to \mh5. -This document does not describe bug-fixes, per se, -or internal changes, -unless these activies resulted in a visisble change for the \MH/ user. - -This document is meant to supplement, -not supersede, the standard \MH/ user manual\cite{MH}. - -Comments concerning this documentation should be addressed to the Internet -mailbox {\sf Bug-MH@ICS.UCI.EDU}. -\par} - -\input text -\input refs -\printcontents -\unskip\footnote{}{\hskip -\parskip This document (version \versiontag/) -was \TeX set \today\ with DISS.STY v\version.} -\showsummary - -\bye diff --git a/docs/historical/mh5/refs.tex b/docs/historical/mh5/refs.tex deleted file mode 100644 index ea546ede..00000000 --- a/docs/historical/mh5/refs.tex +++ /dev/null @@ -1,35 +0,0 @@ -\let\journalinfo=\jourinfo -\let\thesis=\book % experimental -\let\thesisinfo=\bookinfo % .. - -\references - -\ref{MH} -\by M.T.~Rose, J.L.~Romine. -\paper The Rand \MH/ Message Handling System: User's Manual -\paperinfo UCI Version -\other -\publ Department of Information and Computer Science -\publaddr University of California, Irvine -\month July\year 1984 -\endref - -\ref{MH.BB} -\by M.T.~Rose. -\paper The Rand MH Message Handling System: The UCI BBoards Facility -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\ref{MH.TUT} -\by M.T.~Rose. -\paper The Rand MH Message Handling System: Tutorial -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\endreferences diff --git a/docs/historical/mh5/text.tex b/docs/historical/mh5/text.tex deleted file mode 100644 index 79c4156e..00000000 --- a/docs/historical/mh5/text.tex +++ /dev/null @@ -1,318 +0,0 @@ -% begin text -\banner -\section{Acknowledgements} -The \MH/ system described herein is based on the original Rand \MH/ system. -It has been extensively developed (perhaps too much so) by Marshall Rose and -John Romine at the University of California, Irvine. -Einar Stefferud, Jerry Sweet, and Terry Domae provided numerous suggestions -to improve the UCI version of \MH/. - -\section{Disclaimer} -The Regents of the University of California wish to make it known that: -\bigquote -Although each program has been tested by its contributor, -no warranty, express or implied, -is made by the contributor or the University of California, -as to the accuracy and functioning of the program -and related program material, -nor shall the fact of distribution constitute any such warranty, -and no responsibility is assumed by the contributor -or the University of California in connection herewith. -\endbigquote - -\section{Conventions} -In this document, -certain \TeX -formatting conventions are adhered to: -\smallskip -{\advance\leftskip by\parindent -\item{1.} The names of \unix/ commands, such as \pgm{comp}, -are presented in {\it text italics}. -\item{2.} Arguments to programs, such as \arg{msgs}, -are presented in {\tt typewriter style} and delimited by single-quotes. -\item{3.} \unix/ pathnames and envariables, -such as \file{/usr/uci/} and \file{\$SIGNATURE}, -are presented in {\sl slanted roman}. -\item{4.} Text presenting an example, such as -\example comp\ -editor\ zz\endexample -is presented in {\tt typewriter style}. -\smallskip} - -\bop\section{General Changes} -The author is pleased to announce that there are actually very few -user-visible changes to \mh5 from the \mh4 distribution. -The majority of \mh5 development was in the form of bug fixes and slight -generalizations. -In addition, \mh5 is somewhat faster than \mh4: -all programs have been speeded-up slightly, -a few, such as \pgm{msh}, have been speeded-up signficantly. - -\subsection{Library Paths} -When a filter or form file argument is given to an \MH/ program, -and the name specified is not absolute (doesn't start with a \file{/\/}), -then the \MH/ program will first check in the user's \MH/ directory. -If the file is not present, -then program will consult the standard \MH/ library for the file. -This convention allows the PostMaster to make available system-wide -templates and skeletons. - -\subsection{MH Directory} -If the \MH/ directory of a user doesn't exist, -then \MH/ will query the user if it should be created. -This is primarily useful when copying a \profile/ from one host to another, -or when the site administrator creates a \profile/ for a user when creating -the associated login. - -\subsection{Documentation} -Two new documents have been prepared for the \mh5 distribution: -{\sl The Rand MH Message Handling System: Tutorial}, -which is cited as \cite{MH.TUT}; -and, -{\sl The Rand MH Message Handling System: The UCI BBoards Facility}, -which is cited as \cite{MH.BB}. -The former is a useful tutorial for novice users of \MH/. -The latter describes BBoard handling and \MH/. - -\section{Draft Handling} -This section discusses how the handling of drafts has been changed in \mh5. - -The most important change is that the {\it draft-folder} notation -and the {\it push} option at \whatnow/ level have been explicitly made -visible in the \MH/ system. -There's a new profile entry called \eg{Draft-Folder} which defines the -default draft-folder for the \MH/ user. -By using this entry, such as \example Draft-Folder:\ +drafts\endexample -the \MH/ user needn't add \switch{draftfolder\ drafts} to the entries -for \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} in the user's -\profile/ file. - -\subsection{What Happens if the Draft Exists} -A new option has been added to \pgm{comp}, \pgm{dist}, \pgm{forw}, and -\pgm{repl} when the draft already exists: \eg{refile\ +folder}. -This allows you to \pgm{refile} the draft into another folder and then get a -fresh draft. - -\subsection{Editing Environment} -In previous versions of \MH/, -when \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} allowed the user to -edit the draft, -the \MH/ user's current working directory was somewhere inside of the user's -\MH/ directory. -This often lead to confusing results. -In \mh5, -when the user edits a draft, -the current working directory is unchanged. -Furthermore, two envariables are defined during the editing session for -\pgm{dist} and \pgm{forw}: -\file{\$editalt}, -which is the name of the message (\unix/ file) being distributed or replied-to; -and, -\file{\$mhfolder}, -which is the name of the folder (\unix/ directory) containing the message -being distributed or replied-to. - -\subsection{Rapid Composition} -The \pgm{prompter} command has two new switches \switch{rapid} and -\switch{norapid}. -If the \switch{rapid} option is given then \pgm{repl} won't display an -existing body of the draft being edited. -This is useful for using \pgm{forw} with a slow terminal. - -\subsection{Ultra Rapid Composition} -The \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} commands have a new -option, \switch{noedit}. -If \switch{noedit} is given, -then the initial edit is supressed. -This is useful for various canned applications -(and perhaps more graceful than \switch{-editor /bin/true\/}). - -\subsection{Digest Generation} -The \pgm{forw} command has the beginnings of a digest-composition facility, -with the \switch{digest\ list}, \switch{issue\ number}, -and \switch{volume\ number} switches. - -If \pgm{forw} is given the argument \eg{list} to the \switch{digest} switch, -and the \switch{issue\ number} switch is not given, -then \pgm{forw} looks for a profile entry called -\eg{digest-issue-list:} and increments its value to use as the issue -number. -Similarly, -if the \switch{volume\ number} switch is not given, -then \pgm{forw} looks for \eg{digest-volume-list:} -(but does not increment its value) to use as the volume number. - -Having calculated the name of the digest and the volume and issue numbers, -\pgm{forw} will look for a profile entry called \eg{sedproc:} -(which defaults to \pgm{/bin/sed\/})and filter the components file -(as specified with the \switch{form\ formfile} switch) -with the following definitions: -\eg{@(digest)}, \eg{@(issue)}, \eg{@(volume)}, and \eg{@(date)}. - -\tagdiagram{1}{Sample skeleton for digest composition}{digestcomps} -A good components file to use, (which might be called \file{digestcomps\/}) is -shown in Figure~\digestcomps. - -\pgm{Forw} will now compose the draft, -using the standard digest encapsulation algorithm -(even putting a \eg{End of list Digest} trailer in the draft). -Once the draft is composed by \pgm{forw}, -it writes out the volume and issue profile entries for the digest, -and then invokes the editor. - -\tagdiagram{2}{Sample template for digest messages}{mhldigest} -Naturally, when composing the draft, -the \pgm{forw} program will honor the\hbreak -\switch{filter\ filterfile} switch, -which is given to \pgm{mhl} to filter each message being forwarded prior to -encapsulation in the draft. -A good filter file to use, (which might be called \file{mhl.digest\/}) -is shown in Figure~\mhldigest. - -\subsection{Replies} -The \pgm{repl} command has two new switches \switch{query} and -\switch{noquery}. -If the \switch{query} option is given then for each address that would go in -the \eg{cc:} field of the reply, -\pgm{repl} asks the user if the address should be included. -This is sometimes useful for replying to mail sent to a large number of people. -(Obviously, one could simply edit the draft produced by \pgm{repl}, -but the \switch{query} option is useful if \pgm{prompter} is the editor used -by \pgm{repl} and one doesn't want to invoke a second editor.) - -Previous versions of \pgm{repl} would terminate if a \eg{From:} or -\eg{Sender:} field was not found or could not be parsed. -The \pgm{repl} program in \mh5 will continue to compose the reply draft, -after advising you of this anomaly. - -\subsection{Blind Carbon Copies} -After much experimentation, \MH/ has finally stabilized on the format of -blind-carbon-copies. -As in \mh4, when \pgm{post} generates a draft for blind recipients, -a new draft is composed with a minimal set of headers. -In \mh5 however, the \eg{BCC-Disclaimer:} field is no longer used. -Instead, the draft for the blind recipients contains the original message as a -forwarded message. -This more clearly identifies a blind-carbon-copy to the blind recipient. - -\subsection{File Carbon Copies} -A message draft can now have more than one folder listed in a \eg{Fcc:} field. -Each folder should be separated by a comma, just like the addresses in a -\eg{cc:} field. -In addition, the folders listed in a \eg{Fcc:} field may use the -relative-folder addressing notation -(though this latter activity is not recommended). - -\subsection{Refiling the Draft} -At \whatnow/ level, there is a new option, \eg{refile}. -This options takes any arguments acceptable to the \pgm{refile} program, -and \pgm{refile\/}'s the message draft into the named folder(s). - -\subsection{Annotations} -If the \switch{annotate} switch is given to \pgm{dist}, \pgm{forw}, or -\pgm{repl}, and the message is (re)moved by the user prior to the successful -posting of the draft, the \MH/ program will not complain as before. -Hence, users of the \eg{push} option at \whatnow/ level need not worry about -asynchronous error messages. - -\section{Other Changes} -This last section describes the other more program-specific changes made to -\MH/. - -\subsection{Bursting} -The bursting mechanism in \MH/ has been made sufficiently general to allow -\pgm{burst} to work on forwarded messages and blind-carbon-copies in addition -to digests. -Although \pgm{burst} can not always successfully decapsulate messages -encapsulated by sites not running \MH/, -it handles forwarded messages and blind-carbon-copies, -as constructed by \pgm{forw} and \pgm{send}, easily. - -In addition, the \pgm{send} program has two new switches, -\switch{forward}, and \switch{noforward}. -If the \switch{forward} option is given, -then if a \pgm{send} which has been \pgm{push\/}'d in the background fails, -in addition to containing the reasons for the failure, -the failure notice contains the draft as a forwarded message. -This means one can simply \pgm{burst} the failure notice to get the draft -back, -instead of hunting around for it. - -\subsection{Incorporation of Mail} -There's a new profile entry called \eg{MailDrop} which can be used to define -the default maildrop that \pgm{inc} should use. -In addition, if the envariable \file{\$MAILDROP} is defined, -then \pgm{inc} will use its value as the default maildrop. - -The \pgm{inc} program also has a new option: -\switch{truncate} and \switch{notruncate}, -which indicates if the maildrop should be truncated. -By default, \switch{truncate} is used defualt maildrop is used, -otherwise \switch{notruncate} is used. - -\subsection{Clearing the Display} -The \switch{ff} and \switch{noff} switches have been removed from the -\pgm{scan} and \pgm{mhl} programs. -Instead, the \pgm{scan} has been given two switches, -\switch{clear} and \switch{noclear} -(\pgm{mhl} already has these switches). -The action of the \switch{clear} option is simple: -if the standard output to the \MH/ program is a terminal, -then the program will output the correct ``escape sequence'' to clear the -terminal's screen; -if the standard output is not a terminal, -then the program will output a formfeed. - -In addition, -both \pgm{scan} and \pgm{mhl} consult the \file{\$TERM} envariable to -determine such things as the length and width of your terminal. -The \pgm{scan} program uses this to determine how long each line of the scan -listing should be. -The \pgm{mhl} program uses this to determine the default length and width -of your terminal (instead of the $40$ by $80\/$), -prior to reading the template or consulting command line options. - -\subsection{Folder Handling} -If the \pgm{folder} command is given the name of a folder that does not exist, -\pgm{folder} will query the user if the folder should be created. -This is useful for creating a folder that the \MH/ user intends to access -later. - -In previous releases of \MH/, -the \pgm{rmf} program would consider a folder writable if it was writable by -the user. -Since \pgm{rmf} ultimately removes the folder itself, -\pgm{rmf} considers a folder writable if the folder and its parent are -writable by the user. -If not, the folder is treated as a read-only folder by \pgm{rmf}. - -\subsection{MailDrops} -The name of the \pgm{pack} program has been changed to \pgm{packf}. -The author didn't want to do this. -Some people don't know when to leave well enough alone. - -\subsection{Refiling} -The \pgm{refile} program now has a \switch{draft} switch saying to file the -current draft. - -\subsection{RcvMail Support} -In addition to the standard \pgm{rcvpack} and \pgm{rcvtty} receive mail hooks, -and the \pgm{rcvtrip} shell script, -there's a new rcvmail hook called \pgm{rcvdist}. -The \pgm{rcvdist} hook allows a user of \MH/ to have his/her mail forwarded -without the intervention of the PostMaster. -(By the way, the \pgm{rcvpack} hook used to be called \pgm{rcvcron\/}.) - -\subsection{Reading BBoards} -The \pgm{msh} program (which used to be called \pgm{bbr\/}) -implements an \MH/ shell. -In addition to the commands that the old \pgm{bbr} program had, -\pgm{msh} also has the -\pgm{inc}, \pgm{mhmail}, \pgm{pack}, \pgm{rmm} and \pgm{sortm} commands. - -In addition, \pgm{msh} uses a ``maildrop mapping'' mechanism to -significantly speed-up its start-up time compared to the old \pgm{bbr}. -The \pgm{pack} program supports this mechanism as well, -so \pgm{msh} starts quickly on ordinary \pgm{pack\/}'d files as well. - -Finally, \pgm{mhl} is now built-in to \pgm{msh}, -so with a \eg{showproc} of \pgm{mhl}, -the \pgm{msh} user gets speedy response in listing messages. diff --git a/docs/historical/mh5/version b/docs/historical/mh5/version deleted file mode 100644 index aabe6ec3..00000000 --- a/docs/historical/mh5/version +++ /dev/null @@ -1 +0,0 @@ -21 diff --git a/docs/historical/mh5/version.sh b/docs/historical/mh5/version.sh deleted file mode 100644 index 9ec1e792..00000000 --- a/docs/historical/mh5/version.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [ ! -r version ]; then echo 0 > version; fi -touch version -echo '\catcode`\#=12' > version.tex -awk ' { version = $1 + 1; }\ -END { printf "\\def\\versiontag/{#1.%d}%%\n", version >> "version.tex"; \ - printf "%d\n", version > "version"; }' < version -echo '\def\versiondate/{'`date`'}%' >> version.tex -echo '\catcode`\#=6' >> version.tex -echo '\tell{Version \versiontag/ of \versiondate/}' >> version.tex diff --git a/docs/historical/mh5/version.tex b/docs/historical/mh5/version.tex deleted file mode 100644 index dfd31947..00000000 --- a/docs/historical/mh5/version.tex +++ /dev/null @@ -1,5 +0,0 @@ -\catcode`\#=12 -\def\versiontag/{#1.21}% -\def\versiondate/{Wed Nov 14 08:55:30 EST 1984}% -\catcode`\#=6 -\tell{Version \versiontag/ of \versiondate/} diff --git a/docs/historical/mh6.5/MHCHANGES b/docs/historical/mh6.5/MHCHANGES deleted file mode 100644 index f9e48122..00000000 --- a/docs/historical/mh6.5/MHCHANGES +++ /dev/null @@ -1,1052 +0,0 @@ - MHCHANGES from MH 6.1 to MH 6.3 - - -Tue Nov 12 11:24:46 1985 /mtr - - MH 6.1 is official. - - -Fri Nov 15 19:14:44 1985 /mtr - - uip/{rcvtty,slocal}.c: touch-ups - - -Sun Nov 17 16:28:23 1985 /mtr - - conf/doc/{ap,mhl,repl,scan}.rf: note that #ifdef BERK kills - address parsing - conf/makefiles/{doc,uip,support/*,zotnet/*}: make tar command visible - sbr/m_convert.c: oops, new message numbering resulted in bad - diagnostic - papers/*/Makefile: fix LaTeX rule for v2.08 - - -Tue Nov 19 23:06:16 1985 /mtr - - uip/send.c: de-referencing NULL due to bad precedence, tsk - - -Wed Nov 20 10:58:40 1985 /mtr - - MH 6.1 covert update for sbr/m_convert.c, uip/send.c - - -Sun Nov 24 18:58:41 1985 /mtr - - uip/slocal.c: some tuning, also fix a bug in usr_pipe() - uip/dropsbr.c: have mbx_copy support noisy - uip/{packf,post,rcvpack,sbboards,slocal}.c: use this change - - -Tue Nov 26 00:22:17 1985 /mtr - - uip/refile.c: oops, forgot copy-back on optimzied m_remsg - - -Sat Nov 30 22:36:49 1985 /mtr - - zotnet/tws/dtime.c: add #ifdef INETONLY - uip/post.c: for #ifdef BERK don't say {Local,UUCP,Network} - Recipients - conf/doc/sortm.rf: note problem with errors - uip/bbc.c: for getbbvis() insist on readability - support/bboards/bbexp.c: oops, calling pick wrong - conf/doc/pick.rf: document -datefield anomaly - conf/makefiles/support/bboards: oops, left context owned by root - h/mh.h: ruserpass -> _ruserpass for SUN. why? - - -Sun Dec 1 07:58:50 1985 /mtr - - uip/vmh.c: remove double-scroll - uip/annosbr.c: oops, closing fd: without unlocking! - sbr/makedir.c: plug an obscure security hole in inc - uip/mhlsbr.c: read_termcap being called prematurely - zotnet/tws/dtime.c: load tw_sday appropriately - zotnet/tws/*.c: try using numeric timezone for official renditions, - under #ifdef MTR for now - - -Sun Dec 1 16:11:03 1985 /mtr - - uip/inc.c: more idiotic de-referncing of NULL, found on SUNs - uip/replsbr.c: ditto - uip/show.c: recognize more of mhl's switches - - -Wed Dec 4 23:38:06 1985 /mtr - - zotnet/mts/mts.h: oops for MMDFONLY - conf/{mh-gen.8,makefiles/zotnet/mts}: talk about -Dlocname - - -Thu Dec 5 19:55:11 1985 /mtr - - uip/scansbr.c: fix machine dependency pointed out by Chuck Collins - dist/READ-ME: new file talking about make bug - COVER-LETTER, conf/{mh-gen.8,doc/MH.rf}: change UCI -> UCI.EDU - - -Fri Dec 6 11:08:20 1985 /mtr - - support/bboards/mmdfII/gen: wrong filename - - -Sun Dec 8 18:39:01 1985 /mtr - - uip/send.c: always remove dist file - uip/vmh.c: work on erase-word handling, a bit - uip/folder.c: -fast -vs- -pack fixup - uip/mhlsbr.c: %text defined for date fields - - -Tue Dec 10 18:39:37 1985 /mtr - - zotnet/mts/client.c: moved from mts/sendmail/client.c - conf/makefiles/{mts/sendmail,zotnet/mts}: changed - mts/support/llib-lsendmail, zotnet/mts/llib-lmts: changed - mts/sendmail/client.c: 4.2BSD specific only! - conf/config/mts.c, zotnet/mts/mts.h: update - conf/mhconfig.c: update - conf/Makefile: simplify - - -Tue Dec 10 21:11:45 1985 /mtr - - conf/mh-gen.8: clear up some sys5 stuff - zotnet/mf/umhook.c: sys5-ize - uip/addrsbr.c: alternate-mailboxes: defaulted wrong under #ifdef - BERK, it's now "*" - conf/doc/mh-profile.rf: fix documentation to reflect reality - - -Tue Dec 10 22:38:23 1985 /mtr - - uip/addrsbr.c: normalize a bit (finally) - uip/addrsbr.c: new routine adrsprintf() to remove #ifdef BANG - dependencies - uip/{post,rcvdist,replsbr,sbboards}.c: use adrsprintf() - uip/post.c: remove #ifdef MF dependency for stand-alone MH, - remove #ifdef DUMB dependency by making addrsbr.c smarter - about being dumber - mts/mmdf/hosts.c: remove #ifdef DUMB dependency (right now, - addrsbr:getm() is the only one that calls it and it doesn't - call it under #ifdef DUMB... - - -Tue Dec 10 23:28:20 1985 /mtr - - uip/sbboards.c: oops, typo found by lint - - -Wed Dec 11 19:08:20 1985 /mtr - - miscellany/libndir: -lndir for non-BSD sites, graciously supplied - by Kirk McKusick - - -Tue Dec 17 08:36:59 1985 /mtr - - uip/send.c: different alert announcement based on -forward - - -Tue Dec 17 08:53:52 1985 /mtr - - conf/makefiles/sbr, sbr/cndfree.c: clean-up a bit - - -Tue Dec 17 18:26:34 1985 /mtr - - sbr/m_getfld.c, uip/{format,mhl,pick}sbr.c: clean-up indirection - code for less tolerant compilers - uip/bbc.c: add -[no]rcfile switch - uip/msh.c: clean up a diagnostic - - -Tue Dec 17 21:42:44 1985 /mtr - - conf/makefiles/sbr, h/mh.h, sbr/llib-lmh: cndfree() removed - sbr/{add,m_{delete,replace}}.c, uip/{mhl,vmh}sbr.c: replace cndfree - sbr/m_foil.c, uip/install-mh.c: compensate - - -Wed Dec 18 13:37:09 1985 /mtr - - uip/bbc.c: make second, optimized pass to catch private bboards - that the user knows about - uip/popsbr.c: ditto - uip/popser.c: slight tune-up - - -Wed Dec 18 20:27:38 1985 /mtr - - uip/slocal.c: minor touch up - uip/umhook.c: moved from zotnet/mf - - -Wed Dec 18 22:51:58 1985 /mtr - - uip/bbc.c: optimize on calling mshproc, check size of maildrop - first; if empty, don't invoke it! - - -Thu Dec 19 08:16:54 1985 /mtr - - uip/refile.c: better diagnostic from Fred Blonder - - -Thu Dec 19 22:34:23 1985 /mtr - - zotnet/mts/client.c: #ifdef BIND code when no gethostent() - conf/{mh-gen.8,doc/mh-tailor.rf}: document it - - -Thu Dec 19 23:58:44 1985 /mtr - - Release MH 6.2 to selected sites, including Berkeley for 4.3BSD testing - - -Sun Dec 29 19:58:43 1985 /mtr - - zotnet/mts/client.c: fix #ifdef BIND stuff a bit - h/mshsbr.h, uip/{mhlsbr,msh,mshcmds}.c: try to fix lost peer - problems... - conf/doc/vmh.rf: update - zotnet/drop/lock.c: not returning right errno - uip/dropsbr.c: ditto, plus not trying enough - conf/makefiles/doc: "make tar" forgetting tmac.h - uip/addrsbr.c: strcpy de-referencing NULL - uip/refile.c: got rid of a spurious \n (!!) - conf/examples/{udel,nrtc-mtr}: new files - h/mh.h, sbr/m_{convert,gmsg}.c, uip/{msh,rcvstore,refile}.c: fix - LOWSEL logic - uip/vmh.c: fix slight bug in sideground handling (misspelled - #ifdef, oops!) - conf/{mh-gen.8,config/mts.c},mts/*/hosts.c: remove the NETWORK option - - -Mon Dec 30 20:03:25 1985 /mtr - - conf/Makefile: options mangled(!?!) - uip/msh.c: if update of mailbox fails, it gets zero'd(!!) - (oops, not checking error condition) - support/pop/popser.c: if update of mailbox fails, clean-up - correctly (no zero problem here!) - uip/inc.c: on truncate of maildrop, remove mailbox map (XXX) - conf/makefiles/uip, uip/{send,whatnowsbr}.c: move send into - the WhatNow shell - uip/sendsbr.c: new file - conf/doc/whatnow.rf: update - - -Tue Dec 31 10:13:44 1985 /mtr - - conf/doc/vmh.rf: back-down last update - conf/mh-gen.8: forgot an \& - conf/examples/nrtc-{gw,mtr}, h/rcvmail.h: tsk, NRTC running an old - MMDF-II - - -Tue Dec 31 13:53:14 1985 /mtr - - conf/doc/whatnow.rf, uip/whatnowsbr.c: remove "headers" option - conf/doc/ADMIN.rf: clear-up post -debug documentation - conf/doc/{mh-chart,send,post}.rf, uip/{post,send,whatnowsbr}.c: remove - -[no]remove switches - uip/{repl,post}.c: some touch-ups - - -Tue Dec 31 19:16:23 1985 /mtr - - zotnet/tws/{dtime,dtimep}.c: dst fix-ups - conf/doc/send.rf: append, not prepend - uip/rmail.c: slight touch-up - uip/ap.c: oops, not printing all info - zotnet/mf/mf.c: botching trailing comment handling! - uip/scansbr.c: have cpy() omit trailing >>blank<< - sbr/m_gmsg.c: not zero'ing msgstats[] under non-MTR code - - -Tue Dec 31 22:23:43 1985 /mtr - - conf/doc/mhook.rf: minor typos - miscellany/rcvtrip/*: update - - -Tue Dec 31 23:21:21 1985 /mtr - - uip/mhlsbr.c: a bit more pipe trickyness (this gets old real fast) - conf/doc/ADMIN.rf: talk about popd and /etc/rc.local - papers/{myths,mznet}/Makefile: update - uip/bbc.c: augment XTND2 botch diagnostic - uip/msh.c: if popd says BBoard-ID: for a message is 0, read it - ourselves - - -Fri Jan 3 13:11:03 1986 /mtr - - uip/bbc.c: SIGTSTP race condition, #undef for now - - -Sun Jan 5 20:06:03 1986 /mtr (agent: Marshall Rose) - - -- Interface TTI TMA to MH #6.2 -- - [ N.B.: The TTI TMA is NOT in the public domain; the MH support for - the TTI TMA IS in the public domain! ] - conf/{mh-gen.8,mhconfig.c,doc/ADMIN.rf}: support "tma on" - conf/makefiles/{doc,uip}: ditto - Makefile: for the moment - - -Mon Jan 6 15:25:20 1986 /mtr - - uip/{msh,mshcmds}.c: work on refile - uip/{vmh,msh}.c: support FAST quit (no final refresh on - updated mailbox) - - -Tue Jan 7 15:06:05 1986 /mtr - - uip/bbc.c: got the SIGTSTP problem, now wait on child to stop prior - to stopping ourselves... - - -Wed Jan 8 23:16:10 1986 /mtr - - uip/trmsbr.c: better defaults for "li" and "co" - - -Thu Jan 9 15:29:09 1986 /mtr - - -- Fixes Suggested by Craig Partridge -- - support/bboards/mmdfII/bboards/mmdfonly.h: if V4_2BSD on, set BSD42 - conf/doc/{mhl,show}.rf: talk more about moreproc - uip/mhlsbr.c: have INTR work as advertised - uip/{send,whatnowsbr}.c: link on dist botched, oops! - - -Thu Jan 9 16:31:28 1986 /mtr - - uip/mshcmds.c: don't rmm() messages which don't get refiled - uip/vmh.c: truncate stuff on Scan window (finally) - uip/scansbr.c: work on diagnostics a bit - - -Thu Jan 9 22:37:29 1986 /mtr - - MH 6.2 is official, awaiting enhancements Berkeley! - - -Fri Jan 10 10:17:57 1986 /mtr - - uip/sbboards.c: botch multiple bboard handling (forgot to rewind - input, thanks to Larry Henry) - support/bboards/mmdfII/bboards/bb_wtmail.c: not handling errors - right - sbr/cpydgst.c: stay symmetric with change to bb_wtmail.c, the code - worked fine, adding matching braces for clarity (!!) - - -Sun Jan 12 14:01:25 1986 /mtr - - miscellany/mh-e: new version from James Larus - - -Sun Jan 12 22:58:34 1986 /mtr - - uip/bbc.c: getbbvis a bit too agressive, use popd algorithm - - -Wed Jan 15 04:43:33 1986 /mtr - - miscellany/netnews/: more stuff - - -Wed Jan 15 18:44:32 1986 /mtr - - uip/addrsbr.c: ismymbox() losing under #ifdef DUMB, oops! - - -Wed Jan 15 19:03:54 1986 /mtr - - COVER-LETTER: update - - -Wed Jan 15 23:15:54 1986 /mtr - - support/pop/popsbr.c: pophack on PASS command - - -Fri Jan 17 13:19:23 1986 /mtr - - uip/ali.c: add -noalias for RaJ - - -Wed Jan 22 11:13:08 1986 /mtr - - support/pop/popwrd.c: squash bug - h/mh.h: remove sigmask definition - uip/{bbc,vmh}.c: add sigmask if not defined in - (4.3BSD finally wised up!) - - -Sun Jan 26 16:57:18 1986 /mtr - - {conf/makefiles/uip,uip/post.c}: lint touch-up - conf/doc/{inc,mh-chart,send,post}.rf: add the #ifdef TMA stuff - sbr/m_remsg.c: tuning - uip/mark.c: re-arrange debug output slightly - h/mh.h: add some padding to fix some m_remsg bugs - uip/{inc,rcvstore}.c: oops, mp -> hghmsg not keeping pace with - m_remsg! - - -Mon Jan 27 17:51:07 1986 /mtr - - uip/whatnowsbr.c: forgot to put -[no]push for built-in send - h/addrsbr.h, uip/{addrsbr,post}.c: introduce auxformat(), the - back-end to adrformat(); post calls auxformat directly in - certain cases - uip/{dp,forw}.c: was cheating on adrformat, now on auxformat - - -Fri Jan 31 13:25:17 1986 /mtr - - COVER-LETTER: update - support/general/mhl.format: Remove length/width constraints - - -Sun Feb 2 14:01:28 1986 /mtr - - zotnet/tws/dtime.c: twsort() fix from John Romine for ALTOS - uip/addrsbr.c: smarter ismymbox for default case - conf/{mh-gen.8,doc/repl.rf}, uip/repl.c: add #ifdef ATHENA code - - -Sun Feb 2 20:47:36 1986 /mtr - - miscellany/replies/: new directory - - -Mon Feb 3 11:21:49 1986 /mtr - - uip/whatnowsbr.c: oops, slight dist botch - support/general/mhl.format: make date display user-friendly - conf/mh-gen.8: clean-up descriptions of options - uip/sbboards.c: normalize code wrt to MMDF-II BBoards channel - uip/msh.c: when running under vmh and not in control of TTY, - ignore TSTP so BPOP can spool ahead! - papers/{usenix/usenix,multifarious/multifarios,trusted/trusted}.tex: - fix up banners a bit - - -Wed Feb 5 09:32:08 1986 /mtr - - support/bboards/mmdfII/READ-ME: update - - -Wed Feb 5 11:25:05 1986 /mtr - - MH 6.3 #1[UCI] (nrtc-gremlin) is official, still awaiting Berkeley - enhancements - - -Wed Feb 5 14:42:55 1986 /mtr - - zotnet/tws/{tws.h,dtime.c}: new argument to dasctime() - uip/{format,pick}sbr.c: make use of it - - -Sun Feb 9 22:14:10 1986 /mtr - - support/pop/syslog.c: #ifdef BSD43 means use standard syslog - - -Sun Feb 16 15:40:20 1986 /mtr - - sbr/m_setvis.c: oops, fix-up unseen sequence stuff - uip/whatnowsbr.c: oops, a couple of typos - - -Sun Feb 16 19:11:33 1986 /mtr - - -- Incorporate Berkeley enhancements, courtesy of Van Jacobson -- - h/{format,scan}sbr.h: updated for new formatsbr stuff - h/mh.h: updated for new m_getfld - conf/MH: new default file - conf/config/config.c: support spost under BERK and SENDMTS - conf/mhconfig.c: support new zotnet/fmt/ directory - conf/makefiles/uip: support spost - conf/makefiles/zotnetM: support new zotnet/fmt/ directory - conf/makefiles/zotnet/fmt: new Makefile - conf/makefiles/zotnet/tws: support for new lex-based date parser - sbr/m_gmsg.c,uip/msh.c: change init of READONLY - sbr/m_getfld.c: re-written, super optimized! - support/general/{digestcomps,mhl.digest,mhl.forward,scan.*}: use - new fmt stuff - zotnet/fmt/: new directory - zotnet/tws/{dtimep.lex,lexedit.sed,lexstring.c}: new files - zotnet/tws/dtime.c: update - uip/{forw,scan,scansbr}.c: use new format stuff - uip/{inc,mhlsbr,mshcmds,replsbr}.c: use new format stuff - uip/trmsbr.c: use stderr for ioctl()s - uip/spost.c: new file - uip/{addr,format}sbr.c: remove, they're in zotnet/fmt/ - - -Sun Feb 16 23:04:34 1986 /mtr - - zotnet/fmt/: move into sbr/ to avoid loading problems - sbr/{addrsbr,formatsbr,fmtcompile,formataddr}.c: new files - h/fmtcompile.h: new file - conf/makefiles/{sbr,zotnetM}: update - sbr/llib-lmh: update - - -Mon Feb 17 20:14:35 1986 /mtr - - support/general/scan.{time,size}: mday/month inverted - sbr/{formatsbr,fmtcompile}.c: bring upto date with MH 6.3+ - sbr/formatsbr.c: missing tzone/sday/dst handling! - h/scansbr.h: slight update - uip/scansbr.c: try using formataddr() routine to do "correct" - formatting of scan'd addresses, didn't work! use friendly - zotnet/tws/dtimep.lex: tsk, use lint! also, fix numeric timezones - sbr/addrsbr.c: some ismymbox fixes for non-BERK code (from 6.3) - sbr/formatsbr.c: not priming the pump! - h/fmtcompile.h, sbr/{formatsbr,fmtcompile}.c: add "friendly" - support/general/scan.time2: call it scan.timely - conf/makefiles/support/general: support scan.timely - - -Tue Feb 18 01:13:51 1986 /mtr - - h/formatsbr.h: updates from Van - - -Tue Feb 18 02:15:00 1986 /mtr - - uip/bbc.c: upgrade for new m_getfld() - support/general/scan.*, h/scansbr.h: still more changes - support/general/replcomps: still more changes - - -Tue Feb 18 22:14:51 1986 /mtr - - sbr/m_getfld.c: eom_action() lacking argument - sbr/m_getfld.c: not working right on packf'd files - uip/{msh,mshcmds}.c: under BPOP, need to fix things so m_getfld() - doesn't dump core! - - -Wed Feb 19 00:16:55 1986 /mtr - - uip/dist.c, support/general/distcomps, sbr/fmtcompile.c: updates - from Van - sbr/formatsbr.c: remove ismymbox prime - sbr/fmtcompile.c: use adios(), not exit()! - - -Wed Feb 19 00:56:30 1986 /mtr - - sbr/m_getfld.c: different fix for packf'd files from Van - - -Wed Feb 19 01:55:40 1986 /mtr - - h/mh.h: add msg_* vars in m_getfld() as externs - uip/{msh,{repl,scan}sbr}.c: remove msg_* declarations - sbr/m_getfld.c: add a bit of BODYEOF support (without slowing it - down, wouldn't want to upset Van!) - - -Wed Feb 19 03:11:42 1986 /mtr - - sbr/{formataddr,fmtcompile,m_{draft,getfld,maildir},printsw,pwd}.c: - lint it - uip/{formatsbr,forw,msh,replsbr,scan,scansbr,spost}.c: lint it - support/pop/popser.c: lint it - sbr/formatsbr.c: remove MHFMTDEBUG code - */Makefile: depend 'em - - -Wed Feb 19 10:50:04 1986 /mtr - - papers/mh6.4: new interim documentation directory, for 4.3BSD - conf/doc/{MH,ap,dp,mh,mh-chart,mhl,repl,scan}.rf: update - conf/doc/mh-format.rf: new file - support/general/replcomps: oops, should call formataddr on all - addrs - - -Thu Feb 20 08:07:49 1986 /mtr - - uip/{a,d}p.c: start working on it - h/formatsbr.h: new variable fmt_norm - sbr/formatsbr.c: use it - h/fmtcompile.c, sbr/{fmtcompile,formatsbr}.c: define "pretty" - sbr/formataddr.c: sight touch-up - uip/formatsbr.c: oops, bug in PUTD() - uip/{fmtcompile,formatsbr}.c: init mn structures in case of error. - This is still buggy since: 1) the structure still doesn't get - reset on errors, and 2) you can still dereference nulls - zotnet/tws/dtimep.lex: slight touch-up - - -Thu Feb 20 19:55:20 1986 /mtr - - uip/mhlsbr.c: add formatsbr support - sbr/addrsbr.c: use better default matching in ismymbox - miscellany/mtrenv: update - support/general/mhl.*: update - - -Thu Feb 20 22:57:33 1986 /mtr - - MH 6.4 #1[UCI] (nrtc-gremlin) made available to Van Jacobson - for inclusion in 4.3BSD UNIX - - -Sun Feb 23 13:59:46 1986 /mtr - - sbr/m_gmsg.c: big bug fix from Terry West. Thanks, Terry! - h/strings.h: System5 bcopy-equivalents from Doug Gwyn - zotnet/tws/tws.h: support #ifdef ATZ - conf/makefiles/uip: slight lint botch - - -Mon Feb 24 17:14:39 1986 /mtr - - uip/inc.c: have -host/-file ask if file doesn't exist - uip/{packf,mshcmds}.c: ditto - - -Tue Feb 25 08:08:43 1986 /mtr - - uip/burst.c: another realloc() fix from Terry West - sbr/vfgets.c: ditto - support/pop/popser.c: enhancmenets from Dave Cohrs - conf/doc/pop5.rf: document it - conf/mhconfig.c: support "debug" directive - makefiles/*: use it - - -Tue Feb 25 09:47:09 1986 /mtr - - uip/{scan,mshcmds}.c: slight touch-ups - uip/mhlsbr.c: fix up SIGPIPE handling, again - support/general/scan.time: fix up for numeric timezone - uip/scansbr.c: re-support "encrypted" - uip/msh.c: add "exit" command for Dave Farber - miscellany/convert: new directory - - -Tue Feb 25 17:45:28 1986 /mtr - - h/mshsbr.h, uip/msh*.c: add direct folder support for symmetry's - sake, ugh! - - -Wed Feb 26 21:05:46 1986 /mtr - - uip/sendsbr.c: better diagnostics when post fails - - -Thu Feb 27 22:12:53 1986 /mtr - - -- Van sends updates -- - conf/makefiles/uip, h/fmtcompile.h, - sbr/{format{addr,sbr},fmtcompile,addrsbr}.c, - support/general/replcomps, uip/{repl,mhl,scan,whatnow}sbr.c - - -Thu Feb 27 22:16:43 1986 /mtr - - sbr/formataddr.c: remove - sbr/addrsbr.c: Van doesn't like "user*" instead of "user" as the - default is-my-mailbox for BERK. Since he's the BERK-author, I'll - assume he knows what he's doing... - support/general/replcomps: Use "tws", instead of "pretty" for - in-reply-to: - uip/whatnowsbr.c: If -draft{folder,message} and -nodraftfolder are - added as no-ops, make them "hidden" from -help output - uip/{{a,d}p,forw,mhlsbr}.c: update - - -Mon Mar 3 10:18:40 1986 /mtr - - -- Van sends fixes to my updates -- - uip/mshcmds.c: not resetting scansbr for formatting - uip/scansbr.c: oops, typo! - - -Mon Mar 3 16:53:19 1986 /mtr - - uip/sendsbr.c: oops, close() on an uninitialized variable! (thanks - to Jim Koda) - - -Tue Mar 4 08:15:17 1986 /mtr - - -- Van sends fixes to my updates -- - uip/mhlsbr.c: not resetting mhlsbr for formatting - zotnet/tws/dtimep.lex: not getting MIL-TZ's right - - -Tue Mar 4 09:53:31 1986 /mtr - - papers/usenix/: change to realwork/ - - -Wed Mar 5 12:48:58 1986 /mtr - - dist/READ-ME: oops, forgot usenix name change - conf/makefiles/uip: hmm, interesting loader problem - - -Thu Mar 6 13:36:26 1986 /mtr - - uip/addrsbr.c: yet another fix for ismymbox() - uip/replsbr.c: #ifdef ISI code to avoid duplicate replies (due to - Jim Koda) - - -Sun Mar 9 14:04:26 1986 /mtr - - conf/mh-gen.8: add a line about chown and sys5 - sbr/m_convert.c: better BADRNG diagnostic - uip/mshcmds.c: oops, typo - - -Sun Mar 9 14:06:54 1986 /mtr - - h/scansbr.h, sbr/fmtcompile.c: better versions from Van - support/general/{replcomps,scan.timely}: better versions from Van - (snuck the %pretty instead of %tws in, eh Van?) - support/general/{digestcomps,mhl.forward,scan.{size,time}}: update - - -Sun Mar 9 18:52:37 1986 /mtr - - h/scansbr.h, support/general/{digestcomps,mhl.forward,scan.*}: update - - -Sun Mar 9 20:09:35 1986 /mtr - - zotnet/bboards/bboards.h: add BB_REMOTE flag for bbc - uip/bbc.c: support BB_REMOTE, under #ifdef MTR for the moment - uip/bbc.c: allow bb_aka (again?!?) - - -Mon Mar 10 00:43:19 1986 /mtr - - uip/{msh,mshcmds}.c: packf hack, ala refile hack - uip/{post,rcvdist}.c, support/bboards/mmdfII/bboards/bb_wtmail.c: - MMDF-II nameserver support from Steve Kille - - -Mon Mar 10 10:17:29 1986 /mtr - - {sbr/formatsbr,uip/scansbr}.c: more optimizations from Van! - sbr/m_getfld.c: Van fixes problems due to losing vanilla-4.2 C - optimizer! - sbr/m_getfld.c: slight touch-up by MTR - uip/bbc.c: remove #ifdef MTR bracketing, code works fine - uip/refile.c: slight touch-ups - sbr/m_getfld.c: on xxxERR returns, forgetting to zero value buffer - - -Mon Mar 10 18:08:37 1986 /mtr - - uip/post.c: fix handling of (in)visible addresses - uip/rcvdist.c: re-do to use format facility - uip/{replsbr,forw}.c: touch-ups - conf/config/config.c, h/mh.h: new variable rcvdistcomps - conf/{makefiles/{uip,support/general},doc/mhook.rf}: update - sbr/m_getfld.c: bstring() support for non BSD42, SYS5 systems - conf/doc/ADMIN.rf: update - - -Tue Mar 11 19:43:27 1986 /mtr - - h/dropsbr.h, uip/dropsbr.c: new routines mbx_read() and mbx_write() - uip/{msh,mshcmds}.c, support/pop/popser.c: use it - h/{addr,format,scan}sbr.h, sbr/addrsbr.c: slight touch-up - uip/inc.c: slight touch-up - - -Sun Mar 16 15:20:27 1986 /mtr - - miscellany/mem: appointment diary support from Ken Yap - - -Wed Mar 19 23:00:53 1986 /mtr - - support/pop/popser.c: one last fix for ENOENT mailboxes - - -Wed Mar 19 23:12:54 1986 /mtr - - -- Changes for MMDF-IIb -- - uip/post.c, support/bboards/mmdfII/bboards/bb_wtmail.c: know about - new mm_winit protocol and RP_NS/RP_DOK responses - - -Thu Mar 20 23:05:10 1986 /mtr - - uip/mhlsbr.c: mhl enhancement from JLR permitting a prefix string - for each line of the body (e.g, "component=" > ") - - -Fri Mar 21 21:12:39 1986 /mtr - - conf/doc/{MH,mh-format}.rf: typos - - -Sat Mar 22 11:51:45 1986 /mtr - - -- Fixes from Phyllis Kantar -- - uip/dropsbr.c: typo - conf/doc/{send,pick}.rf: typos - conf/makefiles/doc: forgot $(OPTIONSn) in $(MAN1) definition - - -Sat Mar 22 18:24:35 1986 /mtr - - uip/mhmail.c: handle -body better - - -Mon Mar 31 15:07:26 1986 /mtr - - uip/replsbr.c: handle bad addresses with better diagnostics - - -Wed Apr 2 17:17:32 1986 /mtr - - sbr/addrsbr.c: slight typo in comment - - -Sun Apr 6 19:22:52 1986 /mtr - - uip/inc.c: forgot to initialize some FILE*'s; dumps core on - celerity - - -Mon Apr 7 09:55:23 1986 /mtr - - mts/sendmail/smail.c: slight "client" check - - -Wed Apr 9 12:04:56 1986 /mtr - - -- Van fixes some more bugs -- - sbr/m_getfld.c: not handling buffer boundary cases right - uip/replsbr.c: not adding "," correctly when concatenating an - address string during message scan - sbr/formatsbr.c: mymbox test dumped core if address parse failed - h/{fmtcompile,formatsbr}.h, sbr/{fmtcompile,formatsbr}.c: more - enhancements - - -Wed Apr 9 12:36:58 1986 /mtr - - -- MTR actually gets to fix something! -- - sbr/m_getfld.c: messages with an empty body caused inc to - prematurely think the maildrop had reached EOF. Believe it - or not, the mhmail fix last month exercised this! - - -Wed Apr 9 22:08:37 1986 /mtr - - uip/vmh.c: output non-standard control characters in carat format - - -Thu Apr 10 02:26:52 1986 /mtr - - Makefile: touch-up "make distribution" - conf/examples/nrtc-*-mtr: remove - conf/makefiles/uip: touch-up - conf/doc/MH.rf: add TMA stuff, conditionally - - -Thu Apr 10 03:47:48 1986 /mtr - - sbr/m_getfld.c: Van fixes Marshall's fix - - -Thu Apr 10 10:42:25 1986 /mtr - - uip/scansbr.c: recognize the 822 "Encrypted:" header instead of - doing a uprf() on the body - uip/{scan,mshcmds}.c: recognize SCNENC return from scan () - - -Thu Apr 10 15:06:59 1986 /mtr - - conf/config/bboards.*: mail reports to PostMaster - - -Sat Apr 12 16:32:21 1986 /mtr - - uip/post.c: try to keep fcc:s under MH-directory so links are - maintained - - -Mon Apr 14 22:56:46 1986 /mtr - - support/bboards/bbexp.c: not ending msh correctly, msh tried - to update the maildrop even though it was already locked - by bbexp - - - -Mon Apr 14 23:52:03 1986 /mtr - - sbr/m_getfld.c: locc() not range checking on cnt - - -Thu Apr 17 13:25:20 1986 /mtr - - sbr/addrsbr.c: fix from Terry West, more alternate-mailbox misery - - -Thu Apr 17 20:51:53 1986 /mtr - - zotnet/mts/lock.c: add some more #ifdefs to support stand-alone - locking library - conf/examples/udel*: update - papers/myths/: remove - conf/makefile/papers: update - - -Mon Apr 21 10:22:09 1986 /mtr - - zotnet/mf/mf.c: sanity check in getadrx() on string to parse - - -Mon Apr 21 17:31:43 1986 /mtr - - uip/{inc,post}.c: slight mods for TMA mods - conf/doc/mh-chart.rf: ditto - - -Thu Apr 24 00:19:35 1986 /mtr - - conf/doc/mh-chart.rf: slight mods for TMA mods - - -Thu Apr 24 10:34:06 1986 /mtr - - zotnet/mts/lock.c: lint touch-up - support/pop/popd.c: ditto - - -Thu Apr 24 19:37:09 1986 /mtr - - conf/doc/ADMIN.rf: typos - - -Thu Apr 24 20:13:28 1986 /mtr - - uip/msgchk.c: print out last read date - conf/makefiles/uip: add tws dependency - - -Thu Apr 24 23:53:57 1986 /mtr - - -- From Craig Partridge -- - support/bboards/mmdfII/bboards/*: bug fixes for MMDF-IIb - conf/mh-gen.8: mention that MMDF-IIb has the BBoards distribution - - -Fri Apr 25 00:01:50 1986 /mtr - - conf/ADMIN.rf: slight touch-up - - -Fri Apr 25 10:47:19 1986 /mtr - - uip/trmsbr.c: use stdout (not stderr) for termcap checking - - -Fri Apr 25 13:39:55 1986 /mtr - - -- From Craig Partridge -- - support/bboards/mmdfII/bboards/getbbent.c: bad field in BBoards file - causes hang, note it and skip! - - -Sun Apr 27 17:23:56 1986 /mtr - - uip/scansbr.c: recognition of 822 Encrypted: header a bit botched - h/scansbr.h, support/general/scan.*: support encrypted - - -Mon Apr 28 21:00:21 1986 /mtr - - -- Yet Another Fix from Terry -- - uip/dropsbr.c: another typo - - -Tue Apr 29 20:17:11 1986 /mtr - - conf/doc/mhook.rf: extra tip with SendMail and slocal - - -Thu May 1 15:30:07 1986 /mtr - - -- From Craig Partridge -- - support/pop/mmdfII/pop/READ-ME: fixes - - -Fri May 2 16:35:11 1986 /mtr - - -- More Bug Fixes from Van -- - uip/scansbr.c: check return from fclose() - uip/inc.c: avoid locking/stat race condition - sbr/m_sync.c: lock signals out during update of sequences - - -Fri May 2 17:02:01 1986 /mtr - - uip/show.c: WHATNOW botch fixed by Jim Valerio - - -Sat May 3 01:37:15 1986 /mtr - - sbr/{m_{sync,update},pidwait}.c, uip/{bbc,sendsbr,vmh}: inspired - by Van's 4.2BSD signal optimizations - - -Sat May 3 02:49:29 1986 /mtr - - zotnet/tws/{tws.h,dtime.c,dtimep.lex}: fixes for DST - conf/makefiles/zotnet/tws: add -n to lex's invocation - - -Sun May 4 13:28:23 1986 /mtr - - uip/msgchk.c: change the "last read" message to use alpha-timezones - - -Sun May 4 14:18:15 1986 /mtr - - support/general/replcomps: use %tws instead of %pretty - support/general/mhl.*: streamline slight - - -Sun May 4 16:10:36 1986 /mtr - - conf/doc/mh.rf: forgot about TMA stuff - conf/makefiles/doc: forgot rcvstore - - -Sun May 4 17:49:43 1986 /mtr - - sbr/pidwait.c, uip/{bbc,sendsbr,vmh}.c: back off signal handling - modifications - -Sun May 4 18:08:47 1986 /mtr - - MH 6.5 #1[UCI] (nrtc-gremlin) made available to Van Jacobson - for inclusion in 4.3BSD UNIX diff --git a/docs/historical/mh6.5/Makefile b/docs/historical/mh6.5/Makefile deleted file mode 100644 index 5b67f77b..00000000 --- a/docs/historical/mh6.5/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -######################################################################### -# Instructions to Make, for generation of nice-looking papers using LaTeX -######################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if latex \\nonstopmode\\input $<; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# mh6 -############################################################# - -i-all: mh6.dvi - -i-print: mh6.dvi true - dvisp $(DFLAGS) -J mh6 mh6 - - -# customization files, et. al., not included below -mh6.dvi: mh6.vrsn - -mh6.vrsn: mh6.tex version.sh - @: version.sh mh6 - -biblio:; bibtex mh6 - -index:; idx2ind mh6 - sed -e 's|%\\newindex|\\newindex|' < mh6.ind > mh6.tmp - mv mh6.tmp mh6.ind - -true:; - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f mh6.dvi mh6.imp - -clean:; rm -f mh6.log mh6.blg mh6.tmp _* diff --git a/docs/historical/mh6.5/READ-ME b/docs/historical/mh6.5/READ-ME deleted file mode 100644 index f39b7cf3..00000000 --- a/docs/historical/mh6.5/READ-ME +++ /dev/null @@ -1,7 +0,0 @@ -[ For the following, substitute the name of the directory this file resides - in for "foo". E.G., if this file is mh5/READ-ME, s%foo%mh5%g ] - - The Makefile assumes you have LaTeX on your system. LaTeX is Leslie - Lamport's macro package for TeX. If you can't find LaTeX on your - system, ask your local TeX maintainer where it's kept, since LaTeX - should have come with your UNIX TeX distribution. diff --git a/docs/historical/mh6.5/bcustom.bib b/docs/historical/mh6.5/bcustom.bib deleted file mode 100644 index f98b6833..00000000 --- a/docs/historical/mh6.5/bcustom.bib +++ /dev/null @@ -1,22 +0,0 @@ -% BibTeX customization - -% people -@string{mtr = "Marshall T. Rose"} - -% places -@string{nic = "ARPA Internet Network Information Center"} -@string{nrtc = "Northrop Research and Technology Center"} -@string{sri = "SRI International"} -@string{uci = "University of California, Irvine"} -@string{udel = "University of Delaware"} -@string{cis = "Department of Computer and Information Sciences"} -@string{ics = "Department of Information and Computer Science"} -@string{rand = "The Rand Corporation"} - -% journals -@string{cn/isdn = "Computer Networks and ISDN Systems"} -@string{ccr = "Computer Communication Review"} -@string{ieeecm = "IEEE Communications Magazine"} - -% types -@string{rfc = "Request for Comments"} diff --git a/docs/historical/mh6.5/lcustom.tex b/docs/historical/mh6.5/lcustom.tex deleted file mode 100644 index c595c048..00000000 --- a/docs/historical/mh6.5/lcustom.tex +++ /dev/null @@ -1,249 +0,0 @@ -% LaTeX customization - - -\makeatletter % for a little while - - -% plain TeX compatibility - -\def\oldstyle{\xdef\@oldstyle{\the\textfont\@ne}\mit\@oldstyle} - - -% PhD-TeX compatibility - -\def\showsummary{% - \begingroup - \def\note##1{% - \ifcase\value{##1}no ##1s\or - 1 ##1\else - \the\value{##1} ##1s\fi - }% - \typeout{LaTeX summary: \note{figure}, \note{table}, \note{footnote}.}% - \endgroup -} - -\def\smaller{\footnotesize} - - -% Float Support - -% \tagfigure*[FLOAT]{FILE}{CAPTION}{LABEL} -% * optional -% FLOAT float options -% FILE reads TPIC output in file figureFILE -% CAPTION for list of figures -% LABEL for \ref and \pageref -\def\tagfigure{\@ifstar{\@stagfigure}{\@tagfigure}} -\def\@tagfigure{\@ifnextchar[{\@@tagfigure}{\@@tagfigure[t]}} -\def\@stagfigure{\@ifnextchar[{\@@stagfigure}{\@@stagfigure[t]}} - -\def\@@tagfigure[#1]#2{% - \@@@tagfigure[#1]{\input figure#2\relax\centerline{\box\graph}}} -\def\@@stagfigure[#1]#2{% - \@@@stagfigure[#1]{\input figure#2\relax\centerline{\box\graph}}} - - -% \tagdiagram*[FLOAT]{FILE}{CAPTION}{LABEL} -% * optional -% FLOAT float options -% FILE reads LaTeX input in file diagramFILE -% CAPTION for list of figures -% LABEL for \ref and \pageref -\def\tagdiagram{\@ifstar{\@stagdiagram}{\@tagdiagram}} -\def\@tagdiagram{\@ifnextchar[{\@@tagdiagram}{\@@tagdiagram[t]}} -\def\@stagdiagram{\@ifnextchar[{\@@stagdiagram}{\@@stagdiagram[t]}} - -\def\@@tagdiagram[#1]#2{\@@@tagfigure[#1]{\input diagram#2\relax}} -\def\@@stagdiagram[#1]#2{\@@@stagfigure[#1]{\input diagram#2\relax}} - -\def\@@@tagfigure[#1]#2#3#4{% - \begin{figure}[#1] - \hrule - \vskip .5\baselineskip - \begin{minipage}\columnwidth - \small#2% - \end{minipage} - \vskip .5\baselineskip plus .5\baselineskip - \caption{#3}% - \label{#4}% - \vskip 2pt - \hrule - \end{figure} -} - -\def\@@@stagfigure[#1]#2#3#4{% - \begin{figure*}[#1] - \hrule - \vskip .5\baselineskip - \begin{minipage}\textwidth - \small#2% - \end{minipage} - \vskip .5\baselineskip plus .5\baselineskip - \caption{#3}% - \label{#4}% - \vskip 2pt - \hrule - \end{figure*} -} - - -% \tagtable*[FLOAT]{FILE}{CAPTION}{LABEL} -% * optional -% FILE read LaTeX input in file tableFILE -% FLOAT float options -% CAPTION for list of tables -% LABEL for \ref and \pageref -\def\tagtable{\@ifstar{\@stagtable}{\@tagtable}} -\def\@tagtable{\@ifnextchar[{\@@tagtable}{\@@tagtable[t]}} -\def\@stagtable{\@ifnextchar[{\@@stagtable}{\@@stagtable[t]}} - -\def\@@tagtable[#1]#2#3#4{% - \begin{table}[#1] - \hrule - \vskip .5\baselineskip - \begin{minipage}\textwidth - \small\input table#2\relax - \end{minipage} - \vskip .5\baselineskip plus .5\baselineskip - \caption{#3}% - \label{#4}% - \vskip 2pt - \hrule - \end{table} -} - -\def\@@stagtable[#1]#2#3#4{% - \begin{table*}[#1] - \hrule - \vskip .5\baselineskip - \begin{minipage}\columnwidth - \small\input table#2\relax - \end{minipage} - \vskip .5\baselineskip plus .5\baselineskip - \caption{#3}% - \label{#4}% - \vskip 2pt - \hrule - \end{table*} -} - - -% Document style options: -% 10pt - Makes ten-point type the normal (default) type size -% draftnote - Customized draft option - -\@namedef{ds@10pt}{\def\@ptsize{0}} %%% for orthogonality - - -\newif\ifdraft \draftfalse - -\def\draftstring{{\ifdraft \tt Draft\fi}} - -\def\draftext{% - \ifdraft - \begingroup - \tt - \ifodd\thepage - \LaTeX set \today\ with \fmtname\ v\fmtversion - \else - Draft \versiontag/ of \versiondate/ - \fi - \endgroup - \fi -} - -\def\versiontag/{% - \gdef\versiontag/{\#0}% - \gdef\versiondate/{\today}% - \@input{\jobname.vrsn}%6 - \versiontag/% -} -\def\versiondate/{% - \gdef\versiontag/{\#0}% - \gdef\versiondate/{\today}% - \@input{\jobname.vrsn}% - \versiondate/% -} - -\def\ds@draftnote{% - \drafttrue - \@ifundefined{ds@draft}{}{\ds@draft}% - \def\ps@plain{% - \def\@oddhead{\draftext\hfil}% - \def\@oddfoot{\draftstring\hfil\rm\thepage\hfil\draftstring}% - \let\@evenhead=\@oddhead - \let\@evenfoot=\@oddfoot - }% -} - - -% The Title - -\def\title#1{% - \gdef\@title{#1}% - \gdef\banner{% - \newpage\setcounter{page}{1}% - \begin{center}\Large#1\end{center}% - }% -} - - -% Miscellany - -\def\implies{\quad\supset\ } - -\def\tdots{\ldots\thinspace} - -\def\boxit#1{\fbox{\sc#1}} - -\def\note#1{\ifdraft\marginpar{\tt#1}\fi} - - -% Fractions (from The TUGboat v6 n1, 1985) - -\def\myfrac#1/#2{% - \leavevmode\kern.1em - \raise.5ex\mbox{\the\scriptfont\z@ #1}\kern-.1em - /\kern-.15em\lower.25ex\mbox{\the\scriptfont\z@ #2}% -} - - -% Trademarks... - -\input trademark - - -% Startup - -\xdef\today{% - \ifcase\month - \number\month\or - January\or February\or March\or April\or May\or June\or - July\or August\or September\or October\or November\or December\else - \number\month\fi - \space\number\day, {\noexpand\mit\number\year}% -} - -\begingroup - \count0=\time - \count1=\count0 - \divide\count0 by 60 - \count2=\count0 - \multiply\count0 by 60 - \advance\count1 by -\count0 - \ifnum\count2>11 - \ifnum\count2>12 \advance\count2 by -12\fi - \def\ampm{pm}% - \else - \ifnum\count2=0 \advance\count2 by 12\fi - \def\ampm{am}% - \fi - \xdef\daytime{% - \ifnum\count2<10 0\fi \the\count2:% - \ifnum\count1<10 0\fi \the\count1 - \ampm - }% -\endgroup - - -\makeatother % back to normal diff --git a/docs/historical/mh6.5/mh6.bbl b/docs/historical/mh6.5/mh6.bbl deleted file mode 100644 index de04fdcc..00000000 --- a/docs/historical/mh6.5/mh6.bbl +++ /dev/null @@ -1,10 +0,0 @@ -\begin{thebibliography}{MRose85} - -\bibitem[MRose85]{MH.USR} -Marshall~T. Rose and John~L. Romine. -\newblock {\it {The Rand MH Message Handling System: User's Manual}}. -\newblock Department of Information and Computer Science, University of - California, Irvine, \mh6 edition, November, {\oldstyle 1985}. -\newblock UCI Version. - -\end{thebibliography} diff --git a/docs/historical/mh6.5/mh6.major b/docs/historical/mh6.5/mh6.major deleted file mode 100644 index 0cfbf088..00000000 --- a/docs/historical/mh6.5/mh6.major +++ /dev/null @@ -1 +0,0 @@ -2 diff --git a/docs/historical/mh6.5/mh6.minor b/docs/historical/mh6.5/mh6.minor deleted file mode 100644 index f599e28b..00000000 --- a/docs/historical/mh6.5/mh6.minor +++ /dev/null @@ -1 +0,0 @@ -10 diff --git a/docs/historical/mh6.5/mh6.tex b/docs/historical/mh6.5/mh6.tex deleted file mode 100644 index 29b169e8..00000000 --- a/docs/historical/mh6.5/mh6.tex +++ /dev/null @@ -1,617 +0,0 @@ -% run this through LaTeX - -\input lcustom - -\documentstyle[12pt,sfwmac]{article} - -\begin{document} - -\title{Changes to\\ The Rand MH Message Handling System:\\ - MH \#6.5 for 4.3BSD UNIX} -\author{Marshall T.~Rose\\ - Northrop Research and Technology Center\\ - One~Research Park\\ - Palos Verdes Peninsula, CA 90274} -\date{\ifdraft \versiondate/\\ Version \versiontag/\else \today\fi} -\maketitle -\footnotetext[0]{\hskip -\parindent -This document (version \versiontag/) -was \LaTeX set \today\ with \fmtname\ v\fmtversion.} - -\begin{abstract} -This document describes the user-visible change to the -UCI version of the Rand \MH/ system that were made from \mh5 to \MH/ \#6.5. -It is based on the \mh6 changes document, -but has been updated to accurately reflect the \MH/ distributed with -4.3\bsd/~\unix/. -This document does not describe bug-fixes, per se, -or internal changes, -unless these activities resulted in a visible change for the \MH/ user. - -This document is meant to supplement, -not supersede, the standard \MH/ User's manual\cite{MH.USR}. - -Comments concerning this documentation should be addressed to the Internet -mailbox {\sf Bug-MH@ICS.UCI.EDU}. -\end{abstract} - -\newpage - \section* {Acknowledgements} -The \MH/ system described herein is based on the original Rand \MH/ system. -It has been extensively developed (perhaps too much so) by Marshall T.~Rose -and John L.~Romine at the University of California, Irvine. -Einar A.~Stefferud, Jerry N.~Sweet, -and Terry P.~Domae provided numerous suggestions -to improve the UCI version of \MH/. -Of course, -a large number of people have helped \MH/ along. -The list of ``\MH/~immortals'' is too long to list here. -However, Van Jacobson deserves a special acknowledgement for his tireless -work in improving the performance of \MH/. -Some programs have been speeded-up by a factor of 10 or 20. -All of users of \MH/, everywhere, owe a special thanks to Van. - - \section* {Disclaimer} -The Regents of the University of California wish to make it known that: -\begin{quote} -Although each program has been tested by its contributor, -no warranty, express or implied, -is made by the contributor or the University of California, -as to the accuracy and functioning of the program -and related program material, -nor shall the fact of distribution constitute any such warranty, -and no responsibility is assumed by the contributor -or the University of California in connection herewith. -\end{quote} - -\newpage - \section* {Conventions} -In this document, -certain \LaTeX -formatting conventions are adhered to: -\begin{enumerate} -\item The names of \unix/ commands, such as \pgm{comp}, -are presented in {\it text italics}. - -\item Arguments to programs, such as \arg"msgs", -are presented in {\tt typewriter style} and delimited by single-quotes. - -\item \unix/ pathnames and envariables, -such as $$\file{/usr/uci/}\hbox{\qquad and\qquad}\file{\$SIGNATURE},$$ -are presented in {\sl slanted roman}. - -\item Text presenting an example, such as -\begin{verbatim} - comp -editor zz -\end{verbatim} -is presented in {\tt typewriter style}. -\end{enumerate} - -\newpage - \section* {General Changes} -Unlike the changes between \mh4 and \mh5, -a large number of user-visible changes have been made in \mh6. -These changes have been in the form of bug fixes and several generalizations. -The majority of these will not affect novice users. -In addition, \mh6 is a great deal faster than \mh5: -all programs have been speeded-up significantly, -thanks to work done by Van Jacobson as part of the process of including \mh6 -in the 4.3\bsd/~\unix/ distribution. - -This document describes all user-visible changes to \mh5 from it's initial -release to the intermediate release of \MH/ \#6.5. - -\subsection* {System-5 Support} -In addition to support for \bsd/~\unix/, V7~\unix/ and \xenix/ variants of -\unix/, -\MH/ finally has support for the AT\&T variant of \unix/, System~5. -Hopefully this will greatly expand the number of system which can run \MH/. -Ironically, -it appears that five ports of earlier versions of \MH/ (including \mh5) -were done, -but news of the work was not widespread.% -\footnote{In fact, -three groups in one large organization ported \MH/ independently, -each without knowledge of the others' work.} - -\subsection* {Documentation} -Several new documents have been included in the \mh6 distribution: -The paper {\em MH.5: How to process 200 messages a day and still get some -real work done} -was presented at the 1985 Summer Usenix Conference and Exhibition in -Portland, Orgeon. -Another paper, {\em MH: A Multifarious User Agent}, -has been accepted for publication by Computer Networks. -Both describe \MH/, -the former from a more technical and somewhat humorous perspective, -the latter from a more serious and research-oriented perspective. -In addition, -a third paper has been included, -{\em Design of the TTI Prototype Trusted Mail Agent}, -which describes a so-called ``trusted'' mail agent built on top of \MH/. -This paper was presented at the Second International Symposium on -Computer Message Systems in Washington, D.C. -A fourth paper, -{\em MZnet: Mail Service for Personal Micro-Computer Systems}, -is also included. -This paper, -which was presented at the First International Symposium on Computer Message -Systems in Nottingham, U.K., -describes a \cpm/-based version of \MH/. - -In addition, -the \MH/ tutorial, {\em The Rand MH Message Handling System: Tutorial}, -and, -{\em The Rand MH Message Handling System: The UCI BBoards Facility}, -have both been updated by Jerry N.~Sweet. - -For \MH/ administrators (PostMasters and the like), -there's an entirely new document, -{\em The Rand MH Message Handling System: Administrator's Guide}. -It explains most of the ``ins and outs'' of maintaining an \MH/ system. - -Finally, all of the manual entries and the \MH/ manual have had a thorough -working over. -The documentation is expanded, more accurate, and more detailed. - -\subsection* {Help Listings} -When any \MH/ command is invoked with the \switch"help" switch, -in addition to listing the syntax of the command and version information, -the \MH/ configuration options will be listed. -\MH/ has so many configuration options, -that when debugging problems, this information is invaluable. - -\subsection* {The \MH/ Profile} -There are two new profile entries worth noting: -\verb"MH-Sequences" tells \MH/ the name of the file to record public -sequences in. -Users of \pgm{vm}, a proprietary, visual front-end to \MH/, -make use of this to disable the public sequences feature of \MH/. - -The profile entry \verb"Unseen-Sequence" names those sequences which should be -defined as those messages recently incorporated by \pgm{inc}. -The \pgm{show} program knows to remove messages from this sequence once it -thinks they have been seen. -If this profile entry is not present, or is empty, then no sequences are -defined. -Otherwise, for each name given, the sequence is first zero'd and then each -message incorporated is added to the sequence. -As such, this profile entry is rather analogous to the -\verb"Previous-Sequence" entry in the user's \MH/ profile. - -In addition, the \verb"Alternate-Mailboxes" entry in the profile has been -expanded to support simple wild-carding. -Also, the default for this profile entry is now the user's mail-id at any host. -This change was made since \MH/ can no longer reliably figure out what -the user's real outgoing address looks like. - -Finally, -when the \pgm{install-mh} program is automatically invoked by \MH/, -it won't prompt the user for information. -Instead, it notes that it's setting up the default environment. -In addition, -the \MH/ administrator may set-up a file called \file{mh.profile} in the \MH/ -library area which is consulted by \pgm{install-mh} when initializing the -user's \profile/. - -\subsection* {The \MH/ Context} -The \pgm{folder}, \pgm{scan}, and \pgm{show} programs have been modified to -update the user's \MH/ context prior to writing to the user's terminal. -This allows the \MH/ user interrupt output to the terminal and still have the -expected context. -This is especially useful to interrupt long \pgm{scan} listings. -This change also introduces a subtle bug between \pgm{show} and messages -denoted by the \verb"Unseen-Sequence". -See \man show(1) for the details. - -\subsection* {Addresses and 822 support} -\MH/ now fully supports the RFC-822 routing syntax for addresses -(it used to recognize the syntax, but ignore the information present). -In addition, -there are three major modes for support of non-822 addressing in \MH/: -\begin{itemize} -\item BERK\\ -This is useful on sites running \SendMail/. -It doesn't support full 822--style addressing, -in favor of recognizing such formats as ACSnet, and so on. -For sites that can't run in an 822--compliant environment, -this is the option to use -(at the price of sacrificing some of the power of 822--style addressing). -This also drastically reduces the address formatting facilities described -below. - -\item DUMB\\ -Although not as liberal as BERK, -the DUMB option is useful on sites in which the message transport system -conforms to the 822 standard, -but wants to do all the defaulting itself. - -\item BANG\\ -From out in left field, -the BANG option favors \UUCP/-style addressing over 822--style addressing. -Hopefully when all the \UUCP/ sites around get around to adopting domain-style -addresses, this option won't be needed. -\end{itemize} - -The \pgm{ap} program (mentioned momentarily) and the \pgm{ali} program -both support a \switch"normalize" switch indicate if addresses should be -resolved to their ``official'' hostnames. - -\subsection* {New Programs} -There are five new programs available: -The \pgm{ap} program is the \MH/ stand-alone address parser. -It's useful for printing address in various formats -(and for debugging address strings). -The \pgm{dp} program is similar, but works on dates instead of addresses. - -The \pgm{msgchk} program checks for new mail, -possibly using the Post Office Protocol, POP, described below. - -A new receive mail hook, -the \pgm{rcvstore} program, -which was written by Julian L.~Onions is available. - -Finally, a visual front-end to \pgm{msh} called \pgm{vmh} has been included. -(This program is discussed in greater detail later on.) - -\subsection* {Message Numbering} -\MH/ now no longer restricts the number of messages which may reside in a -folder -(beyond that of system memory constraints). -This means that message numbers larger than 2000 are permissible. -Hopefully this will make life easier for people reading the network news -using \MH/. - - \section* {The WhatNow Shell} -In \mh6, -there is now the concept of a unified \whatnow/ processor that -the four composition programs, \pgm{comp}, \pgm{dist}, \pgm{forw}, -and \pgm{repl} all invoke. -This permits a greater flexibility in building mail applications with \MH/. -As a result, there's a new program, \pgm{whatnow}, which acts as the default -\whatnow/ program. -Consult the \man whatnow(1) manual entry for all the details. -The only important user-visible change is the \verb"headers" option went away, -which wasn't used that much anyway. - - -The only other thing worth noting is that unless \MH/ has been compiled with -the UCI option, -the user's \file{\$HOME/.signature} file is not consulted for the user's -personal name. - - \section* {Format Strings} -A general format string facility has been added to allow \MH/ users to tailor -the output of certain commands. - -The \pgm{inc}, \pgm{scan}, \pgm{ap}, and \pgm{dp} programs all consult a -file containing format strings. -Format strings, -which look a lot like \man printf(3) strings, -give these \MH/ commands precise instructions on how to format their output. - -As a result, -the \pgm{inc} and \pgm{scan} programs no longer have the -\switch"size", \switch"nosize", -\switch"time", \switch"notime", -\switch"numdate", and \switch"nonumdate" -switches. -These switches have been replaced with the -\switch"form formatfile" switch and the \switch"format string" switch. -The former directs the program to consult the named file for the format -strings. -The latter directs the program to use the named string as the format. -To get the behavior of the old \switch"time" option, -use the \switch"form scan.time" option. -Similarly, -to get the effect of \switch"size", -use \switch"form scan.size". - -A fun form to use is \switch"form scan.timely" with \pgm{scan}. -Try it sometime. - - -The \pgm{repl} command uses a file containing format files to -indicate how the reply draft should be constructed. -Note that reply templates prior to \mh6 are incompatible with \mh5.% -\footnote{In fact, reply templates between \mh6 and \MH/ \#6.5 are -imcompatible.} -Don't worry though, -it's quite easy to convert the templates by hand. -(Those clever enough to have written a reply template to begin with won't -have {\em any\/} problem.) - -Similarly, when the \pgm{forw} program is constructing a digest, -it uses a file containing format strings to indicate how to build the -encapsulating draft. - -Finally, you can use these facilities in \pgm{mhl} as well. - - \section* {News} -The depreciated \MH/ news system (from \mh1) is now de-supported. -Use the ``hoopy'' BBoards facility instead. - - \section* {BBoards} -\MH/ maintainers take note: -the default home directory for the bboards login has changed from -\file{/usr/bboards/} to \file{/usr/spool/bboards/}. -Use the \verb"bbhome" directive in your \MH/ configuration file to set -it back to the old value if you wish. - -In addition, the aliases field for a BBoard in the BBoards file is now -deemed useful only for addressing, not for user input to \pgm{bbc}. -This means when giving the name of a BBoard to \pgm{bbc}, -only the official name should be used. - -A final note for mailsystem maintainers: -the \MMDFII/ BBoards channel and the \SendMail/ BBoards mailer have been -modified to use the standard message encapsulation format when returning -failed messages to the list maintainer. -This means that the failure notices that the maintainer receives can -simply be \pgm{burst}. - -\subsection* {New Switches in bbc} -The \pgm{bbc} program permits you to specify the \verb"mshproc" to use on the -command line by using the \switch"mshproc program" option. -There's also a \switch"rcfile file" option which does ``the obvious thing''. -In addition, options which aren't understood by \pgm{bbc} are passed along to -the \verb"mshproc". - -In addition, the following commands -pass any unrecognized switches on to the program that they invoke: -\pgm{bbc}, \pgm{next}, \pgm{show}, \pgm{prev}, and \pgm{vmh}. - -\subsection* {Distributed BBoards} -If both BBoards and POP (see the next section) are enabled, -then distributed BBoards can be supported on top of the POP service. -This allows the \MH/ user to read BBoards on a server machine -instead of the local host -(which saves a lot of wasted disk space when the same BBoards are replicated -several times at a site with several hosts). -See the {\em Administrator's Guide\/} for information on how this can be made -completely transparent to the \MH/ user. - -If you have several machines at your site running 4.2\bsd/~\unix/ -and connected by an \ethernet/ (or other high-speed LAN), -you {\em want\/} this software. - -\subsection* {Visual Front-End to msh} -A simple window management protocol has been implemented for \MH/ programs -that might wish to act as a back-end to a sophisticated visual front-end. - -The first implementation of a server side (front-end) program is \pgm{vmh}, -which uses \man curses(3) to maintain a split-screen interface. -Perhaps look for a \pgm{mhtool} program for the SUN next! - -The \pgm{msh} program has been modified to speak the client side (back-end) -of this protocol, if so directed. -At present, \pgm{msh} is the only program in the \MH/ distribution which -implements the client side of the window management protocol. - -\subsection* {Updates in msh} -Prior to quitting, -the \pgm{msh} command now asks if the \pgm{packf\/}'d file you've been -perusing should be updated if you've modified it and the file is writable by -you. -The file can be modified by using \pgm{burst}, \pgm{rmm}, \pgm{rmm}, -or \pgm{sortm} commands. -The file can also be modified by using the \pgm{refile} command without the -\switch"link" option. -(Or course, -the \switch"link" option doesn't actually link anything to the file.) - - \section* {Distributed Mail} -\MH/ now contains a powerful facility for doing distributed mail -(having \MH/ reside on a host different than the message transport agent). -For general information, -consult either the -{\em MH.5: How to process 200 messages a day and still get some real work -done} paper, -or the {\em MH: A Multifarious User Agent} paper. -For specific information, -consult the {\em Administrator's Guide}. -Here's a brief synopsis: - -This POP facility in \MH/ is based on a modification of the ARPA Post -Office Protocol (POP). -A POP {\em subscriber\/} is a remote user, -on a POP {\em client host}, -that wishes to pick-up mail on a POP {\em service host}. - -There are two ways to administer POP: -\begin{itemize} -\item Naive Mode\\ -Each user-id in the \man passwd(5) file is considered a POP subscriber. -No changes are required for the mailsystem on the POP service host. -However, -this method requires that each POP subscriber have an entry in the password -file. -The POP server will fetch the user's mail from wherever maildrops are kept on -the POP service host. -This means that if maildrops are kept in the user's home directory, -then each POP subscriber must have a home directory. - -\item Smart Mode\\ -This is based on the notion that the list of POP subscribers and the list of -login users are completely separate name spaces. -A separate database (similar to the \man BBoards(5) file) -is used to record information about each POP subscriber. -Unfortunately, -the local mailsystem must be changed to reflect this. -This requires two changes (both of which are simple): -\begin{enumerate} -\item Aliasing\\ - The aliasing mechanism is augmented so that POP subscriber addresses - are diverted to a special delivery mechanism. - \MH/ comes with a program, \man popaka(8), which generates the - additional information to be put in the mailsystem's alias file. -\item Delivery\\ - A special POP delivery channel (for \MMDFII/) - or POP mailer (for \SendMail/) performs the actual delivery (\mh6 - supplies both). - All it really does is just place the mail in the POP spool area. -\end{enumerate} -Clever mailsystem people will note that -the POP mechanism is really a special case of the more general -BBoards mechanism. -\end{itemize} -These two different philosophies are not compatible on the same POP service -host: one or the other, but not both, may be run. - -In addition, there is one user-visible difference, -which the administrator controls the availability of. -The difference is whether the POP subscriber must supply a password to the POP -server: -\begin{itemize} -\item ARPA standard method\\ -This uses the standard ARPA technique of sending a username and a password. -The appropriate programs (\pgm{inc}, \pgm{msgchk}, and possibly \pgm{bbc\/}) -will prompt the user for this information. - -\item \unix/ remote method\\ -This uses the Berkeley \unix/ reserved port method for authentication. -This requires that the two or three mentioned above programs be {\em setuid\/} -to root. -(There are no known holes in any of these programs.) -\end{itemize} -These two different philosophies are compatible on the same POP service host: -to selectively disable RPOP for hosts which aren't trusted, -either modify the \file{.rhosts} file in the case of POP subscribers being -\unix/ logins, -or zero the contents of network address field of the \man pop(5) file for the -desired POP subscribers. - -The \pgm{inc} command also has two other switches when \MH/ is enabled for -POP: -\switch"pack file" and \switch"nopack". -Normally, -\pgm{inc} will use the POP to incorporate mail from a POP service host into -an \MH/ folder (\verb"+inbox"). -However, -there are some misguided individuals who prefer to \pgm{msh} to read their -maildrop. -By using the \switch"pack file" option, -these individuals can direct \pgm{inc} to fetch their maildrop from the POP -service host and store it locally in the named file. -As expected, \pgm{inc} will treat the local file as a maildrop, -performing the appropriate locking protocols. -And, -if the file doesn't exist, -the user is now asked for confirmation. - - \section* {Rcvmail hooks} -In order to offer users of \MH/ increased rcvmail hook functionality, -the \pgm{slocal} program has been upgraded to support the semantics of -the \MMDFII/ mail-delivery mechanism. -This means that users of \mh6 can maintain identical \file{.maildelivery} -files regardless of the underlying transport system. -See \man mhook(1) for all the details. - -\subsection* {Change in rcvdist} -The \pgm{rcvdist} rcvmail hook now uses the \MH/ formatting facility when -redistributing a message. - -\subsection* {Field change in rcvpack} -The \pgm{rcvpack} rcvmail hook now adds the field name \verb"Delivery-Date:" -instead of \verb"Cron-Date:" to messages it \pgm{pack\/}s. - - \section* {GNU Emacs Support} -James Larus' \pgm{mh-e} macro package for GNU Emacs (version~17) is included -in the distribution. -When loaded in Emacs, this provides a handy front-end. - - \section* {Other Changes} -Here's the miscellany: - -\subsection* {Continuation Lines} -Alias files used by \MH/, -display templates used by \pgm{mhl}, -and format files used by \pgm{forw}, \pgm{repl}, and \pgm{scan} all support -a standard continuation line syntax. -To continue a line in one of these files, -simply end the line with the backslash character (`$\backslash$'). -All the other files used by \MH/ are in 822--format, -so the 822--continuation mechanism is used.% -\footnote{Looking back, -it would have been best had all files in \MH/ used the 822--format.} - -\subsection* {Default Date Format} -\MH/ now uses numeric timezones instead of locally-meaningful alpha timezones -when generating mail. -This change was made to encourage the use of unambiguous, globally-meaningful -timezone strings. -A local configuration option can disable this correct behavior. -All of the \pgm{mhl} templates have been modified to use locally-meaningful -alpha timezones when displaying messages. - -\subsection* {New switch in ali} -The \pgm{ali} command now has a \switch"noalias" switch to prevent -system-wide aliases from being interpreted. - -\subsection* {Modifications to show} -The \switch"format", \switch"noformat", \switch"pr", and \switch"nopr" -options to \pgm{show} have gone away in favor of a more general mechanism. -The \switch"showproc program" option tells \pgm{show} -(or \pgm{next} or \pgm{prev\/}) to use the named program as the \verb"showproc". -The \switch"noshowproc" option tells \pgm{show}, et. al., -to use the \man cat(1) program instead of a \verb"showproc". -As a result, the profile entry \verb"prproc" is no longer used. - -\subsection* {Switch change in inc} -The \switch"ms ms-file" switch in \pgm{inc} has been changed to -\switch"file name" to be more consistent. - -\subsection* {Front-End to mhl} -When outputting to a terminal, -the \pgm{mhl} program now runs the program denoted by the profile entry -\verb"moreproc". -If this entry is not present, -the default is the UCB \pgm{more} program. -If the entry is non-empty, -then that program is spliced between \pgm{mhl} and the user's terminal. -The author uses the \pgm{less} program as his \verb"moreproc". - -Of course, -if \pgm{mhl} isn't outputting to a terminal, -then \verb"moreproc" is not invoked. - -Finally, -to aid in the construction of replies, -a prefix string may be specified for the \verb"body" component of the message -being replied-to. -Simply use the \verb"component=" construct in \pgm{mhl} for \verb"body:". - -\subsection* {Confirmation in packf} -If the file specified by the \switch"file name" switch doesn't exist, -the user is now asked for confirmation. - -\subsection* {Complex Expressions in pick} -The \pgm{pick} command now handles complex boolean expressions. - -\subsection* {Defaults change in prompter and burst} -The \switch"prepend" option is now the default in \pgm{prompter}. -The \switch"noinplace" option is now the default in \pgm{burst}. - -\subsection* {Fcc:s and post} -If multiple Fcc:s for a message are specified during posting, -\pgm{post} will try much harder to preserve links. - -\subsection* {Interactive option in rmf} -The \pgm{rmf} program has been changed to support an \switch"interactive" -switch. -If given, -then the user is prompted regarding whether the folder should be deleted. -If the folder to be removed is not given by the user, -this switch is defaulted to on. - -\subsection* {Trusted Mail Interface} -\MH/ now has an interface for so-called ``trusted mail'' applications. -Although the modifications to \MH/ to support this are in the public domain, -the actual library that \MH/ uses is not. -Contact Professor David J.~Farber ({\sf Farber@UDel\/}) for more information. - -\bibliography{bcustom,sfwdoc} -\bibliographystyle{alpha} - -\showsummary - -\end{document} diff --git a/docs/historical/mh6.5/mh6.vrsn b/docs/historical/mh6.5/mh6.vrsn deleted file mode 100644 index 56094e05..00000000 --- a/docs/historical/mh6.5/mh6.vrsn +++ /dev/null @@ -1,6 +0,0 @@ -\begingroup - \catcode`\#=12 - \gdef\versiontag/{#2.10}% - \gdef\versiondate/{Wed May 21 21:06:09 PDT 1986}% -\endgroup -\typeout{Version \versiontag/ of \versiondate/} diff --git a/docs/historical/mh6.5/sfwdoc.bib b/docs/historical/mh6.5/sfwdoc.bib deleted file mode 100644 index b74f8152..00000000 --- a/docs/historical/mh6.5/sfwdoc.bib +++ /dev/null @@ -1,237 +0,0 @@ -% ``Software'' bibliography database for BiB-TeX - - -@misc{AmSTeX, - author = "Michael Spivak", - title = "{Summary of \AmSTeX{}}", - month = sep, - year = 1983 -} - -@misc{BibTeX, - author = "Oren Patashnik", - title = "{\BibTeX{}ing}", - month = may, - year = 1983 -} - -@misc{Emacs, - author = "James Gosling", - title = "{UNIX EMACS, UCI Version}", - month = may, - year = 1982 -} - -@book{LaTeXbook, - author = "Leslie Lamport", - title = "{\LaTeX{}: A Document Preparation System}", - publisher= {Addison-Wesley}, - address= {Reading, Massachusetts}, - year = 1985 -} - -@manual{MH.ADM, - title = "{The Rand MH Message Handling System: - Administrator's Guide}", - edition = {\mh6}, - author = mtr, - organization= ics, - address = uci, - month = nov, - year = 1985, - note = {UCI Version} -} - -@manual{MH.BB, - title = "{The Rand MH Message Handling System: - The UCI BBoards Facility}", - author = mtr, - organization= cis, - address = udel, - month = oct, - year = 1984 -} - -@manual{MH.POP, - title = "{Post Office Protocol (revised)}", - author = mtr, - organization= cis, - address = udel, - month = oct, - year = 1984 -} - -@manual{MH.XPOP, - title = "{Post Office Protocol (revised) - Extended Service Offerings}", - author = mtr, - organization= nrtc, - month = dec, - year = 1985 -} - -@manual{MH.USR, - title = "{The Rand MH Message Handling System: - User's Manual}", - edition = {\mh6}, - author = "Marshall T. Rose and John L. Romine", - organization= ics, - address = uci, - month = nov, - year = 1985, - note = {UCI Version} -} - -@manual{MH.TUT, - title = "{The Rand MH Message Handling System: - Tutorial}", - author = "Marshall T. Rose and Jerry N. Sweet", - organization= cis, - address = udel, - month = oct, - year = 1984 -} - -@manual{MH.4, - title = "{Changes to the Rand MH Message Handling System: - MH.4}", - author = mtr, - organization= ics, - address = uci, - month = jul, - year = 1984 -} - -@manual{MH.5, - title = "{Changes to the Rand MH Message Handling System: - MH.5}", - author = mtr, - organization= cis, - address = udel, - month = jan, - year = 1985 -} - -@manual{MH.6, - title = "{Changes to the Rand MH Message Handling System: - MH.6}", - author = mtr, - organization= nrtc, - month = nov, - year = 1985 -} - -@manual{MH6.4, - title = "{Changes to the Rand MH Message Handling System: - MH \#6.4 for 4.3BSD UNIX}", - author = mtr, - organization= nrtc, - month = feb, - year = 1986 -} - -@inproceedings{MMDF, - author = "David H. Crocker and E.S. Szurkowski and - David J. Farber", - title = "{An Internetwork Memo Distribution - Facility~---~MMDF}", - booktitle= "{Proceedings, Sixth Data Communications Symposium}", - pages = {18--25}, - month = nov, - year = 1979, - note = {Asilomar} -} - -@inproceedings{MMDFII, - author = "Douglas P. Kingston~III", - title = "{MMDFII: A Technical Review}", - booktitle= {Proceedings, Summer Usenix Conference and Exhibition}, - pages = {32--41}, - month = jun, - year = 1984, - note = {Salt Lake City, Utah} -} - -@misc{PhDTeX, - author = "E. Timothy Morgan", - title = "{A Dissertation Style for \AmSTeX{}}", - month = sep, - year = 1984, - note = {Department of Information and Computer Science, - University of California, Irvine} -} - -@techreport{PIC, - author = "Brian W. Kernighan", - title = "{PIC --- A Graphics Language for Typesetting User - Manual}", - type = {Computing Science Technical Report}, - number = 85, - institution= {Bell Laboratories}, - address = {Murray Hill, New Jersey}, - month = mar, - year = 1982 -} - -@manual{SendMail, - title = "{SENDMAIL~---~An Internetwork Mail Router}", - author = "Eric Allman", - organization= {Britton-Lee, Inc.}, - address = {Berkeley, California}, - month = jul, - year = 1983 -} - -@manual{Slides, - title = "{Using \SLiTeX{} to Make Slides at NRTC}", - author = mtr, - organization= nrtc, - month = apr, - year = 1986 -} - -@book{TeXbook, - author = "Donald E. Knuth", - title = "{The \TeX{}book}", - publisher= {Addison-Wesley}, - address = {Reading, Massachusetts}, - year = 1983 -} - -@techreport{TeX.Roff, - author = "Michael Urban", - title = "{A Guide to \TeX{} for the Troff User}", - institution= {TRW Software Productivity Project}, - month = oct, - year = 1984 -} - -@misc{TeX.Trip, - author = "Donald E. Knuth", - title = "{A Test File for \TeX{}}", - month = jul, - year = 1983, - note = {Version 0.999} -} - -@manual{UCI.map, - title = "{The UCI RoadMap}", - author = mtr, - organization= cis, - address = udel, - month = oct, - year = 1984 -} - -@article{WEB.TUT, - author = "Donald E. Knuth", - title = "{Literate Programming}", - journal = {The Computer Journal}, - year = 1983 -} - -@misc{WEB.USR, - author = "Donald E. Knuth", - title = "{WEB USER MANUAL}", - year = 1983 -} diff --git a/docs/historical/mh6.5/sfwmac.sty b/docs/historical/mh6.5/sfwmac.sty deleted file mode 100644 index fe0cb235..00000000 --- a/docs/historical/mh6.5/sfwmac.sty +++ /dev/null @@ -1,66 +0,0 @@ -% LaTeX support for writing UNIX-style documentation - - -% UNIX-style references - -\def\sfwFILfont{\sl} - -\def\@egaux#1#2#3{% - \def#1##1{% - #2\begingroup \tt \let\do=\@makeother \dospecials - \def\@tempa####1##1{####1\endgroup#3}\@tempa - }% -} - -\def\pgm#1{\mbox{\it#1}\index{#1}} % programs -\def\xpgm#1#2{\mbox{\it#1}\index{\noexpand\noexpand\noexpand#2{}}} -\def\man#1(#2){\xpgm{#1\/}{#1}(#2)} % manual entries -\@egaux\arg{`{}}{'{}} % arguments to programs -\@egaux\switch{`{}-}{'{}} % switches to programs -\def\file#1{\mbox{\sfwFILfont#1}} % filename - - -% Commonly used software systems - -\def\sfwPGMfont{\sf} - -\def\@sfwdef#1#2{\@sfwaux{#1/}{#2}} -\def\@sfwaux#1#2{\def#1{\mbox{#2}\index{\noexpand\noexpand\noexpand#1{}}}} - -\@sfwdef\EMACS{\sfwPGMfont EMACS} -\@sfwdef\INFO{\sfwPGMfont INFO} -\@sfwdef\MLisp{\sfwPGMfont MLisp} - -\@sfwdef\MH{\sfwPGMfont MH} -\def\mh#1{\mbox{\sfwPGMfont mh.#1}\index{mh.#1}} -\@sfwdef\Mail{\file{Mail/}} -\@sfwdef\context{\file{context}} -\@sfwdef\profile{\file{.mh\_profile}} -\@sfwdef\sequences{\file{.mh\_sequences}} -\def\whatnow/{\verb*"What now?"\index{whatnow}} - -\@sfwdef\MMDF{\sfwPGMfont MMDF} -\@sfwdef\MMDFI{\sfwPGMfont MMDF-I} -\@sfwdef\MMDFII{\sfwPGMfont MMDF-II} - -\@sfwdef\SendMail{\sfwPGMfont SendMail} -\@sfwdef\UUCP{\sfwPGMfont UUCP} - -\def\AmS{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em$\cal S$} -\@sfwaux\AmSTeX{\rm \AmS-\TeX} - -\@sfwaux\PhDTeX{\rm P\kern-.05em{\sc h\kern-.025em D}\kern-0.08em\TeX} - -\@sfwaux\LaTeX{\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em\TeX} -\@sfwaux\BibTeX{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em\TeX} -\@sfwaux\SLiTeX{\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em\TeX} - -\@sfwaux\NRTeX{\rm NR-\TeX} - -\@sfwdef\ROFF{\sfwPGMfont ROFF} - -\@sfwdef\SUMEX{\sfwPGMfont SUMEX} - -\@sfwdef\WEB{\sfwPGMfont WEB} - -\@sfwdef\TTYD{\sfwPGMfont TTYD} diff --git a/docs/historical/mh6.5/trademark.tex b/docs/historical/mh6.5/trademark.tex deleted file mode 100644 index 07dccd54..00000000 --- a/docs/historical/mh6.5/trademark.tex +++ /dev/null @@ -1,59 +0,0 @@ -% Trademarks... - -\def\gobble#1{} -\def\tradeORGfont{\sc} % used for organizations (e.g., ACM) -\def\tradeNAMfont{\sf} % used for names (e.g., Ada) - -\def\tradeorg#1{% - \tradeaux{#1}{\expandafter\gobble\string#1}\empty\tradeORGfont -} -\def\tradename#1#2#3{\tradeaux{#1}{#2}{#3}\tradeNAMfont} -\def\trademark#1#2{% - \tradeaux{#1}{\expandafter\gobble\string#1}{#2}\tradeNAMfont -} - -\def\tradeaux#1#2#3#4{% - \def#1/{\relax}% % in case #3 references #1 - \setbox0=\hbox{#3}% % when we make the \hbox - \ifdim\wd0>0pt - \gdef#1/{% - \tradeaux{#1}{#2}\empty{#4}% - #1/\footnote{#1/ is a trademark of #3.}% - }% - \else - \gdef#1/{{#4#2}}% - \fi -} - -\tradeorg\acm -\tradeorg\ansi -\tradename\Ada{Ada} - {the Department of Defense (\Ada/ Joint Program Office)} -\tradeorg\bsd -\tradeorg\ccitt -\tradename\cms{CMS} {International Business Machines, Incorporated} -\tradename\cpm{CP/M} {Digital Research Corporation} -\tradename\decnet{DECnet} {Digital Equipment Corporation} -\tradeorg\dod -\tradename\ethernet{Ethernet} {the Xerox Corporation} -\tradename\eunice{Eunice} \empty -\tradeorg\ieee -\tradename\lattice{Lattice} {Lattice, Incorporated} -\tradename\locus{Locus} {Locus Computing Corporation} -\def\microvax/{$\mu$\vax/} -\def\microvms/{$\mu$\vms/} -\tradeorg\milstd -\tradename\msdos{MS-DOS} {Microsoft Corporation} -\tradename\pcinterface{PC-Interface}% - {Locus Computing Corporation} -\tradename\pdp{PDP} {Digital Equipment Corporation} -\tradename{\tops20}{Tops20} {Digital Equipment Corporation} -\tradename\trustedmail{Trusted\ Mail}% - {Trusted Technologies, Incorporated} -\tradename\ultrix{ULTRIX} {Digital Equipment Corporation} -\tradename\unibus{UNIBUS} {Digital Equipment Corporation} -\tradename\unix{UNIX} {AT\&T Bell Laboratories} -\tradename\vax{VAX} {Digital Equipment Corporation} -\tradename\vm{VM} {International Business Machines, Incorporated} -\tradename\vms{VMS} {Digital Equipment Corporation} -\tradename\xenix{Xenix} {Microsoft Corporation} diff --git a/docs/historical/mh6.5/version.sh b/docs/historical/mh6.5/version.sh deleted file mode 100644 index 1b473ee9..00000000 --- a/docs/historical/mh6.5/version.sh +++ /dev/null @@ -1,19 +0,0 @@ -if [ "x$1" = x ]; then echo 'usage: version.sh top-level-file' 1>&2; exit 1; fi - -if [ ! -r $1.major ]; then - echo 1 > $1.major - rm -f $1.minor -fi -if [ ! -r $1.minor ]; then echo 0 > $1.minor; fi - -echo '\begingroup' > $1.vrsn -echo ' \catcode`\#=12' >> $1.vrsn - -echo `cat $1.major $1.minor` | \ -awk ' { major = $1; minor = $2 + 1}\ -END { printf " \\gdef\\versiontag/{#%d.%d}%%\n", major, minor >> "'$1.vrsn'"; \ - printf "%d\n", minor > "'$1.minor'"; }' - -echo ' \gdef\versiondate/{'`date`'}%' >> $1.vrsn -echo '\endgroup' >> $1.vrsn -echo '\typeout{Version \versiontag/ of \versiondate/}' >> $1.vrsn diff --git a/docs/historical/mh6/MHCHANGES b/docs/historical/mh6/MHCHANGES deleted file mode 100644 index 7069fdac..00000000 --- a/docs/historical/mh6/MHCHANGES +++ /dev/null @@ -1,1773 +0,0 @@ - MHCHANGES from mh.5 to mh.6 - - -Tue Jan 8 13:54:13 1985 /mtr (agent: Marshall Rose) - - MH.5 is finished, finally. - - -Sat Jan 26 09:05:52 1985 /mtr (agent: Marshall Rose) - - -- Fixes for MHMTS configuration -- - conf/makefiles/uip: shouldn't build rcvdist on an MHMTS system - conf/doc/mhook.rf: ditto - conf/config/mts.c, mhmts/netmail.c, mts/mts.h, uip/rmail.c: - some typos in the declarations of global MTS variables that - are MHMTS specific - mf/mmuu.c: addr_convert() conflicted with routine of same name - in uumm.c - uip/news.c: looking in the wrong place for on 4.2BSD - systems - - -Sat Jan 26 09:08:43 1985 /mtr (agent: Marshall Rose) - - uip/{inc,post}.c: changes for #ifdef TMA; this stuff is still - under non-disclosure (not the MH code, just the -ltma library - which doesn't come with MH) - - -Sat Jan 26 09:38:08 1985 /mtr (agent: Marshall Rose) - - tws/dtime.c: #define dysize(), since could be a macro in ctime.c - (thanks, Fred) - - -Sat Jan 26 09:12:27 1985 /mtr (agent: Marshall Rose) - - MH #5.310[UCI] (uci-750a) released to MH-Workers - - -Sun Jan 27 17:41:03 1985 /mtr (agent: Marshall Rose) - - sendmts/smail.c, uip/post.c: with -DSMTP, keep one SMTP connection - open, instead of starting a new one for each transaction - othersupport/pop/{Makefile,{popd,popser,inc,popsbr}.c}: support - "rpop" under #ifdef RPOP - othersupport/pop/client.c: remove - conf/{config/mts.c,tailor/READ-ME,makefiles/sendmts}, mts/mts.h, - sendmts/{smail,client}.c: support new server search list - facility used by both -DSMTP and -DPOP - - -Sun Jan 27 18:42:49 1985 /mtr (agent: Marshall Rose) - - conf/makefiles/mts: dependency screw-up on mts.o - - -Tue Feb 12 19:33:14 1985 /mtr (agent: Marshall Rose) - - uip/mhlsbr.c: clear_screen() logic between messages botched - - -Mon Feb 18 12:53:50 1985 /mtr (agent: Marshall Rose) - - conf/doc/send.rf, uip/send.c: de-implement ~/.signature support - - -Wed Feb 20 20:40:14 1985 /mtr (agent: Marshall Rose) - - uip/inc.c: fix suggested by John Dilley at Purdue, inc now ignore - signals if it's going to zero the maildrop. - - -Wed Feb 20 20:48:12 1985 /mtr (agent: Marshall Rose) - - sbr/adios.c: save errno prior to doing fancy perror stuff - - -Fri Mar 1 19:48:53 1985 /mtr (agent: Marshall Rose) - - conf/config/config.c: if MORE is defined, used that instead of - /usr/ucb/more. The #ifdef ALTOS dependency is removed. - ALTOS users should use options MORE='"/usr/bin/more"', - just like users of the Dual. - conf/examples/READ-ME: document same - - -Fri Mar 1 19:56:43 1985 /mtr (agent: Marshall Rose) - - conf/config/mts.c: for the DUAL, you can't link to a file that you - can't read, unbelievable, eh?, so change the creat (foo, 0000) - to creat (foo, 0400). Also, fix up some botched args to a - sprintf() call. - - -Fri Mar 1 19:59:32 1985 /mtr (agent: Marshall Rose) - - uip/trmsbr.c: forgot to make a termcap buffer TXTSIZ'd instead - of BUFSIZ'd. - - -Sat Mar 1 20:21:17 1985 /mtr (agent: Marshall Rose) - - MH #5.321[UCI] (uci-750a) released to MH-Workers - - -Wed Mar 6 18:08:11 1985 /mtr (agent: Marshall Rose) - - uip/{dropsbr,packf,post,slocal}.c: fix to maildrop mapping bug - with MHMTS and local delivery in post, and SENDMTS and local - delivery in slocal - -Wed Mar 6 18:19:46 1985 /mtr (agent: Marshall Rose) - - TODO, config/addrsbr.h, sendmts/smail.c, mf/mf.{c,h}, - uip/{addrsbr,ap,post,rcvdist,sbboards}.c: handle 822-style - routing - - -Wed Mar 6 18:59:22 1985 /mtr (agent: Marshall Rose) - - -- Fixes from Robert Elz -- - sbr/makedir.c: use mkdir() under #ifdef BSD42 - uip/rmf.c: use rmdir() under #ifdef BSD42 - - -Sat Mar 9 15:36:13 1985 /mtr (agent: Marshall Rose) - - bboards/mmdf/mmdf.{1,2}/bboards/bb_wtmail.c, uip/sbboards.c: - fix minor bug requiring nearly major re-write!!! - - -Sat Mar 9 15:54:40 1985 /mtr (agent: Marshall Rose) - - uip/dropsbr.c: fix bug when fixing stomped maildrop. - - -Tue Mar 12 18:07:44 1985 /mtr (agent: Marshall Rose) - - othersupport/pop/pop.txt: a few minor corrections to typos. - - -Wed Mar 13 22:01:37 1985 /mtr (agent: Marshall Rose) - - -- Fixes suggested by Phyllis Kantar -- - uip/{comp,dist,forw,repl}.c: fix quit -delete logic - conf/doc/{comp,mh-chart}.rf: document "-file file" switch - uip/send.c: "send -help" should done (1) for comp, et. al. - uip/send.c: typo "tempoary" - conf/doc/{send,whom}.rf: Profile Components forgot Draft-Folder - uip/ali.c: always load system aliases - conf/doc/{MH,comp,dist,forw,mhook,repl,send,show,mh-alias,mh-mail, - mh-profile,mhl,post}.rf: typo fixes - conf/doc/send.rf, uip/send.c: -forward now the default, also - don't gripe about "show -draft file" - - -Wed Mar 13 22:24:07 1985 /mtr (agent: Marshall Rose) - - uip/send.c: fix "use xxx logic" - uip/msh.c: a NULL vs. "" typo - - -Thu Mar 14 22:41:37 1985 /mtr (agent: Marshall Rose) - - -- Fixes suggested by John Dilley -- - conf/{config/mts.c,tailor/READ-ME}: add new mtstailor variables - localname, systemname, and uucpchan - mts/mts.h, conf/{mh-gen.8,config/{mts.c,mtstailor},tailor/READ-ME}: - add new mtstailor variable lockstyle to control style of locking - sbr/m_getfld.c: catch the UNIX "from user" line - uip/scansbr.c: make use of the UNIX "from user" line - uip/addrsbr.c: more #ifdef DUMB support - uip/inc.c: minor bug in inc w.r.t. closing locked file - uip/post.c: more #ifdef DUMB support - uip/replsbr.c: support Return-Path: for defaulting host names - as a last resort - - -Fri Mar 15 11:45:00 1985 /mtr (agent: Marshall Rose) - - othersupport/emh/READ-ME: new file - - -Fri Mar 15 23:05:43 1985 /mtr (agent: Marshall Rose) - - bbsupport/bbexp.c: fix string botch for command to popen. - also allow extra arguments to indicate aging period. - - -Fri Mar 15 23:21:29 1985 /mtr (agent: Marshall Rose) - - sbr/printsw.c: compress output of printed switches - sbr/m_getdefs.c: let $MHCONTEXT override context variable - sbr/m_{getdefs,gmsg,sync}.c, conf/doc/mh-profile.rf: let the profile - entry "mh-sequences" override .mh_sequences - sbr/m_seq.c: optimization - - -Sat Mar 16 00:28:01 1985 /mtr (agent: Marshall Rose) - - uip/{inc,msh,rcvtty,scan,scansbr}.c: clean up handling of - inc -silent - sbr/{llib-lmh,m_send.c}, uip/{annosbr,comp,dist,forw,repl}.c: move - annotations into send - conf/makefiles/uip, uip/{send,post}.c: ditto - conf/doc/{dist,forw,repl}.rf: ditto - uip/anno.c: forgot to check (mp -> msgstats[msgnum] & SELECTED) - - -Sat Mar 16 01:38:06 1985 /mtr (agent: Marshall Rose) - - conf/config/mts.c: add a few calls to mts_init ("mts") at - strategic places - - -Sat Mar 16 12:23:37 1985 /mtr (agent: Marshall Rose) - - uip/{mark,msh}.c: don't set previous-sequence to make debugging - easier - - -Sat Mar 16 12:49:48 1985 /mtr (agent: Marshall Rose) - - Makefile: simply Makefile using sh, also make DESTDIR work - conf/makefiles/othersupport: simplify Makefile - - -Tue Mar 19 14:17:30 1985 /mtr (agent: Marshall Rose) - - othersupport/mtrenv/bin/{distf,mpick,packit}: updates - - -Tue Mar 19 17:31:14 1985 /mtr (agent: Marshall Rose) - - conf/doc/{ap,mh-chart}.rf, uip/ap.c: accept -help switch - - -Tue Mar 19 18:16:33 1985 /mtr (agent: Marshall Rose) - - conf/doc/msgchk.rf: new file - conf/{doc/{mh,mh-chart,MH}.rf,makefiles/doc}: update for msgchk - - -Thu Mar 21 08:45:11 1985 /mtr (agent: Marshall Rose) - - sendmts/smail.c: fix logic error in sm_end(); MMDF-I has this - problem, MMDF-II might! - - -Sat Mar 23 12:48:30 1985 /mtr (agent: Marshall Rose) - - -- Support the WhatNow shell -- - conf/makefiles/{sbr,uip}: updates for all of this - uip/{comp,dist,forw,repl}.c: remove What now? code, - add -whatnow program, -nowhatnow - sbr/m_whatnow.c: new module - conf/config/config.c,config/mh.h,sbr/m_getdefs.c: new variable - whatnowproc - sbr/llib-lmh: update - uip/whatnow.c: new program, the first WhatNow shell - conf/doc/{mh-chart,whom}.rf, uip/whom.c: upgrade to take draftfolder - arguments - sbr/putenv.c: update for above - sbr/m_send.c: undo previous edits, m_whatnow() takes care of it - uip/distsbr.c: new module for dist-style support - uip/{send,whom}.c: call distout() in distsbr.c - conf/doc/whatnow.rf: new file - conf/doc/{MH,comp,dist,forw,mh,mh-{chart,profile},repl}.rf: updates - conf/doc/template: fix - - -Sun Mar 24 18:32:47 1985 /mtr (agent: Marshall Rose) - - sbr/m_draft.c, - uip/{comp,dist,forw,refile,repl,send,show,whatnow,whom}.c: have - -nodraftfolder override "Draft-Folder:" profile entry - - -Mon Mar 25 18:06:48 1985 /mtr (agent: Marshall Rose) - - mf/mf.c: avoid (incorrectly) recognizing " at " for "@" by using a - heuristic suggested by JSol. - - -Tue Mar 26 18:02:52 1985 /mtr (agent: Marshall Rose) - - conf/doc/repl.rf: document bug in replcomps - - -Tue Mar 26 18:32:49 1985 /mtr (agent: Marshall Rose) - - conf/{config/mts.c,tailor/READ-ME}, config/aliasbr.h, mts/mts.h, - uip/aliasbr.c: make "*" logic mts-tailorable (ugh), you get - to choose highest non-user uid and non-user shell - - -Wed Apr 3 23:52:13 1985 /mtr (agent: Marshall Rose) - - sendmts/smail.c: comment out an extra RSET for UCI's losing - MMDF-I SMTP server - - -Wed Apr 3 23:53:12 1985 /mtr (agent: Marshall Rose) - - ohtersupport/mtrenv/bin/whatnow: new file - - -Sat Apr 6 16:17:23 1985 /mtr (agent: Marshall Rose) - - MH #5.348[UCI] (uci-750a) released to MH-Workers - - -Fri Apr 19 18:27:16 1985 /mtr (agent: Marshall Rose) - - conf/{config/mts.c,tailor/READ-ME}, mts/mts.h, uip/inc.c: - support the new MTS variable "pophost" - - -Fri Apr 19 18:28:44 1985 /mtr (agent: Marshall Rose) - - bboards/bboards.h, uip/bbc.c: support BB_INVIS for "hidden" - BBoards in -topic - uip/bbc.c: catch a long name that got past us - uip/bbc.c: fix -topics logic when BBoards given - - -Fri Apr 19 18:32:13 1985 /mtr (agent: Marshall Rose) - - conf/doc/MH.rf, sbr/m_send.c: de-implement "push" in whatnow - having send look for profile-entry of "push" rather than "send" - to confusing to the user "community" - - -Fri Apr 19 19:13:44 1985 /mtr (agent: Marshall Rose) - - uip/post.c: more #ifdef DUMB madness, for local addresses, - if no host portion given, then don't give it to sm_wadr() - uip/post.c: back #ifdef DUMB off a bit in From: for MMDFMTS - - -Fri Apr 19 19:23:39 1985 /mtr (agent: Marshall Rose) - - uip/whatnow.c: if edit fails, it's time to go away - sbr/m_edit.c: minor cosmetic change - - -Fri Apr 19 19:44:25 1985 /mtr (agent: Marshall Rose) - - uip/send.c: on annotations, if push'd avoid getting upset - if message to annotate isn't there - uip/send.c: fix "typo" for r1bindex () - uip/send.c: put ~/.signature support back in under #ifdef UCI - uip/send.c: use mktemp() instead of bogus makename! - uip/send.c: fix screwy interaction between msh, dist, whatnow, - and send (oh no!) - - -Sat Apr 20 14:46:10 1985 /mtr (agent: Marshall Rose) - - sbr/m_send.c, uip/whatnow.c: on "push", let send do push() instead - of whatnow - - -Wed Apr 24 22:44:30 1985 /mtr (agent: Marshall Rose) - - sbr/m_whatnow.c, uip/{dist,forw,repl}.c: fix obscure "@" bug. - - -Wed Apr 24 22:45:39 1985 /mtr (agent: Marshall Rose) - - conf/doc/MH.rf: just a few more fixes... - - -Thu May 2 21:13:03 1985 /mtr (agent: Marshall Rose) - - uip/sbboards.c: fdopen() called with wrong arg! - - -Thu May 2 21:13:32 1985 /mtr (agent: Marshall Rose) - - uip/post.c: a few more back-offs with #ifdef DUMB... - - -Thu May 2 21:13:32 1985 /mtr (agent: Marshall Rose) - - conf/makefiles/uip: make whatnow chmod +t'd - - -Thu May 2 21:14:56 1985 /mtr (agent: Marshall Rose) - - MH #5.360[UCI] (uci-750a) released to MH-Workers - - -Tue May 21 21:29:18 1985 /mtr - - Begin work on research-version of MH (#5.380[NRTC]). This version - won't be sent out to the MH-Workers list, so I can do some power - coding for a change. - - -- WHATNOW changes -- - - uip/{refile,send,show,whom}.c: #ifdef WHATNOW experimental code - sbr/m_whatnow.c, uip/{whatnow,whatnowsbr}.c: default whatnow is - a built-in for comp, et. al. - sbr/{m_{edit,send},showhom}.c: removed since whatnowsbr has 'em - sbr/showfile.c: likewise, showhead function removed - - - -- POP changes -- - - conf/doc/inc.rf, uip/inc.c: pop now lives in inc - uip/spop.c: link to sbboards.c, the POP mailer for SendMail - popsupport/: new directory from the ashes of - othersupport/popsupport/, containing many new programs, files, - and documentation - bboards/{bboards.h,getbbent.c}: new functions to support - popsupport/mmdfII/: the POP channel for MMDF-II, linked to the - BBoards channel, as appropriate - conf/doc/msgchk.rf, mts/msgchk.c: support POP - - - -- Bug Fixes -- - - uip/post.c: for path code, fixed a couple of dumb typos. - uip/replsbr.c: if -noformat, don't worry about no addresses - uip/bbc.c: another couple of nasty bugs fixed - sendmts/smail.c: don't send HELO if talking to SendMail on the - local host - conf/doc/{MH,repl,forw,comp,dist,show,mh,mh-chart,whom}.rf: bug - fixes - - -- Configuration and Clean-up -- - - conf/mhconfig.c: support new options: pop, chown, remove - conf/makefiles/*: more chmods where appropriate - config/config.c, sbr/help.c: include compile-time options in help - listing. - sbr/m_backup.c,uip/forw.c: remove makename in favor of mktemp - sbr/pr_array.c: removed, since no one was using it - config/mh.h, sbr/llib-lmh: update for all this - othersupport/patch/: the latest version - - -Tue May 21 22:33:58 1985 /mtr - - uip/scansbr.c: when copying characters to the scan listing, - know about underlining conventions - - -Wed May 22 10:16:17 1985 /mtr - - sbr/m_getfld.c: Eom() was botching gathering the UNIX from line - (fix from Matt Crawford ) - sendmts/smail.c: sm_end(NOTOK) was clobbering sm_reply - - -Wed May 22 15:29:25 1985 /mtr - - popsupport/popser.c: if maildrop doesn't exist, note it and - continue - conf/doc/bbc.rf, uip/bbc.c: add -user switch to help POP debugging - bboards/getbbent.c: have getbberr() return useful info for - setbbfile (), setbbinfo (), and setbbent () - popsupport/{popaka,popser,popwrd}.c, uip/{bbc,spop}.c: take advantage - of getbberr() - - -Wed May 22 19:49:43 1985 /mtr - - Makefile, config/mh.h, conf/makefiles/*, bboards/getbbent.c, - */llib-l*, tws/{dtime,dtimep}.c: start the linting process, - lint everything except the uip/ directory - sendmts/smail.c, uip/trmsbr.c: move discard to sbr/ library - mf/mf.c: lint fixes - sbr/{getans,m_{gmsg,setcur},refile,showfile}.c: lint fixes - sbr/{putenv,sprintb}.c: #include mh.h - sbr/*: VOID -> (void) - bbsupport/bb{aka,exp,tar}.c: lint fixes - - -Thu May 23 09:06:32 1985 /mtr - - conf/makefiles/{mts,uip}, uip/msgchk.c: moved from mts/ - -Thu May 23 22:06:25 1985 /mtr - - conf/makfiles/uip,uip/*.c: next step in the lint process - config/mh.h, sbr/llib-lmh, uip/rmf.c: move remdir() to sbr/makedir.c - - -Mon May 27 11:33:32 1985 /mtr - - config/mh.h, sbr/{closefds,m_getdefs}.c: #ifdef OVERHEAD experimental - code - - -Mon May 27 17:05:18 1985 /mtr - - tws/dp.c: move to uip/ - uip/formatsbr.c: new module - config/scansbr.h: define stuff for formatsbr - - -Mon May 27 21:45:23 1985 /mtr - - uip/{ap,addrsbr}.c: upgrade ap to use formatsbr; required a new - param to getm(), so modules which call getm() got changed - as well - othersupport/rcvtrip/rcvtrip: upgrade - - -Tue May 28 19:45:36 1985 /mtr - - config/scansbr.h,uip/{inc,msh,rcvtty,scan,scansbr}.c: bite the - bullet and have scansbr use a format string - uip/{inc,scan}.c: no more -[no]numdate, -[no]size, -[no]time - and use -format string and -width columns instead - - -Wed May 29 14:53:33 1985 /mtr - - othersupport/mtrenv/*: update - - -Wed May 29 16:38:49 1985 /mtr - - Makefile, conf/makefiles/*: support depend. N.B.: This is for - DEVELOPMENT WORK ONLY. "make depend" runs unifdef because some - #include files are configuration specific. Sadly, unifdef - isn't on all systems (it originated at Rand and migrated to - 4.2BSD). As a result, unless you have unifdef, don't run make - depend. The dependencies listed in the conf/makefiles/* files - are "generic". - - -Fri May 31 22:19:15 1985 /mtr - - uip/replsbr.c: bite the bullet and have repl use the format string - routines as well - - -Fri May 31 23:33:59 1985 /mtr - - conf/doc/*.rf: more doc fixes; document WHATNOW, OVERHEAD - sbr/m_getdefs.c: more OVERHEAD code to optimize MH subforks - - -Sat Jun 1 01:35:06 1985 /mtr - - conf/doc/mhook.rf, uip/rcv*.c: account for MMDF-II change regarding - rcvmail hooks and maildelivery(5) - - -Sat Jun 1 11:18:06 1985 /mtr - - mf/mf.c, uip/*sbr.c: more register declarations - - -Sat Jun 1 14:45:25 1985 /mtr - - uip/{pick,picksbr,msh}.c: bite the bullet and have pick allow - complex booleans - conf/doc/{mh-chart,pick}.rf: ditto - -Sun Jun 2 14:07:46 1985 /mtr - - uip/whatnowsbr.c: don't say the draft's left around if it isn't - (suggested by Mike O'Brien) - uip/whatnowsbr.c: return value from non-initial calls to m_edit() - not handled right (pointed out by Richard Johnson) - sbr/m_getfld.c: be a bit smarter when recognizing that idiotic - "From " line from silly UNIX-style maildrops - - -Sun Jun 2 18:36:19 1985 /mtr - - conf/doc/*.rf: more clean-up - uip/ali.c: change help messages a bit, and add -[no]normalize - switches - conf/doc/mh-tailor.rf: new file - config/mh.h,uip/{post,repl}.c: move definition of OUTPUTLINELEN - to mh.h so sbr/help.c can use it - sbr/help.c: smarter output routine for options - - -Mon Jun 3 11:28:46 1985 /mtr - - TODO: remove since there's nothing worth left doing in it! - - -Mon Jun 3 14:54:30 1985 /mtr - - othersupport/usenix: new directory containing the MH paper - presented at the 1985 Summer Usenix Conference - - -Mon Jun 3 22:15:18 1985 /mtr - - conf/doc/packd.rf, uip/packd.c: de-implement, essentially useless - under 4.2BSD - - -Tue Jun 4 13:30:27 1985 /mtr - - uip/trmsbr.c: optimize a bit, the ontty test in clear_screen () - isn't needed - - -Tue Jun 4 20:00:32 1985 /mtr - - -- Suggested by Dave Yost -- - conf/doc/tmac.h: use ".nf" after ".SH" inside various macros - (since ".SH" tends to set ".fi") - sbr/m_{gmsg,sync}.c: some .mh_sequences optimizations for hm - conf/config/config.c: support #ifdef NOMHSEQ - - -Thu Jun 6 23:03:09 1985 /mtr - - uip/{format,mhl}sbr.c: add some definitions for sprintb() - bboards/bboards.h: define BBITS there instead of uip/bbc.c - - -Sun Jun 9 14:44:36 1985 /mtr - - conf/makefiles/uip,uip/show.c: make show/next/prev one program - uip/{show,next,prev}hdr.c: remove as a result of above - conf/doc/{next,prev}.rf: update - - -Sun Jun 9 16:37:40 1985 /mtr - - uip/dropsbr.c, uip/sbboards.c: .cnt mechanism broken, - introduce new routine mbx_openX() in dropsbr.c and use that - instead of mbx_open when opening an .cnt file - - - -Sun Jun 16 10:21:33 1985 /mtr - - uip/{ap,dp,{repl,scan}sbr}.c: the old echo controversy raises it's - ugly head: suppose we have a line in a replcomps file which is - entirely in a %<...%> conditional and the conditional is false. - In that case, we still get a blank line. This is very BAD if it - occurs in the headers. Two solutions possible: - 1. If a call to FSprintf() returns a empty string, don't - put out a \n. - 2. In new_fs, put the \n's in and just return one big - string instead of an array of strings. - Option [2] was implemented initially because it lets conditionals - span multiple lines in the file. In order to keep the format files - from looking too complicated, EOL was ignored in format files, - \n's should be embedded where appropriate. A single format - string argument is considered to have an implicit \n. This is - inconsistent, but it keeps the format files readable. Option [2] - was discarded though since it required a \n at the end of each - line in the format file if there was no conditional stuff - there. So, option [1] got implemented even though it doesn't - allow conditionals to be multi-line (which is okay, since you - can use \n in a line). - - -Thu Jun 20 19:55:23 1985 /mtr - - -- Performance Enhancements from the 4.3BSD folks (by Van Jacobson) -- - config/mh.h: define vfork for systems without it - sbr/{refile,showfile}.c,uip/{replsbr,send,whatnowsbr}.c: replace - fork() with vfork() - config/mh.h: move Van's getfld.h definitions into here - sbr/m_getfld.c: major performance tuning! (use -DRPATHS to get - Return-Path: info from UNIX from: line) - uip/{inc,msh}.c: m_unknown parameter added - uip/trmsbr.c: support for TIOCGWINSZ in 4.3BSD(!!) - uip/scan.c: -[no]reverse under #ifdef BERK (I really HATE this) - also, update context prior to scan, again under #ifdef BERK - uip/scansbr.c: performance enhancements plus inline copy of message - body to output file for inc - uip/mhlsbr.c: under #ifdef BERK pipe output to /usr/ucb/more if - stdoutput is a terminal. - uip/post.c: #ifdef DUMB a bit dumber for Berkeley addrsbr (actually - these changes were made earlier for other reasons) - uip/addrsbr.c: use prescan-like routine in SendMail under #ifdef - BERK, also enable wild-carding. The former probably breaks - the stuff in ap, et. al. - - -Fri Jun 21 13:09:29 1985 /mtr - - uip/addrsbr.c: liked the wild-carding, so even for #ifndef BERK you - get it. Of course in this case, you can wildcard on both the - mbox and the host. It turns out that this is really useful for - people who have many mailboxes and get a lot of munged mail. - - -Mon Jun 24 14:58:25 1985 /mtr - - conf/doc/*.rf: Numerous documentation fixes suggested by Jerry - Sweet. - conf/doc/ADMIN.rf: New document: Administrator's Guide - - -Mon Jun 24 23:31:42 1985 /mtr - - uip/send.c: try to prevent confused annotations. The algorithm - works for dist and repl, but not forw - - -Wed Jun 26 12:36:38 1985 /mtr - - MH #5.457 becomes MH #6.1 in beta - - -Mon Jul 1 06:26:38 1985 /mtr - - -- Suggestions from Bob Desinger -- - config/mh.h, sbr/m_backup.c: locate SBACKUP definition in mh.h - sbr/m_gmsg.c, uip/rmf.c: handle SBACKUP prefix files appropriately, - also, slight optimizations - - -Mon Jul 1 09:18:42 1985 /mtr - - sbr/m_{file,gmsg}.c, uip/{msh,refile,rmm,send}.c: #ifdef notdef the - stuff marking messages as DELETED, since it's not used - - -Mon Jul 1 22:22:49 1985 /mtr - - conf/doc/mhl.rf, uip/mhlsbr.c: remove the #ifdef BERK stuff and - generalize it. If the MH profile entry mhlproc is defined, then - you get the BERK behavior using the mhlproc as the output filter. - Otherwise, you get the old behavior. If this works nice, I'll - make "more" the default mhlproc and set-up config.c, mh.h, and - m_getdefs.c as appropriate (with the documentation mh-profile.rf) - For the moment, I'm using "less" as my mhlproc and it works - fine. - - -Thu Jul 4 08:29:11 1985 /mtr - - conf/doc/ADMIN.rf: put in a word or two about running conflict - conf/makefiles/dist: add rules for .imp files - - -Thu Jul 4 08:38:01 1985 /mtr - - tws/{dtime,dtimep}.c: know about J{D,S}T, also under #ifdef HUJI - generate it if appropriate. (from Danny Braniss) - - -Thu Jul 4 16:00:38 1985 /mtr - - othersupport/mtrenv/mhbox/dp.debug: new file - - -Thu Jul 4 17:36:34 1985 /mtr - - uip/msh.c: "pack" should be called "packf". - - -Sun Jul 7 13:26:28 1985 /mtr - - uip/{addsbr,post,rcvdist,replsbr,sbboards}.c: support #ifdef BANG - conf/examples/READ-ME: ditto - - -Sun Jul 7 13:31:01 1985 /mtr - - othersupport/scripts/: new directory for scripts. First is Bob - Designer's modifications to JLR's append script. - othersupport/mtrenv/bin/append: remove - - -Tue Jul 9 18:59:21 1985 /mtr - - -- Suggested by Thomas Scott Christiansen -- - uip/msh.c: move big Msgs[] structure from auto to static - othersupport/netnews/{.,mhbox}/: new directories - othersupport/netnews/{mh_profile,mhbox/flupcomps} new files - - -Wed Jul 10 09:04:04 1985 /mtr - - uip/send.c: typo defining LISTDSW - - -Wed Jul 10 12:07:42 1985 /mtr - - uip/addrsbr.c: another de-reference of NULL fixed - - -Wed Jul 10 14:08:39 1985 /mtr - - conf/makefiles/popsupport,popsupport/popd.{c,8c}: a bit of clean-up - - -Wed Jul 10 14:48:05 1985 /mtr - - uip/mhlsbr.c: don't SIG_DFL signals on start-up; if run from msh, - this loses big, if not run from msh, then signals are SIG_DFL - anyway... - - -Wed Jul 10 20:40:53 1985 /mtr - - conf/config/config.c,config/mh.h,sbr/m_getdefs.c,uip/mhlsbr.c: - mhl's choice of mhlproc was confusing to forw. Add new variable - moreproc to fix the problem. Note as a result, the old BERK - behavior is the default, you have to turn off moreproc in your - .mh_profile if you don't want mhl to use it - - -Thu Jul 11 12:34:15 1985 /mtr - - conf/makefiles/uip: oops, forgot a @END: SENDMTS inside an @BEGIN: POP - - -Fri Jul 12 10:32:40 1985 /mtr - - config/mh.h,sbr/uleq.c: change strindex() -> stringdex () to avoid - MMDF name conflict - uip/{addrsbr,dropsbr,msh,rcvpack,sbboards}.c: ditto - - -Sun Jul 14 12:54:55 1985 /mtr - - -- Enhancements from John L. Romine -- - uip/mhlsbr.c: minor cleanup - - -Sun Jul 14 13:23:49 1985 /mtr - - tws/dtimep.c: have "BST" mean British Summer Time not - Bering Standard Time - - -Sun Jul 14 13:44:13 1985 /mtr - - othersupport/bboards: version #2.1 as suggested by Jerry Sweet - conf/doc/{ADMIN,mf,mh-{mts,tailor},bb{exp,oards5,tar},pop8}.rf: fixes - suggested by Jerry Sweet - - -Sun Jul 14 18:51:22 1985 /mtr - - uip/formatsbr.c: handle the blank line bug by hacking it (see the - "echo controversy" discussed above). The solution is to insert - a space in truly blank lines... - - -Tue Jul 16 12:41:54 1985 /mtr - - uip/ali.c: forgot to call mts_init() to get "everyone", and "noshell" - - -Wed Jul 17 09:47:19 1985 /mtr - - bboards/mmdf/mmdf.2/bboards/bb_wtmail: change dist_address to - ds_address, dist_log to ds_log - - -Thu Jul 18 15:59:19 1985 /mtr - - conf/mh-gen.8: typo - - -Sun Jul 21 15:36:24 1985 /mtr - - conf/doc/{send,whom,mh-alias}.rf: aliasing hints - conf/doc/{{MH,tmac}.h,template}: support hints section - conf/doc/mh-mts.rf: minor fix - - -Mon Jul 22 16:50:54 1985 /mtr - - uip/picksbr.c: logic for handling "--header value" botched - - -Tue Jul 23 20:30:39 1985 /mtr - - uip/whom.c: pass more switches to post. Since they're ALL secret, - no documentation needed! - - - -Wed Jul 24 14:07:31 1985 /mtr - - conf/mh.h, sbr/m_getfld.c, uip/{msh,{mhl,scan}sbr}.c: fix broken - msh message delimiting behavior and broken mhl behavior under - msh - - -Wed Jul 24 21:01:15 1985 /mtr - - uip/forw.c: -build logic botched - - -Wed Jul 24 23:42:41 1985 /mtr - - uip/addrsbr.c: bug with #ifdef BERK, mp -> m_nohost not getting - set so no aliasing done! - conf/config/mts.c: lockfile name building botched! - - -Thu Jul 25 00:00:00 1985 /mtr - - MH #6.24 enters beta - - -Thu Jul 25 17:00:17 1985 /mtr - - conf/doc/ADMIN.rf, uip/{inc,msgchk}.c: minor re-work POP debug - features - - -Thu Jul 25 21:31:00 1985 /mtr - - conf/doc/pick.rf: finally get documentation right - conf/makefiles/dist: a few more things - - -Fri Jul 26 11:09:35 1985 /mtr - - sendmts/smail.c: slight fix for major bug with #ifdef BERK - - -Sat Jul 27 00:33:39 1985 /mtr - - conf/doc/{mhl,show}.rf: upgrade a bit - conf/makefiles/uip, uip/{mhl,mhlsbr,show}.c: add address/date parsing - on demand - conf/doc/{dp,scan}.rf, uip/formatsbr.c: slight upgrade - support/mhl.{format,forward}: update a bit - - -Sat Jul 27 12:46:12 1985 /mtr - - -- Documentation Fixes from Bob Designer -- - conf/doc/{post,mh-profile,show,send,repl,next,folder}.rf: typos - uip/whatnowsbr.c: back to the old prompt - - -Sat Jul 27 12:55:27 1985 /mtr - - sbr/m_sync: slight adjustment - uip/{addr,format,pick}sbr.c: a bit more debug info - - -Tue Jul 30 21:44:00 1985 /mtr - - -- Suggested by Phyllis Kanter -- - uip/folder.c: fix -fast and -recurse mis-interaction - uip/burst.c: fix non-existant message handling when expanding the - folder - conf/config/config.c: fix comment re: whatnowproc - config/mh.h, sendmts/smail.c: declare a couple of things that - should be in - sbr/m_getdefs.c: don't complain if "context: file" isn't there. - sbr/m_{convert,file,gmsg,name}.c: fix boundary handling of MAXFOLDER - conf/mh-gen.8: say a few words about chown, remove in MH config - file - conf/{config/config.c,examples/READ-ME}: two new options, - FOLDPROT, MSGPROT - conf/{config/config.c,doc/mh-profile.rf}, config/mh.h: add the - "unseen-sequence" - sbr/{m_setcur.c,llib-lmh}, uip/{inc,show}.c: do the UNSEEN business - - -Wed Jul 31 10:44:22 1985 /mtr - - conf/doc/{tmac.h,{ADMIN,MH,bbl,folder,mh-profile,msh,scan,whatnow}.rf}: - documentation fixes - conf/doc/{mhpath,show}.rf: ditto - uip/msh.c: slight typo - - -Thu Aug 1 21:30:36 1985 /mtr - - uip/inc.c: fix conflict between -ms and POP - - -Sun Aug 4 14:23:58 1985 /mtr - - conf/doc/{ADMIN,mh-mts,bboards8}.rf: doc fixes - - -Sun Aug 4 14:23:35 1985 /mtr - - -- Suggested by Phyllis Kanter -- - - conf/doc/*.rf: doc fixes - - -Mon Aug 5 12:29:56 1985 /mtr - - -- From John Romine -- - conf/config/mts.c: do lock structure allocation dynamically - and free up 25K of static data space (which may never even - be referenced!) - - -Mon Aug 5 20:27:12 1985 /mtr - - uip/rcvstore.c, conf/doc/rcvstore.rf: new program from Julian - Onions - conf/{makefiles/uip,doc/{MH,mh,mh-chart,mhook}.rf}: upgrade - - -Mon Aug 5 20:57:47 1985 /mtr - - sbr/m_gmsg.c, uip/{bbl,mhlsbr,post,refile}.c: minor notdef touch-up - conf/doc/inc.rf: slight touch-up - conf/mhconfig.c: support some invocation arguments - uip/sortm.c: alloc structure dynamically - - -Tue Aug 6 17:22:59 1985 /mtr - - -- From John Romine -- - conf/makefiles/mmdf: slight typo - mmdf/LN: better version - conf/{mh-gen.8,mhconfig.c,makefiles/doc}: support two new options - for manual pages: "none" and "gen" - - -Wed Aug 7 21:14:19 1985 /mtr - - uip/mhlsbr.c: m_popen_pid -> m_pid for 7limit - - -Thu Aug 8 00:00:00 1985 /mtr - - MH #6.59 enters beta - - -Mon Aug 12 19:42:28 1985 /mtr - - uip/mhlsbr.c: slight clarification for ontty == NOTTY and -clear - at termination; also, try to get signals right again - - -Wed Aug 14 17:27:41 1985 /mtr - - config/aliasbr.h: optimize structures for ALTOS - uip/aliasbr.c: optimize for ALTOS and UNIX in general - - -Wed Aug 14 21:54:20 1985 /mtr - - conf/config/mts.c, config/aliasbr.h, sbr/{m_getdefs,path}.c, - popsupport/popd.c, uip/{ali,aliasbr,msh,picksbr,post}.c: a couple - more touch-ups - - -Thu Aug 15 11:19:26 1985 /mtr - - uip/inc.c: forgot an #ifdef for POP - - -Thu Aug 15 16:42:26 1985 /mtr - - CMP: shell script to aid Bug-MH in figuring out what's changed - - -Thu Aug 15 16:58:13 1985 /mtr - - conf/doc/{bbleader,bboards,mh-profile,prompter,show}.rf: minor touch-up - - -Fri Aug 16 03:55:21 1985 /mtr - - sbr/m_getfld.c, uip/msh.c: fix trailing newline bug with mhl+no - moreproc - uip/addrsbr.c: slight touch-up - - -Fri Aug 16 04:48:13 1985 /mtr - - conf/{mhconfig.c,mh-gen.8,makefiles/uip}: fix long standing bug - about sbboards, slocal, and spop being installed even for MMDF - configurations - - -Fri Aug 16 05:48:51 1985 /mtr - - mf/{mf.h,{mf,mmuu,umhook,uumm}.c}: change vfgets() to mfgets(), - and slight bug fix in the process - conf/makefiles/sbr, config/mh.h, sbr/llib-lmh: new vfgets() - sbr/vfgets.c: new routine to support virtual-fgets - uip/{alias,format,mhl}sbr.c: call vfgets to handle continuation lines - conf/doc/{ap,dp,mh-alias,mhl,repl,scan}.rf: continuation lines now - supported - support/replcomps - conf/config/mts.c, sbr/m_{draft,getdefs,whatnow}.c, - sendmts/smail.c, tws/dtime.c, - uip/{comp,inc,mark,mhpath,msh,post,rcvstore,refile,send}.c: notdef - cleanup - sendmts/hosts.c, uip/{aliasbr,dropsbr,rcvdist,send}.c: minor cleanup - sbr/{add,m_replace}.c: ditto - uip/mhlsbr.c: minor parenthization for ALTOS - - -Sun Aug 18 20:22:17 1985 /mtr - - uip/{burst,msh,picksbr}.c: augment botch message a bit - - -Mon Aug 19 20:07:50 1985 /mtr - - conf/{mhconfig.c,mh-gen.8}: new config option "bbhome" - conf/config/bboards.{daily,weekly}: moved from bbsupport/ - conf/{config/crontab,doc/{ADMIN,bbc}.rf,makefiles/{bbsupport,uip}}: - support bbhome - conf/examples/nrtc-isc: renamed to nrtc-gremlin - conf/MAKE: modified accordingly - - -Tue Aug 20 11:27:22 1985 /mtr - - othersupport/Mail: new directory, unsupported - - -Tue Aug 20 15:59:46 1985 /mtr - - conf/doc/{ADMIN,pop8,rcvstore}.rf: minor clean-up - - -Tue Aug 20 22:19:18 1985 /mtr - - Makefile,conf/makefiles/{sbr,zotnet}: clean-up make clean a bit - - -Wed Aug 21 11:12:33 1985 /mtr - - conf/{config/config.c,makefiles/{support,uip}}, config/mh.h, - conf/doc/{MH,forw,mh-profile}.rf,uip/forw.c: use formatsbr to do - digestifying - uip/formatsbr.c: fix minor typo - tws/{tws.h,dtime.c}: new routine, twsnow() - mf/uumm.c, tws/dtime.c, uip/{msh,picksbr,scansbr,sortm}.c: use twsnow() - - -Thu Aug 22 20:12:05 1985 /mtr - - uip/{forw,mhlsbr}.c: let mhl know about digest handling so forw - becomes less complicated (mhl already knows about forwarding)! - - -Thu Aug 29 10:52:41 1985 /mtr - - -- Merge in changes for SYS5 -- - conf/examples/READ-ME: all non-sprintf changes under #ifdef SYS5 - conf/{mhconfig.c,config/{config,mts}.c}, sbr/*.c, tws/dtime*.c, - uip/*.c: sprintf() returns an int, so always (void) it - tws/dtime*.c: no ftime() - conf/mhdoc: echo works differently, ridiculous! - config/mh.h: dup2() doesn't exist, so define it - conf/mhconfig.c, uip/post.c: enums might not exist - sbr/discard.c, uip/{prompter,trmsbr}.c: ioctl()'s different - - -Thu Aug 29 15:09:25 1985 /mtr - - uip/{ali,post}.c: load system aliases file last instead of first. - This lets users override system aliases AND rely on - host-specific alias for final resolution! - - -Thu Aug 29 20:13:47 1985 /mtr - - bboards/getbbent.c, tws/dtimep.c: normalize - - -Sun Sep 1 17:12:54 1985 /mtr - - conf/doc/MH.rf: minor typo and change the names of a few chapters - - -Sat Sep 7 16:42:06 1985 /mtr - - conf/config/mts.c, config/mh.h, mf/mf.h: remove dup2() define for - SYS5 and add it as a real routine - conf/doc/{MH,bbleader,burst,forw,mf,mh-profile,scan}.rf: doc fixes - - -Sat Sep 7 17:43:24 1985 /mtr - - uip/msh.c: advise of gap when BBoard reading - - -Sat Sep 7 17:43:53 1985 /mtr - - -- Major Directory Tree Re-Organization -- - papers/: new directory, move TeX stuff from othersupport/ there - conf/{mhconfig.c,makefiles/{othersupport,papers}}: support this - config/*.h, */*.c: move .h files to new directory h/, update .c - files accordingly - h/strings.h: new .h file to define all those string functions once - and for all! - {bboards,mts,mf,tws}/: move under zotnet/ - mts/: new directory - {mhmts,sendmts,mmdf}/: move under mts/ - {support,popsupport,newsupport,bbsupport}: move under support/ - - -Mon Sep 9 19:42:13 1985 /mtr - - conf/doc/{MH,comp,dist,forw,mh-mail,mhl,repl}.rf: better verbatim - mode in roff - zotnet/tws/dtime*.c: more SYS5 cleanup - conf/doc/{ADMIN,MH,mh-mts,popd}.rf: more doc hackery - uip/post.c: remove tmpfil/bccfil when dying() - - -Mon Sep 9 22:12:59 1985 /mtr - - zotnet/bboards/{bboards.h,getbbent.c}: flags for setbbent() - uip/bbc.c, support/{bboards/*,pop/*}.c: use 'em - - -Tue Sep 10 16:23:23 1985 /mtr - - Makefile, conf/Makefile, conf/makefiles/*: implement "make squeaky" - and "make tar" - - -Tue Sep 10 17:47:35 1985 /mtr - - conf/{mhconfig.c,mh-gen.8}: change "uucp" option to "mf" option - conf/{examples,tailor}/READ-ME: remove since mh-gen.8 contains - this information now - - -Wed Sep 11 10:10:33 1985 /mtr - - -- More doc fixes from Phyllis Kantar -- - conf/doc/{comp,dist,mh,mhl,repl,whatnow}.rf: doc fixes - - -Wed Sep 11 11:03:29 1985 /mtr - - conf/makefiles/*, conf/makefiles/*/*: unifdef stuff wasn't working - out, remove it - - -Wed Sep 11 22:02:17 1985 /mtr - - -- Suggested by John A. Dilly -- - mts/sendmail/smail.c: fix bug with intermittant dot being added - during sm_wtxt(); thanks, John! - conf/config/config.c: support ~/.mhrc by allowing libpath() - recognize the CShell ~-construct. This is under #ifdef MHRC - - -Mon Sep 16 20:50:32 1985 /mtr - - miscellany/less: sources to Mark Nudelman's "less" program included - Thanks, Mark! - zotnet/tws/dtime.c: support illegal GreyBook timezone strings - - -Mon Sep 16 20:53:18 1985 /mtr - - -- Fixes from Hokey (mostly SYS5) -- - uip/version.sh: generate version.rf not version.me so it stays - around - conf/doc/{ADMIN,MH}.rf: use same - conf/mhconfig.c: new option "ranlib" for BSD or SYS5 - conf/makefiles/*: use same - - -Mon Sep 16 21:50:01 1985 /mtr - - -- Suggestion from John Shepherd -- - uip/slocal.c: handle idiotic multiple "From " lines - - -Tue Sep 17 09:47:55 1985 /mtr - - uip/addrsbr.c: slight tuning to #ifdef BERK - - -Wed Sep 18 07:49:27 1985 /mtr - - sbr/discard.c: oops, logic was botched for all versions of UNIX! - - -Wed Sep 18 23:23:28 1985 /mtr - - conf/mhconfig.c: oops, toss (void)'s - - -Fri Sep 20 09:48:06 1985 /mtr - - miscellany/mh-e: GNU Emacs front-end to MH from James Larus - - -Fri Sep 20 20:59:19 1985 /mtr - - uip/msh.c: split into h/mshsbr.h, uip/{msh,mshcmds}.c - uip/mshcmds.c: on refile, without -link, mark messages as deleted - - -Fri Sep 20 21:22:55 1985 /mtr - - conf/mhconfig.c: add mandir entry to overrid /usr/man - zotnet/mf/uumm.c: simplify a conditional for the ALTOS - - -Fri Sep 20 22:35:56 1985 /mtr - - uip/msh.c: have "quit" command update msgbox after confirmation if - changed - uip/{mhlsbr,repl}.c: on forwardings/replies force -noclear (HACK) - uip/prompter.c: fold in SYS5 terminal handling better - - -Sat Sep 21 00:12:47 1985 /mtr - - h/vmhsbr.h, uip/{vmh,vmhsbr,vmhtest}.c: experimental new visual - front-end to msh - sbr/*.c: break many aggregate files into smaller ones - - -Sun Sep 22 21:06:21 1985 /mtr - - uip/{msh,mshcmds}.c: interface to vmh - - -Mon Sep 23 04:25:33 1985 /mtr - - uip/show.c: normalize showproc handling; remove -[no]format and - -[no]pr, add -show program and -noshow - - -Mon Sep 23 10:42:18 1985 /mtr - - support/bboards/mmdf*/bboards/bb_wtmail.c: remove bogus ch_host - hackery; use the BBoard file instead! - uip/bbc.c: add -[no]protocol to tell bbc if mshproc knows about - bbc protocol - - -Tue Sep 24 19:18:49 1985 /mtr - - uip/burst.c: make static structure an alloc'd structure - uip/{burst,mshcmd}.c: trim extra trailing newline if present - - -Thu Sep 26 11:42:18 1985 /mtr - - uip/addrsbr.c: change Alternate-Mailboxes: defaulting - - -Tue Oct 1 10:15:24 1985 /mtr - - sbr/m_getdefs.c: set[ug]id() to real [ug]ids prior to exec of - install-mh - uip/install-mh.c: don't need set[ug]ids, also if -auto, don't - ask questions, say what you're going to do and do it! - zotnet/mts/mts.h: remove reference to "../h/strings.h" - conf/config/mts.c,support/bboards/bbaka.c: ask for "../h/strings.h" - mts/{mh/{hosts,netmail},sendmail/{client,hosts,smail},mmdf/hosts}.c: - ditto - zotnet/mf/mf.h: ditto - - -Tue Oct 1 14:31:54 1985 /mtr - - conf/makefiles/doc: oops, version.me -> version.rf - uip/msh.c: oops, zero'd name of BBoard prior to putenv of mhfolder - conf/mhconfig.c: support ldflags for options to ld at beginning - of command - - -Tue Oct 1 22:08:32 1985 /mtr - - h/mh.h, sbr/m_gmsg.c: slight XYZ tuning - - -Wed Oct 2 02:48:02 1985 /mtr - - uip/vmh.c: add less-like interface to command handling - - -Wed Oct 2 10:03:12 1985 /mtr - - -- Pointed out by Bob Designer -- - uip/slocal.c: oops, typo! - - -Wed Oct 2 11:12:52 1985 /mtr - - uip/{burst,mshcmds}.c: oops, another "slight" typo - - -Wed Oct 2 11:31:49 1985 /mtr - - -- Suggested by Dave Yost -- - sbr/m_getdefs.c: avoid a cast (and structure dependencies) by using - a popular C idiom (taught to Dave by Bakul Shah). [This also - makes MH work on the Gould...] - h/mh.h,sbr/m_delete.c: take the opportunity to clean things up a bit - - -Wed Oct 2 21:34:44 1985 /mtr - - uip/vmh.c: a bit more tuning - - -Thu Oct 3 23:43:35 1985 /mtr - - uip/inc.c: change "-ms ms-file" to "-file name" to be more - consistent - uip/inc.c: also, if -notruncate, don't zero POP maildrop! - - -Fri Oct 4 19:36:56 1985 /mtr - - h/mh.h, conf/config/config.c, sbr/m_getdefs.c: make vmhproc a - built-in - uip/vmh.c: ditto, also better help message - - -Fri Oct 4 21:08:26 1985 /mtr - - uip/{comp,dist,forw,repl}.c: -[no]whatnow changed to - -[no]whatnowproc - uip/{next,prev,show}.c: -[no]show changed to -[no]showproc - uip/vmh.c: -[no]visual changed to -[no]vmhproc - uip/rmm.c: Delete-Prog: changed to rmmproc - - -Sat Oct 5 14:20:02 1985 /mtr - - uip/{post,rcvdist}.c: add call to mmdf_init() under #ifdef MMDFII - h/mh.h, *: XYZ becomes the "real thing" - - -Sat Oct 5 17:22:56 1985 /mtr - - -- Suggested by Dave Yost -- - h/mh.h, conf/config/config.c: define globals in config.c, extern - 'em in mh.h - conf/mhconfig.c: rm files prior to creating 'em for CTM - uip/version.sh: ditto - - -Sat Oct 5 23:17:39 1985 /mtr - - Makefile, conf/makefiles/*: fix "make tar" - uip/mshcmds.c: finally track down that mhl pipe problem - Makefile, conf/makefiles/*: clean->unclean,squeaky->clean - - -Sun Oct 6 11:46:11 1985 /mtr - - uip/{folder,scan}.c: context changes ASAP - sbr/remdir.c: clean-up - h/mh.h, uip/{mhlsbr,mhmail,msh,post,prompter}.c: fix up signal - handling when in background - - -Sun Oct 6 20:38:29 1985 /mtr - - uip/msh.c: fseek() too tricky for our own good... - uip/{burst,mshcmds}.c: try to recover from errors more gracefully - (ha!) - - -Wed Oct 9 19:49:04 1985 /mtr - - uip/send.c: fix bogus annotation handling, e.g., - send -push; rmm; folder -pack - uip/{forw,mhlsbr}.c: add extra blank line after final EB so - user can add suffix text with an editor (e.g., prompter) - and not screw-up - conf/doc/burst.rf: warn about text after final EB being lost - with -inplace - - -Sun Oct 13 14:17:10 1985 /mtr - - h/mshsbr.h, uip/{msh,mshcmds,vmh}.c: fix signal handling for - forks under vmh - support/bboards/mmdf*/bboards/ch_bboards.c: remove some logging - info - - -Sun Oct 13 18:17:10 1985 /mtr - - sbr/vfgets.c: oops, minor typo - sbr/m_gmsg.c: re-think alloc strategy a bit - sbr/m_gmsg.c: use #ifdef XYZ experimental code for no limits to - #-messages in a folder! - sbr/m_file.c: move into uip/refile.c - h/folder.h: remove - - -Mon Oct 14 12:03:39 1985 /mtr - - uip/send.c: still more work on annotation logic... - - -Tue Oct 15 17:14:11 1985 /mtr - - h/mh.h, sbr/m_{convert,gmsg,remsg}.c, - uip/{burst,inc,rcvstore,refile}.c: final XYZ check-out, remove - #ifdefs - - -Tue Oct 15 18:52:49 1985 /mtr - - uip/prompter.c: add hidden -[no]body switch - sbr/vfgets.c: slight logic botch - - -Thu Oct 17 16:02:25 1985 /mtr - - uip/msh.c: move pgmwait out of msh and into it's own sbr/ file - h/mh.h, {sbr,uip}/*.c: normalize pidwait stuff - sbr/m_foil.c, uip/{post,send,whom}.c: fix bug in alias mechanism - when following included files - uip/{inc,post,send,whom}.c: normalize switch handling a bit - - -Thu Oct 17 19:41:18 1985 /mtr - - -- Suggested by Dave Yost -- - uip/install-mh.c: new variable, mh_defaults, to default user's - profile - - -Sun Oct 20 13:02:59 1985 /mtr - - uip/rmf.c: add -[no]interactive switch - - -Sun Oct 20 13:03:13 1985 /mtr - - conf/config/bboards.*: fix to work under sh or csh - - -Sun Oct 20 22:11:58 1985 /mtr - - -- Suggested by Hokey for SYS5 -- - conf/mh-gen.8: mention -lndir for SYS5 - sbr/m_gmsg.c: fix stand-alone continue - makefiles: add SHELL=/bin/sh - - -Mon Oct 21 12:26:56 1985 /mtr - - uip/{msh,vmh}.c: some tuning - uip/bbc.c: know about SIGTSTP - - -Mon Oct 21 18:45:29 1985 /mtr - - conf/mh-gen.8: mention gould stuff - conf/doc/*.rf: talk about quoting of arguments - - -Tue Oct 22 21:47:01 1985 /mtr - - uip/bbc.c: don't have -help imply -topics - - -Wed Oct 23 01:34:54 1985 /mtr - - conf/mhconfig.c: change default bbhome to /usr/spool/bboards - support/pop/popser.c: support maildrop mapping - uip/dropsbr.c: some optimizations - support/pop/popsbr.c: link into uip/ directory to simplify - top-level Makefile - - -Wed Oct 23 12:34:04 1985 /mtr - - conf/config/mts.c: two new variables: popbbhost and popbbuser, - under #ifdef BPOP - uip/bbc.c: use same - support/pop/pop.txt: revise remove HEAD in favor of more general - TOP - - -Wed Oct 23 20:46:17 1985 /mtr - - uip/prompter.c: -prepend is the default now - uip/burst.c: -noinplace is the default now - - -Thu Oct 24 21:07:37 1985 /mtr - - conf/config/mts.c: new variable popbblist which, if present, - lists only thoses hosts that can use BBoards over POP - - -Fri Oct 25 08:38:35 1985 /mtr - - support/pop/popser.c, uip/bbc.c: don't recognize bb_aka's in - name lookups - - -Sun Oct 27 17:40:20 1985 /mtr - - zotnet/bboards/{bboards.h,getbbent.c}: make make_lower() integral - uip/vmh.c: avoid ~'s when possible (actually forever owing to pWIN - logic!) - uip/vmh.c: make STATUS window be reverse-video, make prompt - not be reverse-video - uip/vmh.c: have EOT work as expected under bbc - uip/vmh.c: if CE set, then don't scroll on exit - uip/msh.c: make readids() logic smarter in the degenerate case - h/mshsbr.h, uip/{msh,mshcmds}.c: keep scan line cached - uip/{msh,mshcmds}.c: clean-up handling under vmh a bit - uip/{bbc,inc,msgchk}.c: improve defaulting for nullifying host - conf/config/mts.c: with flock() retry 5 times at 5 second intervals - - -Sun Oct 27 22:13:23 1985 /mtr - - h/dropsbr.h, uip/dropsbr.c: add new field, m_size, to maildrop - structure (and bump version number). This keeps track of - the number of ARPA Internet octets in the message - support/bboards/mmdf*/bboards/bb_wtmail.c, support/pop/popser.c, - uip/dropsbr.c, uip/mshcmds.c, uip/rcvpack.c, uip/sbboards.c: all - affected... - - -Mon Oct 28 19:31:13 1985 /mtr - - uip/vmh.c: don't read tty modes unless in foreground - - -Tue Oct 29 01:25:36 1985 /mtr - - uip/addrsbr.c: freeing a couple of things twice! - uip/msh.c: a malloc() bug! - - -Tue Oct 29 22:33:45 1985 /mtr - - h/dropsbr.h: new routine map_read() - uip/dropsbr.c: performance improvement in map_read() - uip/msh.c: -[no]topcur for vmh usage - - -Wed Oct 30 16:39:56 1985 /mtr - - Makefile: add "make checkout" for MH maintainers only! - uip/version.sh: extend - - -Wed Oct 30 18:19:49 1985 /mtr - - -- Suggested by Douglas P. Kingston -- - mts/mmdf/hosts.c: remove bogus gethostname() logic, let - the mtstailor file handle it. - - -Wed Oct 30 18:20:11 1985 /mtr - - -- Suggested by James M. Galvin -- - uip/bbl.c: invoke inc with -file not -ms - - -Thu Oct 31 21:40:50 1985 /mtr - - Makefile, conf/makefiles/*: rm core in unclean - sbr/m_atoi.c: renamed from mu_atoi() - uip/bbc.c: minor add_bb() logic fix - uip/new.c, support/news/: de-supported! - uip/msh.c: re-direction under vmh was losing - - -Sun Nov 3 13:12:51 1985 /mtr - - uip/version.sh: smarter wrt finding hostname - uip/msh.c: finally got re-direction under vmh right! - uip/mhlsbr.c: for moreproc, get signal handling right - - -Sun Nov 3 22:06:58 1985 /mtr - - uip/vmh.c: work-around standout bug in curses, under #ifdef XYZ - uip/vmh.c: try slight work-around for double-scroll'ing effect - - -Mon Nov 4 09:16:56 1985 /mtr - - uip/send.c: oops, bug in dist handling - conf/{mhconfig.c,mh-gen.8}: warn about mhconfig requiring make - clean later - - -Mon Nov 4 16:00:56 1985 /mtr - - uip/vmh.c: Wgetstr() now minibuffer-exit's right - - -Tue Nov 5 16:15:52 1985 /mtr - - zotnet/bboards/getbbent.c: optimize a bit - zotnet/bboards/{bboards.h,getbbent.c}: new routine setpwinfo() - support/{bboards/mmdfII/bboards/bb_wtmail,pop/pop{ser,wrd}}.c, - uip/sbboards.c: use setpwinfo () - uip/mshcmds.c: slight typo in msh$pick - - -Tue Nov 5 22:29:29 1985 /mtr - - sbr/m_replace.c: fix logic glitch: not using getcpy() on update! - - -Tue Nov 5 22:43:50 1985 /mtr - - zotnet/bboards/{bboards.h,getbbent.c}: new routine getbbtime() - support/pop/{popd,popser}.c: use getbbtime() to speed start-up - time, a major win! - conf/makefiles/uip: oops, sbboards installed in wrong area! - - -Wed Nov 6 01:55:16 1985 /mtr - - support/bboards/mmdfII/bb_wtmail.c, uip/sbboards.c: use - encapsulation format when returning failed mail - - -Wed Nov 6 14:08:08 1985 /mtr - - uip/mshcmds.c: burst wasn't resetting scan listing cache - mts/sendmail/client.c: don't use servers defaulting if name of - service host is explicitly given - - -Wed Nov 6 20:47:55 1985 /mtr - - uip/msh.c: more msh-using-POP-to-read-BBoards speed improvements - - -Wed Nov 6 23:05:00 1985 /mtr - - uip/inc.c: add -[pa]ck file switches to packf(1) with the POP - uip/bbc.c: add $MHBBRC support - - -Thu Nov 7 00:31:45 1985 /mtr - - sbr/m_tmpfil.c: new routine - uip/*.c: use it if necessary - - -Sun Nov 10 11:52:50 1985 /mtr - - uip/send.c: oops, annotations botched for forw! - - -Sun Nov 10 16:30:46 1985 /mtr - - uip/refile.c: set previous sequence on destination folders - uip/rcvsbr.c: new file - uip/rcvpack.c: change Cron-Date: to Delivery-Date: - - -Mon Nov 11 07:47:05 1985 /mtr - - uip/slocal.c: implemenet MailDelivery, ala MMDF-II - uip/rcv*.c: take advantage of it - uip/rcvs{br,elect}.c: no longer needed - uip/{folder,inc,refile}.c: done(1) if user doesn't want to create - folders diff --git a/docs/historical/mh6/Makefile b/docs/historical/mh6/Makefile deleted file mode 100644 index 8fbaab8a..00000000 --- a/docs/historical/mh6/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -####################################################################### -# Instructions to Make, for generation of nice-looking papers using TeX -####################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if latex \\nonstopmode\\input $<; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# mh6 -############################################################# - -i-all: mh6.dvi - -i-print: mh6.dvi true - dvisp -J mh6 mh6.dvi - - -# customization files, et. al., not included below -mh6.dvi: version.tex - -version.tex: mh6.tex version.sh - @: version.sh - -true:; - - - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f mh6.dvi mh6.imp - -clean:; rm -f mh6.log _* diff --git a/docs/historical/mh6/READ-ME b/docs/historical/mh6/READ-ME deleted file mode 100644 index f39b7cf3..00000000 --- a/docs/historical/mh6/READ-ME +++ /dev/null @@ -1,7 +0,0 @@ -[ For the following, substitute the name of the directory this file resides - in for "foo". E.G., if this file is mh5/READ-ME, s%foo%mh5%g ] - - The Makefile assumes you have LaTeX on your system. LaTeX is Leslie - Lamport's macro package for TeX. If you can't find LaTeX on your - system, ask your local TeX maintainer where it's kept, since LaTeX - should have come with your UNIX TeX distribution. diff --git a/docs/historical/mh6/lcustom.tex b/docs/historical/mh6/lcustom.tex deleted file mode 100644 index c2efa800..00000000 --- a/docs/historical/mh6/lcustom.tex +++ /dev/null @@ -1,121 +0,0 @@ -% LaTeX customization - - -\catcode`\@=11 % for a little while - - -% plain TeX compatibility - -\def\oldstyle{\xdef\@oldstyle{\the\textfont\@ne}\mit\@oldstyle} - - -% PhD-TeX compatibility - -\def\showsummary{% - \begingroup - \def\note##1{% - \ifcase\value{##1}no ##1s\or - 1 ##1\else - \the\value{##1} ##1s\fi - }% - \tell{LaTeX summary: \note{figure}, \note{table}, \note{footnote}.}% - \endgroup -} - -\let\nfootnote=\footnote - -\let\tell=\typeout - -\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax} - -\def\implies{\quad\supset\ } - -\def\tdots{\ldots\thinspace} - -\let\bop=\newpage - -\def\hbreak{\hfil\break} - -\def\lp{\par\noindent} - -\def\boxit#1{\fbox{\sc#1}} - - -% Figure Support - -\def\tagfigure#1#2#3{% - \begin{figure}[t] - \hrule - \vskip .5\baselineskip - {\small\rm\input figure#1\relax\centerline{\box\graph}}% - \vskip .5\baselineskip plus .5\baselineskip - \caption{#2}% - \label{#3}% - \vskip 2pt - \hrule - \end{figure}% -} - -\def\tagdiagram#1#2#3{% - \begin{figure}[t] - \hrule - \vskip .5\baselineskip - {\small\rm\input diagram#1\relax}% - \vskip .5\baselineskip plus .5\baselineskip - \caption{#2}% - \label{#3}% - \vskip 2pt - \hrule - \end{figure}% -} - -\def\tagtable#1#2#3{% - \begin{table}[t] - \hrule - \vskip .5\baselineskip - {\small\rm\input table#1\relax}% - \vskip .5\baselineskip plus .5\baselineskip - \caption{#2}% - \label{#3}% - \vskip 2pt - \hrule - \end{table}% -} - - -% Draft Stuff - -\newif\ifdraft \draftfalse - -\def\draftstring{{\ifdraft \tt Draft\fi}} - -\def\draftext{% - \ifdraft - \begingroup - \tt - \ifodd\thepage - \LaTeX set \today\ with \fmtname\ v\fmtversion - \else - Draft \versiontag/ of \versiondate/ - \fi - \endgroup - \fi -} - -\def\versiontag/{\errmessage{version.tex not loaded!}} -\let\versiondate=\versiontag - -\def\ds@DScustom{\ifdraft \@ifundefined{ds@draft}{}{\ds@draft}\fi} - -\def\note#1{\ifdraft\marginpar{\tt#1}\fi} - - -% Galley style % TODO - - -% Trademarks... - -\input trademark - - -\catcode`\@=12 % back to normal diff --git a/docs/historical/mh6/mh6.bbl b/docs/historical/mh6/mh6.bbl deleted file mode 100644 index 14f9f1e0..00000000 --- a/docs/historical/mh6/mh6.bbl +++ /dev/null @@ -1,5 +0,0 @@ -\begin{thebibliography}{MMmmm99} - -\bibitem[MH]{MH} M.T.~Rose, J.L.~Romine. -{\em The Rand \MH/ Message Handling System: User's Manual} (UCI Version). -\end{thebibliography} diff --git a/docs/historical/mh6/mh6.tex b/docs/historical/mh6/mh6.tex deleted file mode 100644 index c798f723..00000000 --- a/docs/historical/mh6/mh6.tex +++ /dev/null @@ -1,558 +0,0 @@ -% run this through LaTeX - -\input lcustom -\input version - -\documentstyle[12pt,DScustom,sfwmac]{article} -\setcounter{page}{0} -\pagestyle{empty} - -\begin{document} - -\title{Changes to\\ The Rand MH Message Handling System:\\ MH.6} -\author{Marshall T.~Rose\\ - Northrop Research and Technology Center\\ - One~Research Park\\ - Palos Verdes Peninsula, CA 90274} -\date{\ifdraft \versiondate/\\ Version \versiontag/\else \today\fi} -\maketitle -\footnotetext[0]{\hskip -\parindent -This document (version \versiontag/) -was \LaTeX set \today\ with \fmtname\ v\fmtversion.}% - -\begin{abstract} -\noindent This document describes the user-visible change to the -UCI version of the Rand \MH/ system that were made from \mh5 to \mh6. -This document does not describe bug-fixes, per se, -or internal changes, -unless these activities resulted in a visible change for the \MH/ user. - -This document is meant to supplement, -not supersede, the standard \MH/ User's manual\cite{MH}. - -Comments concerning this documentation should be addressed to the Internet -mailbox {\sf Bug-MH@UCI.EDU}. -\end{abstract} - -\bop\pagestyle{plain}\pagenumbering{arabic} - - \section* {Acknowledgements} -The \MH/ system described herein is based on the original Rand \MH/ system. -It has been extensively developed (perhaps too much so) by Marshall T.~Rose -and John L.~Romine at the University of California, Irvine. -Einar A.~Stefferud, Jerry N.~Sweet, -and Terry P.~Domae provided numerous suggestions -to improve the UCI version of \MH/. -Of course, -a large number of people have helped \MH/ along. -The list of ``\MH/~immortals'' is too long to list here. - - \section* {Disclaimer} -The Regents of the University of California wish to make it known that: -\begin{quote} -Although each program has been tested by its contributor, -no warranty, express or implied, -is made by the contributor or the University of California, -as to the accuracy and functioning of the program -and related program material, -nor shall the fact of distribution constitute any such warranty, -and no responsibility is assumed by the contributor -or the University of California in connection herewith. -\end{quote} - -\bop - - \section* {Conventions} -In this document, -certain \LaTeX -formatting conventions are adhered to: -\begin{enumerate} -\item The names of \unix/ commands, such as \pgm{comp}, -are presented in {\it text italics}. - -\item Arguments to programs, such as \arg{msgs}, -are presented in {\tt typewriter style} and delimited by single-quotes. - -\item \unix/ pathnames and envariables, -such as $$\file{/usr/uci/}\hbox{\qquad and\qquad}\file{\$SIGNATURE},$$ -are presented in {\sl slanted roman}. - -\item Text presenting an example, such as -\example comp\ -editor\ zz\endexample -is presented in {\tt typewriter style}. -\end{enumerate} - -\bop - - \section* {General Changes} -Unlike the changes between \mh4 and \mh5, -a large number of user-visible changes have been made in \mh6. -These changes have been in the form of bug fixes and several generalizations. -The majority of these will not affect novice users. -In addition, \mh6 is a great deal faster than \mh5: -all programs have been speeded-up significantly, -thanks to work done by Van Jacobson as part of the process of including \mh5 -in the 4.3\bsd/~\unix/ distribution. - -This document describes all user-visible changes to \mh5 from it's initial -release to the initial release of \mh6. - -\subsection* {System-5 Support} -In addition to support for \bsd/~\unix/, V7~\unix/ and \xenix/ variants of -\unix/, -\MH/ finally has support for the AT\&T variant of \unix/, System~5. -Hopefully this will greatly expand the number of system which can run \MH/. -Ironically, -it appears that five ports of earlier versions of \MH/ (including \mh5) -were done, -but news of the work was not widespread.% -\nfootnote{In fact, -three groups in one large organization ported \MH/ independently, -each without knowledge of the others' work.} - -\subsection* {Documentation} -Several new documents have been included in the \mh6 distribution: -The paper {\em MH.5: How to process 200 messages a day and still get some -real work done} -was presented at the 1985 Summer Usenix Conference and Exhibition in -Portland, Orgeon. -Another paper, {\em MH: A Multifarious User Agent}, -has been accepted for publication by Computer Networks. -Both describe \MH/, -the former from a more technical and somewhat humorous perspective, -the latter from a more serious and research-oriented perspective. -In addition, -a third paper has been included, -{\em Design of the TTI Prototype Trusted Mail Agent}, -which describes a so-called ``trusted'' mail agent built on top of \MH/. -This paper was presented at the Second International Symposium on -Computer Message Systems in Washington, D.C. -A fourth paper, -{\em MZnet: Mail Service for Personal Micro-Computer Systems}, -is also included. -This paper, -which was presented at the First International Symposium on Computer Message -Systems in Nottingham, U.K., -describes a \cpm/-based version of \MH/. - -In addition, -the \MH/ tutorial, {\em The Rand MH Message Handling System: Tutorial}, -and, -{\em The Rand MH Message Handling System: The UCI BBoards Facility}, -have both been updated by Jerry N.~Sweet. - -For \MH/ administrators (PostMasters and the like), -there's an entirely new document, -{\em The Rand MH Message Handling System: Administrator's Guide}. -It explains most of the ``ins and outs'' of maintaining an \MH/ system. - -Finally, all of the manual entries and the \MH/ manual have had a thorough -working over. -The documentation is expanded, more accurate, and more detailed. - -\subsection* {Help Listings} -When any \MH/ command is invoked with the \switch{help} switch, -in addition to listing the syntax of the command and version information, -the \MH/ configuration options will be listed. -\MH/ has so many configuration options, -that when debugging problems, this information is invaluable. - -\subsection* {The \MH/ Profile} -There are two new profile entries worth noting: -\eg{MH-Sequences} tells \MH/ the name of the file to record public -sequences in. -Users of \pgm{vm}, a proprietary, visual front-end to \MH/, -make use of this to disable the public sequences feature of \MH/. - -The profile entry \eg{Unseen-Sequence} names those sequences which should be -defined as those messages recently incorporated by \pgm{inc}. -The \pgm{show} program knows to remove messages from this sequence once it -thinks they have been seen. -If this profile entry is not present, or is empty, then no sequences are -defined. -Otherwise, for each name given, the sequence is first zero'd and then each -message incorporated is added to the sequence. -As such, this profile entry is rather analogous to the -\eg{Previous-Sequence} entry in the user's \MH/ profile. - -In addition, the \eg{Alternate-Mailboxes} entry in the profile has been -expanded to support simple wild-carding. -Also, the default for this profile entry is now the user's mail-id at any host. -This change was made since \MH/ can no longer reliably figure out what -the user's real outgoing address looks like. - -Finally, -when the \pgm{install-mh} program is automatically invoked by \MH/, -it won't prompt the user for information. -Instead, it notes that it's setting up the default environment. -In addition, -the \MH/ administrator may set-up a file called \file{mh.profile} in the \MH/ -library area which is consulted by \pgm{install-mh} when initializing the -user's \profile/. - -\subsection* {The \MH/ Context} -The \pgm{folder}, \pgm{scan}, and \pgm{show} programs have been modified to -update the user's \MH/ context prior to writing to the user's terminal. -This allows the \MH/ user interrupt output to the terminal and still have the -expected context. -This is especially useful to interrupt long \pgm{scan} listings. -This change also introduces a subtle bug between \pgm{show} and messages -denoted by the \eg{Unseen-Sequence}. -See \man show(1) for the details. - -\subsection* {Addresses and 822 support} -\MH/ now fully supports the RFC-822 routing syntax for addresses -(it used to recognize the syntax, but ignore the information present). -In addition, -there are three major modes for support of non-822 addressing in \MH/: -\begin{itemize} -\item BERK\hbreak -This is useful on sites running \SendMail/. -It doesn't support full 822--style addressing, -in favor of recognizing such formats as ACSnet, and so on. -For sites that can't run in an 822--compliant environment, -this is the option to use -(at the price of sacrificing some of the power of 822--style addressing). - -\item DUMB\hbreak -Although not as liberal as BERK, -the DUMB option is useful on sites in which the message transport system -conforms to the 822 standard, -but wants to do all the defaulting itself. - -\item BANG\hbreak -From out in left field, -the BANG option favors \UUCP/-style addressing over 822--style addressing. -Hopefully when all the \UUCP/ sites around get around to adopting domain-style -addresses, this option won't be needed. -\end{itemize} - -The \pgm{ap} program (mentioned momentarily) and the \pgm{ali} program -both support a \switch{normalize} switch indicate if addresses should be -resolved to their ``official'' hostnames. - -\subsection* {New Programs} -There are five new programs available: -The \pgm{ap} program is the \MH/ stand-alone address parser. -It's useful for printing address in various formats -(and for debugging address strings). -The \pgm{dp} program is similar, but works on dates instead of addresses. - -The \pgm{msgchk} program checks for new mail, -possibly using the Post Office Protocol, POP, described below. - -A new receive mail hook, -the \pgm{rcvstore} program, -which was written by Julian L.~Onions is available. - -Finally, a visual front-end to \pgm{msh} called \pgm{vmh} has been included. -(This program is discussed in greater detail later on.) - -\subsection* {Message Numbering} -\MH/ now no longer restricts the number of messages which may reside in a -folder -(beyond that of system memory constraints). -This means that message numbers larger than 2000 are permissible. -Hopefully this will make life easier for people reading the network news -using \MH/. - - \section* {The WhatNow Shell} -In \mh6, -there is now the concept of a unified \whatnow/ processor that -the four composition programs, \pgm{comp}, \pgm{dist}, \pgm{forw}, -and \pgm{repl} all invoke. -This permits a greater flexibility in building mail applications with \MH/. -As a result, there's a new program, \pgm{whatnow}, which acts as the default -\whatnow/ program. -Consult the \man whatnow(1) manual entry for all the details. - -The only other thing worth noting is that unless \MH/ has been compiled with -the UCI option, -the user's \file{\$HOME/.signature} file is not consulted for the user's -personal name. - - \section* {Format Strings} -A general format string facility has been added to allow \MH/ users to tailor -the output of certain commands. - -The \pgm{inc}, \pgm{scan}, \pgm{ap}, and \pgm{dp} programs all consult a -file containing format strings. -Format strings, -which look a lot like \man printf(3) strings, -give these \MH/ commands precise instructions on how to format their output. - -As a result, -the \pgm{inc} and \pgm{scan} programs no longer have the -\switch{size}, \switch{nosize}, -\switch{time}, \switch{notime}, -\switch{numdate}, and \switch{nonumdate} -switches. -These switches have been replaced with the -\switch{form~formatfile} switch and the \switch{format~string} switch. -The former directs the program to consult the named file for the format -strings. -The latter directs the program to use the named string as the format. -To get the behavior of the old \switch{time} option, -use the \switch{form~scan.time} option. -Similarly, -to get the effect of \switch{size}, -use \switch{form~scan.size}. - -The \pgm{repl} command uses a file containing format files to -indicate how the reply draft should be constructed. -Note that reply templates prior to \mh6 are incompatible with \mh5. -Don't worry though, -it's quite easy to convert the templates by hand. -(Those clever enough to have written a reply template to begin with won't -have {\em any\/} problem.) - -Similarly, when the \pgm{forw} program is constructing a digest, -it uses a file containing format strings to indicate how to build the -encapsulating draft. - - \section* {News} -The depreciated \MH/ news system (from \mh1) is now de-supported. -Use the ``hoopy'' BBoards facility instead. - - \section* {BBoards} -\MH/ maintainers take note: -the default home directory for the bboards login has changed from -\file{/usr/bboards/} to \file{/usr/spool/bboards/}. -Use the \eg{bbhome} directive in your \MH/ configuration file to set -it back to the old value if you wish. - -In addition, the aliases field for a BBoard in the BBoards file is now -deemed useful only for addressing, not for user input to \pgm{bbc}. -This means when giving the name of a BBoard to \pgm{bbc}, -only the official name should be used. - -A final note for mailsystem maintainers: -the \MMDFII/ BBoards channel and the \SendMail/ BBoards mailer have been -modified to use the standard message encapsulation format when returning -failed messages to the list maintainer. -This means that the failure notices that the maintainer receives can -simply be \pgm{burst}. - -\subsection* {New Switches in bbc} -The \pgm{bbc} program permits you to specify the \eg{mshproc} to use on the -command line by using the \switch{mshproc~program} option. -In addition, options which aren't understood by \pgm{bbc} are passed along to -the \eg{mshproc}. - -In addition, the following commands -pass any unrecognized switches on to the program that they invoke: -\pgm{bbc}, \pgm{next}, \pgm{show}, \pgm{prev}, and \pgm{vmh}. - -\subsection* {Distributed BBoards} -If both BBoards and POP (see the next section) are enabled, -then distributed BBoards can be supported on top of the POP service. -This allows the \MH/ user to read BBoards on a server machine -instead of the local host -(which saves a lot of wasted disk space when the same BBoards are replicated -several times at a site with several hosts). -See the {\em Administrator's Guide\/} for information on how this can be made -completely transparent to the \MH/ user. - -If you have several machines at your site running 4.2\bsd/~\unix/ -and connected by an \ethernet/ (or other high-speed LAN), -you {\em want\/} this software. - -\subsection* {Visual Front-End to msh} -A simple window management protocol has been implemented for \MH/ programs -that might wish to act as a back-end to a sophisticated visual front-end. - -The first implementation of a server side (front-end) program is \pgm{vmh}, -which uses \man curses(3) to maintain a split-screen interface. -Perhaps look for a \pgm{mhtool} program for the SUN next! - -The \pgm{msh} program has been modified to speak the client side (back-end) -of this protocol, if so directed. -At present, \pgm{msh} is the only program in the \MH/ distribution which -implements the client side of the window management protocol. - -\subsection* {Updates in msh} -Prior to quitting, -the \pgm{msh} command now asks if the \pgm{packf\/}'d file you've been -perusing should be updated if you've modified it and the file is writable by -you. -The file can be modified by using \pgm{burst}, \pgm{rmm}, \pgm{rmm}, -or \pgm{sortm} commands. -The file can also be modified by using the \pgm{refile} command without the -\switch{link} option. -(Or course, -the \switch{link} option doesn't actually link anything to the file.) - - \section* {Distributed Mail} -\MH/ now contains a powerful facility for doing distributed mail -(having \MH/ reside on a host different than the message transport agent). -For general information, -consult either the -{\em MH.5: How to process 200 messages a day and still get some real work -done} paper, -or the {\em MH: A Multifarious User Agent} paper. -For specific information, -consult the {\em Administrator's Guide}. -Here's a brief synopsis: - -This POP facility in \MH/ is based on a modification of the ARPA Post -Office Protocol (POP). -A POP {\em subscriber\/} is a remote user, -on a POP {\em client host}, -that wishes to pick-up mail on a POP {\em service host}. - -There are two ways to administer POP: -\begin{itemize} -\item Naive Mode\hbreak -Each user-id in the \man passwd(5) file is considered a POP subscriber. -No changes are required for the mailsystem on the POP service host. -However, -this method requires that each POP subscriber have an entry in the password -file. -The POP server will fetch the user's mail from wherever maildrops are kept on -the POP service host. -This means that if maildrops are kept in the user's home directory, -then each POP subscriber must have a home directory. - -\item Smart Mode\hbreak -This is based on the notion that the list of POP subscribers and the list of -login users are completely separate name spaces. -A separate database (similar to the \man BBoards(5) file) -is used to record information about each POP subscriber. -Unfortunately, -the local mailsystem must be changed to reflect this. -This requires two changes (both of which are simple): -\begin{enumerate} -\item Aliasing\hbreak - The aliasing mechanism is augmented so that POP subscriber addresses - are diverted to a special delivery mechanism. - \MH/ comes with a program, \man popaka(8), which generates the - additional information to be put in the mailsystem's alias file. -\item Delivery\hbreak - A special POP channel (for \MMDFII/) or POP mailer (for \SendMail/) - performs the actual delivery (\mh6 supplies both). - All it really does is just place the mail in the POP spool area. -\end{enumerate} -Clever mailsystem people will note that -the POP mechanism is really a special case of the more general -BBoards mechanism. -\end{itemize} -These two different philosophies are not compatible on the same POP service -host: one or the other, but not both, may be run. - -In addition, there is one user-visible difference, -which the administrator controls the availability of. -The difference is whether the POP subscriber must supply a password to the POP -server: -\begin{itemize} -\item ARPA standard method\hbreak -This uses the standard ARPA technique of sending a username and a password. -The appropriate programs (\pgm{inc}, \pgm{msgchk}, and possibly \pgm{bbc\/}) -will prompt the user for this information. - -\item \unix/ remote method\hbreak -This uses the Berkeley \unix/ reserved port method for authentication. -This requires that the two or three mentioned above programs be {\em setuid\/} -to root. -(There are no known holes in any of these programs.) -\end{itemize} -These two different philosophies are compatible on the same POP service host: -to selectively disable RPOP for hosts which aren't trusted, -either modify the \file{.rhosts} file in the case of POP subscribers being -\unix/ logins, -or zero the contents of network address field of the \man pop(5) file for the -desired POP subscribers. - -The \pgm{inc} command also has two other switches when \MH/ is enabled for -POP: -\switch{pack~file} and \switch{nopack}. -Normally, -\pgm{inc} will use the POP to incorporate mail from a POP service host into -an \MH/ folder (\eg{+inbox}). -However, -there are some misguided individuals who prefer to \pgm{msh} to read their -maildrop. -By using the \switch{pack~file} option, -these individuals can direct \pgm{inc} to fetch their maildrop from the POP -service host and store it locally in the named file. -As expected, \pgm{inc} will treat the local file as a maildrop, -performing the appropriate locking protocols. - - \section* {Rcvmail hooks} -In order to offer users of \MH/ increated rcvmail hook functionality, -the \pgm{slocal} program has been upgraded to support the semantics of -the \MMDFII/ mail-delivery mechanism. -This means that users of \mh6 can maintain identical \file{.maildelivery} -files regardless of the underlying transport system. -See \man mhook(1) for all the details. - -\subsection* {Field change in rcvpack} -The \pgm{rcvpack} rcvmail hook now adds the field name \eg{Delivery-Date:} -instead of \eg{Cron-Date:} to messages it \pgm{pack\/}s. - - \section* {Other Changes} -Here's the miscellany: - -\subsection* {Continuation Lines} -Alias files used by \MH/, -display templates used by \pgm{mhl}, -and format files used by \pgm{forw}, \pgm{repl}, and \pgm{scan} all support -a standard continuation line syntax. -To continue a line in one of these files, -simply end the line with the backslash character (`$\backslash$'). -All the other files used by \MH/ are in 822--format, -so the 822--continuation mechanism is used.% -\nfootnote{Looking back, -it would have been best had all files in \MH/ used the 822--format.} - -\subsection* {Modifications to show} -The \switch{format}, \switch{noformat}, \switch{pr}, and \switch{nopr} -options to \pgm{show} have gone away in favor of a more general mechanism. -The \switch{showproc~program} option tells \pgm{show} -(or \pgm{next} or \pgm{prev\/}) to use the named program as the \eg{showproc}. -The \switch{noshowproc} option tells \pgm{show}, et. al., -to use the \man cat(1) program instead of a \eg{showproc}. -As a result, the profile entry \eg{prproc} is no longer used. - -\subsection* {Front-End to mhl} -When outputting to a terminal, -the \pgm{mhl} program now runs the program denoted by the profile entry -\eg{moreproc}. -If this entry is not present, -the default is the UCB \pgm{more} program. -If the entry is non-empty, -then that program is spliced between \pgm{mhl} and the user's terminal. -The author uses the \pgm{less} program as his \eg{moreproc}. - -Of course, -if \pgm{mhl} isn't outputting to a terminal, -then \eg{moreproc} is not invoked. - -\subsection* {Switch change in inc} -The \switch{ms~ms-file} switch in \pgm{inc} has been changed to -\switch{file~name} to be more consistent. - -\subsection* {Complex Expressions in pick} -The \pgm{pick} command now handles complex boolean expressions. - -\subsection* {Defaults change in prompter and burst} -The \switch{prepend} option is now the default in \pgm{prompter}. -The \switch{noinplace} option is now the default in \pgm{burst}. - -\subsection* {Interactive option in rmf} -The \pgm{rmf} program has been changed to support an \switch{interactive} -switch. -If given, -then the user is prompted regarding whether the folder should be deleted. -If the folder to be removed is not given by the user, -this switch is defaulted to on. - -\subsection* {Trusted Mail Interface} -\MH/ now has an interface for so-called ``trusted mail'' applications. -Although the modifications to \MH/ to support this are in the public domain, -the actual library that \MH/ uses is not. -Contact Professor David J.~Farber ({\sf Farber@UDel\/}) for more information. - -\bibliography{mh6} - -\showsummary - -\end{document} diff --git a/docs/historical/mh6/sfwmac.sty b/docs/historical/mh6/sfwmac.sty deleted file mode 100644 index b9c6794e..00000000 --- a/docs/historical/mh6/sfwmac.sty +++ /dev/null @@ -1,88 +0,0 @@ -% LaTeX support for writing UNIX-style documentation (based on webmac.tex) - - -\makeatletter % for a little while - -\typeout{Document Style 'sfwmac'. Version 1.00 - released 17 June 1985} - - -% Examples - -\def\eg#1{\hbox{``\verb*"#1"''}} % in-line - -\def\example#1\endexample{% % multi-line - $$% - \displayindent=\leftskip - \ifdim\parindent>\z@ - \advance\displayindent by1.5\parindent - \else - \advance\displayindent by.15\hsize - \fi - \let\\=\cr - \tabskip=\z@ - \halign{\ignorespaces\verb*"##"\unskip\hfil\cr#1\cr}% - $$% -} - - -% Miscellany - -\def\pgm#1{{\it#1}} % UNIX programs -\def\man#1(#2){\pgm{#1\/}(#2)} % manual entries -\def\arg#1{\hbox{`{}\verb*"#1"'{}}} % arguments to programs -\def\switch#1{\hbox{`{}-\verb*"#1"'{}}} % switches to programs -\def\file#1{\hbox{\sl#1}} % filename - - -% Commonly used software systems - -\def\EMACS/{{\sf EMACS}} -\def\INFO/{{\sf INFO}} -\def\MLisp/{{\sf MLisp}} - -\def\MH/{{\sf MH}} -\def\mh#1{{\sf mh.#1}} -\def\Mail/{\file{Mail/}} -\def\context/{\file{context}} -\def\profile/{\file{.mh\_profile}} -\def\sequences/{\file{.mh\_sequences}} -\def\whatnow/{\verb*"What now?"} - -\def\MMDF/{{\sf MMDF}} -\def\MMDFI/{\hbox{\sf MMDF-I}} -\def\MMDFII/{\hbox{\sf MMDF-II}} - -\def\SendMail/{{\sf SendMail}} -\def\UUCP/{{\sf UUCP}} - -\def\AmS{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em$\cal S$} -\def\AMSPPT.STY/{{\tt amsppt.sty}} -\def\AmSTeX{\hbox{\rm \AmS-\TeX}} - -\def\DISS.STY/{{\tt diss.sty}} -\def\PhDTeX{\hbox{\rm PhD-\TeX}} - -\def\LaTeX{\hbox{\rm L\kern-.2em\raise.3ex\hbox{\sc a}\kern-.09em\TeX}} -\def\BibTeX{\hbox{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em\TeX}} -\def\SLiTeX{\hbox{\rm S\kern-.065em L\kern-.18em\raise.32ex\hbox{\sc i}% - \kern-.03em\TeX}} - -\def\NRTeX{\hbox{\rm NR-\TeX}} - -\def\ROFF/{{\sf ROFF}} - -\def\SUMEX/{{\sf SUMEX}} - -\def\TTYD/{{\sf TTYD}} - - -% Fractions (from TUGboat v6 n1, 1985) - -\def\frac#1/#2{% - \leavevmode\kern.1em - \raise.5ex\hbox{\the\scriptfont\z@ #1}\kern-.1em - /\kern-.15em\lower.25ex\hbox{\the\scriptfont\z@ #2}% -} - - -\makeatother % back to normal diff --git a/docs/historical/mh6/trademark.tex b/docs/historical/mh6/trademark.tex deleted file mode 100644 index cff9046f..00000000 --- a/docs/historical/mh6/trademark.tex +++ /dev/null @@ -1,54 +0,0 @@ -% Trademarks... - -\def\gobble#1{} - -\def\tradeORGfont{\sc} % used for organizations (e.g., ACM) -\def\tradeNAMfont{\sf} % used for names (e.g., Ada) - -\def\tradeorg#1{\tradeaux{#1}{\expandafter\gobble\string#1}\empty\tradeORGfont} -\def\tradename#1#2#3{\tradeaux{#1}{#2}{#3}\tradeNAMfont} -\def\trademark#1#2{% - \tradeaux{#1}{\expandafter\gobble\string#1}{#2}\tradeNAMfont -} - -\def\tradeaux#1#2#3#4{% - \def#1/{\relax}% % in case #3 references #1 - \setbox0=\hbox{#3}% % when we make the \hbox - \ifdim\wd0>0pt - \gdef#1/{% - \tradeaux{#1}{#2}\empty{#4}% - #1/\nfootnote{#1/ is a trademark of #3.}% - }% - \else - \gdef#1/{{#4#2}}% - \fi -} - -\tradeorg\acm -\tradeorg\ansi -\tradename\Ada{Ada} - {the Department of Defense (\Ada/ Joint Program Office)} -\tradeorg\bsd -\tradeorg\ccitt -\tradename\cms{CMS} {International Business Machines, Incorporated} -\tradename\cpm{CP/M} {Digital Research Corporation} -\tradename\decnet{DECnet} {Digital Equipment Corporation} -\tradeorg\dod -\tradename\ethernet{Ethernet} {the Xerox Corporation} -\tradename\eunice{Eunice} \empty -\tradeorg\ieee -\tradename\lattice{Lattice} {Lattice, Incorporated} -\tradename\locus{Locus} {Locus Computing Corporation} -\tradename\msdos{MS-DOS} {Microsoft Corporation} -\tradeorg\milstd -\tradename\pcinterface{PC-Interface}% - {Locus Computing Corporation} -\tradename\pdp{PDP} {Digital Equipment Corporation} -\tradename{\tops20}{Tops20} {Digital Equipment Corporation} -\tradename\trustedmail{Trusted\ Mail}% - {Trusted Technologies, Incorporated} -\tradename\unix{UNIX} {AT\&T Bell Laboratories} -\tradename\vax{VAX} {Digital Equipment Corporation} -\tradename\vm{VM} {International Business Machines, Incorporated} -\tradename\vms{VMS} {Digital Equipment Corporation} -\tradename\xenix{Xenix} {Microsoft Corporation} diff --git a/docs/historical/mh6/version b/docs/historical/mh6/version deleted file mode 100644 index 7facc899..00000000 --- a/docs/historical/mh6/version +++ /dev/null @@ -1 +0,0 @@ -36 diff --git a/docs/historical/mh6/version.sh b/docs/historical/mh6/version.sh deleted file mode 100644 index 4853996e..00000000 --- a/docs/historical/mh6/version.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [ ! -r version ]; then echo 0 > version; fi -touch version -echo '\catcode`\#=12' > version.tex -awk ' { version = $1 + 1; }\ -END { printf "\\def\\versiontag/{#1.%d}%%\n", version >> "version.tex"; \ - printf "%d\n", version > "version"; }' < version -echo '\def\versiondate/{'`date`'}%' >> version.tex -echo '\catcode`\#=6' >> version.tex -echo '\typeout{Version \versiontag/ of \versiondate/}' >> version.tex diff --git a/docs/historical/mh6/version.tex b/docs/historical/mh6/version.tex deleted file mode 100644 index d17bef44..00000000 --- a/docs/historical/mh6/version.tex +++ /dev/null @@ -1,5 +0,0 @@ -\catcode`\#=12 -\def\versiontag/{#1.36}% -\def\versiondate/{Tue Nov 12 10:50:55 PST 1985}% -\catcode`\#=6 -\typeout{Version \versiontag/ of \versiondate/} diff --git a/docs/historical/multifarious/Makefile b/docs/historical/multifarious/Makefile deleted file mode 100644 index 1b029c3c..00000000 --- a/docs/historical/multifarious/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -####################################################################### -# Instructions to Make, for generation of nice-looking papers using TeX -####################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex \ - \\nonstopmode\\input $<\\bye; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# multifarious -############################################################# - -i-all: multifarious.dvi - -i-print: multifarious.dvi true - dvisp $(DFLAGS) -J Multifarious multifarious - - -# customization files, et. al., not included below -multifarious.dvi: version.tex - -version.tex: multifarious.tex \ - text.tex \ - figure0.tex figure1.tex diagram2.tex diagram3.tex \ - refs.tex appendixA.tex \ - version.sh - @: version.sh - -true:; - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f multifarious.dvi multifarious.imp - -clean:; rm -f multifarious.lof multifarious.log multifarious.lot \ - multifarious.toc _* diff --git a/docs/historical/multifarious/appendixA.tex b/docs/historical/multifarious/appendixA.tex deleted file mode 100644 index f6b61cb4..00000000 --- a/docs/historical/multifarious/appendixA.tex +++ /dev/null @@ -1,230 +0,0 @@ -% appendix A % mtr - -\catcode`\@=11 % for a little while - -\def\psect#1{% - \skip@=\lastskip - \par - \dimen@=.6\baselineskip - \ifdim\skip@<\dimen@ - \ifdim\skip@=\z@ \penalty-100 \fi - \vskip \dimen@ plus .3\baselineskip - \fi - \centerline{\underbar{#1}}% - \nobreak - \vskip \z@ plus .1\baselineskip - \vskip -\parskip -} - -\def\pitem#1 #2.{\item{\pgm{#1\/}:} #2\hbreak} - -\catcode`\@=12 % back to normal - - -\appendix{A}{MH Commands} -\MH/ is composed of several \unix/ programs, -which in theory are fairly simple and single-purposed. -These commands are functionally grouped below: - -\psect{Composing Mail} -\pitem{comp} compose a message. -A program to originate a message. -Usually, a special prompting editor front-end, \pgm{prompter}, -is used to fill-in a composition template with the addressees of -the message, subject, and so forth. - -\pitem{dist} redistribute a message to additional addresses. -A program that re-enters a message previously received by the user -into the message transport system. -Only new addresses are added; -the body of the message is not changed in any way. - -\pitem{forw} forward messages. -A program that encapsulates one or more messages in a new message draft. -In addition, the user may add initial and/or closing comments. - -\pitem{repl} reply to a message. -A program that constructs a reply to a message using a reply template. -The template mechanism has sufficient generality to permit the user to -``program'' the form of the reply draft based on the contents of the message -being replied-to. - -\pitem{send} send a message. -A program that posts a draft with the message transport system. -The \pgm{send} program is -usually invoked by one of the four preceding programs, -and performs simple front-end pre-processing prior to invoking the -\pgm{post} program. -For example, -if invoked in {\it push}'d mode, -\pgm{send} will immediately relinquish control of the user's terminal and -post the message in the background. -If the posting fails, -\pgm{send} will send back a failure notice to the user. -If the user had \pgm{push\/}'d the sending of the draft, -then by default -the draft being sent is encapsulated in the failure notice. -This permits easy \pgm{burst}'ing of the failure notice to retrieve the -original draft. -Otherwise, -if the posting was successful, -the draft is marked as having been sent. - -\pitem{whatnow} prompting front-end for send. -A program which is called by \pgm{comp}, et. al., -after the initial draft has been generated. -The \MH/ user can specify a different \pgm{whatnow} program, -which yields considerable extensibility. - -\pitem{whom} report to whom a message would go. -A program which examines the addresses of the draft and expands -all user-defined aliases contained therein. -Optionally, -\pgm{whom} may actually interact with the message transport system -to determine the validity of the final addresses. -This program is also usually invoked by \pgm{comp}, et.~al. - -\psect{Posting Mail} -\pitem{ali} list mail aliases. -A simple front-end to the \MH/ aliasing mechanism. - -\pitem{ap} parse addresses 822--style. -A useful debugging tool for PostMasters who wish to examine how \MH/ -interprets an Internet address. - -\pitem{conflict} search for alias/password conflicts. -Another program used by system administrators to check the consistency of -\MH/ alias files, and portions of the local message transport agent. - -\pitem{install-mh} initialize the MH environment. -A program which is automatically executed the first time a user issues an -\MH/ command. -This program performs once-only initialization of the user's \MH/ environment. - -\pitem{mhmail} send or read mail. -A simple program generally used by other programs to generate messages. -The \pgm{mhmail} command is similar in purpose to the old \pgm{BellMail} -program. - -\pitem{post} deliver a message. -A complex \MH/ back-end that interacts with the local message transport agent -to enter messages through the posting slot. -(See the description of \pgm{send} above). - -\psect{Reading Mail} -\pitem{inc} incorporate new mail. -A program that interacts with the local message transport agent -to retrieve messages from the user's maildrop. - -\pitem{msgchk} check for waiting mail. -A program which reports the status of mail waiting in the user's maildrop. - -\pitem{show} show (list) messages. -A program which lists messages to its standard output -(usually the user's terminal), -possibly invoking another program to do the actual listing. -Most users of \MH/ have \pgm{show} automatically call the \pgm{mhl} program -to format the message. -The \pgm{next} and \pgm{prev} programs are simply -\eg{show\ next} and \eg{show\ prev}, -respectively. - -\pitem{mhl} produce formatted listings of MH messages. -A program which displays a message as directed by a template. -This permits the user to filter out uninteresting headers -and re-arrange other headers to a particular preference. -In addition to being invoked by \pgm{show}, -the \pgm{mhl} program is optionally also -invoked by \pgm{forw} to format each message being forwarded; -invoked by \pgm{repl} to format the body of a message being replied-to, -if that message is being included in the reply draft; -and, -invoked by \pgm{post} to format a message being sent as a blind-carbon-copy. - -\pitem{rmm} remove messages. -A program that removes messages from an \MH/ folder, -optionally running a user-defined program instead of deleting them. -If no program is given, -the messages are ``softly'' removed, -so they may possibly be recovered later. - -\pitem{scan} produce a one-line-per-message scan listing. -A program that generates a scan listing for messages. -Each line of the listing contains date, source, subject, -and possibly the initial body of the message. - -\psect{Folder Handling} -\pitem{folder} set/list current folder/message. -A program used to list information concerning the current folder, -or set the current folder and/or message. - -\pitem{folders} list all folders. -A program to list information on all folders -(actually, just a special case of the \pgm{folder} command). -Since the \MH/ folder structure may be recursive, -the user can indicate that \pgm{folders} should recursively examine all -folders. - -\pitem{refile} file message(s) in (an)other folder(s). -A program to move (or copy) messages from a source folder to one or more -destination folders. - -\pitem{rmf} remove folder. -A program that deletes a folder and all messages therein. - -\psect{Message Selection} -\pitem{anno} annotate messages. -A program to arbitrarily annotate messages. -If the user so desires, -after distributing, forwarding, or replying-to a message, -\MH/ will automatically attach an annotation to the -original message indicating the date and addresses. - -\pitem{mark} mark messages. -A program to manipulate user-defined sequences (lists of messages). -Usually, \pgm{mark} is not employed directly by the \MH/ user. - -\pitem{pick} select messages by content. -A program to examine a list of messages and choose those which meet a -particular selection criterion. -The \pgm{pick} program is often used in \unix/ back-quoted operations to pass -message sequences to other \MH/ commands. - -\pitem{sortm} sort messages. -A program to sort a list of messages according to the date given in a -particular field. - -\psect{Distribution List Handling} -\pitem{bbc} check on BBoards. -A front-end to run \pgm{msh} on a list of distribution lists which the -user isn't current on. - -\pitem{bbl} manage a BBoard. -A (depreciated) program used to manually manage the local archives of a -distribution list. -These functions (archiving, expunging) are performed automatically by \MH/. - -\pitem{burst} explode digests into messages. -A program used to decapsulate messages from ARPA Internet digests. -In addition, -messages which have been encapsulated during forwarding -(i.e., with \pgm{forw\/}) -can also be decapsulated using \pgm{burst}.% -\nfootnote{Similarly, blind-carbon-copies may be decapsulated, -though only socially mature users should do so.} - -\pitem{msh} MH shell (and BBoard reader). -A monolithic program used to implement \MH/ commands on -messages arranged in a single file (maildrop format). -Useful -since distribution lists are kept in this format to minimize consumption of -system resources. - -\pitem{pack} compress a folder into a single file. -A program which takes messages stored in \MH/ format and places them in a -single file (using the same format known by \pgm{msh\/}). - -\psect{Interface to the \unix/ File System} -\pitem{mhpath} print full pathnames of \MH/ messages and folders. -A program which maps \MH/-style names into the \unix/ file naming convention. - diff --git a/docs/historical/multifarious/diagram2.tex b/docs/historical/multifarious/diagram2.tex deleted file mode 100644 index 0af120d2..00000000 --- a/docs/historical/multifarious/diagram2.tex +++ /dev/null @@ -1,28 +0,0 @@ -% diagram 2 - -\verbatim -Path: Mail -Editor: prompter -prompter-next: emacs -Folder-Protect: 700 -Msg-Protect: 600 -Previous-Sequence: pseq -Alternate-Mailboxes: jsweet@uci-icse, jsweet@uci-750a -Draft-Folder: drafts -Sequence-Negation: not -bbc: -quiet -bboards: system mh-workers sf-lovers whimsey -comp: -form mycomponents -dist: -annotate -inplace -folder: -noheader -forw: -annotate -inplace -format -mhl: -noclear -next: -noheader -prev: -noheader -prompter: -prepend -repl: -annotate -inplace -cc me -send: -format -msgid -scan: -noheader -time -show: -noheader -format -showproc: mhl -?endverbatim diff --git a/docs/historical/multifarious/diagram3.tex b/docs/historical/multifarious/diagram3.tex deleted file mode 100644 index 42d77c09..00000000 --- a/docs/historical/multifarious/diagram3.tex +++ /dev/null @@ -1,13 +0,0 @@ -% diagram 3 - - -\verbatim -To: -cc: ,, -Subject: Re: -In-reply-to: Your message of . - -In-reply-to: Your message of . -Fcc: --------- -?endverbatim diff --git a/docs/historical/multifarious/figure0.pic b/docs/historical/multifarious/figure0.pic deleted file mode 100644 index e7ecd77e..00000000 --- a/docs/historical/multifarious/figure0.pic +++ /dev/null @@ -1,31 +0,0 @@ -.PS 5.9i -## figure 1 -C1: ellipse "\UA/" -B1: box "\MTA/" with .n at (C1.s.x, C1.s.y-3*lineht) -B8: box "\MTA/" with .w at (B1.e.x+linewid, B1.e.y) -B2: box invis "$\ldots$" with .w at (B8.e.x+linewid, B1.e.y) -B9: box invis "$\ldots$" with .w at (B2.e.x+linewid, B1.e.y) -B3: box "\MTA/" with .w at (B9.e.x+linewid, B1.e.y) -C2: ellipse "\UA/" with .s at (B3.n.x, C1.s.y) -## - arrow from C1.s to B1.n - arrow from B1.e to B8.w - arrow from B8.e to B2.w - arrow from B2.e to B9.w - arrow from B9.e to B3.w - arrow from B3.n to C2.s -## -B4: box width B3.e.x+linewid/3-(B1.w.x-linewid/3) \ - height 3*boxht \ - with .c at B2.c - move to (B4.n.x, B4.n.y-lineht/2); "\MTS/" -## - line dashed "POSTING" "" \ - from (B4.w.x-linewid, B4.n.y+lineht/2) \ - to (C1.s.x, B4.n.y+lineht/2) - line dashed "RECEIPT" "" \ - from (B4.e.x+linewid, B4.n.y+lineht/2) \ - to (C2.s.x, B4.n.y+lineht/2) - move to ((B2.e.x+B9.w.x)/2, B2.s.y); "RELAYING" -## -.PE diff --git a/docs/historical/multifarious/figure0.tex b/docs/historical/multifarious/figure0.tex deleted file mode 100644 index 70928bae..00000000 --- a/docs/historical/multifarious/figure0.tex +++ /dev/null @@ -1,110 +0,0 @@ -\catcode`@=11 -\expandafter\ifx\csname graph\endcsname\relax \alloc@4\box\chardef\insc@unt\graph\fi -\catcode`@=12 -\setbox\graph=\vtop{% - \baselineskip=0pt \lineskip=0pt \lineskiplimit=0pt - \vbox to0pt{\hbox{% - \special{pn 8}% - \special{ar 866 207 311 206 0.000 6.283}% - \rlap{\kern 0.866in\lower 0.249in\hbox to 0pt{\hss \UA/\hss}}% - \special{pa 554 2081}% - \special{pa 554 1665}% - \special{pa 1179 1665}% - \special{pa 1179 2081}% - \special{pa 554 2081}% - \special{fp}% - \rlap{\kern 0.866in\lower 1.915in\hbox to 0pt{\hss \MTA/\hss}}% - \special{pa 1595 2081}% - \special{pa 1595 1665}% - \special{pa 2220 1665}% - \special{pa 2220 2081}% - \special{pa 1595 2081}% - \special{fp}% - \rlap{\kern 1.907in\lower 1.915in\hbox to 0pt{\hss \MTA/\hss}}% - \rlap{\kern 2.948in\lower 1.915in\hbox to 0pt{\hss $\ldots$\hss}}% - \rlap{\kern 3.989in\lower 1.915in\hbox to 0pt{\hss $\ldots$\hss}}% - \special{pa 4718 2081}% - \special{pa 4718 1665}% - \special{pa 5343 1665}% - \special{pa 5343 2081}% - \special{pa 4718 2081}% - \special{fp}% - \rlap{\kern 5.030in\lower 1.915in\hbox to 0pt{\hss \MTA/\hss}}% - \special{ar 5030 207 311 206 0.000 6.283}% - \rlap{\kern 5.030in\lower 0.249in\hbox to 0pt{\hss \UA/\hss}}% - \special{pa 866 415}% - \special{pa 866 1665}% - \special{fp}% - \special{pa 846 1581}% - \special{pa 866 1665}% - \special{fp}% - \special{pa 887 1581}% - \special{pa 866 1665}% - \special{fp}% - \special{pa 1179 1873}% - \special{pa 1595 1873}% - \special{fp}% - \special{pa 1512 1894}% - \special{pa 1595 1873}% - \special{fp}% - \special{pa 1512 1852}% - \special{pa 1595 1873}% - \special{fp}% - \special{pa 2220 1873}% - \special{pa 2636 1873}% - \special{fp}% - \special{pa 2553 1894}% - \special{pa 2636 1873}% - \special{fp}% - \special{pa 2553 1852}% - \special{pa 2636 1873}% - \special{fp}% - \special{pa 3261 1873}% - \special{pa 3677 1873}% - \special{fp}% - \special{pa 3594 1894}% - \special{pa 3677 1873}% - \special{fp}% - \special{pa 3594 1852}% - \special{pa 3677 1873}% - \special{fp}% - \special{pa 4302 1873}% - \special{pa 4718 1873}% - \special{fp}% - \special{pa 4635 1894}% - \special{pa 4718 1873}% - \special{fp}% - \special{pa 4635 1852}% - \special{pa 4718 1873}% - \special{fp}% - \special{pa 5030 1665}% - \special{pa 5030 415}% - \special{fp}% - \special{pa 5051 499}% - \special{pa 5030 415}% - \special{fp}% - \special{pa 5010 499}% - \special{pa 5030 415}% - \special{fp}% - \special{pa 415 2497}% - \special{pa 415 1248}% - \special{pa 5482 1248}% - \special{pa 5482 2497}% - \special{pa 415 2497}% - \special{fp}% - \rlap{\kern 2.948in\lower 1.498in\hbox to 0pt{\hss \MTS/\hss}}% - \rlap{\kern 0.433in\lower 0.999in\hbox to 0pt{\hss POSTING\hss}}% - \rlap{\kern 0.433in\lower 1.165in\hbox to 0pt{\hss \hss}}% - \special{pa 0 1040}% - \special{pa 866 1040}% - \special{da 0.050}% - \rlap{\kern 5.464in\lower 0.999in\hbox to 0pt{\hss RECEIPT\hss}}% - \rlap{\kern 5.464in\lower 1.165in\hbox to 0pt{\hss \hss}}% - \special{pa 5898 1040}% - \special{pa 5030 1040}% - \special{da 0.050}% - \rlap{\kern 3.469in\lower 2.123in\hbox to 0pt{\hss RELAYING\hss}}% - \kern 5.899in - }\vss}% - \kern 2.498in -} diff --git a/docs/historical/multifarious/figure1.pic b/docs/historical/multifarious/figure1.pic deleted file mode 100644 index df5437c3..00000000 --- a/docs/historical/multifarious/figure1.pic +++ /dev/null @@ -1,41 +0,0 @@ -.PS -A: box shaded width 2.5i "\file{\$HOME/} (user's home directory)" -B: box "\profile/" with .nw at (A.sw.x,A.sw.y-lineht) -C: box shaded "\Mail/" with .ne at (A.se.x,A.se.y-lineht) -D: box "\context/" with .n at (B.s.x,B.s.y-lineht) -E: box shaded "\file{inbox/}" with .w at (D.e.x+(linewid/2),D.w.y) -F: box "\file{mhl.format}" with .w at (E.e.x+(linewid/2),E.w.y) -G: box "\file{replcomps}" with .w at (F.e.x+(linewid/2),F.w.y) -H: box shaded "\file{drafts/}" with .w at (G.e.x+(linewid/2),G.w.y) -I: box shaded "\file{chron/}" with .w at (H.e.x+(linewid/2),H.w.y) -J: box width 0.2i height 0.2i "\file{3}" with .n at \ - (E.s.x+(linewid*1.5),E.s.y-lineht) -K: box width 0.2i height 0.2i "\file{2}" with .e at (J.w.x-(linewid/4),J.e.y) -L: box width 0.2i height 0.2i "\file{1}" with .e at (K.w.x-(linewid/4),K.e.y) -M: box width 1i "\sequences/" with .ne at (L.w.x-(linewid/4),L.ne.y) -N: box shaded "\file{yr.1985/}" with .n at (I.s.x,I.s.y-lineht) -O: box shaded "\file{yr.1984/}" with .e at (N.w.x-(linewid/4),N.e.y) -P: box width 0.2i height 0.2i "\file{1}" with .ne at \ - (O.w.x-(linewid/2),O.ne.y) -line dotted from A.n to (A.n.x+(linewid/2),A.n.y+(lineht/2)) -line from A.s to B.n -line from A.s to C.n -line from C.s to D.n -line from C.s to E.n -line from C.s to F.n -line from C.s to G.n -line from C.s to H.n -line from C.s to I.n -line from E.s to M.n -line from E.s to L.n -line from E.s to K.n -line from E.s to J.n -line from H.s to P.n -line dotted from H.s to (H.s.x+(linewid/2),H.s.y-(lineht/2)) -line from I.s to N.n -line from I.s to O.n -line dotted from N.s to (N.s.x-(linewid/2),N.s.y-(lineht/2)) -line dotted from N.s to (N.s.x+(linewid/2),N.s.y-(lineht/2)) -line dotted from O.s to (O.s.x-(linewid/2),O.s.y-(lineht/2)) -line dotted from O.s to (O.s.x+(linewid/2),O.s.y-(lineht/2)) -.PE diff --git a/docs/historical/multifarious/figure1.tex b/docs/historical/multifarious/figure1.tex deleted file mode 100644 index 0ebc02d4..00000000 --- a/docs/historical/multifarious/figure1.tex +++ /dev/null @@ -1,193 +0,0 @@ -\catcode`@=11 -\expandafter\ifx\csname graph\endcsname\relax \alloc@4\box\chardef\insc@unt\graph\fi -\catcode`@=12 -\setbox\graph=\vtop{% - \baselineskip=0pt \lineskip=0pt \lineskiplimit=0pt - \vbox to0pt{\hbox{% - \special{pn 8}% - \special{sh}% - \special{pa 0 749}% - \special{pa 0 249}% - \special{pa 2499 249}% - \special{pa 2499 749}% - \special{pa 0 749}% - \special{fp}% - \rlap{\kern 1.249in\lower 0.539in\hbox to 0pt{\hss \file{\$HOME/} (user's home directory)\hss}}% - \special{pa 0 1749}% - \special{pa 0 1249}% - \special{pa 749 1249}% - \special{pa 749 1749}% - \special{pa 0 1749}% - \special{fp}% - \rlap{\kern 0.374in\lower 1.539in\hbox to 0pt{\hss \profile/\hss}}% - \special{sh}% - \special{pa 1749 1749}% - \special{pa 1749 1249}% - \special{pa 2499 1249}% - \special{pa 2499 1749}% - \special{pa 1749 1749}% - \special{fp}% - \rlap{\kern 2.124in\lower 1.539in\hbox to 0pt{\hss \Mail/\hss}}% - \special{pa 0 2749}% - \special{pa 0 2249}% - \special{pa 749 2249}% - \special{pa 749 2749}% - \special{pa 0 2749}% - \special{fp}% - \rlap{\kern 0.374in\lower 2.539in\hbox to 0pt{\hss \context/\hss}}% - \special{sh}% - \special{pa 999 2749}% - \special{pa 999 2249}% - \special{pa 1749 2249}% - \special{pa 1749 2749}% - \special{pa 999 2749}% - \special{fp}% - \rlap{\kern 1.374in\lower 2.539in\hbox to 0pt{\hss \file{inbox/}\hss}}% - \special{pa 1999 2749}% - \special{pa 1999 2249}% - \special{pa 2749 2249}% - \special{pa 2749 2749}% - \special{pa 1999 2749}% - \special{fp}% - \rlap{\kern 2.374in\lower 2.539in\hbox to 0pt{\hss \file{mhl.format}\hss}}% - \special{pa 2999 2749}% - \special{pa 2999 2249}% - \special{pa 3749 2249}% - \special{pa 3749 2749}% - \special{pa 2999 2749}% - \special{fp}% - \rlap{\kern 3.374in\lower 2.539in\hbox to 0pt{\hss \file{replcomps}\hss}}% - \special{sh}% - \special{pa 3999 2749}% - \special{pa 3999 2249}% - \special{pa 4749 2249}% - \special{pa 4749 2749}% - \special{pa 3999 2749}% - \special{fp}% - \rlap{\kern 4.374in\lower 2.539in\hbox to 0pt{\hss \file{drafts/}\hss}}% - \special{sh}% - \special{pa 4999 2749}% - \special{pa 4999 2249}% - \special{pa 5749 2249}% - \special{pa 5749 2749}% - \special{pa 4999 2749}% - \special{fp}% - \rlap{\kern 5.374in\lower 2.539in\hbox to 0pt{\hss \file{chron/}\hss}}% - \special{pa 2024 3449}% - \special{pa 2024 3249}% - \special{pa 2224 3249}% - \special{pa 2224 3449}% - \special{pa 2024 3449}% - \special{fp}% - \rlap{\kern 2.124in\lower 3.389in\hbox to 0pt{\hss \file{3}\hss}}% - \special{pa 1699 3449}% - \special{pa 1699 3249}% - \special{pa 1899 3249}% - \special{pa 1899 3449}% - \special{pa 1699 3449}% - \special{fp}% - \rlap{\kern 1.799in\lower 3.389in\hbox to 0pt{\hss \file{2}\hss}}% - \special{pa 1374 3449}% - \special{pa 1374 3249}% - \special{pa 1574 3249}% - \special{pa 1574 3449}% - \special{pa 1374 3449}% - \special{fp}% - \rlap{\kern 1.474in\lower 3.389in\hbox to 0pt{\hss \file{1}\hss}}% - \special{pa 249 3749}% - \special{pa 249 3249}% - \special{pa 1249 3249}% - \special{pa 1249 3749}% - \special{pa 249 3749}% - \special{fp}% - \rlap{\kern 0.749in\lower 3.539in\hbox to 0pt{\hss \sequences/\hss}}% - \special{sh}% - \special{pa 4999 3749}% - \special{pa 4999 3249}% - \special{pa 5749 3249}% - \special{pa 5749 3749}% - \special{pa 4999 3749}% - \special{fp}% - \rlap{\kern 5.374in\lower 3.539in\hbox to 0pt{\hss \file{yr.1985/}\hss}}% - \special{sh}% - \special{pa 4124 3749}% - \special{pa 4124 3249}% - \special{pa 4874 3249}% - \special{pa 4874 3749}% - \special{pa 4124 3749}% - \special{fp}% - \rlap{\kern 4.499in\lower 3.539in\hbox to 0pt{\hss \file{yr.1984/}\hss}}% - \special{pa 3674 3449}% - \special{pa 3674 3249}% - \special{pa 3874 3249}% - \special{pa 3874 3449}% - \special{pa 3674 3449}% - \special{fp}% - \rlap{\kern 3.774in\lower 3.389in\hbox to 0pt{\hss \file{1}\hss}}% - \special{pa 1249 249}% - \special{pa 1499 0}% - \special{dt 0.050}% - \special{pa 1249 749}% - \special{pa 374 1249}% - \special{fp}% - \special{pa 1249 749}% - \special{pa 2124 1249}% - \special{fp}% - \special{pa 2124 1749}% - \special{pa 374 2249}% - \special{fp}% - \special{pa 2124 1749}% - \special{pa 1374 2249}% - \special{fp}% - \special{pa 2124 1749}% - \special{pa 2374 2249}% - \special{fp}% - \special{pa 2124 1749}% - \special{pa 3374 2249}% - \special{fp}% - \special{pa 2124 1749}% - \special{pa 4374 2249}% - \special{fp}% - \special{pa 2124 1749}% - \special{pa 5374 2249}% - \special{fp}% - \special{pa 1374 2749}% - \special{pa 749 3249}% - \special{fp}% - \special{pa 1374 2749}% - \special{pa 1474 3249}% - \special{fp}% - \special{pa 1374 2749}% - \special{pa 1799 3249}% - \special{fp}% - \special{pa 1374 2749}% - \special{pa 2124 3249}% - \special{fp}% - \special{pa 4374 2749}% - \special{pa 3774 3249}% - \special{fp}% - \special{pa 4374 2749}% - \special{pa 4624 2999}% - \special{dt 0.050}% - \special{pa 5374 2749}% - \special{pa 5374 3249}% - \special{fp}% - \special{pa 5374 2749}% - \special{pa 4499 3249}% - \special{fp}% - \special{pa 5374 3749}% - \special{pa 5124 3999}% - \special{dt 0.050}% - \special{pa 5374 3749}% - \special{pa 5624 3999}% - \special{dt 0.050}% - \special{pa 4499 3749}% - \special{pa 4249 3999}% - \special{dt 0.050}% - \special{pa 4499 3749}% - \special{pa 4749 3999}% - \special{dt 0.050}% - \kern 5.750in - }\vss}% - \kern 4.000in -} diff --git a/docs/historical/multifarious/multifarious.tex b/docs/historical/multifarious/multifarious.tex deleted file mode 100644 index 878e1eb6..00000000 --- a/docs/historical/multifarious/multifarious.tex +++ /dev/null @@ -1,105 +0,0 @@ -% run this through PhD-TeX - -\input dcustom -\articlestyle -\input version - -\def\draftext{% - \begingroup - \eightpoint\sf - Reprinted from - {\it Computer Networks and ISDN Systems}, 10(2), - September, {\oldstyle 1985}% - \endgroup -} -\catcode`\@=11 -\def\draftstring{% - \ifnum\pageno>\z@ - \begingroup - \eightpoint\sf - Copyright $\copyright$ {\oldstyle 1985}, - North Holland Publishing Company - \endgroup - \fi -} -\def\uci@footpage{\draftstring\hfil\rm\folio} -\catcode`\@=12 - -\input sfwmac -\def\MTA/{{\sf MTA}} -\def\MTS/{{\sf MTS}} -\def\UA/{{\sf UA}} -\def\MH/{{\sf MH}} - -\def\uitem#1{\item{\underbar{#1}:}} - -\header - MH: A Multifarious User Agent\title - Marshall T.~Rose\\ - Member, Research Technical Staff\\ - Northrop Research and Technology Center$^\dagger$\\ - \\ - Einar A.~Stefferud\\ - President, Network Management Associates$^\ddagger$\\ - and Visiting Lecturer, University of California, Irvine\\ - \\ - Jerry N.~Sweet\\ - Member, Technical Staff\\ - Local Network Systems$^{\bowtie}$\author\info -\footnote{}{\hskip -\parindent $^\dagger$ -One~Research Park, -Palos Verdes Peninsula, CA 90274. -Telephone: 213/377--4811.\hbreak -Computer mail: {\tx MRose\%NRTC@USC-ECL}} -\footnote{}{\hskip -\parindent $^\ddagger$ -17301~Drey Lane, -Huntington Beach, CA 92647. -Telephone: 714/842--3711.\hbreak -Computer mail: {\tx EStefferud@ICS.UCI.EDU}} -\footnote{}{\hskip -\parindent $^{\bowtie}$ -130~McCormick Avenue, Suite~102, -Costa Mesa, CA 92626. -Telephone: 714/754--6631.\hbreak -Computer mail: {\tx JSweet@ICS.UCI.EDU}} - -\centerline{\sc Abstract} % mtr -{\rightskip=0pt -\lp -The UCI version of the Rand Message Handling System (\MH/) is discussed, -including important extensions. -\MH/ is a powerful user agent which operates in the ARPA Internet and UUCP -environments. -In addition to the basic functions provided by a user agent, -such as reading and sending mail, -\MH/ has several distinguishing characteristics which give the user -additional message handling capabilities. -In particular, -\MH/ provides mechanisms for organizing messages, -tailoring its own behavior, -and extending its functions. - -\lp -This document describes \MH/ from several perspectives. -Particular emphasis is given to: -the \MH/ user environment, -advanced features of \MH/ which have proven to be particularly useful for -sophisticated users of electronic mail, -\MH/'s potential as a record manager, -and -\MH/ as a part of a distributed mail environment. -Although \MH/ as been widely used since its creation in 1979, -a discussion of its perspectives and functionality has not appeared in the -open literature. -\par} - -\input text -\input refs -\input appendixA - -\printcontents -\unskip\footnote{}{\hskip -\parindent -This document (version \versiontag/) -was \TeX set \today\ with DISS.STY v\version.} -\showsummary - -\bye diff --git a/docs/historical/multifarious/refs.tex b/docs/historical/multifarious/refs.tex deleted file mode 100644 index cba2736f..00000000 --- a/docs/historical/multifarious/refs.tex +++ /dev/null @@ -1,250 +0,0 @@ -% references - -\references - -\ref{DCome83} -\by D.~Comer. -\paper The Computer Science Research Network CSnet: -A History and Status Report -\journal Communications of the ACM\volume 26\issue 10 -\month October\year 1983 -\pages 747--753 -\endref - -\ref{DCroc79} -\by D.H.~Crocker, E.S.~Szurkowski, D.J.~Farber. -\paper An Internetwork Memo Distribution Facility~---~MMDF -\inbook Proceedings, -Sixth Data Communications Symposium -\publaddr Asilomar -\month November\year 1979 -\pages 18--25 -\endref - -\ref{DCroc82} -\by D.H.~Crocker. -\paper Standard for the Format of ARPA Internet Text Messages -\paperinfo Request for Comments 822 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month August\year 1982 -\endref - -\ref{DEA} -\book Data Encryption Algorithm -\bookinfo X3.92--1981 -\publ American National Standards Institute -\year 1981 -\endref - -\ref{DKing84} -\by D.P.~Kingston,~III. -\paper MMDFII: A Technical Review -\inbook Proceedings -Usenix Summer '84 Conference -\publaddr Salt Lake City, Utah -\month June\year 1984 -\pages 32--41 -\endref - -\ref{EAllm83} -\by E.~Allman. -\paper SENDMAIL~---~An Internetwork Mail Router -\other -\publ Britton-Lee, Inc. -\publaddr Berkeley, California -\month July\year 1983 -\endref - -\ref{EOlse84} -\by E.W.~Olsen. -\paper NetOS Concepts and Facilities -\other -\publ Local Network Systems, Inc. -\publaddr Costa Mesa, California -\month August\year 1984 -\endref - -\ref{EStef84} -\by E.A.~Stefferud, J.N.~Sweet, T.P.~Domae. -\paper MZnet: Mail Service for Personal Micro-Computer Systems -\inbook Proceedings, -Second International Symposium on Computer Message Systems -\publaddr Nottingham, U.K -\month May\year 1984 -\pages 293--302 -\endref - -\ref{FIKM} -\book Financial Institution Key Management -\bookinfo X9.17--198\_ (draft) -\publ American National Standards Institute -\year 198\_ -\endref - -\ref{FIPS46} -\book Data Encryption Standard -\bookinfo Federal Information Processing Standards, -Publication 46 -\month January\year 1977 -\endref - -\ref{FIPS81} -\book DES Modes of Operation -\bookinfo Federal Information Processing Standards, -Publication 81 -\month December\year 1980 -\endref - -\ref{FIPS98} -\paper Specification for Message Format for Computer Based Message Systems -\other -\publ National Bureau of Standards -\month January\year 1983 -\endref - -\ref{HERMES} -\by Bolt, Beranek, and Newman. -\paper Hermes User's Manual -\paperinfo for TOPS-20 -\other -\publ Bolt, Beranek, and Newman -\publaddr Boston, MA -\month January\year 1979 -\endref - -\ref{IP} -\paper Internet Protocol -\paperinfo Request for Comments 791 (\milstd/ 1777) -\inbook Internet Protocol Transition Workbook -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month September\year 1981 -\endref - -\ref{JReyn84} -\by J.K.~Reynolds. -\paper Post Office Protocol -\paperinfo Request for Comments 918 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month October\year 1984 -\endref - -\ref{LLamp82} -\by L.~Lamport, R.~Shostak, M.~Pease. -\paper The Byzantine Generals Problem -\journal ACM Transactions on Programming Languages and Systems -\volume 4 -\month July\year 1982 -\pages 382--401 -\endref - -\ref{MButl85} -\by M.~Butler, J.B.~Postel, et.~al. -\paper Post Office Protocol - Version~2 -\paperinfo Request for Comments 937 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month February\year 1985 -\endref - -\ref{MRose84a} -\by M.T.~Rose. -\paper The Rand MH Message Handling System: The UCI BBoards Facility -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\ref{MRose84b} -\by M.T.~Rose. -\paper The Rand MH Message Handling System: Tutorial -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\ref{MRose85a} -\by M.T.~Rose, J.L.~Romine. -\paper The Rand \MH/ Message Handling System: User's Manual -\paperinfo UCI Version -\other -\publ Department of Information and Computer Science -\publaddr University of California, Irvine -\month January\year 1985 -\endref - -\ref{MRose85b} -\by M.T.~Rose, E.A.~Stefferud. -\paper Proposed Standard for Message Encapsulation -\paperinfo Request for Comments 934 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month January\year 1985 -\endref - -\ref{MRose85c} -\by M.T.~Rose, D.J.~Farber, S.T.~Walker. -\paper Design of the TTI Prototype Trusted Mail Agent -\inbook Proceedings, -Second International Symposium on Computer Message Systems -\publaddr Washington, D.C. -\month September\year 1985 -\toappear -\endref - -\ref{MRose85d} -\by M.T.~Rose, E.A.~Stefferud, J.N.~Sweet. -\paper MH: A Multifarious User Agent -\journal Computer Networks%\volume V\issue N -\toappear -\endref - -\ref{SMTP} -\paper Simple Mail Transfer Protocol -\paperinfo Request for Comments 821 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month August\year 1982 -\endref - -\ref{TCP} -\paper Transmission Control Protocol -\paperinfo Request for Comments 793 (\milstd/ 1778) -\inbook Internet Protocol Transition Workbook -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month September\year 1981 -\endref - -\ref{VVoyd83} -\by V.L.~Voydock, S.T.~Kent. -\paper Security Mechanisms in High-Level Network Protocols -\journal Computing Surveys\volume 15\issue 2 -\month June\year 1983 -\pages 135--171 -\endref - -\ref{WJoy83} -\by W.N.~Joy, E.~Cooper, R.S.~Fabry, S.J.~Leffler, K.~McKusick, D.~Mosher. -\paper 4.2\bsd/ System Manual -\paperinfo Technical Report Number 5 -\publ Computer Systems Research Group, University of California, Berkeley -\month July\year 1983 -\endref - -\ref{X.400} -\book Message Handling Systems: System Model-Service Elements -\bookinfo Recommendation X.400 -\publ International Telegraph and Telephone Consultative Committee (CCITT) -\endref - -\endreferences diff --git a/docs/historical/multifarious/text.tex b/docs/historical/multifarious/text.tex deleted file mode 100644 index de450497..00000000 --- a/docs/historical/multifarious/text.tex +++ /dev/null @@ -1,1115 +0,0 @@ -% begin text - -\banner - -\section{Introduction} % mtr -\tagfigure{0}{\MTS/ model}{mtsmodel} - -The UCI version of the Rand Message Handling System, \MH/, -is a user agent. -In the interests of brevity, -we dispense with the usual definition of terms, -refer the reader to Figure~\mtsmodel, -and simply note that \MH/ is not responsible for delivering mail. -Rather, -it interacts with a {\it message transport system}, \MTS/, -at two interfaces: -it sends mail by placing it through a {\it posting slot} to the \MTS/, -and it receives mail by retrieving it through a {\it delivery slot} from the -\MTS/. -Besides these two \MTS/-specific activities, -the tasks which \MH/ addresses are: -the composition of messages -(which may, or may not, be in reference to previously sent messages), -the reading of messages, -and the organization of messages. - -\MH/ was originally developed by the Rand Corporation, -and initially was proprietary software. -The Department of Information and Computer Science at -University of California, Irvine, -shortly after joining the Computer Science Network (CSnet), -acquired a copy of \MH/, -and began additional development of the software. -Since that time, -the Rand Corporation has declared \MH/ to be in the public domain, -and the UCI version of \MH/ has passed through four major releases. - -Much credit must be given to the initial designers and implementors of \MH/: -Bruce Borden, Stockton Gaines, and Norman Shapiro. -Although \MH/ has suffered significant development at UCI -since Rand's initial release, -the fundamental concepts of \MH/'s environs have remained nearly unchanged. -In addition, -the current maintainers of \MH/ gratefully acknowledge the comments of the -many sites which have run various releases of \MH/ in the past. - -\MH/ runs on different versions of the \unix/ operating system -(such as 4.2\bsd/~\unix/ and various flavors of v7~\unix/). -In addition, -\MH/ supports four different \MTS/ interfaces: -\SendMail/\cite{EAllm83}, -the standard mailer for 4.2\bsd/ systems; -\MMDF/\cite{DCroc79} and \MMDFII/\cite{DKing84}, -the Multi-Channel Memo Distribution Facility developed by the University of -Delaware -which forms the software-backbone for CSnet\cite{DCome83} mail relays service; -SMTP, -the ARPA Internet Simple Mail Transfer Protocol\cite{SMTP}; -and, -a stand-alone delivery system. - -The organization of this paper is straight-forward, -given space considerations. -Initially, -the \MH/ philosophy of mail handling is presented, -along with a description of the environment which the \MH/ user is given to -process mail. -Following this, -certain advanced features of \MH/ are discussed in more detail. -In particular, -the notion of a {\it draft folder} is introduced, -which permits the handling of multiple drafts during composition. -In addition, -message selection facilities are described. -Next, -two different aspects of \MH/'s power as a software system are discussed: -record handling, in which \MH/ facilitates record processing systems; -and, -how \MH/ can be employed in a distributed mail environment. -This latter section raises questions as to the location of the posting and -delivery slots, -along with authentication mechanisms. -Finally, -we conclude by discussing areas of future development which \MH/ may endure. - -Although familiarity with \MH/ is not assumed on the part of the reader, -some knowledge of the \unix/ operating system is useful. -Appendix~A gives a short synopsis of the \MH/ commands. - -\section{The \MH/ Philosophy} % mtr -Although \MH/ has many traits which tend to differ it from other user agents, -the design aspect which fundamentally influences the interface between \MH/ -and the user is that it is composed of many small -programs instead of one very large one. -This architecture gives \MH/ much of its strength, -since intermediate and advanced users are able to take advantage of this -flexibility. - -The key to this flexibility is that the \unix/ shell -(usually the {\it C} shell or the {\it Bourne} shell), -is the user's interface to \MH/. -This means that when handling mail, -the entire power of the shell is at the user's disposal in addition to the -facilities which \MH/ provides. -Hence, -the user may intersperse mail handling commands with other commands in an -arbitrary fashion, -making use of command handling capabilities that the user's shell provides. - -Furthermore, -rather than storing messages in a complicated data structure -within a monolithic file, -in \MH/, each message is a \unix/ file, -and each folder (an object which holds groups of messages) -is a \unix/ directory. -That is, -the directory and file structure of \unix/ is used directly. -As a result, -any \unix/ file-handling command can be applied to any message. - -To the novice, -this may not make much sense or may not seem important. -From three years of observation, we have seen that -as users of \MH/ have become more experienced -they have found this capability to be quite attractive. -In addition, -this approach is often quite pleasing to system implementors, -because it minimizes the amount of coding to be performed -and, -given a modular design, -changes to the software system can be maintained easily. -Our empirical findings confirm our theoretical expectations regarding the -\MH/ architecture. - -Having described how \MH/ fits into the \unix/ environment, -we now discuss the mail handling environment which is available to the \MH/ -user. - -\subsection{The \MH/ Environs} % jns -\MH/ provides a complementary environment to the user's shell. -While the shell maintains a context related to the user's focus in the file -system (a {\it current working directory\/}), -mail handling is performed in a separate mail folder context. -Operations on mail can therefore be -performed entirely without regard to the current file system context, -although \MH/ does not prevent the user from making use of that context. -Certain mail handling functions do make use of information -maintained by the shell. -For instance, by setting certain shell parameters, -called {\it environment variables}, -alternate mail handling contexts can be selected. - -\MH/ conventions often have direct analogs to shell or file system -conventions. -The shell has a current working directory; \MH/ has a current mail folder. -When the user begins a session on the system, -the user's ``home directory'' is the base context; -\MH/'s default base area, the \Mail/ directory, -is found under the user's home directory. -The user's default shell parameters are set upon beginning a new -session from a startup profile -(called \file{.profile} for \pgm{sh} users -or \file{.cshrc} for \pgm{csh} users); -the default parameters for \MH/ commands are taken from a file called -\profile/ in the user's home directory. -The shell has an {\it environment\/}; -\MH/ has a \context/ file. -Each of the user's directories has files; -each of the user's \MH/ folders has messages. - -These parallels have a basis not only in \MH/'s high level mail -handling model, -but also in the way low level shell and file -system conventions have been abstracted to implement \MH/ conventions. -Directories are folders; files are messages. -The \Mail/ directory forms the root of a virtual file subsystem within -which the user operates on mail without disturbing files outside this -mail handling domain. - -\tagfigure{1}{\MH/ File Subsystem\\(directories are shaded)}{MHfiles} -\tagdiagram{2}{Elaborated \MH/ Profile}{elab} -\subsection{The \MH/ Profile} -The \profile/ contains plaintext that describes the user's default mail -handling parameters. -An example of an elaborated profile is shown in Figure~\elab. - -Each line in the profile consists of an \MH/ parameter name terminated -with a colon (`:') followed by parameter values. -In this example, -``global'' parameters are listed in the first few lines, -with program-specific parameters following. -Each \MH/ program examines global parameters as well as any parameter -with the same name by which the program was invoked. -For example, -the \pgm{comp} program, which is used to compose new messages to be sent, -examines the entries: -\medskip -{\advance\leftskip by2\parindent -\uitem{Path} -The path parameter specifies the name of the \MH/ root directory. -This is normally named \Mail/. - -\uitem{Editor} -The editor parameter specifies which text editor is first invoked to create -the header information and body of a message draft. -In most cases, this editor is the \MH/ default editor, \pgm{prompter}. - -\uitem{Draft-Folder} -This parameter specifies a folder within which new message drafts -are to be created. -The draft folder mechanism is an advanced feature of \MH/ that is -given separate treatment in a later segment of this paper. - -\uitem{comp} -The program-specific parameter examined by \pgm{comp} lists -user-default options. -\par} -\medskip - -\noindent -Other programs invoked by \pgm{comp} -(e.g. \pgm{prompter} and \pgm{send\/}) would examine their own profile -entries as well. -\MH/ programs have reasonable compiled-in defaults and also permit options to -be specified on the shell command line with which the programs are invoked. -The order of override precedence is: command line options first, -\profile/ options second, and compiled-in defaults last. - -Each program option is prefixed by a dash (`-') following the \unix/ -convention. -Unlike most \unix/-style options, -however, the options are words rather than single letters. -An option may be abbreviated to an unambiguous prefix. -Each \MH/ program has a \switch{help} option that -displays a brief summary of the program's available options. - -\subsection{Folders and Messages} -In a typical paper-oriented office, -new correspondence arrives and is stacked in an ``in box'', -while outgoing correspondence is placed in an ``out box''. -Processed material is stored in -appropriately labelled folders and filed away for future reference. -This state of affairs is modelled in \MH/ with {\it folders} -and {\it messages}, -which are simply text files (one message per file) stored -under the folder directories. -Most of the user's folders are kept under the \Mail/ directory. - -A folder is given an alphanumeric name permissible within the \unix/ file -system structure, -and each message stored therein is given a numeric name in the range 1..1999. -The upper bound on message numbers was -selected for efficient access to an internal representation, -an array of bits (a ``bit set''), -with each bit indicating the presence or -absence of a message with a number in the range 1..1999. -This internal representation also restricts the order of multiple -message reference to an ascending numerical sequence. -Other representations have been studied -(e.g., an unsorted sparse array of integers), -but have been rejected for reasons of efficiency. -Folders may contain subfolders, -corresponding to \unix/ tree-structured directories. -For the sake of completeness, -it might be said that ``sub-messages'' exist insofar as message ``digests'', -which nest messages inside other messages, -are supported by certain advanced \MH/ functions. - -The current working folder is the default folder selected for almost -all \MH/ commands. -To select explicitly a folder for mail handling -commands entails specifying the name of the folder, prefixing the name -with a plus-symbol (`+'). -An example is: \example refile\ 1\ 2\ 3\ +chron/yr.1984\endexample -This command re-files the selected messages -(\file{1}, \file{2}, and \file{3} here) -from the current working folder to a subfolder under the -folder \file{chron} named \file{yr.1984}. -To see the folder/subfolder relationship, refer to Figure~\MHfiles. - -The plus-symbol notation is specific to those folders immediately -subordinate to the \Mail/ directory. -This is analogous to ``absolute pathnames'' in \unix/---those -files whose positions in the file system -hierarchy are given starting with the system root, -names prefixed with the slash character (`/'). -To specify folders subordinate to the current working folder, -an at-sign (`@') is substituted for (`+'). -It is permitted to use \unix/ dot notation to specify parent folders. -Referring to Figure~\MHfiles, -if the current working folder were \eg{+chron/yr.1985}, -then the command \example folder\ @../yr.1984\endexample -\noindent -selects the subfolder \file{yr.1984} in the parent directory -\file{chron}, as the new current working folder. -While the current working folder is normally the default, it may be -specified explicitly as \eg{@.}. - -\subsection{The Context File} -The \profile/ contains static information about the user's -preferences. -A \context/ file, contained in the \Mail/ directory, -contains the current mail handling environment information, -which changes as different folders, messages, and named message lists -(called {\it message sequences\/}) are selected, created, and updated. -This information is retained between invocations of \MH/ commands, -and is preserved across system sessions. - -\tagdiagram{3}{Elaborated Reply Template}{replcomps} -\subsection{Templates} -The message draft composition functions -(\pgm{comp}, \pgm{repl}, \pgm{forw}, and \pgm{dist\/}) -use certain default header formats, -which may be changed by the user through the use of message templates. -The exact format of a template may vary among commands. -An example of an elaborated template for the reply command \pgm{repl} is -shown in Figure~\replcomps. - -This template specifies how the automatically-generated header for a -draft message in reply to a source message is to be formatted. -The syntax is capable of directing output of header lines based on the -presence or absence of other header lines in the source message. - -Other kinds of templates are used to specify the display formats of -messages, or to specify the way that messages are to be included in -other messages. This is similar to the functionality provided by BBN -Hermes\cite{HERMES}, -another powerful mail handling system for \tops20/ based systems. - -\subsection{Explaining All This to New Users} -There do exist people who do not like \MH/.% -\nfootnote{At UCI, these -people are reported to be weeded out at an early stage and quietly taken to the -Ministry of Love to be made {\it uncrimethinkful}.} -The emerging pattern of complaints from such people indicates that \MH/ -accentuates their perceptions of the deficiencies of \unix/, -to wit, lack of interactivity and lack of easily found help facilities. -Also, -some feel that the proximity of the mail handling environment to the -operating system is a distraction, rather than an asset. -There have been some attempts to make \MH/ more accessible to users who prefer -menu-oriented or monolithic mail system interfaces.% -\nfootnote{For example, -\pgm{mhe} from Brian Reid of Stanford University -and \pgm{emh} from Marshall Rose -are instances of macro packages for James Gosling's \EMACS/ extensible editor, -while the \pgm{hm} program from Jim Guyton of the Rand Corporation is a -monolithic \MH/ interface. -As of this writing, -none of these programs is documented in the literature.} - -In truth, -users new to \unix/ do not always acclimate to \MH/ easily. -The command set is undistinguishably mixed in with all other \unix/ -utilities, and it is not easy, without aid of a manual, -to pick out the necessary commands. -\MH/ does not provide any ``hand-holding'' to guide -the user through a minimally useful command subset. - -Another problem is that the initial default user profile is too often sparse, -containing only a \eg{Path:} parameter. -\MH/ commands will perform adequately without specific information -in the profile, -so new users often neglect optionally useful \MH/ capabilities, -eventually becoming frustrated with the limited default capabilities, -yet unable to determine without researching through the user's manual, -the necessary options that would solve their problems. - -The currently available means for learning how to use \MH/ are: -\medskip -{\advance\leftskip by 2\parindent -\item{$\bullet$} -One-on-one tutoring by knowledgeable \MH/ users, -which has so far shown the best results with new users. - -\item{$\bullet$} -Consulting the {\it \MH/ Tutorial\/}\cite{MRose84b}, -or the {\it \MH/ User's Manual\/}\cite{MRose85a}. - -\item{$\bullet$} -Using the \pgm{msh} (``\MH/ shell'') program as a training shell to read -bulletin boards. -The \pgm{msh} command is an interactive program that provides some help -messages and can list available \MH/ commands. -\par} -\medskip - -\noindent -No on-line tutorial materials are presently distributed with the \mh5 -system, although there are some plans in the works to provide a program -to help with setting up the user profile that would also provide -operational tips for \MH/ and \unix/. - -It should be noted that these perceived defects of \MH/ do not affect its -utility any more than analogous problems with any operating system -will diminish its actual capabilities. -Users may quarrel with the means chosen for orchestrating \MH/, -but the fact remains that \MH/ is a very -useful set of mail handling tools that is flexible, -infinitely interoperable with other \unix/ text handling tools, -and yet simple enough for new users to grasp once they are given the -proper start. -The fact that better tutorial materials and training do not exist only means -that some further work needs to be done in the area of user-education. - -\section{A Few Advanced Features} % mtr -We now consider certain advanced features in \MH/. -These features have been chosen to demonstrate some useful capabilities -available to the \MH/ user. -It should be noted that many capabilities of \MH/, -such as shell scripts for extensibility, -mail delivery hooks, -the personal aliasing facility, -and so forth, -are not described here for lack of space. - -\subsection{Draft Folders} % jns -The {\it draft folder} facility provides a method by which several -message drafts can be simultaneously composed and maintained until -sent. -The rationale for this is that partially composed message drafts, -perhaps elaborate sets of separate messages, -can be incrementally completed, -while a folder provides a consistent organization for drafts in progress. -This is comparable to similar situations in the ``paper world'' where -contracts, business correspondence, and other communications, -rather than being created serially with each posted in turn before composing -the next, -are usually left in various stages of -completion before they are eventually mailed. - -The \eg{Draft-Folder:} parameter value in the \MH/ profile is used to -specify a default draft folder, -where each draft is given a number and an ``artificial'' date stamp. -Provided that the proper header fields have been completed, -a \pgm{scan} listing of the draft folder provides a summary of -each draft in progress: -to whom the message is to be sent, -the subject, -the date of the draft's initial creation and optionally, -the current size of the draft in terms of characters. -Experienced users of \MH/ may often keep as many as five to ten unfinished -drafts in their draft folder. -``Draft clutter'' can be remedied easily with the \pgm{rmm} command. - -\subsection{Message Selection} % stef -\MH/ commands accept {\it message sequence} specifications to specify which -\arg{msg} or \arg{msgs} are to be operated upon. -Here are some examples: -\example scan\ 1\ 3\ 5\ 19\ 185\endexample -to get a scan listing of messages 1, 3, 5, 19 and 185. -\example scan\ pseq\endexample -to get a scan listing of whatever message sequence was given to the previous -MH command (in this case 1, 3, 5, 19, and 185). -\example show\ first\ last\endexample -to get a display of the first and last messages in the folder. -The \MH/ sequences named \eg{first} and \eg{last} are system defined pseudo -sequences which act like explicit sequences when given to MH commands. -Others are \eg{cur}, \eg{next}, \eg{prev}, -and \eg{all} which respectively specify the ``current'' message, -the ``next'' after cur, -the ``previous'' message before cur, -or ``all'' messages in the current-folder. -The \pgm{scan} assumes \eg{all} while show assumes \eg{cur}, -unless overridden on the command line. -Over-ride precedence is: command-line first, -\profile/ second, -and compiled-in default last. - -Users can define additional sequences for similar use, -but must avoid using reserved names. -A few optional sequence names have been preempted by \MH/, -such as \eg{pseq} to mean the -``sequence used by the previous MH command,'' -and \eg{unseen} to mean the ``messages not yet seen by the user.'' -Sometimes these preempted names can be changed by resetting them in the -user's \MH/ profile, -but these facilities are beyond the scope of this discussion. - -The mark command can be used to set the values for user-defined sequences: -\example mark\ 1\ 3\ 5\ -seq\ zzz\\ - mark\ 4\ 5\ 9\ -seq\ zzz\ -nozero\endexample -will create a user-sequence named \eg{zzz} and put the sequence \eg{1 3 5} -in it. -The \pgm{mark} command assumes that any prior content in an -existing user-sequence should be ``zeroed'' before the new sequence value is -recorded. -This can be prevented with a \switch{nozero} switch on the command line, -to add \eg{4 5 9} to the original \eg{1 3 5} to yield \eg{1 3 4 5 9}. -\example mark\ pseq\ zzz\ -seq\ zzznew\endexample -will create a new sequence named \eg{zzznew} and set its value to the combined -(inclusive or) of the existing user-sequences in \eg{pseq} and \eg{zzz} for -its value. - -Another more powerful way to set the values of a user-sequence is with -the pick command, which provides full string search capabilities: -\example pick\ -from\ mrose\ -seq\ yyy\\ - pick\ -from\ mrose\ -seq\ yyy\ -list\endexample -will search though all the \eg{From:} fields in the current folder for the -string \eg{mrose} and place the list of ``hits'' -in the sequence named \eg{yyy}. -The \switch{list} switch will cause the resulting list to also be displayed on -the user's terminal. -If no \switch{seq\ name} switch is given, -pick will assume \switch{list} -and will simply display the resulting list of hits on the user's terminal. - -This \switch{list} behavior of pick allows users to take advantage of the -\unix/ backquoting facility to embed searches in other \MH/ commands. -\example scan\ \bq{pick\ -from\ mrose}\endexample -will produce a scan listing of \switch{from\ mrose} hits because the -\unix/ shell will spawn a process to execute the -\eg{pick\ -from\ mrose} segment and return the \switch{list} -results as the message sequence to be scanned. -\example mark\ pseq\ -seq\ zzz\endexample -could then be used to capture the ``previous sequence'' in zzz for later use. - -One last facility should be mentioned here. -It is also possible to negate a sequence to specify a new sequence. -The default negation string is \eg{not}. -\example scan\ notzzz\\ - mark\ notzzz\ -seq\ zzznot\endexample -will give the user a scan listing of all the messages in the current folder -that are not included in the sequence \eg{zzz}. -The mark example will of course record the negation of zzz in zzznot. -It is a bad idea to use the string \eg{not} as the beginning of any -user-sequence name, -if \eg{not} is defined as the negation string. -(Users can choose a different negation string.) - -From this discussion, -it should be clear that \MH/ provides a uniform set of ways to capture -and use sequences to augment the user's short- and long-term -memory and to manipulate lists of interesting messages. -User-sequences are normally stored as RFC822 labeled text lines in a file -(e.g., \sequences/) -in the folder with the messages referred to in the sequence. -If a user does not have write access to a folder, -then the \MH/ \pgm{mark} and \pgm{pick} commands will -create a ``private'' sequence in the user's \context/ file. -Switches are available to give the user control over -the choice of \switch{private} or \switch{public} sequence options. - -Since user-sequences are stored as ordinary text lines in RFC822 labeled -fields, -there is no prohibition against someone writing programs to perform -any kind of useful manipulation on \MH/ sequences. -Boolean operators can be implemented, -or complex indexing structures could be developed to serve special purposes. -If a DBMS can utilize \unix/ pathnames or \MH/ \arg{+folder} and -message names, -then the full power of the DBMS might be applied. -The intention of \MH/ development teams has always been to leave open the -widest possible array of options for later extension. -The only restrictions should be the user's ingenuity, -programming prowess, and the available machine resources. -Unfortunately these resources always seem to be available in -limited quantities. - -\subsection{Distribution Lists} % mtr -\MH/ has a convenient interface to the UCI BBoards facility\cite{MRose84a}.% -\nfootnote{The UCI BBoards facility can run under either the \MMDF/ or -\SendMail/, -or in a more restricted form under stand-alone \MH/.} -This facility permits the efficient distribution of interest group messages -on a single host, -to a group of hosts under a single administration, -and to the ARPA Internet community. - -Described simply, an interest group is composed of a number of subscribers -with a common interest. -These subscribers post mail to a single address, known as a -{\it distribution} address (e.g., {\tx MH-Workers@UCI}). -From this distribution address, a copy of the message is sent to each -subscriber. -Each group has a {\it moderator}, -which is the person that runs the group. -This moderator can usually be reached at a special address, -known as a {\it request} address (e.g., {\tx MH-Workers-Request@UCI}). -Usually, the responsibilities of the moderator are quite simple, -since the mail system handles distribution to subscribers automatically. -In some interest groups, -instead of each separate message being distributed directly to subscribers, -a batch of (related) messages are put into a {\it digest} format by the -moderator and then sent to the subscribers. -Although this requires more work on the part of the moderator -and introduces delays, -such groups tend to be better organized. - -Unfortunately, some problems arise with the scheme outlined above. -First, if two users on the same host subscribe to the same interest group, -two copies of the message will be delivered. -This is wasteful of both processor and disk resources at that host. - -Second, -some groups carry a lot of traffic. -Although subscription to a group does indicate interest on the part of a -subscriber, -it is usually not interesting to get 50 messages or so delivered to -the user's private maildrop each day, -interspersed with {\it personal} mail, -that is likely to be of a much more important and timely nature. - -Third, if a subscriber's address in a distribution list -becomes ``bad'' somehow and causes failed mail to be returned, -the originator of the message is normally notified. -It is not uncommon for a large list to have several bogus addresses. -This results in the originator being flooded with ``error messages'' from -mailers across the Internet stating that a given address on the list was -bad. -Needless to say, -the originator usually does not care if the bogus addresses got a copy -of the message or not. -The originator is merely interested in posting a message -to the group at large. -On the other hand, -the moderator of the group does care if there are bogus addresses on the list, -but ironically does not receive notification. - -To solve all of these problems, -the UCI BBoards facility introduces a new entity into the picture: -all interest group mail is handled by a special component of the mail system. -The distribution address maps to a special {\it channel} that performs -several actions. -First, if local delivery is to be performed, -then a copy of the message is placed in a global maildrop for the interest -group with a timestamp and a unique number. -Local users can read messages posted for the interest group by reading this -``public'' maildrop. -Second, if further distribution is to take place, -a copy of the message is sent to the distribution address in such a way that -if any of the addresses are bogus, -failure notices will be returned to the local maintainer of the group -address list, rather than the originator of the message. - -This scheme has several advantages: -First, messages delivered to the local host are processed and saved once -in a globally accessible area. -The UCI BBoards facility supports software which allows a user to query an -interest group for new messages and to read and process -those messages in the \MH/-style. -Second, once a host administrator subscribes to an interest group, -each user can join or quit the list's readership without -contacting anyone. -Third, a hierarchical distribution scheme can be constructed to -reduce the amount of delivery effort. -Fourth, errors are prevented from propagating. -When an address on the distribution list goes bad, -the list moderator who is immediately responsible for the address is notified. -If a local moderator does not exist, -then the local PostMaster is notified (not the global group moderator). - -In addition to solving the problems outlined above, -the UCI BBoards facility supports several other capabilities. -BBoards may be automatically archived in order to conserve disk space and -reduce processing time when reading current items. -Also, -the archives can be separately maintained on tape for access by interested -researchers. - -Special alias files may be generated which allow the \MH/ user to shorten -address type-in. -For example, instead of sending to {\tx SF-Lovers@Rutgers}, -a user of \MH/ usually sends to \eg{SF-Lovers} and the \MH/ aliasing -facility automatically makes the appropriate expansion in the headers of the -outgoing message. -Hence, -the user need only know the name of an interest group and not its global -network address. - -Finally, the UCI BBoards facility supports {\it private} interest groups -using the \unix/ group access mechanism. -This allows a group of people on the same or different machines to conduct a -private discussion. - -The practical upshot of all this is that the UCI BBoards facility automates -the vast majority of BBoards handling from the point of view of both the -PostMaster and the user. - -\MH/ provides three programs to deal with interest groups. -The \pgm{bbc} program is used to check on the status of one or more groups, -and to optionally start an \MH/ shell on those groups which the user is -interested in. -The \pgm{bbl} program can be used to perform manual maintenance on a -discussion group beyond the normal automatic capabilities of the UCI BBoards -facility. -Finally, -the \pgm{msh} program implements an \MH/ shell for reading BBoards, -in which nearly all of the \MH/ commands are implemented in a single program. - -Observant readers may note that the use of \pgm{msh} is contrary to the \MH/ -philosophy of using relatively small, single-purposed programs. -Sadly, -the authors admit that this is true. -In an effort to avoid some problems with shared-access and message naming -conventions (which are beyond the scope of this paper), -BBoards are kept in maildrop format (monolithic) instead of folders. -Some research has gone into overcoming this problem in order to restore -\MH/'s purity of purpose, -but all solutions proposed to date are either unworkable or require -significant recoding of \MH/'s internals. - -\subsection{Encapsulation} % mtr -As described above, -some interest groups appear in digest form. -This means that the messages which appear in such a forum actually -encapsulate other messages in their body. -It turns out that the generation of a digest is not at all unlike the -generation of a draft which forwards one or more messages. -In RFC934\cite{MRose85b}, -a method is proposed to standardize message encapsulation for the ARPA -Internet community. -\MH/ uses this method for the generation of digests, -forwardings, -and blind-carbon-copies. - -A key requisite for using an encapsulation technique for digests and -forwardings is the ability to later decapsulate the contents. -Without this ability, -the forwarded messages are of little use to the recipients because they can -not be distributed, forwarded, replied-to, searched-for, -or otherwise processed as separate individual messages. -In the case of a digest, -a bursting capability is especially useful. -Not only does the ability to burst a digest permit a recipient of the digest -to reply to an individual digestified message, -but it also allows the recipient to selectively process the other messages -encapsulated in the digest. - -For example, -a single digest issue usually contains more than one topic. -A subscriber may only be interested in a subset of the topic discussed in a -particular issue. -With a bursting capability, -the subscriber can burst the digest, -scan the headers, -and process those messages which are of interest. -The others can be ignored, -if the user so desires. - -Note that with proper encapsulation technology, -one can argue for the re-distribution of messages simply becoming -special cases of message forwarding. -For example, -the NBS Standard for Mail Interchange\cite{FIPS98} -and the recent CCITT draft on Mail Handling Systems standards\cite{X.400} -both discourage the re-distribution facility in favor of forwarding -by encapsulation. - -\subsection{Encapsulation and Blind-Carbon-Copies} % mtr -Many user agents support a blind-carbon-copy facility. -\MH/ implements this using a form of encapsulation. -It may not be apparent to the reader as to why encapsulation of the original -message is a good way to deliver blind-carbon-copies. -With a blind-carbon-copy facility, -two types of addressees are possible in the draft to be sent: -{\it visible} and {\it blind}. -The visible recipients are listed as addresses in the \eg{To:} and \eg{cc:} -fields, -and the blind recipients are listed in the \eg{Bcc:} fields of the draft. -The idea behind this facility is that copies of the draft which are -delivered to the \eg{To:} and \eg{cc:} recipients should show the visible -recipients only. - -A major concern with a blind-carbon-copy facility -is that blind recipients should be prevented from accidentally replying to the -message in such a way that the visible recipients are included as addressees -in the reply. - -There are several methods to implement this facility. -Most rely on posting two drafts with the \MTS/. -One draft is destined for visible recipients, -and simply lacks the \eg{Bcc:} fields of the original draft. -The second draft is destined for the blind recipients. -The question then arises as to what form this latter draft posted should take. - -One approach might be to disable the \eg{To:} and \eg{cc:} fields of the -draft sent to the blind recipients -(e.g., by prefixing the string \eg{BCC-} to these fields). -Unfortunately, -this is often very confusing to the blind recipients -because it differs from what the visible recipients got. -Although accidental replies are not possible, -it is often difficult to tell that the message received is the result of a -blind-carbon-copy. - -The method used by \MH/ is to post two drafts, -a visible draft for the visible recipients, -and a blind draft for the blind recipients. -The visible draft consists of the original draft without any \eg{Bcc:} fields. -The blind draft contains the visible message as a forwarded message. -The headers for the blind draft contain the minimal RFC822 headers -(\eg{From:} and \eg{Date:}) -and, -if the original draft had a ``Subject:'' field, -then this header field is also included. -In addition, -\MH/ alerts the recipient that the message is a blind-carbon-copy by -placing this information in the initial encapsulation information in the -blind recipient's copy. -This scheme prevents inadvertent replies while allowing the recipient -full access to an exact copy of what was sent to the visible recipients. - -\section{\MH/ as a Record Handler} % stef -Although message format standards such as RFC822 -(and its predecessors) were originally devised to facilitate -computer processing of interpersonal messages, -there is no special reason why the concept should be -limited to interpersonal message processing. -Messages are just one of a variety of useful record forms that might -be created in one place and transfered to another for processing. -In this regard, -RFC822 wisely left open the option for higher level applications to use -arbitrary header names or field contents by proscribing \MTS/ use -of header names beginning with \eg{X-}. - -\MH/ carries though on this idea by allowing the \pgm{pick} command -to accept any arbitrary field name for string searches, -so MH users can select on any arbitrary field name without prior definition. -Beyond this, -since all messages are simply files in \unix/ directories, -applications can be developed to apply any programmable process to -any selected message. - -For example, -a {\it Time Card Form} might be called up by an \MH/ user with -\example comp\ -form\ timecomps\endexample -to enter time and attendance information into \eg{X-time$\tdots$:} fields in a -draft message record. -The \file{timecomps} form would include the address of a -supervisor who should validate the information, -along with empty fields to be filled in with data. -In fancy applications, -this might be done with a sophisticated interactive data entry tool -which would validate entered information, -but this is an open choice within the \MH/ framework. -Another -alternative would be to use a received message as the blank form to add a -degree of central control over time and attendance reporting forms. - -Receiving supervisors could simply register approval by using the \MH/ -\pgm{dist} command to resend subordinates' time cards to higher approval -levels, or -to send them to a time card collection address. -The \MH/ \pgm{dist} command automatically inserts ``ReSent'' header fields -showing who resent it and the resending date. -Alternatively, -the MH \pgm{forw} command could be used to transfer a batch of approved time -cards to the next processing station. -If desired, a new ``approval'' command could be programmed to provide a more -trusted authentication, perhaps with encryption of the content. -Trusted mail systems, such as \trustedmail/\cite{MRose85c}, -are becoming available for this purpose. - -At the final collection destination, -an automated User Agent could be programmed to directly load the data into -the Time and Attendance DBMS by -parsing and decoding the data contained in the \eg{X-time$\tdots$:} fields. -It might be noted that while the RFC822 does not restrict the -internal forms of messages, -it is necessary to conform to the interchange standard if specialized filters -for message headers are not to be built to serve as {\it export laundries} -(a term originating with Stephen H.~Willson to describe conformance -transformations in \Ada/). - -\subsection{Mapping Between Record Modes (DBMS/MHS)} -This time and attendance example suggests that it is possible to define -one-to-one mappings between RFC822 fields and DBMS data elements. -For every DBMS data element definition, -there is a potential corresponding RFC822 transferable equivalent -definition which can facilitate mail transfers of record information. -Indeed, -a large portion of the definitional work is already done where a Data Base -has already been defined. -All that remains is to define the RFC822 equivalents. - -The suggestion that a batch of time cards be forwarded inside a ``cover'' -message implies that it is possible in the \MH/ framework to recursively -bundle messages within messages, and be able to recover the originals for -separate processing at a receiving destination. -The \MH/ \pgm{burst} command can be applied recursively for this purpose -because \MH/ encapsulation uses an unambiguous scheme to delimit messages -that are enclosed inside other messages. -Thus, -it should be possible to extract a structured set of records from a DBMS -and mail the set to a foreign site for processing, or reinsertion into -another DBMS. -As long as the DBMS data element definitions -correctly correspond to the RFC822 definitions, -it is not even necessary -for the source and destination DBMS systems to be the same. - -From this discussion, -it is concluded that the \MH/ framework can be useful -for building distributed record handling systems where people at widely -scattered locations must create and submit record forms for processing -at distant locations. -This might prove to be especially effective when -a mail system is also needed for other communication purposes. -A network of sales offices is a good example, -where general message service would be used for communications -with remote manufacturing and distribution centers, -and could also be used for an order entry system. - -Another example might be for structured communications, as occur in -requisition and purchasing systems. -Requisitions could be filled in and mailed to approval offices, -and resent or forwarded to others for action. -At some point, -the requisitions could flow into other other more suitable -processing systems as needed. -At the very least, the ability to originate -requisitions can be distributed to anyone with access to a mail system -that can originate a proper requisition form. - -As a last example, -\MH/ already supports group discussions with its BBoard facilities -which allow for automatic sorting of mail by group address, -with shared private or public group access to contributed items. -As has been shown to be possible with administrative record systems, -there is no obvious limit to the ways that group discussion traffic -might be organized into structured collections with indices, -annotations, or reference pointers -to aid in making conference archives more useful. -Indeed, \MH/ tools could even be used to feed discussion items into -existing conference systems. - -\section{Distributed Mail} % mtr -Next, we consider how \MH/ might be used in a distributed mail environment. -Two schemes are discussed: -one in which connectivity is high and connections are relatively ``cheap'', -and one in which connectivity is low and connections are ``expensive''. - -\subsection{The ARPA Internet Environs} % mtr -The ARPA Internet community consists of many types of heterogeneous nodes. -Some hosts are large mainframe computers, -others are personal workstations. -All communicate using the \milstd/ TCP/IP protocol suite\cite{IP,TCP}. -Messages which conform to the Standard for the Format of ARPA Internet Text -Messages\cite{DCroc82} -are exchanged using the Simple Mail Transfer Protocol\cite{SMTP}. - -On smaller nodes in the ARPA Internet it is often impractical to maintain -a message transport agent. -For example, -a workstation may not have sufficient resources (cycles, disk space) -in order to permit an SMTP server and associated local mail delivery system -to be kept resident and continuously running. -Furthermore, -the workstation could be off-net for extended periods of time. -Similarly, -it may be expensive (or impossible) to keep a personal computer -interconnected to an IP-style network for long periods of time. -In other words, -the node is lacking the resource known as ``connectivity''. - -Despite this, -it is often desirable to be able to process mail with \MH/ on these smaller -nodes, -and they often support a user agent to aid the tasks of mail handling. -To solve this problem, -a network node which can support a message transport entity -(known as {\it service} host) offers -a maildrop service to these less endowed nodes -(known as {\it client} hosts). -The Post Office Protocol\cite{JReyn84} (POP) is intended to permit a -workstation to dynamically access a maildrop on a service host to pick-up -mail.% -\nfootnote{Actually, -there are three different descriptions of the POP. -The first, cited in \cite{JReyn84}, -was the original description of the protocol, -which suffered from certain problems. -Since then, -two alternate descriptions have been developed. -The official revision of the POP\cite{MButl85}, -and the revision of the POP which \MH/ uses -(which is documented in an internal memorandum in the \MH/ release). -This paper considers the POP in the context of the \MH/ release.} -The level of access includes the ability to -determine the number of messages in the maildrop and the size of each message, -as well as to retrieve and delete individual messages. -More sophisticated implementations of the POP server -are able to distinguish between the header and body portion of each message, -and send $n$ lines of a message to the POP client. -This capability is useful in thinly connected environments where conservation -of bandwidth is important. -By utilizing a more intelligent POP client, -a user may generate ``scan~listings'' and dynamically decide which messages -are worth taking delivery on. -The philosophy of the POP is to put intelligence in the -POP clients and not the POP servers. - -The underlying paradigm in which the POP functions is that of a -split-slot/remote-\UA/ model. -The client host (such as a workstation) is without a co-resident -{\it message transport agent} (\MTA/), -and thus makes use of a service host with an \MTA/ to obtain posting (SMTP) -and delivery (POP) services. -The entity which supports this type of environment is called a remote-\UA/ -since the user agent resides on a different host than its associated message -transport agent. - -One very important issue which must be raised at this point is one of -authentication. -The POP requires that a client identify itself to the server using a -server-specific user-id and a server/user-specific password. -This authentication is required to prevent unauthorized entities from -accessing a maildrop on a POP service host. -It must be emphasized that the POP client is not a ``trusted'' entity of the -\MTS/ in any sense at all. - -Ideally, -one would also like to authenticate mail as it is posted on the POP service -host using the SMTP. -Currently, -in the ARPA Internet community, -no authentication is done with SMTP transactions. -This is considered a shortcoming by those interested in researching the -split-\UA/ model of distributed mail. -The MZnet environment, -discussed in the next section, -has authentication facilities for posting mail. - -The current release of \MH/ supports the above model fully: -a POP client program is available to retrieve a maildrop on a POP service -host. -In addition, -using the SMTP configuration for delivery in \MH/, -a user is able to specify a search-list of service hosts (and networks) -with which to try to post mail. -Using this search-list, -when an \MH/ user posts a draft, -the \pgm{post} program will attempt to establish an SMTP connection -with each host in the list to post the message until it succeeds. -Initial experimentation with the split-\UA/ -in a local network environment has proved quite successful. - -\subsection{The MZnet Environs} % jns -In 1983, -the MZnet project\cite{EStef84} at the University of California, Irvine -set out to study the problems involved with bringing -Internet-class mail handling facilities to personal computers. -The project used Apple~II computers running the CP/M 2.2 operating system. -Programming was done in a subset of the C language called BDS C. -The transport system was based on the \MMDF/ PhoneNet software, -and implemented a {\it split-slot} arrangement between a personal computer -and a larger, -centralized mail distribution system that performed user -authentication and provided a relatively secure mail transfer channel. -The user agent, CP/MH, was based on \MH/. - -A conclusion of the experiment was that small personal computer systems -with dial-up phone connections constrain user agent systems design in -ways that require use of a {\it split-slot} interface between the \UA/ -and its supporting \MTA/, and that this interface -best provides the required services if it has error controlled command -and data transfer facilities, with interactive behavior. -Another conclusion indicated that a good design for a user agent in such -a small personal computer -environment could be based on a very modular architecture, -such as \MH/. -A final conclusion was that session-level authentication of the client \UA/ -is required for both posting and delivery. - -It should be noted that the MZnet project had a profound influence on the -development of the POP used by \MH/. -A somewhat more detailed discussion of the relations between the two -environments can be found in the POP description contained -in the \MH/ release. - -\section{A Final Note} % jns -With the fifth major release of the \MH/ system, -it has become clear that most major increases in functionality can come -only at the expense of either efficiency or portability. -Although there has been great effort to keep \MH/ portable to a number of -\unix/ implementations,% -\nfootnote{As of this writing, -there are approximately 75~sites running \mh5 -on five different implementations of \unix/.} -the divergence in process management facilities, -file system enhancements, -and even C~compiler capabilities -has already presented obstacles to some attempts to rehost the \MH/ code. - -There has been some discussion of implementing specialized \MH/ daemons -that maintain context information over one or more sessions, -thus decreasing the amount of overhead involved in starting each \MH/ command. -Unfortunately, -even if such daemons were to be implemented, -they would be very difficult to move to versions of \unix/ -without sophisticated process management facilities, -and even then the differences in ``philosophies'' -of process management\cite{WJoy83,EOlse84} -would tend to keep such daemons system specific. -A better solution seems to be simply to tune existing code. - -\section{Acknowledgements} -The authors would like to thank Norman Z.~Shapiro and -Phyllis Kantar of the Rand Corporation for their invaluable comments during -the preparation of this paper. - -\section{Distribution Information} -For information concerning distribution mechanics for the current release of -\MH/, please contact: -$$\displayindent=\leftskip \advance\displayindent by1.5\parindent - \halign{\leftline{#}\cr - Support Group\cr - Attn: MH Distribution\cr - Department of Information and Computer Science\cr - University of California, Irvine\cr - Irvine, CA 92717\qquad USA\cr - \cr - 714/856--6852\cr -}$$ diff --git a/docs/historical/multifarious/version b/docs/historical/multifarious/version deleted file mode 100644 index fb1e7bc8..00000000 --- a/docs/historical/multifarious/version +++ /dev/null @@ -1 +0,0 @@ -54 diff --git a/docs/historical/multifarious/version.sh b/docs/historical/multifarious/version.sh deleted file mode 100644 index 9ec1e792..00000000 --- a/docs/historical/multifarious/version.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [ ! -r version ]; then echo 0 > version; fi -touch version -echo '\catcode`\#=12' > version.tex -awk ' { version = $1 + 1; }\ -END { printf "\\def\\versiontag/{#1.%d}%%\n", version >> "version.tex"; \ - printf "%d\n", version > "version"; }' < version -echo '\def\versiondate/{'`date`'}%' >> version.tex -echo '\catcode`\#=6' >> version.tex -echo '\tell{Version \versiontag/ of \versiondate/}' >> version.tex diff --git a/docs/historical/multifarious/version.tex b/docs/historical/multifarious/version.tex deleted file mode 100644 index 7d936c04..00000000 --- a/docs/historical/multifarious/version.tex +++ /dev/null @@ -1,5 +0,0 @@ -\catcode`\#=12 -\def\versiontag/{#1.54}% -\def\versiondate/{Wed May 21 21:04:22 PDT 1986}% -\catcode`\#=6 -\tell{Version \versiontag/ of \versiondate/} diff --git a/docs/historical/mznet/Makefile b/docs/historical/mznet/Makefile deleted file mode 100644 index 2c9aec6d..00000000 --- a/docs/historical/mznet/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -######################################################################### -# Instructions to Make, for generation of nice-looking papers using LaTeX -######################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if latex \\nonstopmode\\input $<; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# mznet -############################################################# - -i-all: mznet.dvi - -i-print: mznet.dvi true - dvisp $(DFLAGS) -J MZnet mznet - - -# customization files, et. al., not included below -mznet.dvi: mznet.tex figure1.tex figure2.tex - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f mznet.dvi mznet.imp - -clean:; rm -f mznet.log _* - -true:; diff --git a/docs/historical/mznet/READ-ME b/docs/historical/mznet/READ-ME deleted file mode 100644 index f8d2a04a..00000000 --- a/docs/historical/mznet/READ-ME +++ /dev/null @@ -1,18 +0,0 @@ -Copyright information for "MZnet: Mail Service for Personal Micro- -Computer Systems", Stefferud, Einar; Sweet, Jerry; Domae, Terry. - -Title: Computer Message Services, Proceedings of the IFIP WG 6.5 - Conference (Nottingham, U.K., May 1-4, 1984) - -Editor: H. T. Smith - -Copyright transferred to the International Federation for Information -Processing. Authors reserve all proprietary rights and the right -to use all or part of this article in future works of their own. -In the case of republication of the whole article or parts thereof, -in journals or reprint publications by third party, written permission, -written permission must be obtained from IFIP or its designated -Publisher to be signed by at least one of the authors (who agrees -to inform the others, if any) or, in the case of a "work made for hire", -by the employer. - diff --git a/docs/historical/mznet/figure1.pic b/docs/historical/mznet/figure1.pic deleted file mode 100644 index b8a5cef9..00000000 --- a/docs/historical/mznet/figure1.pic +++ /dev/null @@ -1,44 +0,0 @@ -.PS -B1: box "user" -B2: box "UA" with .n at (B1.s.x, B1.s.y-(lineht/2)) -B3: box "MTA" with .n at (B2.s.x, B2.s.y-(lineht*4)) -B4: box "PhoneNet" with .n at (B3.s.x, B3.s.y-lineht) -B5: box "{\it modem}" with .n at (B4.s.x, B4.s.y-lineht) -B6: box "{\it modem}" with .w at (B5.e.x+(linewid*2), B5.e.y) -B7: box "PhoneNet" with .s at (B6.n.x, B4.s.y) -B8: box "MTA" with .s at (B7.n.x, B3.s.y) -B9: box "MTA" with .w at (B8.e.x+linewid, B8.e.y) -B10: box "PhoneNet" with .n at (B9.n.x, B7.n.y) -B11: box "{\it modem}" with .s at (B10.s.x, B6.s.y) -B12: box "{\it modem}" with .w at (B11.e.x+(linewid*2), B11.e.y) -B13: box "PhoneNet" with .s at (B12.s.x, B10.s.y) -B14: box "MTA" with .s at (B13.n.x, B3.s.y) -B15: box "UA" with .s at (B14.n.x, B2.s.y) -B16: box "user" with .s at (B15.n.x, B1.s.y) -line from B1.s to B2.n -line from B2.s to B3.n -line from B3.s to B4.n -line from B4.s to B5.n -line from B5.e to B6.w -line from B6.n to B7.s -line from B7.n to B8.s -line from B8.e to B9.w -line from B9.s to B10.n -line from B10.s to B11.n -line from B11.e to B12.w -line from B12.n to B13.s -line from B13.n to B14.s -line from B14.n to B15.s -line from B15.n to B16.s -line dashed from (B8.e.x+(linewid/2), B8.e.y-(lineht/2)) to \ - (B8.e.x+(linewid/2), B6.s.y) -line dotted from (B2.sw.x+(linewid/8), B3.n.y+(lineht*1.5)) to \ - (B2.se.x-(linewid/8), B3.n.y+(lineht*1.5)) -line dotted from (B15.sw.x+(linewid/8), B3.n.y+(lineht*1.5)) to \ - (B15.se.x-(linewid/8), B3.n.y+(lineht*1.5)) -move to (B1.n.x, B1.n.y+lineht); "{\tt Any Host}" -move to (B16.n.x, B1.n.y+lineht); "{\tt Any Other Host}" -move to (B8.e.x+(linewid/2), B1.n.y+lineht); "{\tt Relay Host}" -move to (B2.s.x+(linewid/2), B3.n.y+(lineht*1.75)); "{\it slot}" -move to (B15.s.x-(linewid/2), B3.n.y+(lineht*1.75)); "{\it slot}" -.PE diff --git a/docs/historical/mznet/figure1.tex b/docs/historical/mznet/figure1.tex deleted file mode 100644 index 26ac1606..00000000 --- a/docs/historical/mznet/figure1.tex +++ /dev/null @@ -1,182 +0,0 @@ -\catcode`@=11 -\expandafter\ifx\csname graph\endcsname\relax \alloc@4\box\chardef\insc@unt\graph\fi -\catcode`@=12 -\setbox\graph=\vtop{% - \baselineskip=0pt \lineskip=0pt \lineskiplimit=0pt - \vbox to0pt{\hbox{% - \special{pn 8}% - \special{pa 0 999}% - \special{pa 0 499}% - \special{pa 749 499}% - \special{pa 749 999}% - \special{pa 0 999}% - \special{fp}% - \rlap{\kern 0.374in\lower 0.791in\hbox to 0pt{\hss user\hss}}% - \special{pa 0 1749}% - \special{pa 0 1249}% - \special{pa 749 1249}% - \special{pa 749 1749}% - \special{pa 0 1749}% - \special{fp}% - \rlap{\kern 0.374in\lower 1.541in\hbox to 0pt{\hss UA\hss}}% - \special{pa 0 4249}% - \special{pa 0 3749}% - \special{pa 749 3749}% - \special{pa 749 4249}% - \special{pa 0 4249}% - \special{fp}% - \rlap{\kern 0.374in\lower 4.041in\hbox to 0pt{\hss MTA\hss}}% - \special{pa 0 5249}% - \special{pa 0 4749}% - \special{pa 749 4749}% - \special{pa 749 5249}% - \special{pa 0 5249}% - \special{fp}% - \rlap{\kern 0.374in\lower 5.041in\hbox to 0pt{\hss PhoneNet\hss}}% - \special{pa 0 6249}% - \special{pa 0 5749}% - \special{pa 749 5749}% - \special{pa 749 6249}% - \special{pa 0 6249}% - \special{fp}% - \rlap{\kern 0.374in\lower 6.041in\hbox to 0pt{\hss {\it modem}\hss}}% - \special{pa 1749 6249}% - \special{pa 1749 5749}% - \special{pa 2499 5749}% - \special{pa 2499 6249}% - \special{pa 1749 6249}% - \special{fp}% - \rlap{\kern 2.124in\lower 6.041in\hbox to 0pt{\hss {\it modem}\hss}}% - \special{pa 1749 5249}% - \special{pa 1749 4749}% - \special{pa 2499 4749}% - \special{pa 2499 5249}% - \special{pa 1749 5249}% - \special{fp}% - \rlap{\kern 2.124in\lower 5.041in\hbox to 0pt{\hss PhoneNet\hss}}% - \special{pa 1749 4249}% - \special{pa 1749 3749}% - \special{pa 2499 3749}% - \special{pa 2499 4249}% - \special{pa 1749 4249}% - \special{fp}% - \rlap{\kern 2.124in\lower 4.041in\hbox to 0pt{\hss MTA\hss}}% - \special{pa 2999 4249}% - \special{pa 2999 3749}% - \special{pa 3749 3749}% - \special{pa 3749 4249}% - \special{pa 2999 4249}% - \special{fp}% - \rlap{\kern 3.374in\lower 4.041in\hbox to 0pt{\hss MTA\hss}}% - \special{pa 2999 5249}% - \special{pa 2999 4749}% - \special{pa 3749 4749}% - \special{pa 3749 5249}% - \special{pa 2999 5249}% - \special{fp}% - \rlap{\kern 3.374in\lower 5.041in\hbox to 0pt{\hss PhoneNet\hss}}% - \special{pa 2999 6249}% - \special{pa 2999 5749}% - \special{pa 3749 5749}% - \special{pa 3749 6249}% - \special{pa 2999 6249}% - \special{fp}% - \rlap{\kern 3.374in\lower 6.041in\hbox to 0pt{\hss {\it modem}\hss}}% - \special{pa 4749 6249}% - \special{pa 4749 5749}% - \special{pa 5499 5749}% - \special{pa 5499 6249}% - \special{pa 4749 6249}% - \special{fp}% - \rlap{\kern 5.124in\lower 6.041in\hbox to 0pt{\hss {\it modem}\hss}}% - \special{pa 4749 5249}% - \special{pa 4749 4749}% - \special{pa 5499 4749}% - \special{pa 5499 5249}% - \special{pa 4749 5249}% - \special{fp}% - \rlap{\kern 5.124in\lower 5.041in\hbox to 0pt{\hss PhoneNet\hss}}% - \special{pa 4749 4249}% - \special{pa 4749 3749}% - \special{pa 5499 3749}% - \special{pa 5499 4249}% - \special{pa 4749 4249}% - \special{fp}% - \rlap{\kern 5.124in\lower 4.041in\hbox to 0pt{\hss MTA\hss}}% - \special{pa 4749 1749}% - \special{pa 4749 1249}% - \special{pa 5499 1249}% - \special{pa 5499 1749}% - \special{pa 4749 1749}% - \special{fp}% - \rlap{\kern 5.124in\lower 1.541in\hbox to 0pt{\hss UA\hss}}% - \special{pa 4749 999}% - \special{pa 4749 499}% - \special{pa 5499 499}% - \special{pa 5499 999}% - \special{pa 4749 999}% - \special{fp}% - \rlap{\kern 5.124in\lower 0.791in\hbox to 0pt{\hss user\hss}}% - \special{pa 374 999}% - \special{pa 374 1249}% - \special{fp}% - \special{pa 374 1749}% - \special{pa 374 3749}% - \special{fp}% - \special{pa 374 4249}% - \special{pa 374 4749}% - \special{fp}% - \special{pa 374 5249}% - \special{pa 374 5749}% - \special{fp}% - \special{pa 749 5999}% - \special{pa 1749 5999}% - \special{fp}% - \special{pa 2124 5749}% - \special{pa 2124 5249}% - \special{fp}% - \special{pa 2124 4749}% - \special{pa 2124 4249}% - \special{fp}% - \special{pa 2499 3999}% - \special{pa 2999 3999}% - \special{fp}% - \special{pa 3374 4249}% - \special{pa 3374 4749}% - \special{fp}% - \special{pa 3374 5249}% - \special{pa 3374 5749}% - \special{fp}% - \special{pa 3749 5999}% - \special{pa 4749 5999}% - \special{fp}% - \special{pa 5124 5749}% - \special{pa 5124 5249}% - \special{fp}% - \special{pa 5124 4749}% - \special{pa 5124 4249}% - \special{fp}% - \special{pa 5124 3749}% - \special{pa 5124 1749}% - \special{fp}% - \special{pa 5124 1249}% - \special{pa 5124 999}% - \special{fp}% - \special{pa 2749 4249}% - \special{pa 2749 6249}% - \special{da 0.050}% - \special{pa 62 2999}% - \special{pa 687 2999}% - \special{dt 0.050}% - \special{pa 4812 2999}% - \special{pa 5437 2999}% - \special{dt 0.050}% - \rlap{\kern 0.374in\lower 0.041in\hbox to 0pt{\hss {\tt Any Host}\hss}}% - \rlap{\kern 5.124in\lower 0.041in\hbox to 0pt{\hss {\tt Any Other Host}\hss}}% - \rlap{\kern 2.749in\lower 0.041in\hbox to 0pt{\hss {\tt Relay Host}\hss}}% - \rlap{\kern 0.624in\lower 2.916in\hbox to 0pt{\hss {\it slot}\hss}}% - \rlap{\kern 4.874in\lower 2.916in\hbox to 0pt{\hss {\it slot}\hss}}% - \kern 5.500in - }\vss}% - \kern 6.250in -} diff --git a/docs/historical/mznet/figure2.pic b/docs/historical/mznet/figure2.pic deleted file mode 100644 index a6220716..00000000 --- a/docs/historical/mznet/figure2.pic +++ /dev/null @@ -1,41 +0,0 @@ -.PS -B1: box "user" -B2: box "UA" with .n at (B1.s.x, B1.s.y-(lineht/2)) -B3: box "MTA" with .n at (B2.s.x, B2.s.y-(lineht*4)) -B4: box "PhoneNet" with .n at (B3.s.x, B3.s.y-lineht) -B5: box "{\it modem}" with .n at (B4.s.x, B4.s.y-lineht) -B6: box "{\it modem}" with .w at (B5.e.x+(linewid*2), B5.e.y) -B7: box "PhoneNet" with .s at (B6.n.x, B4.s.y) -B8: box "MTA" with .s at (B7.n.x, B3.s.y) -B9: box "MZnet" with .s at (B8.ne.x+(linewid/2), B8.n.y+lineht) -B10: box "PhoneNet" with .n at (B9.se.x+(linewid/2), B7.n.y) -B11: box "{\it modem}" with .s at (B10.s.x, B6.s.y) -B12: box "{\it modem}" with .w at (B11.e.x+(linewid*2), B11.e.y) -B13: box "PhoneNet" with .s at (B12.s.x, B10.s.y) -B14: box "MZnet" with .s at (B13.n.x, B9.s.y) -B15: box "UA" with .s at (B14.n.x, B2.s.y) -B16: box "user" with .s at (B15.n.x, B1.s.y) -line from B1.s to B2.n -line from B2.s to B3.n -line from B3.s to B4.n -line from B4.s to B5.n -line from B5.e to B6.w -line from B6.n to B7.s -line from B7.n to B8.s -line from B8.n to (B9.s.x-(boxwid/4), B9.s.y) -line from (B9.s.x+(boxwid/4), B9.s.y) to B10.n -line from B10.s to B11.n -line from B11.e to B12.w -line from B12.n to B13.s -line from B13.n to B14.s -line from B14.n to B15.s -line from B15.n to B16.s -line dashed from (B9.s.x, B9.s.y-(lineht/2)) to (B9.s.x, B6.s.y) -line dotted from (B2.sw.x+(linewid/8), B9.e.y) to (B2.se.x-(linewid/8), B9.e.y) -line dotted from B9.e to B14.w -move to (B1.n.x, B1.n.y+lineht); "{\tt Any Host}" -move to (B16.n.x, B1.n.y+lineht); "{\tt PC}" -move to (B9.n.x, B1.n.y+lineht); "{\tt MZnet Host}" -move to (B9.e.x+linewid, B9.e.y+(lineht/4)); "{\it split slot}" -move to (B2.s.x+(linewid/2), B9.e.y+(lineht/4)); "{\it slot}" -.PE diff --git a/docs/historical/mznet/figure2.tex b/docs/historical/mznet/figure2.tex deleted file mode 100644 index 7d18dc38..00000000 --- a/docs/historical/mznet/figure2.tex +++ /dev/null @@ -1,182 +0,0 @@ -\catcode`@=11 -\expandafter\ifx\csname graph\endcsname\relax \alloc@4\box\chardef\insc@unt\graph\fi -\catcode`@=12 -\setbox\graph=\vtop{% - \baselineskip=0pt \lineskip=0pt \lineskiplimit=0pt - \vbox to0pt{\hbox{% - \special{pn 8}% - \special{pa 0 999}% - \special{pa 0 499}% - \special{pa 749 499}% - \special{pa 749 999}% - \special{pa 0 999}% - \special{fp}% - \rlap{\kern 0.374in\lower 0.791in\hbox to 0pt{\hss user\hss}}% - \special{pa 0 1749}% - \special{pa 0 1249}% - \special{pa 749 1249}% - \special{pa 749 1749}% - \special{pa 0 1749}% - \special{fp}% - \rlap{\kern 0.374in\lower 1.541in\hbox to 0pt{\hss UA\hss}}% - \special{pa 0 4249}% - \special{pa 0 3749}% - \special{pa 749 3749}% - \special{pa 749 4249}% - \special{pa 0 4249}% - \special{fp}% - \rlap{\kern 0.374in\lower 4.041in\hbox to 0pt{\hss MTA\hss}}% - \special{pa 0 5249}% - \special{pa 0 4749}% - \special{pa 749 4749}% - \special{pa 749 5249}% - \special{pa 0 5249}% - \special{fp}% - \rlap{\kern 0.374in\lower 5.041in\hbox to 0pt{\hss PhoneNet\hss}}% - \special{pa 0 6249}% - \special{pa 0 5749}% - \special{pa 749 5749}% - \special{pa 749 6249}% - \special{pa 0 6249}% - \special{fp}% - \rlap{\kern 0.374in\lower 6.041in\hbox to 0pt{\hss {\it modem}\hss}}% - \special{pa 1749 6249}% - \special{pa 1749 5749}% - \special{pa 2499 5749}% - \special{pa 2499 6249}% - \special{pa 1749 6249}% - \special{fp}% - \rlap{\kern 2.124in\lower 6.041in\hbox to 0pt{\hss {\it modem}\hss}}% - \special{pa 1749 5249}% - \special{pa 1749 4749}% - \special{pa 2499 4749}% - \special{pa 2499 5249}% - \special{pa 1749 5249}% - \special{fp}% - \rlap{\kern 2.124in\lower 5.041in\hbox to 0pt{\hss PhoneNet\hss}}% - \special{pa 1749 4249}% - \special{pa 1749 3749}% - \special{pa 2499 3749}% - \special{pa 2499 4249}% - \special{pa 1749 4249}% - \special{fp}% - \rlap{\kern 2.124in\lower 4.041in\hbox to 0pt{\hss MTA\hss}}% - \special{pa 2374 3249}% - \special{pa 2374 2749}% - \special{pa 3124 2749}% - \special{pa 3124 3249}% - \special{pa 2374 3249}% - \special{fp}% - \rlap{\kern 2.749in\lower 3.041in\hbox to 0pt{\hss MZnet\hss}}% - \special{pa 2999 5249}% - \special{pa 2999 4749}% - \special{pa 3749 4749}% - \special{pa 3749 5249}% - \special{pa 2999 5249}% - \special{fp}% - \rlap{\kern 3.374in\lower 5.041in\hbox to 0pt{\hss PhoneNet\hss}}% - \special{pa 2999 6249}% - \special{pa 2999 5749}% - \special{pa 3749 5749}% - \special{pa 3749 6249}% - \special{pa 2999 6249}% - \special{fp}% - \rlap{\kern 3.374in\lower 6.041in\hbox to 0pt{\hss {\it modem}\hss}}% - \special{pa 4749 6249}% - \special{pa 4749 5749}% - \special{pa 5499 5749}% - \special{pa 5499 6249}% - \special{pa 4749 6249}% - \special{fp}% - \rlap{\kern 5.124in\lower 6.041in\hbox to 0pt{\hss {\it modem}\hss}}% - \special{pa 4749 5249}% - \special{pa 4749 4749}% - \special{pa 5499 4749}% - \special{pa 5499 5249}% - \special{pa 4749 5249}% - \special{fp}% - \rlap{\kern 5.124in\lower 5.041in\hbox to 0pt{\hss PhoneNet\hss}}% - \special{pa 4749 3249}% - \special{pa 4749 2749}% - \special{pa 5499 2749}% - \special{pa 5499 3249}% - \special{pa 4749 3249}% - \special{fp}% - \rlap{\kern 5.124in\lower 3.041in\hbox to 0pt{\hss MZnet\hss}}% - \special{pa 4749 1749}% - \special{pa 4749 1249}% - \special{pa 5499 1249}% - \special{pa 5499 1749}% - \special{pa 4749 1749}% - \special{fp}% - \rlap{\kern 5.124in\lower 1.541in\hbox to 0pt{\hss UA\hss}}% - \special{pa 4749 999}% - \special{pa 4749 499}% - \special{pa 5499 499}% - \special{pa 5499 999}% - \special{pa 4749 999}% - \special{fp}% - \rlap{\kern 5.124in\lower 0.791in\hbox to 0pt{\hss user\hss}}% - \special{pa 374 999}% - \special{pa 374 1249}% - \special{fp}% - \special{pa 374 1749}% - \special{pa 374 3749}% - \special{fp}% - \special{pa 374 4249}% - \special{pa 374 4749}% - \special{fp}% - \special{pa 374 5249}% - \special{pa 374 5749}% - \special{fp}% - \special{pa 749 5999}% - \special{pa 1749 5999}% - \special{fp}% - \special{pa 2124 5749}% - \special{pa 2124 5249}% - \special{fp}% - \special{pa 2124 4749}% - \special{pa 2124 4249}% - \special{fp}% - \special{pa 2124 3749}% - \special{pa 2562 3249}% - \special{fp}% - \special{pa 2937 3249}% - \special{pa 3374 4749}% - \special{fp}% - \special{pa 3374 5249}% - \special{pa 3374 5749}% - \special{fp}% - \special{pa 3749 5999}% - \special{pa 4749 5999}% - \special{fp}% - \special{pa 5124 5749}% - \special{pa 5124 5249}% - \special{fp}% - \special{pa 5124 4749}% - \special{pa 5124 3249}% - \special{fp}% - \special{pa 5124 2749}% - \special{pa 5124 1749}% - \special{fp}% - \special{pa 5124 1249}% - \special{pa 5124 999}% - \special{fp}% - \special{pa 2749 3499}% - \special{pa 2749 6249}% - \special{da 0.050}% - \special{pa 62 2999}% - \special{pa 687 2999}% - \special{dt 0.050}% - \special{pa 3124 2999}% - \special{pa 4749 2999}% - \special{dt 0.050}% - \rlap{\kern 0.374in\lower 0.041in\hbox to 0pt{\hss {\tt Any Host}\hss}}% - \rlap{\kern 5.124in\lower 0.041in\hbox to 0pt{\hss {\tt PC}\hss}}% - \rlap{\kern 2.749in\lower 0.041in\hbox to 0pt{\hss {\tt MZnet Host}\hss}}% - \rlap{\kern 3.624in\lower 2.916in\hbox to 0pt{\hss {\it split slot}\hss}}% - \rlap{\kern 0.624in\lower 2.916in\hbox to 0pt{\hss {\it slot}\hss}}% - \kern 5.500in - }\vss}% - \kern 6.250in -} diff --git a/docs/historical/mznet/mznet.bbl b/docs/historical/mznet/mznet.bbl deleted file mode 100644 index 3144d22a..00000000 --- a/docs/historical/mznet/mznet.bbl +++ /dev/null @@ -1,52 +0,0 @@ -\begin{thebibliography}{5.} -\bibitem{ARPANET-Literature} SRI-NIC, ARPANET Directory, -Network Information Center, SRI International, Menlo Park, California -(November 1980). -\bibitem{CACM-83} Comer, D., A Computer Science Research Network CSNET: -A History and Status Report, Communications of the ACM, volume 26, number 10 -(October 1983) 747-753. -\bibitem{USENET-Literature} Emerson, S. L., USENET: A Bulletin Board -for Unix Users. BYTE, volume 8, number 10 (October 1983) 219-236. -\bibitem{Vittal81} Vittal, J., MSG: A Simple Message System, in: -Uhlig (editor), Proceedings of the IFIP TC-6 International Symposium on -Computer Message Systems (North-Holland, April 1981). -\bibitem{Deutsch81} Deutsch, D., Design of a Message Format Standard, in: -Uhlig (editor), Proceedings of the IFIP TC-6 International Symposium on -Computer Message Systems (North-Holland, April 1981). -\bibitem{Pickens81} v.Bochmann, G. and Pickens, J. R., A Methodology -for the Specification of a Message Transport System, in: Uhlig (editor), -Proceedings of the IFIP TC-6 International Symposium on Computer Message -Systems (North-Holland, April 1981). -\bibitem{Kerr81} Kerr, I. H., Interconnection of Electronic Mail Systems, -in: Uhlig (editor), Proceedings of the IFIP TC-6 International Symposium -on Computer Message Systems (North-Holland, April 1981). -\bibitem{RFC-822} Crocker, D., Standard for the Format of ARPA Internet -Text Messages (RFC 822) Network Information Center, SRI International, -Menlo Park, California (August 1982). -\bibitem{NBS} NBS, Message Format for Computer-Based Message Systems, -U.S. National Bureau of Standards FIPS Publication 98 (March 1983). -\bibitem{CCITT} CCITT Study Group VII/5, Draft Recommendation -X.MHS1: Message Handling Systems: System Model---Service Elements (version 2), -Technical Report, International Telegraph and Telephone Consultative -Committee (CCITT) (December 1982). -\bibitem{Rose84} Rose, M., Low Tech Connections into the ARPA Internet: -The RawPacket Split-Gateway, University of California Irvine -Techical Report number 216 (February 1984). -\bibitem{MMDF} Crocker, D., Szurkowski, E., Farber, D. J., An Internet -Memo Distribution Facility---MMDF, Proceedings of the Sixth IEEE Data -Communications Symposium (November 1979). -\bibitem{Rose83-1} Rose, M., The ZOTnet---A Local Area Mailing Network, -University of California Irvine Technical Report number 200 (January 1983). -\bibitem{CSNET-UCI} CSNET-CIC, Focus on the University of California, Irvine, -CSNET News 2, Bolt, Beranek, and Newman, Cambridge, Massachusetts -(October 1983). -\bibitem{Rose83-2} Rose, M., Achieving Interoperability Between -Two Domains---Connecting the ZOTnet and UUCP Computer Mail Networks, -University of California Irvine Technical Report number 201 (January 1983). -\bibitem{RFC-MMM} Rose, M., Proposed Standard for Message Munging (RFC 886), -Network Information Center, SRI International, Menlo Park, California -(December 1983). -\bibitem{MH} Borden, B. S., Gaines, R. S., and Shapiro, N.Z., -The Rand MH Message Handling System: User's Manual -(Rand Corporation, March 1983). -\end{thebibliography} diff --git a/docs/historical/mznet/mznet.tex b/docs/historical/mznet/mznet.tex deleted file mode 100644 index 05ec3bf6..00000000 --- a/docs/historical/mznet/mznet.tex +++ /dev/null @@ -1,583 +0,0 @@ -% run through through LaTeX - -\documentstyle[12pt]{article} -\setcounter{page}{0} -\pagestyle{empty} - -\hyphenation{Phone-Net} - -\def\tagfigure#1#2#3{% - \begin{figure}[t] - \hrule - \vskip.5\baselineskip - \begin{small}\rm - \input#1\relax - \centerline{\box\graph} - \end{small} - \vskip.5\baselineskip plus.5\baselineskip - \caption{#2} - \label{#3} - \vskip2pt - \hrule - \end{figure} -} - -\begin{document} - -\title{MZnet: Mail Service for Personal Micro-Computer Systems} -\author{Einar Stefferud\\ - \it President,\\ - \it Network Management Associates\\ - and\\ - \it Visiting Lecturer,\\ - \it in Information and Computer Science\\ - \it University of California at Irvine\\ \quad\\ -Jerry Sweet\\ - \it Department of Information and Computer Science\\ - \it University of California at Irvine\\ \quad\\ -Terrance Domae\\ - \it School of Engineering\\ - \it University of California at Los Angeles} -\date{} -\maketitle - -\newpage - -\begin{abstract} -Traditional computer mail systems involve a co-resident User Agent (UA) -and Mail Transfer System (MTS) on a time-shared host computer -which may be connected to other hosts in a network, -with new mail posted or delivered directly through -co-resident mail-slot programs. -To introduce personal micro-computers (PCs) into this environment -requires modification of the traditional mail system architecture. -To this end, the MZnet project uses a {\it split-slot} model, -placing UA programs on the PCs while leaving MTA programs -on a mail relay host which can provide authentication and buffering. -The split-slot arrangement might be viewed as a new protocol level which -operates somewhere between the currently defined MTS-MTS and UA-UA levels. -\end{abstract} - -\newpage\pagestyle{plain}\pagenumbering{arabic} - - \section* {Introduction} -Mail systems were born and have grown up on large central -time sharing systems, -often imbedded in large networks of inter-operating computers with -a set of distributed processes automatically transferring mail -between users. -This is certainly the case with the U.S. Department of Defense (DoD) -Advanced Research Projects Agency Network (ARPANET) -\cite{ARPANET-Literature} -where much of the original computer network mail systems -research and development has taken place. -Other mail networks such as the Computer Science Network -\cite{CACM-83} -sponsored by the U.S. National Science Foundation, -have also used relatively large shared computers -lodged in an institutional setting, -though they are often connected together with ordinary dial-up -telephone links to form a large geographic network. -Another U.S. example is USENET -\cite{USENET-Literature} -which connects thousands of Unix\footnote{UNIX is -a Trademark of Bell Laboratories, Inc.} -systems together with informally-supported dial telephone links. -Although there have been several attempts, there appear to be no -successful mail networks based on small personal computers, -such as those that use the CP/M\footnote{CP/M is a -Trademark of Digital Research, Inc.} -or MS-DOS\footnote{MS-DOS is a Trademark of Microsoft Corporation.} -operating systems. - -\tagfigure{figure1}{The MHS Model}{mhsmodel} -The accepted architectural model (see Figure~\ref{mhsmodel}) -for computer network mail -(first articulated by the IFIP 6.5 Systems Environment Working Group) -involves a User Agent (UA) which posts new mail items through a mail slot -\cite{Vittal81,Deutsch81,Pickens81,Kerr81} -to a Mail Transfer Agent (MTA) which delivers posted items -to designated UA recipients through corresponding delivery slots. -When mail is to be delivered to a UA on another host, it is transferred -first to another MTA on the recipient user's host, which in turn puts -the mail item through its local delivery slot. -In this model, a Mail Transfer System (MTS) may be viewed -as a collection of MTAs with network connections among them -to provide Mail Transfer Services for a large number of users on -different host computers. - -Replicating this UA/MTA/MTS model on a personal micro-computer (PC) -is not an easy task. -Aspects of PCs that make support of this model difficult include -limited storage capacities, -limited processing capabilities, -and the fact that PCs are geared to support a single user -rather than several users at once. -A PC with limited secondary diskette storage and -limited processing capacity (often single-thread) is not well suited -to support the full range of automatic interactions between a UA and -an MTA, or the necessary interactions between MTAs in an MTS. -For example, -we do not see any way to certify PC systems for authentication -of posted mail. -A PC can change its entire character and behavior with insertion of a new -program diskette, suggesting that it is the operating system -diskettes and their users that must be certified, rather than the computers. -Review of certification issues shows that it is not the computer, -but its operators and managers that must be certified, -and this involves the notions of central management and control. -All this is lost in the maze of PCs that we see proliferating -on and off our campuses, in and out of our offices and homes. - -Thus, we see a need for a new arrangement with the UA separated from -its MTA, and using communication protocols to interact with it in ways -that resemble MTA-to-MTA interactions. -The UA is placed on the PC end, while the more complex -tasks performed by the MTA are relegated to the remote host end. -The remote MTA must authenticate mail items offered by the PC-based -UA, just as it would for a co-located UA, but the task is more difficult -because the PC UA is potentially anyone among the public telephone -connectable population. -This can be handled with password systems, but recognition and -identification are not the only services to be provided at the posting slot. -Posting also requires some validation of recipient addresses, -and validation of the syntax and semantics of certain header fields. -Example standards are provided by the U.S. National Bureau of Standards -(NBS) and the U.S. DoD ARPANET for the format of mail to be transferred -\cite{RFC-822,NBS,CCITT}. - -The new arrangement described in this paper might be called a -{\it split mail slot} in that the UA side of the slot is split away from -the MTA side. -Although the UA and MTA may be on opposite ends of a telephone connection, -they must still act together as a single processing unit -to move mail from one to the other, with all that this may entail. -This gives rise to a number of new MTA/UA requirements such as error -control for service requests, user intervention to select items for -delivery, and user postponement or rejection of delivery without -triggering failure notices to senders. -These are not serious problems when both MTA and UA are -programs running on a single host. -For example, with both UA and MTA on the same host, -unwanted junk mail is simply deleted at low cost, -compared to the cost of deletion after a long delivery transmission time. -Better that our PC users be able to discard items -without delivery transmission. - - \subsection* {Overview of the MZnet Environment} -The MZnet project is an undergraduate student effort sponsored within -the Information and Computer Science (ICS) Department of the -University of California at Irvine (UCI) in Southern California. -For the past 2 years, the UCI mail network, known as -ZOTnet, has been connected into the Computer Science -Network (CSnet) and in 1984, has joined the DoD ARPA Internet with a -{\it Split-Gateway} connection \cite{Rose84} -to the University of Southern California -Information Sciences Institute (USC-ISI). -The MZnet split-slot arrangement may have some similarities to the -Split-Slot Internet Gateway -at least in name, -but the problems and the implementations are quite different. - -The UCI ZOTnet environment \cite{Rose83-1} -gives the MZnet project a full-fledged -Internet-class mail system as its foundation. -The MZnet project objective is to extend this class -of mail service to personal computers located in student and faculty -residences, offices and laboratories, without waiting for full-blown -local area networking to first provide connections. -This follows a pattern of making the most of existing facilities -to provide a reasonable level of service. - -The UCI ZOTnet uses the CSnet-provided MMDF -(Multi-channel Memo Distribution Facility) software \cite{MMDF} -from the University of Delaware to interconnect -two VAX 750 Unix systems with two DEC TOPS-20 systems -through a port selector, with dial telephone connection to a CSnet relay -\cite{CSNET-UCI}. -The ZOTnet has since evolved into an ethernet-connected -local area network with the aforementioned -gateway connection into the DoD Internet. -The ZOTnet also connects to USENET with the UUCP protocols, -and provides format transformations for mail flowing between -protocol domains -\cite{Rose83-2,RFC-MMM}. -Adding to the reach of the ZOTnet with MZnet -is a natural part of its evolution\footnote{For those who are -properly curious about such things, -the name ``ZOTnet'' derives from the cry of the UCI mascot which -is the Anteater from the B.C. comic strip, and MZnet is simply -a contraction for Micro-ZOTnet.}. - -To this point we have set the context of the MZnet project. -The remainder of this paper is devoted to relatively technical -discussions of implementation of the PC user agent programs -and the split-slot UA/MTA interface. - - \section* {The MZnet User Agent: CP/MH} -CP/MH is a collection of programs designed to work in conjunction -with the Micro ZOTnet (MZnet) as an extension of the UCI ZOTnet. -CP/MH programs permit a user of a CP/M 2.2-based microcomputer to -send and receive ZOTnet mail messages, as well as to manipulate -them locally on floppy disks. -The CP/MH programs are written in the C programming language and -should be portable to similar operating environments, such as MS-DOS, etc. - -CP/MH is based on the UCI version of the Rand MH message handling system -\cite{MH} -for the Unix operating system. -The major philosophical differences between CP/MH and typical user agents -such as MSG -\cite{Vittal81} -and its descendants are those of modularity and of user interface. -In CP/MH (as in MH) the user does not invoke a single monolithic program -to deal with mail, but rather invokes individual, -non-interactive programs with common knowledge -of the way messages are stored. -Each program has default behavior which can be modified by using Unix-style -command line options at time of invocation or through a user profile. -Help messages can also be evoked from CP/MH programs. - - \subsection* {Messages and Folders} -The format of a CP/MH message adheres more or less to the syntax -described in RFC 822 -in which a message consists of headers containing information pertaining -to the message source and destination, -and the message body, separated from the headers by a blank line. -An example of such a message might be: - -\begin{verbatim} - Date: 02 Nov 83 23:04:53 PST (Wed) - To: Toto - From: The Great And Powerful Oz - Subject: What Be Your Excuse? - - What's the matter? I ask you for a simple thing like - "distribute this to Witch@Oz-West," and you can't do it. - You undergrads will do anything to get out of work! - - --ozzie -\end{verbatim} - -Following the MH convention, each message is kept in a separate file. -Since a message is simply ASCII text, it can be operated upon by -non-CP/MH programs (such as text editors, in particular). - -Collections of messages are called {\it folders}. Under CP/MH, -folders are represented by several files: an {\it info} file, -containing maintenance information about the folder, and a set -of message files with the same name as the info file, but with -unique numeric suffixes ({\it extensions} in CP/M parlance). -An example of this naming scheme might be: - -{\tt -\begin{description} -\item[{\tt DRAFT}] {\rm the info file for the {\tt DRAFT} folder} -\item[{\tt DRAFT.001}] {\rm message 1 in the folder} -\item[{\tt DRAFT.002}] {\rm message 2 in the folder} -\item[{\tt DRAFT.003}] {\rm message 3 in the folder} -\end{description} -} - -The number of messages that may be stored in a folder is limited -primarily by the storage capacity of a floppy disk, but also by -the three-digit limit of a CP/M extension. - -The info file contains a field named {\tt CURRENT:} specifying the -current message number. -The current message number signifies the default message operated upon -by CP/MH commands using a particular folder. -The current message number may be modified by some commands. -An example of the contents of the info file {\tt DRAFT} might be - -\begin{flushleft} -\hspace{.5in} {\tt CURRENT: 3} -\end{flushleft} - -This indicates that the file {\tt DRAFT.003} would be operated upon -when default conditions apply (i.e. when no message number is -explicitly given to a CP/MH command). - -Possible future uses for the info file include named message sequences -(a set of messages to which commands may be applied as a whole) and -user profile information for application to particular folders (there -is presently a single user profile, described shortly). - -A floppy diskette may contain more than one folder, but folders -do not extend over more than one floppy diskette; therefore two -different diskettes may contain folders with the same name. - - \subsection* {CP/MH Commands} -Commands operating on messages can be divided into several general categories: -\medskip -\begin{description} -\item[Transporting:] sending, receiving -\item[Viewing:] selecting for display, showing header summaries -\item[Creating:] composing, replying, forwarding -\item[Archiving:] categorizing, refiling, deleting, sorting -\end{description} - -\medskip -The architecture of CP/MH permits the simulation of some of these -categories using standard CP/M commands when CP/MH, in its present -primitive state, does not cover them. - -A minimal functionality is presently provided by the following four commands: -\medskip -\begin{description} -\item[COMP] -composes mail items: -creates a file containing header information taken -from a standard or user-specified template. -This newly-created file may be edited to fill in -the header fields and body. -\item[REPL] -replies to mail items: -creates a file containing header -information appropriate for answering a given mail item. -This newly-created file may be edited to -change header fields and fill in the body. -\item[SEND] -sends mail items: -posts selected items through the split-slot from a draft folder. -\item[INC] -receives mail items: -takes delivery of selected items -across the split-slot, incorporating -them into a mailbox folder. -\end{description} -\medskip -These commands, with a few enhancements and modifications -appropriate to the CP/M environment, are functionally almost -identical to their Unix MH counterparts. - -CP/MH commands are invoked like any other -CP/M commands such as ED, PIP, or DIR. -Command line options are generally preceded by a dash -(e.g. {\tt -editor A:ED}), and may be abbreviated. -Folder names are preceded by a plus (e.g. {\tt +B:DRAFT}). -Messages are identified by numbers or by the special names {\tt first}, -{\tt last}, {\tt current}, {\tt next}, and {\tt previous}. - -An example of use of a CP/MH command is: - -\begin{flushleft} -\hspace{1in} {\tt comp -edit a:ed -use last +b:draft -log} -\end{flushleft} - -This particular example will edit the last-composed message (the -{\tt -use last} option) in the folder {\tt DRAFT} on disk drive {\tt B:} -(the {\tt +b:draft} option), using the standard CP/M editor ED on disk -drive {\tt A:} (the {\tt -edit a:ed} option), and prompting the user when -it is appropriate to change disks (the {\tt -log} option). - -All CP/MH commands have a {\tt -help} option which displays all -available options for the particular command invoked. -Another common option is {\tt -log} which permits the user to change -({\it relog}) diskettes after invoking a command, for purposes of -selecting diskettes with message folders or with editor programs. -This is particularly useful on single-drive systems or on systems -with diskettes of low storage capacity. - - \subsection* {The Profile} -If there are options commonly used with a particular CP/MH command, -they may be entered in the user profile contained in the file called -(naturally enough) {\tt PROFILE}, which must exist on the same diskette on -which CP/MH commands reside and from which the commands are invoked. -A profile entry consists of a program name followed by a colon and -the options to be used with that program, for example: - -{\tt -\begin{flushleft} -\hspace{1in} comp: -editor A:VEDIT +B:outbox -log \\ -\hspace{1in} repl: -editor A:VEDIT -log \\ -\hspace{1in} send: +B:outbox \\ -\hspace{1in} inc: +B:inbox -log -\end{flushleft} -} - -Individual profile components are overridden by options given at -the time of invocation (e.g. {\tt -noedit} given on the command line -will override the {\tt -editor} profile component for a particular command). - - \section* {The MZnet Split-Slot Mail Transfer System} -The MZnet split-slot software implements a peer-to-peer -communication protocol between a time-sharing host's MTA and a personal -micro-computer (PC) UA. -This MZnet protocol extends the UA/MTA/UA model of -computer-based message systems (CBMS) to provide a -split gateway function between individual PCs and the ZOTnet -similar to the UCI ICS split Internet gateway described previously -(see Figure~\ref{splitslot}). -\tagfigure{figure2}{The Split-Slot Model}{splitslot} - - \subsection* {The Structure of the Split-Slot} -The MZnet Split Gateway consists of three distributed processing components: -\medskip -\begin{itemize} -\item A PC running a UA (in MZnet, CP/MH) acting as the mail server. -\item A mini/mainframe host running a full MTA (MMDF in MZnet) -providing mail relay services. -\item A communication protocol (a modified version of MMDF PhoneNet) to -connect the two ends of the split-slot. -\end{itemize} -\medskip -Although this combination may not be unique, the method by which the MZnet -split-slot bonds these parts together uniquely deals with the -problems of remote user agents. -In addition to overcoming limited storage and processing capacities, -remote user agents must deal with noisy modem lines, -mail software certification, and mail system security problems. -The MZnet architecture appears to solve these problems with -a clean mail interface for PCs. - - \subsection* {The MZnet Mail Server} -The split-slot mail server consists of a set of {\it command packet} -programs run from the PC. -These programs simply present commands -through the PhoneNet communication protocol to the mail relay slave program -on the host. -Some basic commands are: - -\medskip -\begin{description} -\item[PostMail] posts mail drafts to MTA -\item[GetMail] accepts mail from MTA -\item[RemoteScan] displays information about waiting mail -\item[Quit] drops connection between PC and Host -\end{description} - -\medskip -Each command has the form: - -\begin{flushleft} -\hspace{.5in} Command Request \\ -\hspace{.5in} Data Transmission \\ -\hspace{.5in} Command Termination -\end{flushleft} - -For example, the PostMail command is a small program that: -\medskip -\begin{itemize} -\item initiates a command with the Mail Slave by sending the command -name (PostMail) encoded within a PhoneNet packet; -\item sends a series of PhoneNet packets that contain pieces of -the mail item to be posted; -\item finally sends a command termination signal to end -the transaction without -terminating the connection between host and PC. -\end{itemize} - - \subsection* {The MZnet Channel To MMDF} -The MZnet Channel runs on the MTA host under the University of Delaware's -MMDF (Version 1) and is responsible for both delivery of received mail -to MZnet users, and posting of MZnet user-originated mail. -The MMDF MZnet channel maintains a unique message queue for each -registered MZnet user. -As new mail items arrive, -they are posted to the appropriate queues, -where MZnet holds the mail items for pickup by their registered -recipients. - -To send or receive mail, -the MZnet user must attach to the host, -log into the public MZnet account, -and identify (authenticate) himself. -During the MZnet session with the host, -the user has access only to that restricted set of functions -provided by the MZnet split gateway protocol: -he may request delivery of queued mail with GetMail, -or post new mail with PostMail. -Prior to taking delivery of queued mail, -a survey of waiting mail also may be requested with RemoteScan to obtain -message size information (among other data) -to allow intelligent disposition -of mail in the queue. - -Hidden within these activities are issues of security and certification. -To certify and establish the identity of the user, -a second password is requested after logging into the -public MZnet account. -This certification procedure allows MZnet to certify the source -of originated mail. -A relatively secure environment is provided by MZnet, -as it is the only interface to the host permitted to MZnet users -(once beyond the public login procedure), -and it offers only the severely restricted set of -PhoneNet-encoded commands. -Aside from security issues, -using a single account to handle all MZnet users -reduces demands on system resources. - - \subsection* {The MZnet-PhoneNet Protocol} -A unique facet of the MZnet system derives from the PhoneNet File -Transfer Protocol (FTP). -PhoneNet FTP is a simple error-checked packet protocol which transfers -ASCII plaintext. -PhoneNet encodes any non-plaintext character (or any other character -``forbidden'' by the idiosyncrasies of the communicating systems) by -mapping it onto an ``accepted'' character set. -The accepted character set mapping is determined by -a ``negotiating'' session between the two systems at the start of -the PhoneNet session. - -MZnet transfers all information (both commands and data) in PhoneNet -packets to obtain error control. -The MZnet-PhoneNet command FTP tolerates noise with a high degree -of success, and in effect, connects both ends of the Split Slot -together with a reliable set of virtual wires. - - \subsection* {MZnet Session Example} -Here, a typical MZnet session is presented, with the UA commands -issued from the PC side of the connection printed -in a {\tt typewriter} typeface, and the responses -from the host side printed -in an {\it italic} typeface. -PhoneNet interactions are indented. -The initial connection to the host is accomplished with the -{\tt term} program, which provides a simple terminal emulation -function. -The prompt of the PC for a UA command is ``A$\rangle$''. -Note that passwords are never echoed by the host system. - -\begin{tabbing} -xxxxxxxx \= xxxxxxx \= \kill -\> A$\rangle$ {\tt term} \\ -\> {\it login:} {\tt mznet} \\ -\> {\it password:} \\ -\> {\it MZ-Password:} \\ -\> \> PhoneNet packet negotiation \\ -\> {\it Connected.} \\ -\> \> exit terminal mode \\ -\> A$\rangle$ {\tt send cur} \\ -\> \> PostMail command \\ -\> \> message text packet transmission \\ -\> \> command terminator \\ -\> A$\rangle$ {\tt quit} \\ -\> \> Quit command \\ -\> {\it Disconnecting.} -\end{tabbing} - - \section* {Conclusions} -The main conclusions of this paper are that -small personal computer systems -with dial-up phone connections constrain User Agent systems design -in ways that require use of a {\it split-slot} interface between -the UA and its supporting Mail Transfer Agent (MTA), and that -this interface will best provide the required services if it -has error controlled command and data transfer facilities, with -interactive behavior. - -It is also believed that a good design for the small PC UA -is based on a very modular architecture, such as the Rand MH -system, which has been used as a pattern for the MZnet UA. - -By bringing these concepts together, -we expect MZnet to provide reliable UA/MTA -service to a distributed set of small personal computers, to match -the quality of service that is normally only available from larger -mainframe host systems with co-resident UA/MTA pairs. - -\bibliography{mznet} - -\end{document} diff --git a/docs/historical/realwork/Makefile b/docs/historical/realwork/Makefile deleted file mode 100644 index 2f037660..00000000 --- a/docs/historical/realwork/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -####################################################################### -# Instructions to Make, for generation of nice-looking papers using TeX -####################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex \ - \\nonstopmode\\input $<\\bye; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# realwork -############################################################# - -i-all: realwork.dvi - -i-print: realwork.dvi true - dvisp $(DFLAGS) -J RealWork realwork.dvi - - -# customization files, et. al., not included below -realwork.dvi: version.tex - -version.tex: realwork.tex text.tex appendixA.tex appendixB.tex refs.tex \ - diagram1.tex diagram2.tex diagram3.tex diagram4.tex \ - diagram5.tex diagram6.tex diagram7.tex diagram8.tex \ - diagram10.tex \ - version.sh - @: version.sh - -true:; - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f realwork.dvi realwork.imp - -clean:; rm -f realwork.lof realwork.log realwork.lot realwork.toc _* diff --git a/docs/historical/realwork/appendixA.tex b/docs/historical/realwork/appendixA.tex deleted file mode 100644 index f6b61cb4..00000000 --- a/docs/historical/realwork/appendixA.tex +++ /dev/null @@ -1,230 +0,0 @@ -% appendix A % mtr - -\catcode`\@=11 % for a little while - -\def\psect#1{% - \skip@=\lastskip - \par - \dimen@=.6\baselineskip - \ifdim\skip@<\dimen@ - \ifdim\skip@=\z@ \penalty-100 \fi - \vskip \dimen@ plus .3\baselineskip - \fi - \centerline{\underbar{#1}}% - \nobreak - \vskip \z@ plus .1\baselineskip - \vskip -\parskip -} - -\def\pitem#1 #2.{\item{\pgm{#1\/}:} #2\hbreak} - -\catcode`\@=12 % back to normal - - -\appendix{A}{MH Commands} -\MH/ is composed of several \unix/ programs, -which in theory are fairly simple and single-purposed. -These commands are functionally grouped below: - -\psect{Composing Mail} -\pitem{comp} compose a message. -A program to originate a message. -Usually, a special prompting editor front-end, \pgm{prompter}, -is used to fill-in a composition template with the addressees of -the message, subject, and so forth. - -\pitem{dist} redistribute a message to additional addresses. -A program that re-enters a message previously received by the user -into the message transport system. -Only new addresses are added; -the body of the message is not changed in any way. - -\pitem{forw} forward messages. -A program that encapsulates one or more messages in a new message draft. -In addition, the user may add initial and/or closing comments. - -\pitem{repl} reply to a message. -A program that constructs a reply to a message using a reply template. -The template mechanism has sufficient generality to permit the user to -``program'' the form of the reply draft based on the contents of the message -being replied-to. - -\pitem{send} send a message. -A program that posts a draft with the message transport system. -The \pgm{send} program is -usually invoked by one of the four preceding programs, -and performs simple front-end pre-processing prior to invoking the -\pgm{post} program. -For example, -if invoked in {\it push}'d mode, -\pgm{send} will immediately relinquish control of the user's terminal and -post the message in the background. -If the posting fails, -\pgm{send} will send back a failure notice to the user. -If the user had \pgm{push\/}'d the sending of the draft, -then by default -the draft being sent is encapsulated in the failure notice. -This permits easy \pgm{burst}'ing of the failure notice to retrieve the -original draft. -Otherwise, -if the posting was successful, -the draft is marked as having been sent. - -\pitem{whatnow} prompting front-end for send. -A program which is called by \pgm{comp}, et. al., -after the initial draft has been generated. -The \MH/ user can specify a different \pgm{whatnow} program, -which yields considerable extensibility. - -\pitem{whom} report to whom a message would go. -A program which examines the addresses of the draft and expands -all user-defined aliases contained therein. -Optionally, -\pgm{whom} may actually interact with the message transport system -to determine the validity of the final addresses. -This program is also usually invoked by \pgm{comp}, et.~al. - -\psect{Posting Mail} -\pitem{ali} list mail aliases. -A simple front-end to the \MH/ aliasing mechanism. - -\pitem{ap} parse addresses 822--style. -A useful debugging tool for PostMasters who wish to examine how \MH/ -interprets an Internet address. - -\pitem{conflict} search for alias/password conflicts. -Another program used by system administrators to check the consistency of -\MH/ alias files, and portions of the local message transport agent. - -\pitem{install-mh} initialize the MH environment. -A program which is automatically executed the first time a user issues an -\MH/ command. -This program performs once-only initialization of the user's \MH/ environment. - -\pitem{mhmail} send or read mail. -A simple program generally used by other programs to generate messages. -The \pgm{mhmail} command is similar in purpose to the old \pgm{BellMail} -program. - -\pitem{post} deliver a message. -A complex \MH/ back-end that interacts with the local message transport agent -to enter messages through the posting slot. -(See the description of \pgm{send} above). - -\psect{Reading Mail} -\pitem{inc} incorporate new mail. -A program that interacts with the local message transport agent -to retrieve messages from the user's maildrop. - -\pitem{msgchk} check for waiting mail. -A program which reports the status of mail waiting in the user's maildrop. - -\pitem{show} show (list) messages. -A program which lists messages to its standard output -(usually the user's terminal), -possibly invoking another program to do the actual listing. -Most users of \MH/ have \pgm{show} automatically call the \pgm{mhl} program -to format the message. -The \pgm{next} and \pgm{prev} programs are simply -\eg{show\ next} and \eg{show\ prev}, -respectively. - -\pitem{mhl} produce formatted listings of MH messages. -A program which displays a message as directed by a template. -This permits the user to filter out uninteresting headers -and re-arrange other headers to a particular preference. -In addition to being invoked by \pgm{show}, -the \pgm{mhl} program is optionally also -invoked by \pgm{forw} to format each message being forwarded; -invoked by \pgm{repl} to format the body of a message being replied-to, -if that message is being included in the reply draft; -and, -invoked by \pgm{post} to format a message being sent as a blind-carbon-copy. - -\pitem{rmm} remove messages. -A program that removes messages from an \MH/ folder, -optionally running a user-defined program instead of deleting them. -If no program is given, -the messages are ``softly'' removed, -so they may possibly be recovered later. - -\pitem{scan} produce a one-line-per-message scan listing. -A program that generates a scan listing for messages. -Each line of the listing contains date, source, subject, -and possibly the initial body of the message. - -\psect{Folder Handling} -\pitem{folder} set/list current folder/message. -A program used to list information concerning the current folder, -or set the current folder and/or message. - -\pitem{folders} list all folders. -A program to list information on all folders -(actually, just a special case of the \pgm{folder} command). -Since the \MH/ folder structure may be recursive, -the user can indicate that \pgm{folders} should recursively examine all -folders. - -\pitem{refile} file message(s) in (an)other folder(s). -A program to move (or copy) messages from a source folder to one or more -destination folders. - -\pitem{rmf} remove folder. -A program that deletes a folder and all messages therein. - -\psect{Message Selection} -\pitem{anno} annotate messages. -A program to arbitrarily annotate messages. -If the user so desires, -after distributing, forwarding, or replying-to a message, -\MH/ will automatically attach an annotation to the -original message indicating the date and addresses. - -\pitem{mark} mark messages. -A program to manipulate user-defined sequences (lists of messages). -Usually, \pgm{mark} is not employed directly by the \MH/ user. - -\pitem{pick} select messages by content. -A program to examine a list of messages and choose those which meet a -particular selection criterion. -The \pgm{pick} program is often used in \unix/ back-quoted operations to pass -message sequences to other \MH/ commands. - -\pitem{sortm} sort messages. -A program to sort a list of messages according to the date given in a -particular field. - -\psect{Distribution List Handling} -\pitem{bbc} check on BBoards. -A front-end to run \pgm{msh} on a list of distribution lists which the -user isn't current on. - -\pitem{bbl} manage a BBoard. -A (depreciated) program used to manually manage the local archives of a -distribution list. -These functions (archiving, expunging) are performed automatically by \MH/. - -\pitem{burst} explode digests into messages. -A program used to decapsulate messages from ARPA Internet digests. -In addition, -messages which have been encapsulated during forwarding -(i.e., with \pgm{forw\/}) -can also be decapsulated using \pgm{burst}.% -\nfootnote{Similarly, blind-carbon-copies may be decapsulated, -though only socially mature users should do so.} - -\pitem{msh} MH shell (and BBoard reader). -A monolithic program used to implement \MH/ commands on -messages arranged in a single file (maildrop format). -Useful -since distribution lists are kept in this format to minimize consumption of -system resources. - -\pitem{pack} compress a folder into a single file. -A program which takes messages stored in \MH/ format and places them in a -single file (using the same format known by \pgm{msh\/}). - -\psect{Interface to the \unix/ File System} -\pitem{mhpath} print full pathnames of \MH/ messages and folders. -A program which maps \MH/-style names into the \unix/ file naming convention. - diff --git a/docs/historical/realwork/appendixB.tex b/docs/historical/realwork/appendixB.tex deleted file mode 100644 index 082de3aa..00000000 --- a/docs/historical/realwork/appendixB.tex +++ /dev/null @@ -1,87 +0,0 @@ -% appendix B % mtr - -\appendix{B}{Distribution Mechanics} -The \mh5 distribution is available in two forms: -\smallskip -{\advance\leftskip by\parindent -\item{1.} Anonymous FTP\hbreak -If you can FTP to the ARPA Internet, -use anonymous FTP to the ARPAnet host UDel-Huey [10.2.0.96] -and retrieve the file portal/mh.5--tar. -This is a \pgm{tar} image of size 2.1~MB (approximately). - -\item{2.} 9--track tape, 1600~bpi, \pgm{tar} format\hbreak -Otherwise, you can send \$50.00 to the address below. -This covers the cost of a magtape, handling, and shipping. -In addition, -you'll get a laser-printed hard-copy of the \MH/ documentation. -The documentation includes installation guide, -\MH/ Tutorial, -\MH/ User's Manual, -changes document (from \mh4 to \mh5), -and BBoards Manual. - -\item{} If you go with this option, -be sure to include your USPS address with your check. -Checks should be made payable to -$$\hbox{Regents of the University of California}$$ -It's also a good idea (though not mandatory) to send a computer mail message -to {\tx Bug-MH@UCI} when you send your check via USPS to ensure minimal -turn-around time. -The distribution address is: -$$\displayindent=\leftskip \advance\displayindent by1.5\parindent - \halign{\leftline{#}\cr - Support Group\cr - Attn: MH Distribution\cr - Department of Information and Computer Science\cr - University of California, Irvine\cr - Irvine, CA 92717\cr - \cr - 714/856--6852\cr -}$$ - -\item{} Sadly, if you just want the hard-copies of the documentation, -you still have to pay the \$50.00. -The \pgm{tar} image has the documentation source -(the man is in \ROFF/ format, but the rest are in \TeX\ format). -\smallskip} -\noindent -In addition, -there is some hope that \mh5, or a successor, -might be found in a future 4.x~Berkeley distribution. - -Although \MH/ is not ``supported'' per se, -it does have a bug reporting address. -Normally, -the address {\tx Bug-MH@UCI} is used to report bugs and bug fixes. -There are however, -two discussion groups which concern themselves with \MH/: -\smallskip -{\advance\leftskip by\parindent -\item{1.} MH-Users@UCI\hbreak -A discussion group for the \MH/ user community at large. -Appropriate topics include: -questions about how to use \MH/, -tips on \MH/ usage, -and exchange of \MH/ shell scripts. -All requests to be added to or deleted from this list, -along with problems, questions and suggestions, -should be sent to {\tx MH-Users-Request@UCI}. - -\item{2.} MH-Workers@UCI\hbreak -A discussion group for \MH/ maintainers and experts. -Appropriate topics include: -questions on how to configure \MH/, -tips on \MH/ configuration, -exchange of \MH/ bug reports (and fixes). -All requests to be added to or deleted from this list, -along with problems, questions and suggestions, -should be sent to {\tx MH-Workers-Request@UCI}. -\smallskip} -\noindent -The \eg{UCI} host is also known as \eg{ucivax}, -so a possible \UUCP/ path might be {\tx $\tdots$!ucbvax!ucivax!bug-mh}. - -Updates to \MH/ are published on the {\tx MH-Workers} list -in the form of context diffs, -and the appropriate distribution images are updated as well. diff --git a/docs/historical/realwork/diagram1.tex b/docs/historical/realwork/diagram1.tex deleted file mode 100644 index 5d258394..00000000 --- a/docs/historical/realwork/diagram1.tex +++ /dev/null @@ -1,45 +0,0 @@ -% diagram 1 - -\verbatimlines -% inc -Incorporating new mail into inbox... - - 1+ 03/16 Rand MH System MH transcript < - -Here's the body of a sample message. -% repl -To: Rand MH System -cc: jromine@uci-icsa -Subject: Re: MH transcript -In-reply-to: Your message of 16 Mar 85 18:28:59 PST (Sat). --------- -Thanks for the test. - -/JLR -^D - -What now?? send -% comp -To: MRose@UCI -cc: -Subject: sample comp --------- -Here's a sample compose for the MH transcript. - -/JLR -^D - -What now?? send -verbose - -- Posting for All Recipients -- - -- Local Recipients -- - MRose: address ok - -- Recipient Copies Posted -- -Message Processed -?endverbatim diff --git a/docs/historical/realwork/diagram10.tex b/docs/historical/realwork/diagram10.tex deleted file mode 100644 index b321213c..00000000 --- a/docs/historical/realwork/diagram10.tex +++ /dev/null @@ -1,14 +0,0 @@ -% diagram 10 - -\verbatim -mmdfldir: /usr/spool/mail -mmdflfil: -mmdelim1: \001\001\001\001\n -mmdelim2: \001\001\001\001\n -mmailid: 0 -lockstyle: 0 -lockldir: - -hostable: /usr/local/lib/mh/hosts -servers: localhost \01localnet -?endverbatim diff --git a/docs/historical/realwork/diagram2.tex b/docs/historical/realwork/diagram2.tex deleted file mode 100644 index f7f7f871..00000000 --- a/docs/historical/realwork/diagram2.tex +++ /dev/null @@ -1,12 +0,0 @@ -% diagram 2 - -\verbatim -To: -cc: -Bcc: -Fcc: outbox -Fcc: -Subject: -Reply-To: --------- -?endverbatim diff --git a/docs/historical/realwork/diagram3.tex b/docs/historical/realwork/diagram3.tex deleted file mode 100644 index 11a7edb2..00000000 --- a/docs/historical/realwork/diagram3.tex +++ /dev/null @@ -1,13 +0,0 @@ -% diagram 3 - -\verbatim -To: -cc: , -Fcc: +outbox -Fcc: -Subject: Re: -In-reply-to: Your message of . - -In-reply-to: Your message of . --------- -?endverbatim diff --git a/docs/historical/realwork/diagram4.tex b/docs/historical/realwork/diagram4.tex deleted file mode 100644 index e9c15c05..00000000 --- a/docs/historical/realwork/diagram4.tex +++ /dev/null @@ -1,22 +0,0 @@ -% diagram 4 - -\verbatim -From: Message Agent \<> -To: -Fcc: +rcvtrip -Fcc: -Subject: BEEP! Re: -Subject: BEEP! -In-reply-to: Your message of . - -In-reply-to: Your message of . --------- - - This is an automatic reply. Feel free to send additional mail, as only - this one notice will be generated. - - I am attending the USENIX Summer '85 conference in Portland, Oregon. - I expect to be reading mail again on the 16th of June. - -/mtr -?endverbatim diff --git a/docs/historical/realwork/diagram5.tex b/docs/historical/realwork/diagram5.tex deleted file mode 100644 index 3b364773..00000000 --- a/docs/historical/realwork/diagram5.tex +++ /dev/null @@ -1,48 +0,0 @@ -% diagram 5 - -\verbatim -To: -cc: , -Fcc: +outbox -Fcc: -Subject: Re: -In-reply-to: Your message of . - -In-reply-to: Your message of . -Reply-To: /dev/null --------- - - \ - *-XXX - / XX - X - X - X - X - X - IIIIIIIII - IIIIIIIII - IIIIIIIII - IIIIIIIII - XXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXXXXXXXXXXXXXXXX - XXXXXXXXX -?endverbatim diff --git a/docs/historical/realwork/diagram6.tex b/docs/historical/realwork/diagram6.tex deleted file mode 100644 index 18577c8a..00000000 --- a/docs/historical/realwork/diagram6.tex +++ /dev/null @@ -1,13 +0,0 @@ -% diagram 6 - -\verbatim -width=80,length=0,overflowtext=,overflowoffset=10 -Date:leftadjust,compress,compwidth=9 -Subject:leftadjust,compress,compwidth=9 -From:leftadjust,compress,compwidth=9 -To:leftadjust,compress,compwidth=9 -cc:leftadjust,compress,compwidth=9 -Resent-Note:leftadjust,compwidth=9 -: -body:nocomponent,overflowoffset=0 -?endverbatim diff --git a/docs/historical/realwork/diagram7.tex b/docs/historical/realwork/diagram7.tex deleted file mode 100644 index f5b6034c..00000000 --- a/docs/historical/realwork/diagram7.tex +++ /dev/null @@ -1,48 +0,0 @@ -% diagram 7 - -\verbatim -: 'mpick - relate messages /mtr' -PATH=:/bin:/usr/bin:/usr/ucb:/usr/local:/usr/local/lib/mh; export PATH -F="" M="" S="" - -for A in $* -do - case $A in - -*) S="$S $A" ;; - - +*|@*) case $F in - "") F=$A ;; - *) echo "mpick: only one folder at a time" 1>&2 - exit 1 ;; - esac ;; - - *) M="$M $A" ;; - esac -done - -S="$S -sequence hits -list -nozero" - -if mark $F all -add -sequence hits; - then mark $F all -delete -sequence hits; - else exit 1; -fi - -for A in ${M-cur} -do - for C in `mhpath $F $A` - do - if [ -r $C ]; - then - I=`mhl -form mhl.msgid $C`; - case $I in - "") echo "no message-id in message `basename $C`" 1>&2 ;; - *) pick --in-reply-to "$I" $S ;; - esac - else - echo "message $A doesn't exist" 1>&2; exit 1; - fi - done -done - -exit 0 -?endverbatim diff --git a/docs/historical/realwork/diagram8.tex b/docs/historical/realwork/diagram8.tex deleted file mode 100644 index 36d8ee67..00000000 --- a/docs/historical/realwork/diagram8.tex +++ /dev/null @@ -1,14 +0,0 @@ -% diagram 8 - -\verbatim -: 'append - stupid append editor for MH - /jlr' -case $# in - 1|2) case $# in - 1) F=$1; echo -n "Append file: " 1>&2; read A ;; - 2) F=$2; A=$1 ;; - esac - cat $A < /dev/null >> $F ;; - *) echo "append: arg count" 1>&2 ; exit 1 ;; -esac -exit -?endverbatim diff --git a/docs/historical/realwork/diagram9.tex b/docs/historical/realwork/diagram9.tex deleted file mode 100644 index b67c2e7b..00000000 --- a/docs/historical/realwork/diagram9.tex +++ /dev/null @@ -1,15 +0,0 @@ -% diagram 9 - -\verbatim -bin /usr/local -bboards on -editor /usr/local/prompter -etc /usr/local/lib/mh -mail /usr/spool/mail -manuals local -mts sendmail/smtp -news off -options BSD42 -options MHE NETWORK -options UCI -?endverbatim diff --git a/docs/historical/realwork/realwork.tex b/docs/historical/realwork/realwork.tex deleted file mode 100644 index 6454913a..00000000 --- a/docs/historical/realwork/realwork.tex +++ /dev/null @@ -1,84 +0,0 @@ -% run this through PhD-TeX - -\input dcustom -\articlestyle -\input version - -\def\draftext{% - \begingroup - \eightpoint\sf - Reprinted from - {\it Proceedings, Summer Usenix Conference and Exhibition}, - Portland, Oregon, - June, {\oldstyle 1985}% - \endgroup -} - -\input sfwmac - -\def\bannerhack{$^{\bowtie}$\global\let\bannerhack=\empty} -\header - MH.5:\\ - How to process 200 messages a day\\ - and still get some real work done\bannerhack\title - Marshall T.~Rose\\ - Member, Research Technical Staff\\ - Northrop Research and Technology Center$^\dagger$\\ - \\ - John L.~Romine\\ - Computing Support Group\\ - Department of Information and Computer Science\\ - University of California, Irvine$^\ddagger$\author\info -\footnote{}{\hskip -\parindent $^{\bowtie}$ -Alternate title: {\sl MH: Your Key to Success}.} -\footnote{}{\hskip -\parindent $^\dagger$ -One~Research Park, -Palos Verdes Peninsula, CA 90274. -Telephone: 213/377--4811.\hbreak -Computer mail: -MRose\%NRTC@USC-ECL, $\tdots$!\{ucbvax!ucivax,trwrb\}!nrtc!mrose.} -\footnote{}{\hskip -\parindent $^\ddagger$ -University of California at Irvine, -Irvine, CA 92717. -Telephone: 714/856--6852.\hbreak -Computer mail: -J-Romine@USC-ECL, $\tdots$!\{ucbvax,trwrb\}!ucivax!jromine.} - -\centerline{\sc Abstract} % mtr -{\rightskip=0pt\narrower -\lp -The UCI version of the Rand Message Handling System (\MH/) is discussed. -\MH/ is a powerful user agent which operates in the ARPA Internet and UUCP -environments. -In addition to the usual functions provided by similar programs, -\MH/ has several distinguishing characteristics which give the user -additional message handling capability. -In particular, -\MH/ provides mechanisms for maintaining an organized mail environment, -tailoring its behavior, -and extending its functions. - -\lp -This document describes \MH/ from several perspectives. -Particular emphasis is given to: -the \MH/ user environment, -advanced features of \MH/ which have proven to be particularly useful for -sophisticated users of electronic mail, -the user interface issues in \MH/, -and the \mh5 distribution. -The paper concludes with a summary of the authors' experiences with \MH/, -and a discussion of future areas of enhancement. -\par} - -\input text -\input refs -\input appendixA -\input appendixB - -\printcontents -\unskip\footnote{}{\hskip -\parindent -This document (version \versiontag/) -was \TeX set \today\ with DISS.STY v\version.} -\showsummary - -\bye diff --git a/docs/historical/realwork/refs.tex b/docs/historical/realwork/refs.tex deleted file mode 100644 index cba2736f..00000000 --- a/docs/historical/realwork/refs.tex +++ /dev/null @@ -1,250 +0,0 @@ -% references - -\references - -\ref{DCome83} -\by D.~Comer. -\paper The Computer Science Research Network CSnet: -A History and Status Report -\journal Communications of the ACM\volume 26\issue 10 -\month October\year 1983 -\pages 747--753 -\endref - -\ref{DCroc79} -\by D.H.~Crocker, E.S.~Szurkowski, D.J.~Farber. -\paper An Internetwork Memo Distribution Facility~---~MMDF -\inbook Proceedings, -Sixth Data Communications Symposium -\publaddr Asilomar -\month November\year 1979 -\pages 18--25 -\endref - -\ref{DCroc82} -\by D.H.~Crocker. -\paper Standard for the Format of ARPA Internet Text Messages -\paperinfo Request for Comments 822 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month August\year 1982 -\endref - -\ref{DEA} -\book Data Encryption Algorithm -\bookinfo X3.92--1981 -\publ American National Standards Institute -\year 1981 -\endref - -\ref{DKing84} -\by D.P.~Kingston,~III. -\paper MMDFII: A Technical Review -\inbook Proceedings -Usenix Summer '84 Conference -\publaddr Salt Lake City, Utah -\month June\year 1984 -\pages 32--41 -\endref - -\ref{EAllm83} -\by E.~Allman. -\paper SENDMAIL~---~An Internetwork Mail Router -\other -\publ Britton-Lee, Inc. -\publaddr Berkeley, California -\month July\year 1983 -\endref - -\ref{EOlse84} -\by E.W.~Olsen. -\paper NetOS Concepts and Facilities -\other -\publ Local Network Systems, Inc. -\publaddr Costa Mesa, California -\month August\year 1984 -\endref - -\ref{EStef84} -\by E.A.~Stefferud, J.N.~Sweet, T.P.~Domae. -\paper MZnet: Mail Service for Personal Micro-Computer Systems -\inbook Proceedings, -Second International Symposium on Computer Message Systems -\publaddr Nottingham, U.K -\month May\year 1984 -\pages 293--302 -\endref - -\ref{FIKM} -\book Financial Institution Key Management -\bookinfo X9.17--198\_ (draft) -\publ American National Standards Institute -\year 198\_ -\endref - -\ref{FIPS46} -\book Data Encryption Standard -\bookinfo Federal Information Processing Standards, -Publication 46 -\month January\year 1977 -\endref - -\ref{FIPS81} -\book DES Modes of Operation -\bookinfo Federal Information Processing Standards, -Publication 81 -\month December\year 1980 -\endref - -\ref{FIPS98} -\paper Specification for Message Format for Computer Based Message Systems -\other -\publ National Bureau of Standards -\month January\year 1983 -\endref - -\ref{HERMES} -\by Bolt, Beranek, and Newman. -\paper Hermes User's Manual -\paperinfo for TOPS-20 -\other -\publ Bolt, Beranek, and Newman -\publaddr Boston, MA -\month January\year 1979 -\endref - -\ref{IP} -\paper Internet Protocol -\paperinfo Request for Comments 791 (\milstd/ 1777) -\inbook Internet Protocol Transition Workbook -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month September\year 1981 -\endref - -\ref{JReyn84} -\by J.K.~Reynolds. -\paper Post Office Protocol -\paperinfo Request for Comments 918 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month October\year 1984 -\endref - -\ref{LLamp82} -\by L.~Lamport, R.~Shostak, M.~Pease. -\paper The Byzantine Generals Problem -\journal ACM Transactions on Programming Languages and Systems -\volume 4 -\month July\year 1982 -\pages 382--401 -\endref - -\ref{MButl85} -\by M.~Butler, J.B.~Postel, et.~al. -\paper Post Office Protocol - Version~2 -\paperinfo Request for Comments 937 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month February\year 1985 -\endref - -\ref{MRose84a} -\by M.T.~Rose. -\paper The Rand MH Message Handling System: The UCI BBoards Facility -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\ref{MRose84b} -\by M.T.~Rose. -\paper The Rand MH Message Handling System: Tutorial -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\ref{MRose85a} -\by M.T.~Rose, J.L.~Romine. -\paper The Rand \MH/ Message Handling System: User's Manual -\paperinfo UCI Version -\other -\publ Department of Information and Computer Science -\publaddr University of California, Irvine -\month January\year 1985 -\endref - -\ref{MRose85b} -\by M.T.~Rose, E.A.~Stefferud. -\paper Proposed Standard for Message Encapsulation -\paperinfo Request for Comments 934 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month January\year 1985 -\endref - -\ref{MRose85c} -\by M.T.~Rose, D.J.~Farber, S.T.~Walker. -\paper Design of the TTI Prototype Trusted Mail Agent -\inbook Proceedings, -Second International Symposium on Computer Message Systems -\publaddr Washington, D.C. -\month September\year 1985 -\toappear -\endref - -\ref{MRose85d} -\by M.T.~Rose, E.A.~Stefferud, J.N.~Sweet. -\paper MH: A Multifarious User Agent -\journal Computer Networks%\volume V\issue N -\toappear -\endref - -\ref{SMTP} -\paper Simple Mail Transfer Protocol -\paperinfo Request for Comments 821 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month August\year 1982 -\endref - -\ref{TCP} -\paper Transmission Control Protocol -\paperinfo Request for Comments 793 (\milstd/ 1778) -\inbook Internet Protocol Transition Workbook -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month September\year 1981 -\endref - -\ref{VVoyd83} -\by V.L.~Voydock, S.T.~Kent. -\paper Security Mechanisms in High-Level Network Protocols -\journal Computing Surveys\volume 15\issue 2 -\month June\year 1983 -\pages 135--171 -\endref - -\ref{WJoy83} -\by W.N.~Joy, E.~Cooper, R.S.~Fabry, S.J.~Leffler, K.~McKusick, D.~Mosher. -\paper 4.2\bsd/ System Manual -\paperinfo Technical Report Number 5 -\publ Computer Systems Research Group, University of California, Berkeley -\month July\year 1983 -\endref - -\ref{X.400} -\book Message Handling Systems: System Model-Service Elements -\bookinfo Recommendation X.400 -\publ International Telegraph and Telephone Consultative Committee (CCITT) -\endref - -\endreferences diff --git a/docs/historical/realwork/text.tex b/docs/historical/realwork/text.tex deleted file mode 100644 index d5c58eb4..00000000 --- a/docs/historical/realwork/text.tex +++ /dev/null @@ -1,1121 +0,0 @@ -% begin text - -\banner - -\section{Introduction} % mtr -The UCI version of the Rand Message Handling System, \MH/, -is a software system that performs two functions: -\underbar{first}, -it interfaces a user to a message transport system, -so the user may receive and send mail; -\underbar{second}, -it permits the user to maintain an organized mail environment to facilitate -the composition of new messages and the reading of old messages. -In short, -while not responsible for the delivery of messages, -\MH/ aids the user in handling mail. - -\MH/ was originally developed by the Rand Corporation, -and initially was proprietary software. -The Department of Information and Computer Science at -University of California, Irvine, -shortly after joining the Computer Science Network (CSnet), -acquired a copy of \MH/, -and began additional development of the software. -Since that time, -the Rand Corporation has declared \MH/ to be in the public domain, -and the UCI version of \MH/ has passed through four major releases. -The current version, \mh5, -is available from U.C.~Irvine for a nominal distribution fee, -or may be retrieved from the University of Delaware via anonymous FTP. - -Much credit must be given to the initial designers and implementors of \MH/: -Bruce Borden, Stockton Gaines, and Norman Shapiro. -Although \MH/ has suffered significant development at UCI -since Rand's initial release, -the fundamental concepts of \MH/'s environs have remained nearly unchanged. -In addition, -the authors of the current release gratefully acknowledge the comments of the -many sites which have run various releases of \MH/ in the past. -In particular, -the dozen or so beta test sites for \mh5 -provided tremendous help in stabilizing the current release. - -\MH/ runs on different versions of the \unix/ operating system -(such as Berkeley~4.2\bsd/ and various flavors of v7). -In addition, -\MH/ supports four different message transport interfaces: -\SendMail/\cite{EAllm83}, -the standard mailer for 4.2\bsd/ systems; -\MMDF/\cite{DCroc79} and \MMDFII/\cite{DKing84}, -the Multi-Channel Memo Distribution Facility developed by the University of -Delaware -which forms the software-backbone for CSnet\cite{DCome83} mail relay service; -SMTP, -the ARPA Internet Simple Mail Transfer Protocol\cite{SMTP}; -and, -a stand-alone delivery system. - -This paper is organized in a straight-forward fashion: -Initially, -the \MH/ philosophy of mail handling is presented, -along with a description of the environment which the \MH/ user is given to -process mail. -Following this, -certain advanced features of \MH/ are discussed in more detail, -such as facilities for selecting messages, -and ``advanced'' concepts in {\it draft} handling. -In addition, -user interface issues in mail handling are addressed, -and the merits of \MH/'s approach is critically examined. -Next, -the \mh5 distribution package is described. -Finally, -we conclude by discussing the authors' experience with \MH/ development -and introducing areas where \MH/ may be further developed. - -Although familiarity with \MH/ is not assumed on the part of the reader, -some knowledge of the \unix/ operating system is useful. -Appendix~A gives a short synopsis of the \MH/ commands. - -\section{The \MH/ Philosophy} % mtr -Although \MH/ has many traits which tend to distinguish it from other systems -which handle mail, -there is a single fundamental design decision which influences the interface -between \MH/ and the user: -\MH/ differs from most other systems in that it is composed of many small -programs instead of one very large one. -This architecture gives \MH/ much of its strength, -since intermediate and advanced users are able to take advantage of this -flexibility. - -The key to this flexibility is that the \unix/ shell -(usually the {\it C} shell or the {\it Bourne} shell), -is the user's interface to \MH/. -This means that when handling mail, -the entire power of the shell is at the user's disposal, -in addition to the -facilities which \MH/ provides. -Hence, -the user may intersperse mail handling commands with other commands in an -arbitrary fashion, -making use of command handling capabilities which -the user's shell provides. - -Furthermore, -rather than storing messages in a complicated data structure -within a monolithic file, -each message in \MH/ is a \unix/ file, -and each folder (an object which holds groups of messages) -in \MH/ is a \unix/ directory. -That is, -the directory- and file-structure of \unix/ is used directly. -As a result, -any \unix/ file-handling command can be applied to any message. - -To the novice, -this may not make much sense or may not seem important. -However, -as users of \MH/ become more experienced, -they find this capability attractive. -In addition, -this approach is often quite pleasing to system implementors, -because it minimizes the amount of coding to be performed, -and given a modular design, -changes to the software system can be maintained easily. -There are, however, performance penalties to be paid with this scheme. -This issue is considered later in the paper. - -Having described how \MH/ fits into the \unix/ environment, -we now discuss the mail handling environment which is available to the \MH/ -user. - -\subsection{The \MH/ Environs} % jlr -In the \file{\$HOME} directory of each \MH/ user, a file named -\profile/ contains static information about the user's \MH/ environment, -and default arguments for \MH/ programs. -For the latter case, -each line of profile takes the form: -\example program-name:\ options\endexample -Each \MH/ program consults the user's \profile/ for its options. -These options are consulted prior to evaluating any command-line arguments, -and so provide the \MH/ user the capability to customize the defaults for each -command. -Futher, by using the \unix/ link facility, -different names can be given to the same command. -Since each \MH/ command looks -in the \profile/ -for a component with the name by which it was invoked, -it's possible to have different defaults for the same program. -For example, -it is not uncommon to link \pgm{prompter} -(a simple prompting editor front-end) -under the name \pgm{rapid} in the -user's \file{bin/} directory, and add to the \profile/: -\example rapid:\ -prepend\ -rapid\endexample -As a result, -when \pgm{prompter} is invoked as \pgm{rapid}, -it automatically uses the \switch{prepend} and \switch{rapid} options. - -The profile component \eg{Path:} is the path to the user's -\MH/-directory, usually \Mail/. -In addition to containing the user's folders, -the \MH/-directory also contains {\it skeletons} and -{\it templates} used by the \MH/ programs, -and the user's \context/ file. -This latter file has the same format as the user's \profile/, -and contains the dynamic, -context-dependent information about the user's environment. -Whenever \MH/ looks for an \MH/-specific file, -such as a template or skeleton, -it first consults the user's \MH/-directory, -and then a system-wide library area. - -The \MH/ user always has a {\it current folder}, -which is the folder in which -the user is currently (or was last) working. -Since any \MH/ program which deals with folders implicitly manipulates this -information, -the name of the current folder is stored in the \file{context} -component \eg{Current-Folder:}. -Every folder has a {\it current message} known as \arg{cur}. -These values are the defaults for \MH/ commands which -accept folder and/or messages arguments. - -\MH/ programs make use of a set of envariables -which further customize their behavior. -The \file{\$MH} envariable, if present, -specifies the name of an alternate profile for the user. -This allows a user of \MH/ to -easily maintain multiple mail-handling environments. - -In terms of command syntax, -most \MH/ commands accept an optional {\it folder} argument, -such as \arg{+outbox}. -Unlike most \unix/ commands, -all \MH/ commands have switches which are words, rather than single letters. -Switches may be abbreviated to the least unambiguous prefix. -All \MH/ commands also support a \switch{help} switch, -which lists the syntax of the command along with available switches, -and the version number of the command. -Most \MH/ commands also take a \arg{msg} or \arg{msgs} argument -which takes the form of a message number (\eg{1}), a message range (\eg{1-2}), -a standard sequence name (\eg{cur}), -or a user-defined sequence name (\eg{select}). - -\tagdiagram{1}{An \MH/ Session}{session} -\subsection{An \MH/ Transcript} % jlr -Figure~\session\ contains a transcript of a simple \MH/ session. -First, \pgm{inc} is run to incorporate the new mail into the -user's \eg{+inbox} folder. - -A \pgm{scan} listing of the mail is printed while -it is being incorporated. -(The user could run \pgm{scan} explicitly to generate additional \pgm{scan} -listings later on.) -The \pgm{scan} listing gives the message number, followed -by the date, message sender, and subject. -(If the message originated from the user generating the listing, -the \eg{to:} addressee is displayed instead of the sender.) -If the subject is short, -the first part of the message body is displayed after the characters \eg{<<}. -The plus sign (`+') after -the message number indicates the current message. - -The user \pgm{show\/}s the message, and decides to \pgm{repl\/}y. -A reply draft -is created using the headers of the message being replied-to, -using the default \file{replcomps} template. -The default editor, \pgm{prompter}, is called to edit the draft. -When an EOT is typed, \pgm{prompter} exits and the -user is left at the \whatnow/ prompt. -The option \pgm{send} is chosen. -Since there were no problems in posting the draft with the message transport -system, -no additional output is produced. -(\MH/ is not verbose by default.) - -The user then decides to compose a new message. -The default skeleton, \file{components}, is copied to the draft, -and \pgm{prompter} is once again called. -After entering the addresses, subject, and body, -the user then \pgm{send\/}s the \file{draft} from the \whatnow/ prompt, -using \eg{send\ -verbose}, which causes -\MH/ to list out the message addresses as it submits them -to the message transport system. - -\section{Some \MH/ Features} % mtr -We now consider certain advanced features in \MH/. -These features have been chosen to demonstrate some useful capabilities -available to the \MH/ user. - -\subsection{Message Sequences and Selection} % jlr -\MH/ has several built-in message sequence names, which may -be used anywhere a \arg{msg} or \arg{msgs} argument is expected. -These are: -\arg{cur}, \arg{next}, \arg{prev}, \arg{first}, \arg{last}, and \arg{all}. -Message ranges may also be specified. -For example, \arg{all} is actually \arg{first-last}, and -\arg{+mh\ last:5} references the last five messages in your -\arg{+mh} folder. -A powerful capability of \MH/ is the ability to use not only the pre-defined -message sequence names, -but also arbitrary user-defined message sequence names. - -Although all \MH/ programs recognize user-defined sequences when appropriate, -the \pgm{pick} and \pgm{mark} commands can create and modify -user-defined message sequences. -The \pgm{mark} command allows low-level manipulation of sequences, -and is not particularly interesting in our discussion. - -The \pgm{pick} command selects certain messages out of a folder. -The criteria used for selection may be a search string and/or a date range. - -Searching is performed on either a specific header in the message -(e.g., \eg{To:}), -or anywhere within the message. -By default, -\pgm{pick} lists out the message numbers that matched -the selection criteria. -Thus, \pgm{pick} is useful in backquoted operations to the shell. -For example, to scan all the messages in the current folder from ``frated'', -the \MH/ user issues the command: -\example scan\ \bq{pick\ -from\ frated}\endexample -To perform more complicated message selection, -user-defined sequences are employed. -Supplying a \switch{sequence\ name} -argument to \pgm{pick}, will cause it to define the -sequence \arg{name} as those messages matched. - -Giving \pgm{pick} a list of messages causes it to limit its search to just -those messages. -For example, -to find all the messages in the current folder from ``frated'' also dated -before friday: -\example pick\ -from\ frated\ -sequence\ select\\ - pick\ select\ -before\ friday\ -sequence\ select\endexample -With the first \pgm{pick} command, -the sequence \eg{select} is defined -to be all those messages from ``frated''. -In the second command, only those messages already in the \eg{select} -sequence are searched, and the \eg{select} sequence is redefined to be -only those messages which are also -dated before friday. -Those messages could then be \pgm{show\/}n with: -\example show\ select\endexample -When a \switch{sequence\ name} argument is given to \pgm{pick}, -the default behavior --- listing the message numbers -matched --- is inhibited. -To re-enable this behavior, the \switch{list} option may be given. -As a result, -advanced users of \MH/ often put the following line in their \profile/: -\example pick:\ -sequence\ select\ -list\endexample -which allows them to easily make use of the \arg{select} sequence as the -messages last selected with \pgm{pick}. - -Often it is desirable to act upon those messages which -are {\it not} members of a given sequence. -For this purpose, -the \eg{Sequence-Negation:} profile entry is useful. -If the name of a user-defined sequence is prefixed with the value of the -sequence-negation profile entry, -\MH/ commands will operate upon those messages which are {\it not} members -of that sequence. -For example, given a profile entry of: -\example Sequence-Negation:\ not\endexample -those messages which -are not in the \arg{select} sequence could be \pgm{scan\/}'d with: -\example scan\ notselect\endexample - -Obviously, some confusion could result if an attempt was made -to define a sequence name -which began with the sequence-negation string (e.g., \eg{notselect}). -For this reason, \MH/ users will often use a single -character, -which their shell doesn't interpret, -as their sequence-negation string -(e.g., up-caret (`\^{}') for {\it C} Shell users, -and exclamation-mark (`!') for {\it Bourne} shell users). - -\MH/ also provides a way of automatically remembering the last -message list given to -an \MH/ command. -This facility is implemented by using a profile entry called -\eg{Previous-Sequence:}. - -\subsection{Draft Handling} % jlr -After the initial edit of a message draft, -the \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} programs -give the user a \whatnow/ prompt. -The valid responses include: -\pgm{edit} to re-edit the draft, -\pgm{quit} to exit without sending the draft, -\pgm{send} to send the draft, and -\pgm{push} to send the draft in the background. - -When the \pgm{send} option is given, -the draft is posted with the message transport system. -If there problems posting the draft, -the \whatnow/ prompt is re-issued, -so errors in the draft may be corrected. - -Since posting the draft can be slow, -the \pgm{push} option allows the \MH/ user to send the draft in the -background, and return immediately to the shell. -If there are problems posting the message, -the user will not see the diagnostics produced by -the message transport system. -For this reason, -if \pgm{push} is used instead of \pgm{send}, -and the message is not successfully posted, -\MH/ mails a message to the user -containing any diagnostics which the message transport system produced -along with a copy of the message. -Later, -the draft may be re-edited by entering \eg{comp\ -use}. - -A relatively new feature of \MH/ is the ability to use a folder to store -multiple drafts. -These drafts are kept in an ordinary \MH/ folder, -and may be operated upon by \MH/ commands. -To enable this feature, -the \MH/ user selects a folder-name for the draft-folder, -and creates an entry in the \profile/: -\example Draft-Folder:\ +foldername\endexample -From this point on, -when a message is composed, -the draft will be created as a message in that folder, -instead of using the \file{draft} file in the user's \MH/ directory. -Unfortunately, -if posting problems occur on a message which has been \pgm{push\/}'d, -it may be difficult to re-edit the draft with -\eg{comp\ -use}. -This might be the case if the user had started composing another message, -while that first draft was being posted. -In that event, -the current-message in the draft-folder would no longer point -to the failed draft. - -There is a solution for this problem, however. -By default, -\pgm{push} assumes the \switch{forward} option, -which says that if the message draft fails to be posted, -it should be forwarded back to the user in the -error report which \pgm{push} generates. -The failed draft may then be extracted with the \pgm{burst} program -(discussed later). - -\subsection{BBoards} % mtr -\MH/ has a convenient interface to the UCI BBoards facility\cite{MRose84a}.% -\nfootnote{The UCI BBoards facility can run under either the \MMDF/ or -\SendMail/, -or in a more restricted form under stand-alone \MH/.} -This facility permits the efficient distribution of interest group messages -on a single host, -to a group of hosts under a single administration, -and to the ARPA Internet community. - -Although most readers are probably familiar with the concept of an interest -group in the Internet context, a brief description is now given. -Observant readers will notice that the distributed nature of the -``network news'' (a.k.a.~USENET) -tends to avoid many of the problems described below. - -Described simply, an interest group is composed of a number of subscribers -with a common interest. -These subscribers post mail to a single address, known as the -{\it distribution} address (e.g., {\tx MH-Workers@UCI}. -From this distribution address, a copy of the message is sent to each -subscriber. -Each group has a {\it moderator}, -who is the person that runs the group. -This moderator can usually be reached at a special address, -known as the {\it request} address (e.g., {\tx MH-Workers-Request@UCI}). -Usually, the responsibilities of the moderator are quite simple, -since the mail system handles distribution to subscribers automatically. -In some interest groups, -instead of each separate message being distributed directly to subscribers, -a batch of (hopefully related) messages -are put into a {\it digest} format by the -moderator and then sent to the subscribers. -(This is similar to a newsletter format.) -Although this requires more work on the part of the moderator -and introduces delays, -such groups tend to be better organized. - -Unfortunately, some problems arise with the scheme outlined above. -First, if two users on the same host subscribe to the same interest group, -two copies of the message are delivered. -This is wasteful of both processor and disk resources at that host. - -Second, -some groups carry a lot of traffic. -Although subscription to a group does indicate interest on the part of a -subscriber, -it is usually not interesting to get 50 or so messages delivered -each day -to the user's private maildrop, -interspersed with {\it personal} mail, -which is likely to be of a much more important and timely nature. - -Third, if a subscriber's address in a distribution list -becomes ``bad'' somehow and causes failed mail to be returned, -the originator of the message is normally notified. -It is not uncommon for a large list to have several bogus addresses. -This results in the originator being flooded with ``error messages'' from -mailers across the Internet stating that a given address on the list was -bad. -Needless to say, -the originator usually does not care if the bogus addresses got a copy -of the message or not. -The originator is merely interested in posting a message -to the group at large. -On the other hand, -the moderator of the group does care if there are bogus addresses on the list, -but ironically does not receive notification. - -To solve these problems, -the UCI BBoards facility introduces a new entity into the picture: -a {\it distribution channel}. -All interest group mail is handled by -the special mail system component. -The distribution address for an interest-group -maps mail for that interest-group to the distribution channel, -which then performs -several actions. -First, if local delivery is to be performed, -a copy of the message is placed in a global maildrop for the interest -group with a timestamp and a unique number. -Local users can read messages posted for the interest group by reading this -``public'' maildrop. -Second, if further distribution is to take place, -a copy of the message is sent to the distribution address in such a way that -if any of the addresses are bogus, -failure notices will be returned to the local maintainer of the group -address list, rather than the originator of the message. - -This scheme has several advantages: -First, messages delivered to the local host are processed and saved once -in a globally accessible area. -The UCI BBoards facility supports software which allows a user to query an -interest group for new messages and to read and process -those messages in the \MH/-style. -Second, once a host administrator subscribes to an interest group, -each user may join or quit the list's readership without -contacting anyone. -Third, a hierarchical distribution scheme can be constructed to -reduce the amount of delivery effort. -Finally, errors are prevented from propagating. -When an address on the distribution list goes bad, -the list moderator who is responsible for the address is notified. -If a local moderator does not exist, -then the local PostMaster is notified (not the global group moderator). - -In addition to solving the problems outlined above, -the UCI BBoards facility supports several other capabilities. -BBoards may be automatically archived in order to conserve disk space and -reduce processing time when reading current items. -Also, -the archives can be separately maintained on tape for access by interested -researchers. - -Special alias files may be generated which allow the \MH/ user to shorten -address entry. -For example, instead of sending to {\tx SF-Lovers@Rutgers}, -a user of \MH/ usually sends to \eg{SF-Lovers} and the \MH/ aliasing -facility automatically makes the appropriate expansion in the headers of the -outgoing message. -Hence, -the user need only know the name of an interest group and not its global -network address. - -Finally, the UCI BBoards facility supports {\it private} interest groups -using the \unix/ group access mechanism. -This allows a group of people on the same or different machines to conduct a -private discussion. - -The practical upshot of all this is that the UCI BBoards facility automates -the vast majority of BBoards handling from the point of view of both the -PostMaster and the user. - -\MH/ provides three programs to deal with interest groups. -The \pgm{bbc} program is used to check on the status of one or more groups, -and to optionally start an \MH/ shell on those groups which the user is -interested in. -The \pgm{bbl} program can be used to manually perform maintenance on a -discussion group beyond the normal automatic capabilities of the UCI BBoards -facility. -Finally, -the \pgm{msh} program implements an \MH/ shell for reading BBoards, -in which nearly all of the \MH/ commands are implemented in a single program. - -Observant readers may note that the use of \pgm{msh} is contrary to the \MH/ -philosophy of using relatively small, single-purpose programs. -Sadly, -the authors admit that this is true. -In an effort to minimize use of system resources however, -BBoards are kept in maildrop format instead of folders.% -\nfootnote{When the message transport system delivers a message to a user -it stores it in a single file, called a {\it maildrop}. -Since many messages may be present in a single maildrop, -(in theory) there is a unique string acting as a separator between messages -in the maildrop. -Although this is convenient for storage of messages, -it makes retrieval more difficult unless a separate index into the maildrop -is kept. -This latter approach is taken by the \pgm{msg} program available with \MMDFII/ -and by \pgm{msh} as well.} -Some research has gone into overcoming this problem to restore -\MH/'s purity of purpose, -but all solutions proposed to date are either unworkable or require -significant recoding of \MH/'s internals. - -\subsection{Bursting} % jlr -Internet interest group mail is often sent out in digest form. -The experienced \MH/ user may wish to deal with the digest messages on -an individual basis, however. -The \pgm{burst} program allows the \MH/ user to extract these digest -messages, -and store each as an individual \MH/ message. - -\pgm{Burst} will also extract forwarded messages generated by \pgm{forw} -(or the forwarded message in the error report generated by \pgm{push}, -as described above). -Although \pgm{burst} cannot always decapsulate -messages encapsulated by sites not running \MH/, -it adheres to the proposed standard described in \cite{MRose85b}. - -\subsection{Distributed Mail} % mtr -The ARPA Internet community consists of many types of heterogeneous nodes. -Some hosts are large mainframe computers, -others are personal workstations. -All communicate using the \milstd/ TCP/IP protocol suite\cite{IP,TCP}. -Messages which conform to the Standard for the Format of ARPA Internet Text -Messages\cite{DCroc82} -are exchanged using the Simple Mail Transfer Protocol\cite{SMTP}. - -On smaller nodes in the ARPA Internet, -it is often impractical to maintain -a message transport system (e.g., \SendMail/). -For example, -a workstation may not have sufficient resources (cycles, disk space) -in order to permit an SMTP server and associated local mail delivery system -to be kept resident and continuously running. -Furthermore, -the workstation could be off-net for extended periods of time. -Similarly, -it may be expensive (or impossible) to keep a personal computer -interconnected to an IP-style network for long periods of time. -In other words, -the node is lacking the resource known as ``connectivity''. - -Despite this, -it is often desirable to be able to manage mail with \MH/ on these smaller -nodes, -and they often support a user agent to aid the tasks of mail handling. -To solve this problem, -a network node which can support a message transport entity -(known as {\it service} host) offers -a maildrop service to these less endowed nodes -(known as {\it client} hosts). -The Post Office Protocol\cite{JReyn84} (POP) is intended to permit a -workstation to dynamically access a maildrop on a service host to pick-up -mail.% -\nfootnote{Actually, -there are three different descriptions of the POP. -The first, cited in \cite{JReyn84}, -was the original description of the protocol, -which suffered from certain problems. -Since then, -two alternate descriptions have been developed. -The official revision of the POP\cite{MButl85}, -and the revision of the POP which \MH/ uses -(which is documented in an internal memorandum in the \MH/ release). -This paper considers the POP in the context of the \MH/ release.} -The level of access includes the ability to -determine the number of messages in the maildrop and the size of each message, -as well as to retrieve and delete individual messages. -More sophisticated implementations of the POP server -are able to distinguish between the header and body portion of each message, -and send $n$ lines of a message to the POP client. -This capability is useful in thinly connected environments where conservation -of bandwidth is important. -By utilizing a more intelligent POP client, -a user may generate ``scan~listings'' and decide dynamically which messages -are worth taking delivery on. -The philosophy of the POP is to put intelligence in the -POP clients and not the POP servers. - -The current release of \MH/ supports the above model fully. -A POP client program is available to retrieve a maildrop from a POP service -host. -In addition, -using the SMTP configuration for delivery in \MH/ -(either in conjunction with \SendMail/ or the \MMDF/), -a user is able to specify a search-list of service hosts (and/or networks) -to try to post mail. -Using this search-list, -when an \MH/ user posts a draft, -the \pgm{post} program will attempt to establish an SMTP connection -with each host in the search-list to post the message until it succeeds. -Initial experimentation using the POP and \MH/ -in a local network environment has proved quite successful. - -\section{User Interface Issues in \MH/} % mtr -At this point, -it is perhaps useful to take a step backwards and examine the success -and problems of \MH/'s approach to user interfaces. - -\subsection{Creeping Featurism} % mtr -A complaint often heard about systems which undergo substantial development -by many people over a number of years, is that more and more options are -introduced which add little to the functionality but greatly increase the -amount of information a user needs to know in order to get useful work done. -This is usually referred to as {\it creeping featurism}. - -Unfortunately \MH/, -having undergone six years of off-and-on development by ten or so -well-meaning programmers (the present authors included), -suffers mightily from this. -For example, -the \pgm{send} command has twenty-five visible switches, -and at least nine hidden switches, -for a total of thirty-four. -The poor user who types \example send\ -help\endexample watches the options -scroll off the screen -(since the \switch{help} switch also lists out four other lines of -information).% -\nfootnote{Recently, -this was fixed by compressing the way in which switches are presented. -The solution is only temporary however, -as \pgm{send} will no doubt acquire an {\it endless} number of switches in -the years to come.} -The sad part is that all of these switches are useful in one form or another. - -There are a lot of good things to be said for the -``one program, one function'' philosophy of system design. -In the \MH/ case, however, -each program really does only one mail handling activity -(with a few minor exceptions). -The options associated with each command are present to modify the program's -behavior to perform similar, but slightly different tasks. -In further defense of \MH/, -note that there are~32 \MH/ commands at present, -all performing different tasks. - -The problem with creeping featurism though, -is that while the functionality of the system increases sub-linearly, -the complexity of the system increases linearly. -That is, -although the number of switches that a program takes might double, -it is unlikely that the program's functionality or capabilities will double. - -\subsection{Templates versus Switches} % mtr -One way to trim the explosion of available options, -while still increasing functionality, -is to introduce options with a richer domain. -Hence, -instead of using options which take {\it on} or {\it off} forms -or simple numeric or string values, -the possible values which an option might take on is given a large space. -There are several ways that this might be accomplished. - -\tagdiagram{2}{Draft Skeleton}{components} -The \pgm{comp}, \pgm{dist}, and \pgm{forw} programs -use draft {\it skeletons} (simple form fill-in files) to construct the -general format of the draft being composed. -An example of a draft skeleton used for composing new messages -(by \pgm{comp\/}) is shown in Figure~\components. -The approach is to let the user specify (and later edit) both arbitrary -headers of draft and the body of the draft. -Note while most of the fields are empty, -the first \eg{Fcc:} field already contains a value. -By using the simple prompting editor, \pgm{prompter}, -the user can speedily enter the headers of the message. -The \pgm{prompter} program given the skeleton in Figure~\components\ would -prompt the user for the contents of each field, -except for the second \eg{fcc:}, -which it would include verbatim. -It would then read the body of the message up to an end-of-file. -Naturally, -the \MH/ user is free to use {\it any} editor to edit {\it any} part of the -draft (headers or body). -This example -demonstrates the flexibility achieved by not limiting what headers a -draft may contain (which most mail sending programs do), -while still retaining the simplicity of being able to treat the entire -message draft as a \unix/ file. - -\tagdiagram{3}{Reply Template}{replcomps} -Another more interesting approach is used by the \pgm{repl} command, -which constructs a draft in reply-to a previously received message. -Instead of adding switches to indicate which fields of the draft should be -derived from the message being replied-to, -and how they should be derived, -a single option, -the ability to specify a {\it template}, was made available. -An example of a reply template is shown in Figure~\replcomps. -Put simply, -based on the presence of certain fields in the message being replied-to, -and a few switches given by the user, -using the reply template, -\pgm{repl} generates the reply draft automatically. - -\tagdiagram{4}{The \file{tripcomps} Reply Template}{tripcomps} -This facility, for example, -can be used to generate automatic replies.% -\nfootnote{\MH/ supports the notion of a user-defined {\it mail hook} -which is invoked each time a user receives mail.} -One function might be to write a \pgm{rcvtrip} shell script -which automatically answered messages when mail wasn't being read for a -period of time -(e.g., while attending a conference). -An example of a reply template at the heart of such a script -is shown in Figure~\tripcomps. - -\tagdiagram{5}{The \file{bombcomps} Reply Template}{bombcomps} -Finally, -another application might be to utilize -the highly useful letter bomb protocol.% -\nfootnote{The authors wish to credit Ron Natalie of the Ballistics Research -Laboratory in Aberdeen, Maryland for formalizing the -use of this protocol in the ARPA Internet community.} -The important thing to note about this template is that it generates not only -the headers of the reply draft (with a creative \eg{Reply-to:} address), -but the body as well. -Hence, -the commands -\example - repl\ -form\ bombcomps\ -noedit\ ;\ rmm\\ - What\ now?\ push% -\endexample -are very handy for dealing with disturbing mail in a straight-forward manner. -Of course, \pgm{repl} could be linked to \pgm{bomb} in the user's \file{bin/} -directory and an appropriate line could be added to the user's \MH/ profile, -in order to further shorten type-in. - -\tagdiagram{6}{Display Template}{mhlforward} -A variation on the reply template is the {\it display template}. -A display template, as used by the \pgm{mhl} program, -contains instructions on how to format a message. -In addition to being used by \pgm{show}, et.~al., -the \pgm{forw} program can also use a display template to format each -message being forwarded. -Similarly, -although \pgm{repl} uses a reply template to construct the draft -being composed, -it also may use a display template to format the body of the message -being replied-to for enclosure in the reply. -Furthermore, -the \pgm{post} program may use a display template to format the body of a -blind-carbon-copy. -An example of a display template used for formatting forwarded messages -is shown in Figure~\mhlforward. - -As with reply templates, -display templates can offer a lot of functionality. -For example, -the one line display template: -\example - body:nocomponent,overflowtext=,overflowoffset=0,width=10000% -\endexample -can be used to extract the body of a message, -while ignoring the headers. -Hence, -if a \pgm{shar} archive arrived in the mail, -a convenient way to unpack it, -assuming the above display template was called \file{mhl.body}, -would be: -\example show\ -form\ mhl.body\ |\ sh\endexample - -The biggest win with display templates, -of course, -is that all those annoying header lines which mailers -everywhere generate can be simply and easily filtered out. - -\subsection{Modularity versus Monolithicity} % jlr -Since \MH/ is a set of programs -which perform separate tasks, -as opposed to being a single, monolithic program, -the power of the shell is used directly to aid in mail-handling. -One powerful capability which this design achieves is the ability to extend -the \MH/ command set, -by developing shell scripts which use the standard \MH/ -programs to accomplish complicated or specialized tasks. - -\tagdiagram{7}{The \pgm{mpick} Script}{mpick} -For example, -in the \MH/ distribution there is a shell script -called \pgm{mpick} (shown in Figure~\mpick) -which tries to locate all the messages which pertain to a given discussion, -by looking at the \eg{Message-ID:} and \eg{In-reply-to:} headers, -to find matching message-ids.% -\nfootnote{Note that the shell scripts included in the \MH/ distribution -are written for the {\it Bourne} shell, -and have a `:' as the first character of the first line, -so they will be portable to all versions of \unix/, -not just those which support the -Berkeley `\#!' enhancement.} - -\tagdiagram{8}{The \pgm{append} Editor}{appended} -Unfortunately, some parts of \MH/ are somewhat monolithic. -An example of this is the \whatnow/ prompt. -There are only a few options at this prompt, -and one cannot give a normal shell command. -Some \MH/ users seem to feel that more options should be added to -the \whatnow/ prompt, such as an \pgm{insert-file} option. -It was argued that just about any editor would allow you to -insert a file, and another \whatnow/ option was not needed. -These users persisted, however, so the -problem was solved, by writing a trivial shell -script ``editor'' (see Figure~\appended) -which could be invoked by the \pgm{edit} option: -\example What now?\ edit\ append\ filename\endexample - -A better interface at this point is really needed, however. -One possibility is to simply pass any unrecognized commands on -to a shell for interpretation, supplying the path name of the draft file -as an argument. -A solution which shows more promise is to give you a sub-shell -{\it instead} of the \whatnow/ prompt, -and setup certain envariables so that -the \MH/ commands would act upon the \file{draft} by default. -For example, \pgm{show} with no \arg{msgs} arguments -would show the draft instead of the current message. -This alternative has recently been implemented and is under testing. - -\section{The \MH/ Distribution} % mtr -The \mh5 distribution is now briefly described, -both in terms of static configuration methods -and dynamic tailoring. -Appendix~B describes the mechanics of receiving an \mh5 distribution. - -\subsection{Configurable \MH/} % jlr -The \MH/ distribution currently runs on a large number of different \unix/ -versions, -ranging from MicroSoft XENIX to Berkeley 4.2\bsd/. -All the code which is specific to a particular target environment is -enabled via the C-preprocessor \eg{\#ifdef} mechanism, -so compilation under different versions of \unix/ is trivial. -There are, -however, -a large number of compile-time options which may vary from site to site, -so an automated configuration method was needed. - -\tagdiagram{9}{Sample \MH/ Configuration File}{mhconfig} -The \MH/-installer must create a configuration file, -which contains a list of the compile-time options -and the values which are desired for them. -Compile-time options include the installation location for \MH/, -what kind of message transport system is to be used, -and the default editor for the installation. -An example of such a configuration file is shown in Figure~\mhconfig. - -After creating this file (several examples are included in the distribution), -the installer runs the \pgm{mhconfig} program, -which customizes the \file{Makefile\/}s and some of the programs, -for that site's particular installation. -No hand-editing of any source code should be necessary, -under normal circumstances. - -\subsection{Interface to the Message Transport System} % jlr & mtr -\MH/ will run with a number of message transport systems, -including \SendMail/, \MMDFII/, and a small stand-alone system. -One flexible method of posting mail is through an SMTP connection. -There are a couple of major wins in using this configuration: -First, -none of the \MH/ programs need to know where the interface programs to -the message transport system are located, -which makes them easier to move between systems. -Second, -mail can be posted on relay hosts, -and the local host of an \MH/ user may not need a message transport system at -all (as alluded to in the preceeding discussion on the POP). - -\tagdiagram{10}{Sample MTS Tailor File}{mtstailor} -Those parts of \MH/ which interact with the local message transport agent -read additional tailoring information when they start.% -\nfootnote{This simple facility is based on a more extensive -tailoring capability found in \MMDFII/.} -This information includes -the location of standard and alternate maildrops, -maildrop delimiter strings, -the locking directory and locking style, -and other tailoring information specific for the particular -message transport system in use -(e.g., the default server search-list when mail is posted with the SMTP). -In most cases, -by using a tailor file, -each site running a similar \MH/ configuration is able to simply transfer -\MH/ binaries between hosts. -An example of such a tailor file is shown in Figure~\mtstailor. - -A continuing question which is often raised is how intelligent should user -agents (like \MH/ and UCB \pgm{Mail}\/) be with respect to the environment in -which they operate. -At present, \MH/ likes to determine -the official hostnames for addresses when posting mail. -Many argue that this is improper or unnecessary behavior for a user agent, -and that the local message transport agent should handle these functions. -Unfortunately, -this implies that the message transport agent should munge headers when mail -is posted to remove local host aliases and only permit address fields with -fully-qualified addresses. -Sadly, neither \SendMail/ nor \MMDFII/ really gets this right -(flames to \file{/dev/null} please). -The current \MH/ maintainers believe that the resolution of host aliases to -official names should be a well-supported interface with the local message -transport agent. -However, to provide equal time to those who hold opposite views, -\MH/ supports a configuration option called \eg{DUMB} which disables \MH/'s -attempts to resolve addresses into fully-qualified strings. - -\section{Concluding Remarks} % jlr and mtr -While \MH/ has undergone significant development since -the original -Rand release, the authors have -tried to keep the fundamental concepts of -\MH/ unchanged. - % specific vs. general -The authors have continually had to battle against -well-meaning \MH/ users who wanted to make \MH/ -more like other (less powerful) user agents. -More and more ``features'' were often suggested for \MH/, -usually at the expense of making \MH/ less general, and more specific. -In nearly all cases, the ``features'' which these users wanted -were already present in \MH/ in a slightly different form, -or could be realized by simply writing a short shell script. -A classic example is the repeated requests by one user to have \pgm{dist} -take a list of messages rather than a single message and distribute each one -of them in turn. -A simple shell script which called \pgm{dist} repeatedly, -perhaps with ``canned'' arguments so the user typed in addressing information -only once, would easily meet this request. - - % generality -A number of \MH/ comands have a large number of options. -When adding options, the authors have tried to make the options -general, while still accomodating the requests of specific users. -An example of a specific request which was implemented as a -general feature is the \eg{Previous-Sequence} profile entry -(mentioned above). -If you use this profile entry, every \MH/ command is forced to write -out \context/ changes, making every command somewhat slower. -Since only a few users wanted this capability, it was implemented -in such a way that users who didn't want it, didn't have to pay -the cost of slowing down every \MH/ command. - - % naive user :: MH -\MH/ has a powerful tailoring capability provided by the \profile/. -Using profile entries, users may -customize their own environment without affecting others. -Novice users often take advantage of the \MH/-tailoring -capabilities to try to make \MH/ work similarly to -other user agents they've used. -This has the advantage of allowing them to quickly begin -using \MH/ to handle their mail. -However, since these novice users don't take advantange of all the -capabilities of \MH/, -they frequently will complain about things they think can't -be done with \MH/, or could be done ``better'' some other way. -Fortunately, -as these users become more experienced with both \MH/ and \unix/, -they can modify their environment to take better advantage of -all of \MH/'s capabilities. -Novice \MH/ users who see features lacking -are encouraged to take a better look at what \MH/ {\it can} do, -instead of trying to make \MH/ into something it isn't. -This may sound rather inflammatory, -but it would really be a much nicer world for us all if users of software -systems would read the manual prior to asking questions. - - % speed consideration -For a moment, let's consider the evolution of one \MH/ feature which has -proved itself to be very useful. -As users began employing \MH/ to handle their mail, -the number of messages that could be processed -in a given amount of time increased greatly. -As the volume of messages increased however, -it became clear that some \MH/ operations were too slow, -in particular the interaction with the (slow) message transport system. -To overcome this problem, the \pgm{push} option -was added at the \whatnow/ prompt. -Originally, this option was hidden from novice users -and did little more than send the message in the background: -any output generated by -the background \pgm{send} process would be printed -asyncronously on the terminal. -If a message failed posting with the message transport system, -it would simply be left in the \file{draft} file. - -Gradually, other features were added to \pgm{push}. -Since users wanted to be able to send more than one draft -at a time, \pgm{push} was changed to optionally -rename the draft file before posting it. -(This is what the hidden \switch{unique} option does.) -Having message transport system diagnostics -written asyncronously on the user's terminal was annoying, -so \pgm{push} was made to intercept these diagnostics, -and mail the user a report containing them. -Although the diagnostic report mailed back by \pgm{push} contains -the name of the draft which failed, -a useful added feature was the ability to have \pgm{push} -include the failed draft as well. -Eventually, the draft-folder mechanism was implemented to make -handling multiple message drafts much easier. - - -\subsection{TODO} % mtr -There are, no doubt, a number of improvements which could be made to \MH/. -At the present time, -what further development should \MH/ suffer? -Although not by any means inclusive, -here's a list: -\smallskip -{\advance\leftskip by\parindent -\item{1.} Performance Enhancements\hbreak -Hardware gets faster all the time, but people always complain that software -is too slow. -Owing to its user interface style, -\MH/ is somewhat slower than monolithic programs like UCB \pgm{Mail}. -It would be nice if \MH/ could be tuned or accelerated somehow. - -\item{2.} Port to System~5\hbreak -\MH/ runs on 4.2\bsd/~\unix/ and Version~7 variants. -It should not be difficult to port \MH/ to a SYS5 environment. -This should significantly increase the number of hosts -on which \MH/ can run. -The authors, -lacking a SYS5 machine (and experience with SYS5) to perform the port, -are actively seeking a System~5 guru to attempt this feat. - -\item{3.} Interface to the Network News\hbreak -Not all sites that run \MH/ are in the ARPA Internet, -and as such the UCI BBoards facility may not be of much use to them. -A good \MH/ interface to the network news would allow users on hosts with a -news feed to employ the same interface for reading and sending both mail and -news. - -\item{4.} Programmed Instruction for Beginners\hbreak -The complexity of \MH/ is often intimidating to new users. -It would be nice to develop a set of \pgm{learn} lessons for those users who -don't like \pgm{man} pages and non-interactive tutorials. - -\item{5.} Message List Expansion\hbreak -At present, when a list of messages is given to an \MH/ command, -it expands the list and processes each message in numerical order -rather than the order in which the messages were given -(e.g., \eg{show\ 2\ 1} \pgm{show\/}s message~1 -and then message~2). -It would be nice if \MH/ processed messages in the order -they were given. - -\item{6.} Context Changes\hbreak -In nearly all cases, -an \MH/ command does not write out context changes until it is about to exit -successfully. -There is some controversy as to whether this is the correct behavior -in all cases. -Some argue that once an \MH/ command has fully parsed its argument list, -the context should be updated. -\par} diff --git a/docs/historical/realwork/version b/docs/historical/realwork/version deleted file mode 100644 index 920a1396..00000000 --- a/docs/historical/realwork/version +++ /dev/null @@ -1 +0,0 @@ -43 diff --git a/docs/historical/realwork/version.sh b/docs/historical/realwork/version.sh deleted file mode 100644 index 9ec1e792..00000000 --- a/docs/historical/realwork/version.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [ ! -r version ]; then echo 0 > version; fi -touch version -echo '\catcode`\#=12' > version.tex -awk ' { version = $1 + 1; }\ -END { printf "\\def\\versiontag/{#1.%d}%%\n", version >> "version.tex"; \ - printf "%d\n", version > "version"; }' < version -echo '\def\versiondate/{'`date`'}%' >> version.tex -echo '\catcode`\#=6' >> version.tex -echo '\tell{Version \versiontag/ of \versiondate/}' >> version.tex diff --git a/docs/historical/realwork/version.tex b/docs/historical/realwork/version.tex deleted file mode 100644 index 57ae70c7..00000000 --- a/docs/historical/realwork/version.tex +++ /dev/null @@ -1,5 +0,0 @@ -\catcode`\#=12 -\def\versiontag/{#1.43}% -\def\versiondate/{Tue Apr 30 08:38:26 PDT 1985}% -\catcode`\#=6 -\tell{Version \versiontag/ of \versiondate/} diff --git a/docs/historical/trusted/Makefile b/docs/historical/trusted/Makefile deleted file mode 100644 index 33c7f8e1..00000000 --- a/docs/historical/trusted/Makefile +++ /dev/null @@ -1,61 +0,0 @@ -####################################################################### -# Instructions to Make, for generation of nice-looking papers using TeX -####################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex \ - \\nonstopmode\\input $<\\bye; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# trusted -############################################################# - -i-all: trusted.dvi - -i-print: trusted.dvi true - dvisp $(DFLAGS) -J Trusted trusted.dvi - - -# customization files, et. al., not included below -trusted.dvi: version.tex - -version.tex: trusted.tex \ - text.tex \ - figure1.tex figure2.tex figure3.tex table4.tex \ - appendixA.tex \ - diagramA1-1.tex diagramA1-2.tex diagramA1-3.tex \ - diagramA1-4.tex \ - appendixB.tex \ - diagramB1-1.tex diagramB1-2.tex \ - appendixC.tex refs.tex \ - version.sh - @: version.sh - -true:; - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f trusted.dvi trusted.imp - -clean:; rm -f trusted.lof trusted.log trusted.lot trusted.toc _* diff --git a/docs/historical/trusted/appendixA.tex b/docs/historical/trusted/appendixA.tex deleted file mode 100644 index 694be57b..00000000 --- a/docs/historical/trusted/appendixA.tex +++ /dev/null @@ -1,77 +0,0 @@ -% appendix A - -\appendix{A}{An MH Session} - -\tagdiagram{A1-1}{Sending Encrypted Mail}{sendmail} -In the following, -the user \eg{Marshall\ T.\ Rose} logged onto host \eg{udel-dewey}, -wishes to send a message to a user known as -the \eg{UCI\ Portal} (a system maintenance account). -As shown in Figure~\sendmail, line~1, -the user first establishes a mapping between the name \eg{UCI\ Portal} and -the address {\tx uci@udel-dewey}. -Once this mapping is performed, -it remains in effect until the user indicates otherwise to the \TMA/. -When the \pgm{tma} program is invoked, -it consults the \TMA/ database to see if that user is known. -If not, -it contacts the \KDS/ to ask for the \KDS/ ID associated with the user. -If the response is successful (in this case, the \KDS/ ID is \eg{3}), -then the \TMA/ updates its database. -The \pgm{tma} program indicates in its output the \KDS/ ID associated with -the user, -along with all known addresses (in this case, only one). -So, once the name to address mapping has been described the user, -the user agent, \MH/, deals only with the address, -while the trusted mail agent deals with the name and \KDS/ ID aspects of the -user. - -Next, the \pgm{comp} program is invoked to compose a new draft on line~5. -The user addresses the local user \eg{uci} in the To: field, -and indicates that a plaintext copy should be kept in the folder \eg{+outbox}. -After entering the subject and text of the draft, -the user enters \whatnow/ level on line~13. -At this point, -the user directs \MH/ to send the draft in encrypted form. -The resulting output is verbose (a default for \pgm{send} for this user) -but instructive. -Initially, -all addresses in the draft are verified on lines~14 to~17. -Two forms of verification occur: -first, the \MTS/ is asked to verify the address as much as possible. -For local addresses, -the \MTS/ decides if the name has a maildrop associated with it. -For remote addresses, -the \MTS/ decides if the host is known to it. -The second type of verification occurs with the \TMA/. -For all addresses, -the \TMA/ is asked if it can find a mapping from the address to a \KDS/ ID. - -The reason \MH/ goes to all this trouble is a philosophical issue. -Since the copy of the encrypted draft is different for each recipient, -\pgm{post} tries to verify that all recipients can be successfully posted -prior to actually posting the different ciphertext versions of the draft. -This behavior is not optimal in terms of cycles, -but is perhaps ``correct'' from a \UA/ perspective. - -Finally, the draft is actually posted, and the folder carbon-copy is filed. - -\tagdiagram{A1-2}{Receiving Encrypted Mail}{recvmail} -Some time later, the UCI portal is informed that new mail has arrived. -As shown in Figure~\recvmail, -the \pgm{inc} program is run. -The \eg{E} prior to the date of the message indicates that \pgm{inc} has -detected the message to be encrypted. -Since the user did not inhibit \pgm{inc} from deciphering the message, -it proceeds to do so. - -\tagdiagram{A1-3}{Message Prior to Decryption}{before} -\tagdiagram{A1-4}{Message After Decryption}{after} -Finally, it may be instructive to see what the encrypted message looked like -when it was delivered to the portal's maildrop, -and the final message after deciphering. -Figures~\before\ and~\after\ show these respectively. -In particular, -note that the \eg{X-KDS-ID:} field has been introduced in Figure~\after\ -after successfully deciphering the message. -The presence of this field authenticates the sender of the message. diff --git a/docs/historical/trusted/appendixB.tex b/docs/historical/trusted/appendixB.tex deleted file mode 100644 index 88814355..00000000 --- a/docs/historical/trusted/appendixB.tex +++ /dev/null @@ -1,93 +0,0 @@ -% appendix B - -\appendix{B}{A Short Exchange} - -The simple nature of the interchange between the user and \MH/ -in Appendix~A completely hides any interactions between the \TMA/ -and the \KDS/. -Let us briefly examine an exchange that might occur -after the destination \TMA/ receives the message shown in Figure~\before. - -To begin, -the \TMA/ must ascertain what it knows about the sender of the message, -which claims to have a \KDS/ ID of~17. -That is, -the \TMA/ must first consider what key relationships it has with the sender. -For the sake of argument, -suppose that this purported subscriber is unknown to the \TMA/. -In this case, -the first step it must undertake is to ascertain the validity of this -subscriber. - -\tagdiagram{B1-1}{Ascertaining the Sender}{rui} -As shown in Figure~\rui\ on lines~1--7, -the \TMA/ does this by establishing a connection to the \KDS/ and issuing an -{\it request identified user} (RUI) MCL.% -\nfootnote{In point of fact, -the {\it very} first thing that the \TMA/ does after connecting to the \KDS/ -is verify that the key relationships between the \KDS/ and the \TMA/ are -valid (have not expired). -If the key relationship between the two has expired, -the \TMA/ issues a {\it request service initialization} RSI MCL to -establish a new key relationship. -This relationship contains a {\it key-encrypting key} (KK) -and an {\it authentication key} (KA). -Once a valid key relationship exists between the \KDS/ and the \TMA/, -transactions concerning other key relationships may take place.} -If the response by the \KDS/ is positive, -the \TMA/ will use the information returned when generating the -\eg{X-KDS-ID:} field for authentication. -The response \CSM/ returned by the \KDS/ includes -an {\it authentication checksum} (the MAC field on line~15) -and a {\it transaction count} (the CTA field on line~12) -to prevent spoofing by a process pretending to be the \KDS/. -The \TMA/ then acknowledges that the response from the server was acceptable -on lines~18--24. - -The next step is to ascertain the actual key relationship used to encrypt the -structure $m$, which appears after the identifying string. -The \TMA/ consults the IDK field in $m$, -and if this relationship is unknown to it, -then the \KDS/ is asked to disclose the key relationship. - -\tagdiagram{B1-2}{Ascertaining the Key Relationship}{rsi} -As shown in Figure~\rsi\ on lines~1--9, -This is done by issuing a {\it request service initialization} (RSI) MCL -and specifying the particular key relationship of interest. -The \KDS/ consults its database, -and if the exact key relationship between the two indicated \TMA/s can be -ascertained, -it returns this information. -The key relationship -is encrypted using the key relationship between the \KDS/ and the \TMA/, -and the usual count and authentication fields are included. - -Once the \TMA/ knows the key relationship used to encrypt the structure $m$, -it can decider the structure and ascertain the KD/IV/KA triple used to -encrypt the body of the message. - -% <--- ( -% <--- MCL/RSI -% <--- ORG/3 -% <--- KDC/TTI -% <--- SVR/*KK.KD -% <--- EDC/dabfdb4c -% <--- ) -% ---> ( -% ---> MCL/RTR -% ---> ORG/3 -% ---> *KK/926b876cafce46cd365382c36a40fa80 -% ---> CTA/1 -% ---> KD/1eea5394e6ad1b75 -% ---> KD/6c95c8d2caa75807 -% ---> EDK/850618075827 -% ---> KDC/TTI -% ---> MAC/501f71b6 -% ---> EDC/5bd7b2d0 -% ---> ) -% <--- ( -% <--- MCL/ACK -% <--- ORG/3 -% <--- KDC/TTI -% <--- EDC/db46ce7e -% <--- ) diff --git a/docs/historical/trusted/appendixC.tex b/docs/historical/trusted/appendixC.tex deleted file mode 100644 index e3b043ed..00000000 --- a/docs/historical/trusted/appendixC.tex +++ /dev/null @@ -1,151 +0,0 @@ -% appendix C - -\appendix{C}{Differences between the ANSI and TTI drafts} - -The differences between the \ansi/ draft standard for -financial institution key management, -and the \TTI/ draft's specification for trusted mail handling, -are considered. - -The concept of a {\it key distribution center} -(\CKD/ in the \ansi/ draft, \KDC/ in the \TTI/ draft) -environment differs. -In the \ansi/ draft, -only one party talks to the {\it key distribution server} (\KDS/); -in the \TTI/ draft, -both parties talk to the \KDS/. -This leads to a number of differences in the two protocols. -The reason for this shift in the \TTI/ draft is somewhat subtle: -although both parties can talk to the \KDS/, -the {\it mail transfer system} (\MTS/) -environment is such that both {\it user agents} (\UA/s) are unable to -contact each other in real-time. -Hence, a detailed two-way protocol between them is prohibitively expensive.% -\nfootnote{In the words of Einar A.~Stefferud: -``Every interesting connection has at least two end-points~---~connections -with only one end-point are always uninteresting.''} - -Before discussing the differences between the two drafts, -let us consider the differences in the two environments: -in the electronic mail environment, -the two end-to-end peers need not be simultaneously online. -Electronic mail relies on a communication service with potentially large -delays in transit between {\it message transfer agents} (\MTA/s). -A basic concept of ``mail'' is that an originator must release the enveloped -message to a ``transfer agent'' before delivery can be attempted to a -recipient. -In contrast, -in the electronic funds environment, -the two peers make use of a virtual-circuit service. -This means that they can synchronize much easier -and inter-operate in a more direct fashion. - -Service protocols are based on the notion of requests and responses. -A client issues a request to a server, -the server processes the request and returns a response. -Depending on the complexity of the protocol, -the client may now respond to the server's message, -or might issue a new request, -or might terminate the connection. - -As delays in the network increase, -along with the possibility of loss or corruption or re-ordering of messages, -it becomes more difficult to implement a service protocol. -In the case of a high-level protocol making use of a virtual-circuit service, -most problems can be ignored, -as the virtual-circuit service masks out problems in the network -by using sequences, positive (and/or negative) acknowledgments, windows, -and so on. - -Sadly, electronic mail cannot utilize a virtual-circuit throughout the \MTS/ -(although individual \MTA/-wise connections are (in theory) virtual-circuit -based). -This means that implementing a real-time or interactive -service protocol between two endpoints (a.k.a.~\UA/s) -in the \MTS/ is very difficult. -As a result, -the complexity of an end-to-end protocol in the \MTS/ -(in terms of requests and responses) -is severely constrained. -For all practical purposes, -an \MTA/ can assume datagram service and nothing else: -messages might be re-ordered; -messages might not reach their destination; -messages might be corrupted (though this is unlikely); -in cases of failure, a notice might be generated, or might not. - -In terms of the environment in which {\it cryptographic service messages} -(\CSM/s) must flow, -the high degree of delay and uncertainty make the implementation of a complex -end-to-end protocol between \UA/s prohibitively expensive. -Hence, a \KDC/ is needed, -to which each \UA/ can connect using a virtual-circuit service, -at posting and delivery time. -The \TTI/ draft terms such a user agent a {\it trusted mail agent} (\TMA/). -Since both \TMA/s can connect to the \KDS/ at different times using different -media, -the \KDS/ maintains state information about the key relationships between -different \TMA/s and manages those relationships appropriately. -Since connections to the \KDS/ can be expensive in terms of resources, -each \TMA/ caches information received from the \KDS/ appropriately. - -That's the gist of the argument as to why the \TTI/ draft differs from the -\ansi/ draft. -It might be possible to include \CSM/s in the messages which \UA/s exchange, -but management of these \CSM/s can not be done reliably or in a straightforward -fashion owing to the datagram nature of the service offered by the \MTS/. -Finally, it should be noted that in the \TTI/ draft, -the \KDS/ never initiates a connection with a \TMA/, -rather it is the \TMA/s which connect to the \KDS/. - -In the following, -the differences between the two drafts are highlighted. -Minor differences between the two are not discussed. - -In the \ansi/ draft, -$\S 4.2$ (p.~22) discusses the requirements for the automated key -management architecture. -The \TTI/ draft has somewhat more ``depth'', -since the \ansi/ draft does not make use of a {\it master key} (MK) -to fully automate the distribution of {\it key-encrypting keys} (KK). - -The \ansi/ draft states that once a KK-relationship is discontinued by either -of that pair, -the relation is not to be re-used for any subsequent activity. -This can't be guaranteed in the prototype implementation. -If one of the \TMA/s wishes to discontinue a key, -not only does it have to inform the \KDS/, -but the other \TMA/ as well. -Since the \TTI/ draft does not permit \CSM/s between \TMA/-peers, -the latter action doesn't seem possible. -However, there is a solution. -Whenever a message is deciphered, -the \TMA/ checks the effective date of the key used to -encrypt a message it has received, -and if the key is newer than the one it currently uses, -it considers the older key to be discontinued. - -Furthermore, -although the environment in the \TTI/ draft is that of a key distribution -center, -the notion of an {\it ultimate recipient} is not present, -since all clients connect to the \KDS/ at one time or another. -In addition, -the differences between the environs envisioned by the two drafts -become even more pronounced when one considers that the \KDS/ distributes -key-encrypting keys to \TMA/s, -although the \ansi/ draft specifically prohibits this. - -Finally, -there is another important technical difference between the two -drafts: -every request to the \KDS/ by the \TMA/ -results in a specifically defined response from the \KDS/ to the \TMA/. -Furthermore, -if the \KDS/ responds in a positive manner, -then the \TMA/ acknowledges this. -This three-way interaction is used to ensure consistency between the states -of the \KDS/ and the \TMA/. -The \ansi/ draft does not require such behavior, -and might profit from some finite-state analysis to ascertain unsafe -(in terms of correctness) states which are reachable. diff --git a/docs/historical/trusted/diagramA1-1.tex b/docs/historical/trusted/diagramA1-1.tex deleted file mode 100644 index 0dc088f4..00000000 --- a/docs/historical/trusted/diagramA1-1.tex +++ /dev/null @@ -1,29 +0,0 @@ -% diagram A1-1 - -\verbatimlines -% tma -add -user "UCI Portal" uci@udel-dewey -3: "UCI Portal" - uci@udel-dewey - -% comp -To: uci -Fcc: +outbox -Subject: test message --------- -mumble, mumble. -^D - -What now?? send -encrypt - -- Address Verification -- - -- Local Recipients -- - uci: address ok - -- Address Verification Successful -- - -- Posting for All Recipients -- - -- Local Recipients -- - uci: address ok - -- Recipient Copies Posted -- - -- Filing Folder Copies -- - Fcc outbox: folder ok - -- Folder Copies Filed -- -Message Processed -?endverbatim diff --git a/docs/historical/trusted/diagramA1-2.tex b/docs/historical/trusted/diagramA1-2.tex deleted file mode 100644 index 3918ef12..00000000 --- a/docs/historical/trusted/diagramA1-2.tex +++ /dev/null @@ -1,12 +0,0 @@ -% diagram A1-2 - -\verbatimlines -% inc -Incorporating new mail into inbox... - - 1+E02/28 0227-EST mrose test message <> -?endverbatim diff --git a/docs/historical/trusted/diagramA1-3.tex b/docs/historical/trusted/diagramA1-3.tex deleted file mode 100644 index 342f37ec..00000000 --- a/docs/historical/trusted/diagramA1-3.tex +++ /dev/null @@ -1,25 +0,0 @@ -% diagram A1-3 - -\verbatim -Received: From localhost.DELAWARE by udel-dewey.DELAWARE id a022713 - ;28 Feb 85 2:27 EST -To: uci@udel-dewey -Subject: test message -Date: 28 Feb 85 02:27:16 EST (Thu) -Message-ID: <4057.478423636@udel-dewey> -From: mrose@udel-dewey - -ENCRYPTED MESSAGE: TTI TMA -( -MCL/MAIL -RCV/3 -ORG/17 -IDK/850228072730 -KD/e36813a3882eebd1 -KD/fa8b8ac657476669 -IV/Ef9d283565431b103 -MIC/fdb927fb -MAC/50e9de30 -) -a13774f652d844762c4fc03c2f4e201b9d2f57eadb00546c -?endverbatim diff --git a/docs/historical/trusted/diagramA1-4.tex b/docs/historical/trusted/diagramA1-4.tex deleted file mode 100644 index 8d5a2e8e..00000000 --- a/docs/historical/trusted/diagramA1-4.tex +++ /dev/null @@ -1,14 +0,0 @@ -% diagram A1-4 - -\verbatim -Received: From localhost.DELAWARE by udel-dewey.DELAWARE id a022713 - ;28 Feb 85 2:27 EST -To: uci@udel-dewey -Subject: test message -Date: 28 Feb 85 02:27:16 EST (Thu) -Message-ID: <4057.478423636@udel-dewey> -From: mrose@udel-dewey -X-KDS-ID: 17 (Marshall T. Rose) - -mumble, mumble. -?endverbatim diff --git a/docs/historical/trusted/diagramB1-1.tex b/docs/historical/trusted/diagramB1-1.tex deleted file mode 100644 index 6f802c02..00000000 --- a/docs/historical/trusted/diagramB1-1.tex +++ /dev/null @@ -1,28 +0,0 @@ -% diagram B1-1 - -\verbatimlines -<--- ( -<--- MCL/RIU -<--- RCV/17 -<--- ORG/3 -<--- KDC/TTI -<--- EDC/1a1fbbba -<--- ) ----> ( ----> MCL/RTR ----> RCV/17 ----> ORG/3 ----> CTA/1 ----> USR/"Marshall T. Rose" ----> KDC/TTI ----> MAC/2ebde134 ----> EDC/96b183de ----> ) -<--- ( -<--- MCL/ACK -<--- RCV/17 -<--- ORG/3 -<--- KDC/TTI -<--- EDC/59a8ddcc -<--- ) -?endverbatim diff --git a/docs/historical/trusted/diagramB1-2.tex b/docs/historical/trusted/diagramB1-2.tex deleted file mode 100644 index c90c52d2..00000000 --- a/docs/historical/trusted/diagramB1-2.tex +++ /dev/null @@ -1,34 +0,0 @@ -% diagram B1-2 - -\verbatimlines -<--- ( -<--- MCL/RSI -<--- RCV/17 -<--- ORG/3 -<--- IDK/850228072730 -<--- KDC/TTI -<--- SVR/KD.IV.KK -<--- EDC/83679e14 -<--- ) ----> ( ----> MCL/RTR ----> RCV/17 ----> ORG/3 ----> KK/095f9d6b87f57871 ----> CTA/2 ----> KD/527fbb5593efd318 ----> KD/1dcab338be1e7a09 ----> IV/E02db5e598b2823ae ----> EDK/850618075332 ----> KDC/TTI ----> MAC/12cbbdf5 ----> EDC/8cd0c4a8 ----> ) -<--- ( -<--- MCL/ACK -<--- RCV/17 -<--- ORG/3 -<--- KDC/TTI -<--- EDC/59a8ddcc -<--- ) -?endverbatim diff --git a/docs/historical/trusted/figure1.pic b/docs/historical/trusted/figure1.pic deleted file mode 100644 index e7ecd77e..00000000 --- a/docs/historical/trusted/figure1.pic +++ /dev/null @@ -1,31 +0,0 @@ -.PS 5.9i -## figure 1 -C1: ellipse "\UA/" -B1: box "\MTA/" with .n at (C1.s.x, C1.s.y-3*lineht) -B8: box "\MTA/" with .w at (B1.e.x+linewid, B1.e.y) -B2: box invis "$\ldots$" with .w at (B8.e.x+linewid, B1.e.y) -B9: box invis "$\ldots$" with .w at (B2.e.x+linewid, B1.e.y) -B3: box "\MTA/" with .w at (B9.e.x+linewid, B1.e.y) -C2: ellipse "\UA/" with .s at (B3.n.x, C1.s.y) -## - arrow from C1.s to B1.n - arrow from B1.e to B8.w - arrow from B8.e to B2.w - arrow from B2.e to B9.w - arrow from B9.e to B3.w - arrow from B3.n to C2.s -## -B4: box width B3.e.x+linewid/3-(B1.w.x-linewid/3) \ - height 3*boxht \ - with .c at B2.c - move to (B4.n.x, B4.n.y-lineht/2); "\MTS/" -## - line dashed "POSTING" "" \ - from (B4.w.x-linewid, B4.n.y+lineht/2) \ - to (C1.s.x, B4.n.y+lineht/2) - line dashed "RECEIPT" "" \ - from (B4.e.x+linewid, B4.n.y+lineht/2) \ - to (C2.s.x, B4.n.y+lineht/2) - move to ((B2.e.x+B9.w.x)/2, B2.s.y); "RELAYING" -## -.PE diff --git a/docs/historical/trusted/figure1.tex b/docs/historical/trusted/figure1.tex deleted file mode 100644 index a60d07d5..00000000 --- a/docs/historical/trusted/figure1.tex +++ /dev/null @@ -1,110 +0,0 @@ -\catcode`@=11 -\expandafter\ifx\csname graph\endcsname\relax \alloc@4\box\chardef\insc@unt\graph\fi -\catcode`@=12 -\setbox\graph=\vtop{% - \baselineskip=0pt \lineskip=0pt \lineskiplimit=0pt - \vbox to0pt{\hbox{% - \special{pn 8}% - \special{ar 866 207 311 206 0.000 6.283}% - \rlap{\kern 0.866in\lower 0.247in\hbox to 0pt{\hss \UA/\hss}}% - \special{pa 554 2081}% - \special{pa 554 1665}% - \special{pa 1179 1665}% - \special{pa 1179 2081}% - \special{pa 554 2081}% - \special{fp}% - \rlap{\kern 0.866in\lower 1.913in\hbox to 0pt{\hss \MTA/\hss}}% - \special{pa 1595 2081}% - \special{pa 1595 1665}% - \special{pa 2220 1665}% - \special{pa 2220 2081}% - \special{pa 1595 2081}% - \special{fp}% - \rlap{\kern 1.907in\lower 1.913in\hbox to 0pt{\hss \MTA/\hss}}% - \rlap{\kern 2.948in\lower 1.913in\hbox to 0pt{\hss $\ldots$\hss}}% - \rlap{\kern 3.989in\lower 1.913in\hbox to 0pt{\hss $\ldots$\hss}}% - \special{pa 4718 2081}% - \special{pa 4718 1665}% - \special{pa 5343 1665}% - \special{pa 5343 2081}% - \special{pa 4718 2081}% - \special{fp}% - \rlap{\kern 5.030in\lower 1.913in\hbox to 0pt{\hss \MTA/\hss}}% - \special{ar 5030 207 311 206 0.000 6.283}% - \rlap{\kern 5.030in\lower 0.247in\hbox to 0pt{\hss \UA/\hss}}% - \special{pa 866 415}% - \special{pa 866 1665}% - \special{fp}% - \special{pa 846 1581}% - \special{pa 866 1665}% - \special{fp}% - \special{pa 887 1581}% - \special{pa 866 1665}% - \special{fp}% - \special{pa 1179 1873}% - \special{pa 1595 1873}% - \special{fp}% - \special{pa 1512 1894}% - \special{pa 1595 1873}% - \special{fp}% - \special{pa 1512 1852}% - \special{pa 1595 1873}% - \special{fp}% - \special{pa 2220 1873}% - \special{pa 2636 1873}% - \special{fp}% - \special{pa 2553 1894}% - \special{pa 2636 1873}% - \special{fp}% - \special{pa 2553 1852}% - \special{pa 2636 1873}% - \special{fp}% - \special{pa 3261 1873}% - \special{pa 3677 1873}% - \special{fp}% - \special{pa 3594 1894}% - \special{pa 3677 1873}% - \special{fp}% - \special{pa 3594 1852}% - \special{pa 3677 1873}% - \special{fp}% - \special{pa 4302 1873}% - \special{pa 4718 1873}% - \special{fp}% - \special{pa 4635 1894}% - \special{pa 4718 1873}% - \special{fp}% - \special{pa 4635 1852}% - \special{pa 4718 1873}% - \special{fp}% - \special{pa 5030 1665}% - \special{pa 5030 415}% - \special{fp}% - \special{pa 5051 499}% - \special{pa 5030 415}% - \special{fp}% - \special{pa 5010 499}% - \special{pa 5030 415}% - \special{fp}% - \special{pa 415 2497}% - \special{pa 415 1248}% - \special{pa 5482 1248}% - \special{pa 5482 2497}% - \special{pa 415 2497}% - \special{fp}% - \rlap{\kern 2.948in\lower 1.496in\hbox to 0pt{\hss \MTS/\hss}}% - \rlap{\kern 0.433in\lower 0.997in\hbox to 0pt{\hss POSTING\hss}}% - \rlap{\kern 0.433in\lower 1.163in\hbox to 0pt{\hss \hss}}% - \special{pa 0 1040}% - \special{pa 866 1040}% - \special{da 0.050}% - \rlap{\kern 5.464in\lower 0.997in\hbox to 0pt{\hss RECEIPT\hss}}% - \rlap{\kern 5.464in\lower 1.163in\hbox to 0pt{\hss \hss}}% - \special{pa 5898 1040}% - \special{pa 5030 1040}% - \special{da 0.050}% - \rlap{\kern 3.469in\lower 2.121in\hbox to 0pt{\hss RELAYING\hss}}% - \kern 5.899in - }\vss}% - \kern 2.498in -} diff --git a/docs/historical/trusted/figure2.pic b/docs/historical/trusted/figure2.pic deleted file mode 100644 index 3f2733eb..00000000 --- a/docs/historical/trusted/figure2.pic +++ /dev/null @@ -1,35 +0,0 @@ -\def\UA/{{\sf UA}} -\def\MTA/{{\sf MTA}} -\def\MTS/{{\sf MTS}} -.PS 5.9i -## figure 2 -U1: circle "user" -C1: ellipse "\UA/" with .n at (U1.s.x, U1.s.y-3*lineht/2) -B1: box "\MTA/" with .n at (C1.s.x, C1.s.y-5*lineht/2) -B8: box "\MTA/" with .w at (B1.e.x+linewid, B1.e.y) -B2: box invis "$\ldots$" with .w at (B8.e.x+linewid, B1.e.y) -B9: box invis "$\ldots$" with .w at (B2.e.x+linewid, B1.e.y) -B3: box "\MTA/" with .w at (B9.e.x+linewid, B1.e.y) -C2: ellipse "\UA/" with .s at (B3.n.x, C1.s.y) -U2: circle "user" with .s at (C2.n.x, U1.s.y) -## - arrow from U1.s to C1.n - arrow from C1.s to B1.n - arrow from B1.e to B8.w - arrow from B8.e to B2.w - arrow from B2.e to B9.w - arrow from B9.e to B3.w - arrow from B3.n to C2.s - arrow from C2.n to U2.s -## -B4: box width B3.e.x+linewid/3-(B1.w.x-linewid/3) \ - height 4*boxht \ - with .c at B2.c - move to (B4.n.x, B4.n.y-lineht/2); "\MTS/" -## - move to (U1.s.x, (U1.s.y+C1.n.y)/2); \ - "\ name $\longrightarrow$ address" ljust - move to (B1.n.x, (B1.n.y+B4.n.y)/2); \ - "\ address $\longrightarrow$ route" ljust -## -.PE diff --git a/docs/historical/trusted/figure2.tex b/docs/historical/trusted/figure2.tex deleted file mode 100644 index e87f3c83..00000000 --- a/docs/historical/trusted/figure2.tex +++ /dev/null @@ -1,126 +0,0 @@ -\def\UA/{{\sf UA}} -\def\MTA/{{\sf MTA}} -\def\MTS/{{\sf MTS}} -\catcode`@=11 -\expandafter\ifx\csname graph\endcsname\relax \alloc@4\box\chardef\insc@unt\graph\fi -\catcode`@=12 -\setbox\graph=\vtop{% - \baselineskip=0pt \lineskip=0pt \lineskiplimit=0pt - \vbox to0pt{\hbox{% - \special{pn 8}% - \special{ar 524 241 241 241 0.000 6.283}% - \rlap{\kern 0.524in\lower 0.283in\hbox to 0pt{\hss user\hss}}% - \special{ar 524 1454 363 240 0.000 6.283}% - \rlap{\kern 0.524in\lower 1.496in\hbox to 0pt{\hss \UA/\hss}}% - \special{pa 161 3393}% - \special{pa 161 2908}% - \special{pa 888 2908}% - \special{pa 888 3393}% - \special{pa 161 3393}% - \special{fp}% - \rlap{\kern 0.524in\lower 3.193in\hbox to 0pt{\hss \MTA/\hss}}% - \special{pa 1373 3393}% - \special{pa 1373 2908}% - \special{pa 2100 2908}% - \special{pa 2100 3393}% - \special{pa 1373 3393}% - \special{fp}% - \rlap{\kern 1.736in\lower 3.193in\hbox to 0pt{\hss \MTA/\hss}}% - \rlap{\kern 2.948in\lower 3.193in\hbox to 0pt{\hss $\ldots$\hss}}% - \rlap{\kern 4.161in\lower 3.193in\hbox to 0pt{\hss $\ldots$\hss}}% - \special{pa 5009 3393}% - \special{pa 5009 2908}% - \special{pa 5736 2908}% - \special{pa 5736 3393}% - \special{pa 5009 3393}% - \special{fp}% - \rlap{\kern 5.373in\lower 3.193in\hbox to 0pt{\hss \MTA/\hss}}% - \special{ar 5373 1454 363 240 0.000 6.283}% - \rlap{\kern 5.373in\lower 1.496in\hbox to 0pt{\hss \UA/\hss}}% - \special{ar 5373 241 241 241 0.000 6.283}% - \rlap{\kern 5.373in\lower 0.283in\hbox to 0pt{\hss user\hss}}% - \special{pa 524 484}% - \special{pa 524 1211}% - \special{fp}% - \special{pa 500 1114}% - \special{pa 524 1211}% - \special{fp}% - \special{pa 548 1114}% - \special{pa 524 1211}% - \special{fp}% - \special{pa 524 1696}% - \special{pa 524 2908}% - \special{fp}% - \special{pa 500 2811}% - \special{pa 524 2908}% - \special{fp}% - \special{pa 548 2811}% - \special{pa 524 2908}% - \special{fp}% - \special{pa 888 3151}% - \special{pa 1373 3151}% - \special{fp}% - \special{pa 1276 3175}% - \special{pa 1373 3151}% - \special{fp}% - \special{pa 1276 3126}% - \special{pa 1373 3151}% - \special{fp}% - \special{pa 2100 3151}% - \special{pa 2585 3151}% - \special{fp}% - \special{pa 2488 3175}% - \special{pa 2585 3151}% - \special{fp}% - \special{pa 2488 3126}% - \special{pa 2585 3151}% - \special{fp}% - \special{pa 3312 3151}% - \special{pa 3797 3151}% - \special{fp}% - \special{pa 3700 3175}% - \special{pa 3797 3151}% - \special{fp}% - \special{pa 3700 3126}% - \special{pa 3797 3151}% - \special{fp}% - \special{pa 4524 3151}% - \special{pa 5009 3151}% - \special{fp}% - \special{pa 4912 3175}% - \special{pa 5009 3151}% - \special{fp}% - \special{pa 4912 3126}% - \special{pa 5009 3151}% - \special{fp}% - \special{pa 5373 2908}% - \special{pa 5373 1696}% - \special{fp}% - \special{pa 5397 1793}% - \special{pa 5373 1696}% - \special{fp}% - \special{pa 5349 1793}% - \special{pa 5373 1696}% - \special{fp}% - \special{pa 5373 1211}% - \special{pa 5373 484}% - \special{fp}% - \special{pa 5397 581}% - \special{pa 5373 484}% - \special{fp}% - \special{pa 5349 581}% - \special{pa 5373 484}% - \special{fp}% - \special{pa 0 4120}% - \special{pa 0 2181}% - \special{pa 5898 2181}% - \special{pa 5898 4120}% - \special{pa 0 4120}% - \special{fp}% - \rlap{\kern 2.948in\lower 2.465in\hbox to 0pt{\hss \MTS/\hss}}% - \rlap{\kern 0.524in\lower 0.889in\hbox to0pt{\ name $\longrightarrow$ address\hss}}% - \rlap{\kern 0.524in\lower 2.586in\hbox to0pt{\ address $\longrightarrow$ route\hss}}% - \kern 5.899in - }\vss}% - \kern 4.121in -} diff --git a/docs/historical/trusted/figure3.pic b/docs/historical/trusted/figure3.pic deleted file mode 100644 index 0327b12a..00000000 --- a/docs/historical/trusted/figure3.pic +++ /dev/null @@ -1,32 +0,0 @@ -.PS 5.9i -## figure 3 -C1: ellipse "\UA/" -B1: box "\MTA/" with .n at (C1.s.x, C1.s.y-3*lineht) -B8: box "\MTA/" with .w at (B1.e.x+linewid, B1.e.y) -B2: box invis "$\ldots$" with .w at (B8.e.x+linewid, B1.e.y) -B9: box invis "$\ldots$" with .w at (B2.e.x+linewid, B1.e.y) -B3: box "\MTA/" with .w at (B9.e.x+linewid, B1.e.y) -C2: ellipse "\UA/" with .s at (B3.n.x, C1.s.y) -## - arrow from C1.s to B1.n - arrow from B1.e to B8.w - arrow from B8.e to B2.w - arrow from B2.e to B9.w - arrow from B9.e to B3.w - arrow from B3.n to C2.s -## -B4: box width B3.e.x+linewid/3-(B1.w.x-linewid/3) \ - height 3*boxht \ - with .c at B2.c - move to (B4.n.x, B4.n.y-lineht/2); "\MTS/" -## -B5: box "\TMA/" with .w at (C1.e.x+linewid, C1.e.y) -B6: box "\TMA/" with .e at (C2.w.x-linewid, C2.w.y) -B7: box "\KDS/" with .c at ((B5.c.x+B6.c.x)/2, B5.c.y) -## - line <- -> from C1.e to B5.w - arrow from B5.e to B7.w - arrow from B6.w to B7.e - line <- -> from C2.w to B6.e -## -.PE diff --git a/docs/historical/trusted/figure3.tex b/docs/historical/trusted/figure3.tex deleted file mode 100644 index 8fe387f8..00000000 --- a/docs/historical/trusted/figure3.tex +++ /dev/null @@ -1,164 +0,0 @@ -\catcode`@=11 -\expandafter\ifx\csname graph\endcsname\relax \alloc@4\box\chardef\insc@unt\graph\fi -\catcode`@=12 -\setbox\graph=\vtop{% - \baselineskip=0pt \lineskip=0pt \lineskiplimit=0pt - \vbox to0pt{\hbox{% - \special{pn 8}% - \special{ar 524 241 363 240 0.000 6.283}% - \rlap{\kern 0.524in\lower 0.281in\hbox to 0pt{\hss \UA/\hss}}% - \special{pa 161 2423}% - \special{pa 161 1938}% - \special{pa 888 1938}% - \special{pa 888 2423}% - \special{pa 161 2423}% - \special{fp}% - \rlap{\kern 0.524in\lower 2.221in\hbox to 0pt{\hss \MTA/\hss}}% - \special{pa 1373 2423}% - \special{pa 1373 1938}% - \special{pa 2100 1938}% - \special{pa 2100 2423}% - \special{pa 1373 2423}% - \special{fp}% - \rlap{\kern 1.736in\lower 2.221in\hbox to 0pt{\hss \MTA/\hss}}% - \rlap{\kern 2.948in\lower 2.221in\hbox to 0pt{\hss $\ldots$\hss}}% - \rlap{\kern 4.161in\lower 2.221in\hbox to 0pt{\hss $\ldots$\hss}}% - \special{pa 5009 2423}% - \special{pa 5009 1938}% - \special{pa 5736 1938}% - \special{pa 5736 2423}% - \special{pa 5009 2423}% - \special{fp}% - \rlap{\kern 5.373in\lower 2.221in\hbox to 0pt{\hss \MTA/\hss}}% - \special{ar 5373 241 363 240 0.000 6.283}% - \rlap{\kern 5.373in\lower 0.281in\hbox to 0pt{\hss \UA/\hss}}% - \special{pa 524 484}% - \special{pa 524 1938}% - \special{fp}% - \special{pa 500 1841}% - \special{pa 524 1938}% - \special{fp}% - \special{pa 548 1841}% - \special{pa 524 1938}% - \special{fp}% - \special{pa 888 2181}% - \special{pa 1373 2181}% - \special{fp}% - \special{pa 1276 2205}% - \special{pa 1373 2181}% - \special{fp}% - \special{pa 1276 2157}% - \special{pa 1373 2181}% - \special{fp}% - \special{pa 2100 2181}% - \special{pa 2585 2181}% - \special{fp}% - \special{pa 2488 2205}% - \special{pa 2585 2181}% - \special{fp}% - \special{pa 2488 2157}% - \special{pa 2585 2181}% - \special{fp}% - \special{pa 3312 2181}% - \special{pa 3797 2181}% - \special{fp}% - \special{pa 3700 2205}% - \special{pa 3797 2181}% - \special{fp}% - \special{pa 3700 2157}% - \special{pa 3797 2181}% - \special{fp}% - \special{pa 4524 2181}% - \special{pa 5009 2181}% - \special{fp}% - \special{pa 4912 2205}% - \special{pa 5009 2181}% - \special{fp}% - \special{pa 4912 2157}% - \special{pa 5009 2181}% - \special{fp}% - \special{pa 5373 1938}% - \special{pa 5373 484}% - \special{fp}% - \special{pa 5397 581}% - \special{pa 5373 484}% - \special{fp}% - \special{pa 5349 581}% - \special{pa 5373 484}% - \special{fp}% - \special{pa 0 2908}% - \special{pa 0 1454}% - \special{pa 5898 1454}% - \special{pa 5898 2908}% - \special{pa 0 2908}% - \special{fp}% - \rlap{\kern 2.948in\lower 1.736in\hbox to 0pt{\hss \MTS/\hss}}% - \special{pa 1373 484}% - \special{pa 1373 0}% - \special{pa 2100 0}% - \special{pa 2100 484}% - \special{pa 1373 484}% - \special{fp}% - \rlap{\kern 1.736in\lower 0.281in\hbox to 0pt{\hss \TMA/\hss}}% - \special{pa 3797 484}% - \special{pa 3797 0}% - \special{pa 4524 0}% - \special{pa 4524 484}% - \special{pa 3797 484}% - \special{fp}% - \rlap{\kern 4.161in\lower 0.281in\hbox to 0pt{\hss \TMA/\hss}}% - \special{pa 2585 484}% - \special{pa 2585 0}% - \special{pa 3312 0}% - \special{pa 3312 484}% - \special{pa 2585 484}% - \special{fp}% - \rlap{\kern 2.948in\lower 0.281in\hbox to 0pt{\hss \KDS/\hss}}% - \special{pa 985 217}% - \special{pa 888 241}% - \special{fp}% - \special{pa 985 266}% - \special{pa 888 241}% - \special{pa 1373 241}% - \special{fp}% - \special{pa 1276 266}% - \special{pa 1373 241}% - \special{fp}% - \special{pa 1276 217}% - \special{pa 1373 241}% - \special{fp}% - \special{pa 2100 241}% - \special{pa 2585 241}% - \special{fp}% - \special{pa 2488 266}% - \special{pa 2585 241}% - \special{fp}% - \special{pa 2488 217}% - \special{pa 2585 241}% - \special{fp}% - \special{pa 3797 241}% - \special{pa 3312 241}% - \special{fp}% - \special{pa 3409 217}% - \special{pa 3312 241}% - \special{fp}% - \special{pa 3409 266}% - \special{pa 3312 241}% - \special{fp}% - \special{pa 4912 266}% - \special{pa 5009 241}% - \special{fp}% - \special{pa 4912 217}% - \special{pa 5009 241}% - \special{pa 4524 241}% - \special{fp}% - \special{pa 4621 217}% - \special{pa 4524 241}% - \special{fp}% - \special{pa 4621 266}% - \special{pa 4524 241}% - \special{fp}% - \kern 5.899in - }\vss}% - \kern 2.909in -} diff --git a/docs/historical/trusted/refs.tex b/docs/historical/trusted/refs.tex deleted file mode 100644 index cba2736f..00000000 --- a/docs/historical/trusted/refs.tex +++ /dev/null @@ -1,250 +0,0 @@ -% references - -\references - -\ref{DCome83} -\by D.~Comer. -\paper The Computer Science Research Network CSnet: -A History and Status Report -\journal Communications of the ACM\volume 26\issue 10 -\month October\year 1983 -\pages 747--753 -\endref - -\ref{DCroc79} -\by D.H.~Crocker, E.S.~Szurkowski, D.J.~Farber. -\paper An Internetwork Memo Distribution Facility~---~MMDF -\inbook Proceedings, -Sixth Data Communications Symposium -\publaddr Asilomar -\month November\year 1979 -\pages 18--25 -\endref - -\ref{DCroc82} -\by D.H.~Crocker. -\paper Standard for the Format of ARPA Internet Text Messages -\paperinfo Request for Comments 822 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month August\year 1982 -\endref - -\ref{DEA} -\book Data Encryption Algorithm -\bookinfo X3.92--1981 -\publ American National Standards Institute -\year 1981 -\endref - -\ref{DKing84} -\by D.P.~Kingston,~III. -\paper MMDFII: A Technical Review -\inbook Proceedings -Usenix Summer '84 Conference -\publaddr Salt Lake City, Utah -\month June\year 1984 -\pages 32--41 -\endref - -\ref{EAllm83} -\by E.~Allman. -\paper SENDMAIL~---~An Internetwork Mail Router -\other -\publ Britton-Lee, Inc. -\publaddr Berkeley, California -\month July\year 1983 -\endref - -\ref{EOlse84} -\by E.W.~Olsen. -\paper NetOS Concepts and Facilities -\other -\publ Local Network Systems, Inc. -\publaddr Costa Mesa, California -\month August\year 1984 -\endref - -\ref{EStef84} -\by E.A.~Stefferud, J.N.~Sweet, T.P.~Domae. -\paper MZnet: Mail Service for Personal Micro-Computer Systems -\inbook Proceedings, -Second International Symposium on Computer Message Systems -\publaddr Nottingham, U.K -\month May\year 1984 -\pages 293--302 -\endref - -\ref{FIKM} -\book Financial Institution Key Management -\bookinfo X9.17--198\_ (draft) -\publ American National Standards Institute -\year 198\_ -\endref - -\ref{FIPS46} -\book Data Encryption Standard -\bookinfo Federal Information Processing Standards, -Publication 46 -\month January\year 1977 -\endref - -\ref{FIPS81} -\book DES Modes of Operation -\bookinfo Federal Information Processing Standards, -Publication 81 -\month December\year 1980 -\endref - -\ref{FIPS98} -\paper Specification for Message Format for Computer Based Message Systems -\other -\publ National Bureau of Standards -\month January\year 1983 -\endref - -\ref{HERMES} -\by Bolt, Beranek, and Newman. -\paper Hermes User's Manual -\paperinfo for TOPS-20 -\other -\publ Bolt, Beranek, and Newman -\publaddr Boston, MA -\month January\year 1979 -\endref - -\ref{IP} -\paper Internet Protocol -\paperinfo Request for Comments 791 (\milstd/ 1777) -\inbook Internet Protocol Transition Workbook -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month September\year 1981 -\endref - -\ref{JReyn84} -\by J.K.~Reynolds. -\paper Post Office Protocol -\paperinfo Request for Comments 918 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month October\year 1984 -\endref - -\ref{LLamp82} -\by L.~Lamport, R.~Shostak, M.~Pease. -\paper The Byzantine Generals Problem -\journal ACM Transactions on Programming Languages and Systems -\volume 4 -\month July\year 1982 -\pages 382--401 -\endref - -\ref{MButl85} -\by M.~Butler, J.B.~Postel, et.~al. -\paper Post Office Protocol - Version~2 -\paperinfo Request for Comments 937 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month February\year 1985 -\endref - -\ref{MRose84a} -\by M.T.~Rose. -\paper The Rand MH Message Handling System: The UCI BBoards Facility -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\ref{MRose84b} -\by M.T.~Rose. -\paper The Rand MH Message Handling System: Tutorial -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\ref{MRose85a} -\by M.T.~Rose, J.L.~Romine. -\paper The Rand \MH/ Message Handling System: User's Manual -\paperinfo UCI Version -\other -\publ Department of Information and Computer Science -\publaddr University of California, Irvine -\month January\year 1985 -\endref - -\ref{MRose85b} -\by M.T.~Rose, E.A.~Stefferud. -\paper Proposed Standard for Message Encapsulation -\paperinfo Request for Comments 934 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month January\year 1985 -\endref - -\ref{MRose85c} -\by M.T.~Rose, D.J.~Farber, S.T.~Walker. -\paper Design of the TTI Prototype Trusted Mail Agent -\inbook Proceedings, -Second International Symposium on Computer Message Systems -\publaddr Washington, D.C. -\month September\year 1985 -\toappear -\endref - -\ref{MRose85d} -\by M.T.~Rose, E.A.~Stefferud, J.N.~Sweet. -\paper MH: A Multifarious User Agent -\journal Computer Networks%\volume V\issue N -\toappear -\endref - -\ref{SMTP} -\paper Simple Mail Transfer Protocol -\paperinfo Request for Comments 821 -\other -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month August\year 1982 -\endref - -\ref{TCP} -\paper Transmission Control Protocol -\paperinfo Request for Comments 793 (\milstd/ 1778) -\inbook Internet Protocol Transition Workbook -\publ ARPA Internet Network Information Center (NIC) -\publaddr SRI International -\month September\year 1981 -\endref - -\ref{VVoyd83} -\by V.L.~Voydock, S.T.~Kent. -\paper Security Mechanisms in High-Level Network Protocols -\journal Computing Surveys\volume 15\issue 2 -\month June\year 1983 -\pages 135--171 -\endref - -\ref{WJoy83} -\by W.N.~Joy, E.~Cooper, R.S.~Fabry, S.J.~Leffler, K.~McKusick, D.~Mosher. -\paper 4.2\bsd/ System Manual -\paperinfo Technical Report Number 5 -\publ Computer Systems Research Group, University of California, Berkeley -\month July\year 1983 -\endref - -\ref{X.400} -\book Message Handling Systems: System Model-Service Elements -\bookinfo Recommendation X.400 -\publ International Telegraph and Telephone Consultative Committee (CCITT) -\endref - -\endreferences diff --git a/docs/historical/trusted/table4.tex b/docs/historical/trusted/table4.tex deleted file mode 100644 index dd7e8089..00000000 --- a/docs/historical/trusted/table4.tex +++ /dev/null @@ -1,55 +0,0 @@ -% table 4 - -\def\entry#1#2#3{& & &\cr} - -\centerline{\vbox{% - \offinterlineskip - \halign{\vrule#& \strut\enskip\hfil#\hfil\enskip& - \vrule#& \strut\enskip#\hfil\enskip& - \vrule#& \strut\enskip\hfil#\hfil\enskip& - \vrule#\cr -\noalign{\hrule} -height2pt&\omit& &\omit& &\omit&\cr - \entry {\bf Abbrev.}{\hfil\bf Term}{\bf Context} -height2pt&\omit& &\omit& &\omit&\cr -\noalign{\hrule} -height2pt&\omit& &\omit& &\omit&\cr - \entry {CBC}{Cipher Block Chaining}{DES} - \entry {CBMS}{Computer Based Message System}{} - \entry {CKD}{Key Distribution Center}{EFT} - \entry {CKS}{Checksumming}{DES} - \entry {CSM}{Cryptographic Service Message}{} - \entry {DEA}{Data Encryption Algorithm}{} - \entry {DES}{Data Encryption Standard}{} - \entry {DSM}{Disconnect Service Message}{MCL} - \entry {ECB}{Electronic Code Book}{DES} - \entry {EFT}{Electronic Funds Transfer}{} - \entry {IDK}{Key Identifier}{CSM} - \entry {ID}{Identifier}{KDS} - \entry {IP}{Internet Protocol}{} - \entry {IV}{Initialization Vector}{CSM} - \entry {KA}{Authentication Key}{CSM} - \entry {KDC}{Key Distribution Center}{CBMS} - \entry {KDS}{Key Distribution Server}{CBMS} - \entry {KD}{Data-encrypting Key}{CSM} - \entry {KK}{Key-encrypting Key}{CSM} - \entry {MAC}{Message Authentication Code}{CSM} - \entry {MCL}{Message Class}{CSM} - \entry {MH}{The Rand Message Handling System}{} - \entry {MIC}{Message Integrity Code}{CSM} - \entry {MK}{Master Key}{CSM} - \entry {MTA}{Message Transport Agent}{CBMS} - \entry {MTS}{Message Transport System}{CBMS} - \entry {ORG}{Message Originator}{CSM} - \entry {RCV}{Message Receiver}{CSM} - \entry {RIU}{Request Identified User}{MCL} - \entry {RSI}{Request Service Initialization}{MCL} - \entry {RUI}{Request User Identification}{MCL} - \entry {TCP}{Transmission Control Protocol}{} - \entry {TMA}{Trusted Mail Agent}{CBMS} - \entry {TTI}{Trusted Technologies, Inc.}{} - \entry {UA}{User Agent}{CBMS} -height2pt&\omit& &\omit& &\omit&\cr -\noalign{\hrule} - }% -}} diff --git a/docs/historical/trusted/text.tex b/docs/historical/trusted/text.tex deleted file mode 100644 index 8da1f30d..00000000 --- a/docs/historical/trusted/text.tex +++ /dev/null @@ -1,1077 +0,0 @@ -% begin text - -\banner - -\section{Introduction} -Initially, -a brief model of a user community employing a trusted mail service is -introduced. -Following this introduction, -a prototype system is described which attempts to meet the needs of a user -community. -Finally, -open issues are discussed, -which are currently not satisfied by the prototype system or its model of -operation. - -Two or more entities, -called {\it users}, -wish to communicate in a {\it secure} environment. -Depending on their available resources, -different levels of security are possible. -At the extreme, -two parties with substantial resources may wish to communicate in a fashion -which prevents any third parties, -known as {\it adversaries}, -from observing their communication. -At this level, -not only is an adversary unable to capture the communication for analysis, -but in fact, the adversary is unaware that any communication is occurring at -all. -In most applications, -this level of security is prohibitively expensive. -A more economic method is to translate messages into a form which is useless -to an adversary and then to communicate those messages on an insecure medium. - -This latter method requires the two users to have some sort of {\it key} -with which to ``lock'' the plaintext into ciphertext when transmitting, -and then to ``unlock'' the ciphertext back into useful form when receiving. -Hence, there are two central issues to deal with: -\underbar{first}, -keys must be generated, distributed, and maintained in a secure fashion; -and, -\underbar{second}, -the keys must be ``intricate'' enough so that sense can't be made out of the -ciphertext without knowledge of the key. -The first part is handled by a {\it key distribution center} (\KDC/), -which maintains a list of users and a set of keys for each pair of users. -The second part relies on sophisticated encryption and decryption algorithms. -It is beyond the scope of this paper to describe cryptographic techniques in -detail. -For a detailed survey of this area, the reader should consult \cite{VVoyd83}. - -\tagfigure{1}{The \MTS/ Model}{mtsmodel} -In the context of our discussion (using the terminology of \cite{X.400}), -the medium used to transport is supplied -by a {\it message transport system} (\MTS/), -which is composed of one or more {\it message transport agents} (\MTA/s). -Usually, -the entire \MTS/ is distributed in nature, -and not under a single administrative entity; -in contrast, an \MTA/ is usually controlled by a single administration and -resides in a particular domain. -At every end-point in the medium, -a {\it user agent} (\UA/) acts on behalf of a user and interfaces -to a local \MTA/. -This model is briefly summarized in Figure~\mtsmodel. - -A message, in our context, consists of two parts: -the {\it headers} and the {\it body}. -The headers are rigorously structured; -they contain addressing information and other forms useful to a \UA/. -The body is freely formatted and is usually not meaningful to a \UA/. - -When a message is sent from one user to another, -the following activities occur: -The originating user indicates to the \UA/ the address of the recipient; -the \UA/ then posts the message through a {\it posting slot} to an \MTA/, -which involves a posting protocol in which the validity of the address -and the syntax of the message are considered. -Upon successful completion of the protocol, -the \MTA/ accepts responsibility for delivering the message, -or if delivery fails, to inform the originating user of the failure. -The \MTA/ then decides if it can deliver the message directly to the -recipient; -if so, it delivers the message through a {\it delivery slot} to the -recipient's \UA/, -using a delivery protocol. -If not, it contacts an adjacent \MTA/, closer to the recipient, -and negotiates its transfer (using a protocol similar to the posting protocol). -This process repeats until an \MTA/ is able to deliver the message, -or an \MTA/ determines that the message can't be delivered. -In this latter case, -a failure notice is sent to the originating user. - -\tagfigure{2}{Mappings in the \MTS/ model}{mappings} -It is important to note that there are two mappings which occur here. -The first, which is performed implicitly by the originating user, -maps the name of the recipient into the recipient's address; -the second, which is performed explicitly by the \MTS/, -maps the address of the recipient into a route to get from the originator's -\MTA/ to the recipient's \MTA/. -These mappings are depicted in Figure~\mappings. - -Obviously, there is no guarantee that the \MTS/ can be made secure, -in {\it any} sense of the word. -This is particularly true if it is under several administrations. -Regardless of the number of administrations in the \MTS/, -this problem quickly degenerates to a problem of -Byzantine generals\cite{LLamp82}. -Further, trying to secure each \MTA/ in the path that a message travels is -equally questionable. - -\tagfigure{3}{Modifications to the \MTS/ model}{tmodel} -To support secure communications in this environment, -a new entity, -the {\it trusted mail agent} (\TMA/) is introduced into our model. -A solution is to have the \UA/ interact with this entity -both when posting a message and when taking delivery of a message. -The \UA/ first contacts a \TMA/ to encrypt the body of the message for the -recipient, -prior to pushing it through the posting slot. -Upon receipt from the destination \MTA/, -the \UA/ examines the message and contacts -the \TMA/ to decipher the body of the message from the source. -An overview of the relationship between the standard \MTS/ model -and the augmentations made for the \trustedmail/ system is shown in -Figure~\tmodel. - -To achieve these tasks, -the \TMA/ interacts with a {\it key distribution service} (\KDS/), -which manages keys between pairwise users. -At this point, a third mapping takes place: -the \UA/ must be able to map addresses into the identifier(s) -by which the originator and recipient are known by the \TMA/ and \KDS/. -These identifiers are known as \KDS/ IDs, or simply IDs. -Usually, a fourth mapping also occurs, -which maps the ID of a user into the name of a user. -In our context, -there is an exact one-to-one mapping between the name of a user and the ID -of that user. -In contrast, -there may be a one-to-many mapping between the name of a user and -that user's address in the \MTS/. -Further, there are usually many different routes which a message may traverse -when going from an originating user to a recipient user. - -The \TMA/ is said to be {\it trusted} because it can be relied on to perform -only those actions specifically requested by the user. -In the context of this paper, -this means, given proper construction and maintenance of the \TMA/, -that the software will communicate with the \KDC/ in some secure fashion to -negotiate key relationships and that it will not disclose those key -relationships to other parties. -Furthermore, -the body of mail messages exchanged between users which employ -a trusted mail agent will be unintelligible to other parties. -Finally, -a recipient of a message receives authenticated information from the -trusted mail agent as to the identify of the sender. - -Hence, -when each user employs a \TMA/, -end-to-end encryption occurs at the \UA/ level -(to avoid any problems with malicious \MTA/s).% -\nfootnote{Note that in the scope of this system, -the end-points are the user agents, not the hosts they reside on. -In fact, -it may very well be the case that the user agent and the local message -transport agent do not reside on the same host.} -Any adversary listening in on the \MTS/, -may observe messages, -but make no sense out of them -(other than rudimentary traffic analysis). -Note, however, -that since the medium itself is not secure, -an adversary may still introduce new messages, -corrupt messages, -or remove messages, -as they traverse the \MTS/. -In the first two cases, however, -the recipient would be suspicious -because the adversary lacks the encrypting key employed by the source user. -In the third case, -the source user can retransmit the message after a suitable time. -Of course, -there is no built-in retransmission policy~---~this aspect depends on the -user's sending mail and is beyond the scope of the system. - -It is important to understand the target community for the \trustedmail/ system -described herein. -In particular, -the \TMA/ is intended for a commercial and not a military environment. -This distinction is important, -since it is the {\it fundamental} assumption of this paper that -the latter community has much stricter requirements than the former. -Because of this, -the prototype system is able to make certain simplifying assumptions which -permit it to operate in a mode which is less secure than military -applications would permit. -Although these issues are explored in greater detail at the end of the paper, -for the moment recall that, like most qualities, trustedness is not absolute: -there are varying degrees of trustedness, -and as a system becomes more trusted, -it becomes more expensive, in some sense, to operate and maintain. - -It is perhaps instructive at this point to consider why the introduction of a -key distribution center is appropriate in this environment, -and why the {\it fundamental} assumption that trusted mail agents do not -directly communicate with each other is necessary. -Although a user agent is able to converse with the local message transport -agent in real-time, -it is frequently not able to communicate with other user agents in real-time. -Furthermore, -considering the vast problems and overhead -of trying to establish secure communications from ``scratch'' -(a problem far beyond the scope of this paper), -it is would not be a good idea to try and communicate key relationships with -other user agents, -even if it were always possible to do so. -In addition, -by separating the trusted aspects of the message transport system from the -system itself, -many other advantages can be seen. -These are presented in greater detail at the end of the paper. - -The discussion thus far has considered only a single recipient. -In practice, a user might wish to send to several others, -using a different key for each. -Hence each copy of the message is encrypted differently, -depending on the particular recipient in question. -Note that this has the effect of {\it un-bundling} message transfer in the -\MTS/, -as advanced \MTA/s tend to keep only a single copy of the message for any -number of recipients in order to save both cpu, disk, and I/O resources. - -For example, -in some existing mail systems, -if a message was sent to $n$ users on a remote system, -then the $n$ addresses would be sent from the source \MTA/ to the remote \MTA/ -along with one copy of the message. -Upon delivery, -the remote \MTA/ would deliver a copy to each of the $n$ recipients, -but the virtual wire between the source \MTA/ and the recipient \MTA/ was -burdened with only one copy of the message. -But in a secure environment, -since a different key is used by the source user when communicating with each -of the $n$ recipients, -$n$ different messages will be posted with the local \MTA/, -and the advantages of recipient bundling are lost. - -Along these lines however, -private discussion groups may wish to avoid this problem by establishing -access to a single ID for their use. -In this case, -a subscriber to the \KDS/ may actually have more than one ID, -one for ``personal'' use and one for each discussion group. -The appropriate ID is used when posting messages to the discussion group. -Naturally the administrative policy for deciding who is allowed to use the -\KDS/ ID of a discussion group is left to the moderator of the group. -Observant readers will note that this vastly decreases the aspect of -secure communications for the discussion group. -This method is suggested as a compromise -which permits the bundling of messages for multiple recipients -to reduce \MTS/ traffic. -The price is high however, -as a compromise on behalf of {\it any} member of the discussion group -compromises the entire group. -For large discussion groups and a bandwidth limited \MTS/, -this price may be worth paying. -The prototype implementation of the \TMA/ supports multiple recipients but -not multiple \KDS/ IDs. - -Having described this environment for communication, -the designs of a \KDS/ and \TMA/ which form the heart of the \TTI/ -\trustedmail/ system are discussed. -The prototype system was developed on a \vax/-11/780 running 4.2\bsd/ \unix/. -The system is based on the \ansi/ draft\cite{FIKM} -for financial key management, -but diverges somewhat in operation -owing to the differences between the electronic mail (CBMS) -and electronic funds (EFT) environments. -Note however that the \ansi/ data encryption algorithm\cite{DEA,FIPS46} is -used in the current implementation. -A public-key cipher system was not considered as the basis for the prototype -since, to the authors' knowledge, -an open standard for a public-key system has yet to be adopted by the -commercial community. -In contrast, -the \ansi/ draft for financial key management appears to be receiving -wide support from the commercial community. - -\tagtable{4}{Abbreviations used in this paper}{terms} -In the description that follows, -a large number of acronyms are employed to denote commonly used terms. -In order to aid the reader, -these are summarized in Table~\terms. - -\section{The Key Distribution Service} -The prototype version of the \KDS/ -was designed to provide key distribution services for -user agents under both the same or different administrations. -As a result, -the means by which a trusted mail agent connects to a key distribution server -is quite flexible. -For example, -the prototype system supports connections via -standard terminal lines, -dial-ups (e.g., over a toll-free 800 number), -\unix/ pipes, -and over TCP sockets\cite{IP,TCP}. -In the interests of simplicity, -for the remainder of this paper, -a TCP/IP model of communication is used. -Initially, -a server on a well-known service host in the ARPA Internet community -listens for connections on a well-known port.% -\nfootnote{The term {\it well known} in this context means that the -location of the service is known {\it a priori} to the clients.} -As each connection is established, -it services one or more transactions over the lifetime of the session. -When all transactions for a session have been made, -the connection is closed. -If the necessary locking operations are performed by the server -to avoid the usual database problems, -then more than one connection may be in progress simultaneously. -Of course, -a time-out facility should also be employed to prevent a rogue agent from -monopolizing the key distribution server. - -Once a session has been started, -the client (a.k.a.~\TMA/) initiates transactions with the server -(a.k.a.~\KDS/). -Each transaction consists of the exchange of two or three -{\it cryptographic service messages} (\CSM/s): -the client sends a request, -the server attempts to honor the request and sends a response, -and, -if the server responded positively, -the client then acknowledges the transaction. -By exchanging these cryptographic service messages, -the \KDS/ and the \TMA/ are able to communicate key relationships. -Obviously, the relationships themselves must be transmitted in encrypted -form.% -\nfootnote{Otherwise an adversary could simply impersonate a \TMA/ and ask -for the desired key relationships. -Similarly, this also prevents an adversary from successfully impersonating a -key distribution server.} -Hence, not only are key relationships between two \TMA/s communicated, -but key relationships between the \KDS/ and the \TMA/ are communicated as well. - -This leads us to consider the key relationships that exist -between a \TMA/ and the \KDS/. -A client usually has three keys dedicated for use with the server. -The first is the {\it master key} (denoted MK), -which has an infinite cryptoperiod, and is rarely used. -This key is distributed manually. -The second is the {\it key-encrypting key} (denoted KK), -which has a shorter cryptoperiod. -Whenever a KK is transmitted to the \TMA/, -it is encrypted with the master key. -The third is the {\it authentication key} (denoted KA), -which is used to authenticate transactions that do not contain data keys -(a count field is also used to avoid play-back attacks). -Whenever a KA is transmitted to the \TMA/, -it is encrypted with the key-encrypting key. -When transactions contain keys, -an associated count field is included to indicate the number of -keys encrypted with the key-encrypting key used. -Although not used by the prototype implementation, -a production system would employ audit mechanisms to monitor usage histories. - -Currently four types of requests are honored by the \KDS/: -two key relationship primitives, and two name service primitives. -The type is indicated by the {\it message class} (MCL) of the first -cryptographic service message sent in the transaction. -As each message class is discussed, -the appropriate datastructures used by the \KDS/ are introduced. -Space considerations prevent a detailed description of the information -exchanged in each transaction. -Appendix~B of this paper presents a short example of an interaction between -the \KDS/ and a \TMA/. - -The first two requests are used to create (or retrieve) key relationships, -and to destroy key relationships: - -The {\it request service initialization} (RSI) message class -is used to establish a {\it key-encrypting key} (KK) relationship -between the \TMA/ and another \TMA/, -or between the \TMA/ and the \KDS/. -As implied by the name, -a key-encrypting key is used to cipher keys which are used to cipher data -exchanged between peers. -These other keys are called {\it data keys} (KDs). - -The {\it disconnect service message} (DSM) message class -is used to discontinue a KK-relationship -between the \TMA/ and another \TMA/, -or between the \TMA/ and the \KDS/. -This prevents keys which are felt to have been compromised, -or are vulnerable to compromise, -from receiving further use in the system. -It should be noted that, -owing to mail messages (not \CSM/s) in transit, -a discontinued key relationship -may be needed to decipher the key used to encipher a mail message. -The prototype \KDS/ supports this capability. - -In addition to maintaining an MK/KK/KA triple for each \TMA/, -the \KDS/ also remembers KK-relationships between \TMA/s. -The reason for this stems from a fundamental difference between the -electronic funds transfer and computer-based message system worlds. -The \KDS/ assumes that no two arbitrarily chosen \TMA/s can communicate in -real-time, -and as a result, -\TMA/s do not exchange cryptographic service messages. -(See Appendix~C for a more detailed discussion.) -This means that when a \TMA/ establishes a KK-relationship with another \TMA/, -the former \TMA/ may start using the KK before the latter \TMA/ knows of the -new KK-relationship. -In fact, -it is quite possible for a KK-relationship to be established, -used, -and then discontinued, -all unilaterally on the part of one \TMA/. -It is up to the \KDS/ to retain old cryptographic material -(possibly for an indefinite period of time), -and aid the latter \TMA/ in reconstructing KK-relationships as the need arises. -Naturally, -discontinued KKs are not used to encode any new information, -but rather to decode old information. -(Again, refer to Appendix~C for additional details.) - -The other two requests are used to query the directory service aspects of the -key distribution server: - -The {\it request user identification} (RUI) message class -is used to identify a subscriber to the \KDS/. -Both the \KDS/ and \TMA/ are independent of any underlying mail transport -system (\MTS/). -As a result, -a subscriber to the \KDS/ is known by two unique attributes: -a ``real-world'' name, -and a \KDS/ identifier (ID). -The user of a mail system, -or the \UA/, -is responsible for mapping an \MTS/-specific address -(e.g., {\tx MRose@UDEL.ARPA}) -to the person associated with that maildrop -(e.g., \eg{Marshall\ T.\ Rose}). -When conversing with the \KDS/, -the \TMA/ uses the \KDS/ ID of another user to reference that person's \TMA/. -Since it is inconvenient to remember the IDs (as opposed to people's names), -the \KDS/ provides the RUI message class to permit a \TMA/ to query the -mapping between names and IDs. -If the \KDS/ cannot return an exact match, -it may respond with a list of possible matches -(if the identifying information given was ambiguous), -or it may respond with a response that there is no matching user. - -Finally, -the {\it request identified user} (RIU) message class -performs the inverse operation: -given a \KDS/ ID, a ``real-world'' name is returned. -This request is useful for disambiguating unsuccessful RUI requests -and in boot-strapping a \TMA/. - -The \KDS/ maintains two directories: -a private directory and a public directory. -The private directory contains all information on all clients to the \KDS/. -The public directory is a subset of this, -and is used by the \KDS/ when processing RUI and RIU requests.% -\nfootnote{In the prototype implementation, -the two directories are, for the moment, identical.} -As a result, -certain clients of the \KDS/ may have unlisted IDs and names. - -\section{The Trusted Mail Agent} -The prototype version of the \TMA/ -was designed to interface directly to the user agent in order to maximize -transparency to the user. -In present form, -the \TMA/ is available as a load-time library under 4.2\bsd/ \unix/, -although efforts are currently underway to transport the \TMA/ to a PC-based -environment. - -The software modules which compose the \TMA/ contain a rich set of interfaces -to the \KDS/. -In addition, -the \TMA/ manages a local database, -so responses from the \KDS/ may be cached and used at a later time. -In all cases, -the \KDS/ is consulted only if the information is not present -in the \TMA/ database, -or if the information in question has expired (e.g., KK-relationships). -This caching activity minimizes connections to the \KDS/. -Although connections are relatively cheap in the ARPA Internet, -substantial savings are achieved for PCs which contact the \KDS/ over a -public phone network (dial-up) connection. - -The \TMA/ performs mappings between pairs of the following objects: -user names, \KDS/ IDs, and \MTS/ addresses. -The \TMA/ considers all trusted mail agents, including itself, -as a user name, \KDS/ ID, and one or more \MTS/ addresses. -Although the \TMA/ does not interpret addresses itself, -in order to simplify mail handling, -the \TMA/ remembers the relationship between these objects so the user enters -this information only once. - -Initially, -when a \TMA/ is booted, -the user supplies it with the master key and the user's \KDS/ ID. -Both of these quantities are assigned by the personnel at the key -distribution center, -and subsequently transmitted to the user via an alternate, bonded service.% -\nfootnote{In this fashion, -the problems of boot-strapping over an unsecure medium are avoided.} -The \TMA/ connects with the \KDS/ and verifies its identity. -From this point on, -the \TMA/ manages its KK-relationships between the \KDS/ and other \TMA/s -without user intervention. - -The current implementation of the \TMA/ assumes a ``general memo framework'' -in the context of the Standards for ARPA Internet Text Messages\cite{DCroc82}: -\smallskip -{\advance\leftskip by\parindent -\item{1.} A message consists of two parts: -the {\it headers} and the {\it body}. -A blank line separates the headers from the body. - -\item{2.} Each (virtual) line in the headers consists of a keyword/value -pair, in which the keyword is separated from the value by a colon (:). -The headers are rigorously structured in the sense that they contain -addressing and other information useful to a user agent. - -\item{3.} The body is freely formatted and must not be meaningful to a -user agent. -However, as will be seen momentarily, -the body of encrypted messages must have an initial fixed format which the -\TMA/ enforces. -\smallskip} -\noindent -This format is widely called ``822'' after the number assigned to the -defining report\cite{DCroc82}.% -\nfootnote{Although an 822--style framework is employed by the \TMA/ prototype, -the 822 \eg{Encrypted:} header is not currently present in encrypted messages. -This is due to a design decision which assumes that nothing in the headers of -a message is sacred to the transport system, -and that ``helpful'' munging might occur at any time. -In the real world, such helpfulness is often a problem.} - -To support the cipher activities described below, -the \TMA/ contains internal routines to perform the following DES functions: -electronic code book (ECB) for key encryption, -cipher block chaining (CBC) for mail message encryption, -checksumming (CKS) for mail message and \CSM/ authentication. -Readers interested in these different modes of operation for the DES should -consult \cite{FIPS81}. - -\subsection{Encrypting Mail} -To encipher a message, the method used is a straightforward adaptation -of the standard encrypting/authentication techniques -(though the terminology is tedious). -Consider the following notation: -\smallskip -{\advance\leftskip by\parindent -\itemm $a_x(s)$ the checksum of the string $s$ using the key $x$ -(DEA~{\it checksumming} authentication) - -\itemm $a_{x+y}(s)$ the checksum of the string $s$ using the exclusive-or -of the two keys $x$ and $y$ - -\itemm $e_x(y)$ the encryption of the key $y$ using the key $x$ -(DEA~{\it electronic code book} encryption) - -\itemm $e_{x,y}(s)$ the encryption of the string $s$ using the key $x$ -and initialization vector $y$ -(DEA~{\it cipher block chaining} encryption) - -\itemm $h$ the headers of the message - -\noindent and, - -\itemm $b$ the body of the message -\smallskip} -\noindent -For each message to be encrypted, -a data key, initialization vector, authentication key (KD/IV/KA) -triple is generated by a random process. -(It goes without saying that the integrity of the system depends on the -process being {\it random\/}). -Then, for each user to receive a copy of the encrypted message, -the following actions are taken: - -First, the headers of the message are output in the clear. -Then, a {\it banner} string, $i$, is constructed and placed at the beginning -of the body of the message: -\example ENCRYPTED MESSAGE: TTI TMA\endexample -which identifies the message as being encrypted by the \TTI/ \TMA/. -Following the banner string is a structure, $m$, -which takes on the syntax and most of the semantics of a cryptographic -service message: -$$\displayindent=\leftskip \advance\displayindent by1.5\parindent - \halign{\hfil#/& \enspace#\hfil\cr - MCL& MAIL\cr - RCV& rcvid\cr - ORG& orgid\cr - IDK& kkid\cr - KD& $e_{kk}(ka)$\cr - KD& $e_{kk}(kd)$\cr - IV& $e_{kd}(iv)$\cr - MIC& $a_{ka}(b)$\cr - MAC& $a_{kd+ka}(m)$\cr -}$$ -After this, the encrypted body is output, $e_{kd,iv}(b)$. -In short, the entire output consists of -$$h+i+m+e_{kd,iv}(b).$$ - -The purpose of the structure $m$ is many-fold. -The MCL field indicates the structure $m$'s type; -currently only the type MAIL is generated and understood. -The RCV and ORG fields identify the intended recipient of the message -and the originator. -The IDK field identifies the key-encrypting key, KK, -used to encrypt the next two fields. -The first KD field has the encrypted authentication key, KA, -used to calculate the MIC of the plaintext of the body of the message. -After the body of the message is deciphered, $a_{ka}(b)$ is calculated and -compared to the value of the MIC field. -Hence, the MIC field authenticates the message body. -The second KD field has the encrypted data encrypting key, KD, -which along with the encrypted initialization vector in the IV field -was used to generate the ciphertext of the body. -Finally, the MAC field authenticates the $m$ structure itself. -The use of a data key, initialization vector, authentication key (KD/IV/KA) -triple permits us to perform key distribution in a hierarchical fashion and -allows the system to use a KK-relationship over a longer cryptoperiod -without fear of compromise. - -The \TMA/ provides three primary interfaces to a \UA/ to send encrypted mail: -the first takes a file-descriptor to a message -and returns a structure $g$ (called a {\it group}) -describing the ciphertext version of the body -(this structure contains a KD, IV, and KA generated at random, -along with a file-descriptor to the plaintext headers, -a file-descriptor to the ciphertext body, -and the checksum of the plaintext body); -the second takes a user entry (or \MTS/ address) and $g$, -and returns a file-descriptor to the encrypted message -for that user (or \MTS/ address); -the third takes $g$ and performs clean-up operations. -The chief advantage to this scheme of encryption -is that if the message is to be sent to more than one recipient, -then the MIC and the encrypted body need only be calculated once, -since the KD, IV, and KA remain constant -(only the KK's change with each recipient, -hence for each copy of the encrypted message, -only the structure $m$ need be re-calculated). - -There are, however, a few subtleties involved: -\underbar{first}, -the \MTS/ usually accepts only 7--bit characters, -so the encrypted text is exploded to consist of only printable characters;% -\nfootnote{% -As a rule, in all \CSM/s, -when encrypted information is transmitted, -it is exploded after encryption by the sender, -and imploded prior to decryption by the receiver.} -\underbar{second}, -since the \MTS/ may impose limits on the length of a line, -each line of output is limited to 64~characters; -and, -\underbar{third}, -since the body may require trailing padding, -during encryption -one last unit of 8~bytes is written (and encrypted), -naming the number of characters (presently, nulls) padded in the -previous 8~bytes ($0\tdots7$). - -\subsection{Decrypting Mail} -To decipher a message, the method is also straightforward: -The headers are output in the clear. -The banner string is essentially ignored, -and the structure $m$ is consulted to identify the correct key-encrypting key. -The \TMA/ checks to see if it knows of that KK. -If not, it asks the \KDS/ to supply it. -From that point, -the KA, KD, and IV are deciphered. -The $m$ structure is then authenticated. -With the correct key, -the remainder of the body is deciphered, -and all except for the last 16~bytes are output. -The last 8~bytes indicate how many of the previous 8~bytes should be output. -So, -the appropriate number of bytes is output, -and the plaintext body is authenticated and compared to the MIC. -Needless to say, -as the body is deciphered, -it is imploded back to 8--bit characters and lines are restored to their -previous lengths. -To indicate that the message was correctly deciphered, -a new header of the form -\example X-KDS-ID: orgid (originator's name)\endexample -is appended to the headers of the message. -Note that this provides an authentication mechanism. -Note, further, -that the \UA/ did not have to know the identity of the sender of the message. - -\section{Modifications to MH} -\MH/ is a public domain \UA/ for \unix/, -which is widely used in dealing with both a large number of electronic mail -application and a large number of messages. -Although this document does not intend to describe \MH/, -parts of the system are described as they relate to the \TMA/. -Readers interested in \MH/ should consult either the user's -manual\cite{MRose85a} for a detailed description, -or \cite{MRose85d} for a higher-level description. - -To modify \MH/ in order to make use of a \TMA/, -three programs were changed (with a high degree of transparency to the user), -and two new programs were introduced. - -In \MH/, -when a user wishes to send a composed draft -(which may be an entirely new message, -a re-distribution of a message, -a forwarding of messages, -or a reply to a message), -the user invokes the \pgm{send} program. -This program performs some minor front-end work for a program called -\pgm{post} which actually interacts with the \MTS/. -A new option to the \pgm{send} and \pgm{post} programs, -the \switch{encrypt} switch, -is introduced. -If the user indicates -\example send\ -encrypt\endexample -then \pgm{post} encrypts the messages it sends. - -When sending an encrypted message, -\pgm{post} first checks that each addressee has a mapping to a \KDS/ ID -during address verification. -Then, instead of batching all addresses for a message in a single posting -transaction, -for each addressee, -\pgm{post} consults the \TMA/ for the appropriately encrypted text and -posts that instead. -(Appendix~A discusses the reasons for this more fully.) -Hence, -assuming the user has established mappings between \MTS/ addresses -and \KDS/ IDs, -the \TMA/ does all the work necessary to encrypt the message, -including contacting the \KDS/ as necessary.% -\nfootnote{Once the \TMA/ establishes a connection to the \KDS/, -it retains that connection until the \UA/ terminates. -This is done to minimize connections to the \KDS/. -In the context of \MH/, -since the trusted mail agent is active over the lifetime of an invocation of -a program such as \pgm{post}, -this means that the connection is terminated just before the program -terminates.} - -In \MH/, -when a user is notified that new mail has arrived, -the \pgm{inc} program is run. -As each message is incorporated into the user's message handling area, -a scan (one-line) listing of the message is generated. - -By default, -the \pgm{inc} program upon detecting one or more encrypted messages, -after the scanning process, -asks the \TMA/ to decipher the message, -and if successful, -scans the deciphered messages. -This action can be inhibited with the \switch{nodecrypt} switch. -Hence, if the user wishes to retain messages in encrypted form, -\pgm{inc} can be told to note the presence of encrypted messages, -but otherwise not to process them. -By using the \MH/ user profile mechanism, -\pgm{inc} can be easily customized to reflect the user's tastes. -Again, -the actions of the \TMA/ are transparent to the user. -In fact, -if encrypted mail is received from users unknown to the \TMA/, -it queries the \KDS/ as to their identity prior to retrieving the -KK-relationship. - -If \pgm{inc} fails to decrypt a message for some reason, -or if \pgm{inc} was told not to decrypt a message, -the \pgm{decipher} program can be used. -This simple program merely deciphers each message given in its argument -list. -The \pgm{decipher} program can be given the \switch{insitu} switch, -which directs it to replace the ciphertext version of the message with the -plaintext version; -or, -the \switch{noinsitu} switch can be used indicating that the ciphertext -version of the message should be left untouched and the plaintext version -should be listed on the standard output. - -Finally, -the \pgm{tma} program is used to manipulate the \TMA/ database, -containing commands to boot the database, -add new users to the database, -and to establish mappings between addresses and users in the \TMA/ database. -This program can also be used to disconnect KKs between other \TMA/s, -and the KK/KA between itself and the \KDS/. - -Appendix~A of this paper contains a transcript of an \MH/ session. - -\section{Remarks} -We now consider the merit of the system described. -After presenting some of the basic strengths of the system -and a few unresolved questions, -the discussion centers on the simplifying assumptions made by the system, -and how these can be defended in a non-military environment. - -\subsection{Strengths} -It can be argued that the prototype system -(and the augmented model in which it finds its basis) -present many strengths. - -Perhaps the most important is the high-level of independence from the \MTS/ -enjoyed by the system. -As a result, -since the \TMA/ does not interact directly with the \MTS/, -it can be made to be completely free from any \MTS/-specific attributes, -such as naming, addressing, and routing conventions. -Furthermore, -when interfacing a \trustedmail/ system, -no modifications need be made to the \MTS/ or local \MTA/. - -In addition to the systems-level advantage to this scheme, -users of the system profit as well, -since many disjoint \MTS/s can be employed by a user with a single \TMA/. -This reduces the number of weaknesses in the system and allows a user to keep -a single database of ``trusted'' correspondents. -It should also make analysis and verification of the \TMA/ easier. - -Of course from the user-viewpoint, -once the \TMA/ has been initially booted, -all key management is automatic. -Not only does this reduce the risk of compromise of cryptographic material -(given proper construction and maintenance of the \TMA/), -but it relieves the user of a tedious and error-prone task. - -Finally, -although the \KDS/ described herein is used to support \trustedmail/, -other applications which require key management, -could employ the services offered by the key distribution center. - -\subsection{Open Questions} -At present, there are many restrictions on the prototype implementation -described. -Some of these result from that fact that the implementation is a prototype -and not a production system. -Others deal with more fundamental issues. - -In terms of the \TMA/, -the expiration delay for keys is hard-wired in; -it should be user-settable. -In the prototype version, -the KK and KA with the \KDS/ are good for 2~days or 10~uses -(whichever comes first), -while a KK for use with another \TMA/ is good for 1~day or 5~uses. -In actual practice, -keys with long cryptoperiods might be good for 6~months or 100~uses, -while keys with short cryptoperiods might be good for 1~month or 25~uses. -The choice of actual values is an open question -beyond the scope of prototype system.% -\nfootnote{The current values were chosen by guess work. -Although not necessarily technically sound, -the small numbers were very good for debugging purposes.} -In many respects, this issue is a classic trade-off: -with relatively small cryptoperiods, -an adversary has less chance of breaking a key, -but with longer cryptoperiods less connections have to be made to the key -distribution server. - -A fundamental issue, -owing to differences between the EFT and CBMS environments, -is that the \KDS/ implements only a subset of the \ansi/ draft -and the semantics of certain operations have changed somewhat. -It would be nice to unify the CBMS and EFT views -of a {\it key distribution center} -(in the former environment, the center is called a \KDC/, -while in the latter environment, the center is known as a \CKD/). -Appendix~C of this paper discusses the differences between the two -perspectives in greater detail. - -At present, -the relationship between errors in the \TMA/ and the posting process is an -open question. -For example, -if an address doesn't have a mapping in the \TMA/ database, -\pgm{post} treats this as an address verification error. -This prevents the draft from being posted. -The philosophy of the \UA/ is unclear at this point, -with respect to how recovery should occur. -A second area, also in question, deals with the way in which plaintext and -ciphertext versions of a message are present in a system. -Clearly, it is a bad idea to make both versions available, -but since the \TMA/ doesn't try to concern itself with first party -observation, -there seems to be little possibility of preventing this behavior. -The best that can be done, -at this stage, -is simply to choose a consistent policy that user's should attempt to adhere -to. -The software can help somewhat in implementing this policy, -but it certainly can't circumvent the user. - -The prototype is built on the assumption that a single key -distribution server is present. -Since the \ansi/ draft\cite{FIKM} makes provisions for -{\it key translation centers}, -the \trustedmail/ prototype should perhaps be made to operate in a more diverse -environment. -Until the issues become clearer, -this remains open. - -Finally, -for distribution lists, -a large number of people would need to share the same \KDS/ ID. -The current implementation doesn't support this. -Each \TMA/ database is for a particular ID. -A user with multiple IDs would need multiple databases, -or the database should be re-organized. - -\subsection{Weaknesses} -As pointed out earlier, -this prototype system situates itself in a commercial, not military, -environment. -With respect to this decision, -several aspects of the system are now discussed, -which we feel are acceptable in a commercial environment, -but which would be considered weaknesses in a military environment: - -\item{1.} Traffic Flow\hbreak -The prototype \TMA/ makes no attempt whatsoever to prevent or confuse traffic -analysis by augmenting traffic flow. - -\item{2.} The Database of \KDS/ Subscribers\hbreak -Since information returned by the request user identification (RUI) -and request identified user (RIU) MCLs are returned in the clear, -this allows an adversary to ascertain subscribers to the \KDS/, -and perhaps deduce some information about the system. -Without knowledge of the master key however, -an adversary could not impersonate a subscriber though. -Still, in the military sense, this is a weakness. -However, -all this assumes that the database maintained by the \KDS/ accurately -reflects the real-world. - -\item{3.} Multiple Recipients\hbreak -It is possible, though not proven to the authors' knowledge, -that the scheme used to avoid encrypting the body of a message more than once -for multiple recipients might permit one of the recipients who is also an -adversary to compromise the key relationship between the sender and another -recipient. - -\item{} The scenario goes like this: -When a message is being prepared for encryption, -a single KD/IV/KA triple is generated to encrypt the body. -Since the sender has a different key relationship with each recipient, -each message sent is different, since the structure $m$ depends not only on -the KD/IV/KA triple but also on the key relation between the sender and a -particular recipient. -Now suppose that one of the recipients, $r_1$, -in addition to receiving the copy of the message meant for him/her also -intercepts a copy of the message destined for another recipient, $r_2$. -At this point, -the recipient $r_1$ has both the plaintext and ciphertext version of the body, -the plaintext version of the KD/IV/KA triple, -and the ciphertext version of the KD/IV/KA triple that was generated using -the key relationship between the sender and the recipient $r_2$. -The question is: -can $r_1$ now deduce the key relationship between the sender and $r_2$? - -\item{} If so, then the way that the \TMA/ attempts to minimize the use of -encryption resources is a weakness. -But, even if this is possible, -given relatively short cryptoperiods for key relationships between \TMA/ -peers, -this becomes a non-problem. - -\item{4.} Discussion Groups\hbreak -As discussed earlier, -the proposed method of associating a single \KDS/ ID with the membership of a -discussion group does introduce a significant weakness for the security of -messages sent to the discussion group. -Since the \TMA/ does not assume a general broadcast facility, -it appears that there are no good solutions to the problem of discussion -group traffic. -Of course, -it is easy enough to simply send to each member of the group. - -\item{} For the sake of argument, -let's assume that the discussion group has $n$ members. -Now, -since a different key relationship would exist between the sender and -each of the $n$ recipients, -the structure $m$ would be different for each recipient -and so a different message would have to be sent to each recipient. -To make matters worse, -if one rejects the way the \TMA/ handles multiple recipients, -not only does the \MTS/ get burdened with $n$ different messages, -but the sender's \TMA/ gets burdened by having to encrypt -the body of the message $n$ times. -For meaningful values of $n$ (say on the order of~500, or even~25), -the amount of resources required for any trusted discussion group are simply -too costly. - -\subsection{Compromises, Compromises} -Each of the possible weaknesses discussed above represent a compromise -between the expense of the system and the level of security it can provide. - -The first two areas, if addressed by the \TMA/, -could result in much less background information being available to an -adversary. -In an application where it is important that an adversary not know who is -talking to whom, -or who can talk at all, -this is very important. -It is the authors' position that in the commercial environment, -this issue is not paramount. -By ignoring the issue of traffic flow, -the \TMA/ has a lot less work to do and the \MTS/ is kept clear of -``useless'' messages. -By keeping the information returned by the RUI and RIU MCLs in the clear, -the complexity of the \TMA/ is significantly reduced. - -The second two areas, if addressed by the \TMA/, -could result in a lesser probability of traffic being deciphered by an -adversary. -Regardless of the application, -this is always extremely important. -However, -the authors' feel that the compromise made by the \TMA/ in these two issues -is not substantial, -and does not result in an explicit weakness when a message is sent to -multiple recipients -(note that when there is only a single recipient of a message, -these two policies can not introduce weaknesses). -In return, efficient use can be made of both the \MTS/ and the \TMA/ when -messages are being sent to multiple recipients. -Given scarce resources or large numbers of recipients, -this approach may prove to be quite winning. - -Of course, much work remains to be done to prove the success of the \TMA/ in -all four of these areas. - -\section{Acknowledgements} -The prototype implementation described herein utilizes a public domain -implementation of the DES algorithm\cite{DEA} -which was originally implemented by James J.~Gillogly in May, 1977 -(who at that time was with the Rand Corporation, -and is now affiliated with Gillogly Software). -Interfaces to Dr.~Gillogly's implementation were subsequently coded by -Richard W.~Outerbridge in September, 1984 -(who at that time was with the Computer Systems Research Institute -at the University of Toronto, -and is now affiliated with Perle Systems, Incorporated). - -The authors would like to acknowledge Dennis Branstad, -Elaine Barker, and David Balensen of the National Bureau of Standards -for their comments on the prototype system -and insights on the ANSI draft\cite{FIKM}. -In particular, Dr.~Branstad originally suggested the method used for -encrypting a single message for multiple recipients under different keys. - -The authors (and all those who have read this paper) would like to thank -Willis H.~Ware of the Rand Corporation, -and Jonathon B.~Postel of the USC/Information Sciences Institute. -Their extensive comments resulted in a much more readable paper. -In addition, -the authors would like to thank -Dr. Stephen P.~Smith and Major Douglas A.~Brothers -for their insightful comments. diff --git a/docs/historical/trusted/trusted.tex b/docs/historical/trusted/trusted.tex deleted file mode 100644 index d2e3ee23..00000000 --- a/docs/historical/trusted/trusted.tex +++ /dev/null @@ -1,98 +0,0 @@ -% run this through PhD-TeX - -\input dcustom -\articlestyle -\input version - -\def\appendix#1#2{\dosection{Appendix #1: #2}} - -\def\draftext{% - \begingroup - \eightpoint\sf - Reprinted from - {\it Proceedings, Second International Symposium on Computer Message - Systems}, - {\oldstyle 1985}% - \endgroup -} -\catcode`\@=11 -\def\draftstring{% - \ifnum\pageno>\z@ - \begingroup - \eightpoint\sf - Copyright $\copyright$ {\oldstyle 1985}, - IFIP TC-6 - \endgroup - \fi -} -\def\uci@footpage{\draftstring\hfil\rm\folio} -\catcode`\@=12 - -\input sfwmac -\def\CKD/{{\sf CKD}} -\def\CSM/{{\sf CSM}} -\def\KDC/{{\sf KDC}} -\def\KDS/{{\sf KDS}} -\def\MTA/{{\sf MTA}} -\def\MTS/{{\sf MTS}} -\def\TMA/{{\sf TMA}} -\def\TTI/{{\sl TTI\/}} -\def\UA/{{\sf UA}} - -\def\itemm$#1${\item{$#1\/$:}} - -\header - Design of the TTI Prototype\\ - Trusted Mail Agent\title - Marshall T.~Rose$^\dagger$\\ - David J.~Farber\\ - Stephen T.~Walker\author\info -\footnote{}{\hskip -\parindent -$^\dagger$ All three authors are with Trusted Technologies, Incorporated, -POB~45, Glenwood,~MD~21738, USA. -Telephone: 301/854--6889. -In addition, Professor Farber is with the University of Delaware.} - -\centerline{\sc Abstract} -{\rightskip=0pt\narrower\narrower -\noindent -The design of the \TTI/ prototype Trusted Mail Agent (\TMA/) is discussed. -This agent interfaces between two entities: -a key distribution center (\KDC/) and a user agent (\UA/). -The \KDC/ manages keys for the encryption of text messages, -which two subscribers to a key distribution service (\KDS/) may exchange. -The \TMA/ is independent of any underlying message transport system. - -\lp -Subscribers to the \KDC/ are known by unique identifiers, -known as IDs. -In addition to distributing keys, -the \KDC/ also offers a simple directory lookup service, -in which the ``real-world'' name of a subscriber may be mapped to an ID, -or the inverse mapping may be performed. - -\lp -This document details three software components: -\underbar{first}, -a prototype key distribution service, -which has been running in a TCP/IP environment since December, 1984; -\underbar{second}, -a prototype trusted mail agent; -and, -\underbar{third}, -modifications to an existing \UA/, -the Rand \MH/ Message Handling system, -which permit interaction with the prototype \TMA/. -\par} - -\input text -\input refs -\input appendixA -\input appendixB -\input appendixC -\printcontents -\unskip\footnote{}{\hskip -\parskip This document (version \versiontag/) -was \TeX set \today\ with DISS.STY v\version.} -\showsummary - -\bye diff --git a/docs/historical/trusted/version b/docs/historical/trusted/version deleted file mode 100644 index abdfb053..00000000 --- a/docs/historical/trusted/version +++ /dev/null @@ -1 +0,0 @@ -60 diff --git a/docs/historical/trusted/version.sh b/docs/historical/trusted/version.sh deleted file mode 100644 index 9ec1e792..00000000 --- a/docs/historical/trusted/version.sh +++ /dev/null @@ -1,9 +0,0 @@ -if [ ! -r version ]; then echo 0 > version; fi -touch version -echo '\catcode`\#=12' > version.tex -awk ' { version = $1 + 1; }\ -END { printf "\\def\\versiontag/{#1.%d}%%\n", version >> "version.tex"; \ - printf "%d\n", version > "version"; }' < version -echo '\def\versiondate/{'`date`'}%' >> version.tex -echo '\catcode`\#=6' >> version.tex -echo '\tell{Version \versiontag/ of \versiondate/}' >> version.tex diff --git a/docs/historical/trusted/version.tex b/docs/historical/trusted/version.tex deleted file mode 100644 index a4eb0f92..00000000 --- a/docs/historical/trusted/version.tex +++ /dev/null @@ -1,5 +0,0 @@ -\catcode`\#=12 -\def\versiontag/{#2.60}% -\def\versiondate/{Thu Aug 8 14:53:26 PDT 1985}% -\catcode`\#=6 -\tell{Version \versiontag/ of \versiondate/} diff --git a/docs/historical/tutorial/Makefile b/docs/historical/tutorial/Makefile deleted file mode 100644 index 10998383..00000000 --- a/docs/historical/tutorial/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -####################################################################### -# Instructions to Make, for generation of nice-looking papers using TeX -####################################################################### - -.SUFFIXES: .pic .web .tex .dvi .imp - -.pic.tex:; tpic $< - -.web.tex:; sh -c 'if weave $<; then exit 0; else rm $@; exit 1; fi' - -.tex.dvi:; sh -c 'if TEXINPUTS=../doclib:.:${TEXINPUTS} tex \ - \\nonstopmode\\input $<\\bye; \ - then exit 0; else rm $@; exit 1; fi' - -.dvi.imp:; dviimp $(DFLAGS) -i $@ $< - - -############################################################# -# Here it is... -############################################################# - -all: i-all -print: i-print - - -############################################################# -# tutorial -############################################################# - -i-all: tutorial.dvi - -i-print: tutorial.dvi true - dvisp -J Tutorial tutorial.dvi - - -# customization files, et. al., not included below -tutorial.dvi: version.tex - -version.tex: tutorial.tex text.tex refs.tex version.sh - @: version.sh - -true:; - - - - -############################################################################## -# Miscellaneous tasks -############################################################################## - -distribution: clean - rm -f tutorial.dvi tutorial.imp - -clean:; rm -f tutorial.lof tutorial.log tutorial.lot tutorial.toc _* diff --git a/docs/historical/tutorial/refs.tex b/docs/historical/tutorial/refs.tex deleted file mode 100644 index f50b7241..00000000 --- a/docs/historical/tutorial/refs.tex +++ /dev/null @@ -1,46 +0,0 @@ -\let\journalinfo=\jourinfo -\let\thesis=\book % experimental -\let\thesisinfo=\bookinfo % .. - -\references - -\ref{MRose84} -\by M.T.~Rose. -\paper The Rand \MH/ Message Handling System: The UCI BBoards Facility -\other -\publ Department of Computer and Information Sciences -\publaddr University of Delaware -\month October\year 1984 -\endref - -\ref{MRose85a} -\by M.T.~Rose, J.L.~Romine. -\paper The Rand \MH/ Message Handling System: User's Manual -\paperinfo UCI Version -\other -\publ Department of Information and Computer Science -\publaddr University of California, Irvine -\month January\year 1985 -\endref - -\ref{MRose85b} -\by M.T.~Rose. -\paper The Rand \MH/ Message Handling System: Administrator's Guide -\paperinfo UCI Version, MH Classic -\other -\publ Northrop Corporation -\publaddr Research and Technology Center -\month July\year 1985 -\endref - -\ref{SPayn85} -\by S.~Payne -\paper MH5: Electronic Mail -\paperinfo Rand Note \#N-2281-RCC -\other -\publ The Rand Computation Center -\publaddr Rand, 1700 Main St., Santa Monica, CA 90406-2138 -\month May\year 1985 -\endref - -\endreferences diff --git a/docs/historical/tutorial/text.tex b/docs/historical/tutorial/text.tex deleted file mode 100644 index 471aaa21..00000000 --- a/docs/historical/tutorial/text.tex +++ /dev/null @@ -1,803 +0,0 @@ -% begin text - -\banner - - \section{Acknowledgements} -The \MH/ system described herein is based on the original Rand \MH/ system. -It has been extensively developed (perhaps too much so) by Marshall Rose and -John Romine at the University of California, Irvine. -Einar Stefferud, Jerry Sweet, and Terry Domae provided numerous suggestions -to improve the UCI version of \MH/. - -Parts of this document are taken from a Rand tutorial \cite{SPayn85} by -Sue Payne. - - \section{Disclaimer} -The Regents of the University of California issue the following -disclaimer concerning the UCI version of MH: -\bigquote -Although each program has been tested by its contributor, -no warranty, express or implied, -is made by the contributor or the University of California, -as to the accuracy and functioning of the program -and related program material, -nor shall the fact of distribution constitute any such warranty, -and no responsibility is assumed by the contributor -or the University of California in connection herewith. -\endbigquote - - \section{Scope} -This document assumes that you have no knowledge of \MH/. -However, to use \MH/ you should have some familiarity with the \unix/ -operating system, -particularly with the way commands are given, -how files are named, -the jargon (e.g. {\it shell}, {\it argument}, {\it home directory}, -{\it pathname\/}), -and how to use a text editor (such as \pgm{ex}, \pgm{vi}, or \pgm{emacs\/}). - -This tutorial covers only basic material. -For additional information about \MH/, -consult the {\it User's Manual} \cite{MRose85a}. -Other documents of possible interest to you include -{\it The UCI BBoards Facility} \cite{MRose84} -and -the {\it MH Administrator's Guide} \cite{MRose85b}. - - \section{How To Use This Tutorial} -Different typefaces and symbols are used in this document to denote the -kinds of things you (the user) must type on your keyboard. -\smallskip -{\advance\leftskip by\parindent -\item{1.} The names of programs are given in {\it text italics}: -\smallskip\hskip 1in \pgm{comp}\smallskip -\item{2.} Arguments to programs are given in {\tt typewriter style}, -delimited by single-quotes: -\smallskip\hskip 1in \arg{msgs}\smallskip -\item{3.} \unix/ pathnames are given in {\sl slanted roman}: -\smallskip\hskip 1in \file{/usr/uci/}\smallskip -\item{4.} Text giving a full example is presented in {\tt typewriter style}: -\example comp\ -editor\ vi\endexample -The ``\hbox{\tt\char`\ }'' glyph % (visible space glyph) -is used to indicate an explicit space (the kind you make with the -space bar on your keyboard). -\smallskip} - - \section{Introduction} -With \MH/ you can send messages to other people on your system -and read messages that other people send to you. -Depending on how things have been set up on your system, -it may be possible for you to send messages to people on remote systems. -You can also reply to messages that you have received, -review them, -organize them in {\it folders}, -and delete them. - -\MH/ differs from other mail programs in that it is composed of many -small programs instead of just one very large program. -Among new users this sometimes causes some confusion -along the lines of ``what program do I run?'' -With \MH/, you use the shell to invoke one program at a time. -This means that when you handle mail, -the entire power of the shell is at your disposal -in addition to the facilities that \MH/ provides. -In the beginning, this may not make much sense or may not seem important. -However, we have found that as new users of \MH/ gain experience, -they find this style of interface to be very useful. - - \section{Summary} -The most minimal list of \MH/ commands that you can get by with is: -\smallskip -{\advance\leftskip by\parindent -\item{\pgm{inc}} - incorporate mail (get new mail) -\item{\pgm{show}} - show the first message -\item{\pgm{next}} - show the next message -\item{\pgm{prev}} - show the previous message -\item{\pgm{comp}} - compose a new message to send -\item{\pgm{repl}} - reply to a received message -\smallskip} -\pgm{Comp} and \pgm{repl} give enough prompting possibly to get you along. -However, it is suggested that you take the time to peruse this -tutorial before leaping into things. - - \section{Messages and Folders} -A message takes the form of a memorandum, -and is composed of two major parts: -a {\it header}, -which contains such information as -\eg{To} and \eg{From} addresses, \eg{Subject}, \eg{Date}, etc.; -and the {\it body}, -which is the actual text of the message. -Each {\it component} in the header starts with a keyword followed by -a colon and additional information. -For example, in the message: -\example - Date: 10 Oct 84 17:41:14 EDT (Wed)\\ - To: News@udel-dewey\\ - Subject: UCI Software Talk\\ - From: UCI Portal (agent: Marshall Rose) \\\\ - This is the text. -\endexample -there are four header items, and one line of text in the body. -Note that a blank line separates the body from the headers. - -\MH/ stores a message as an ordinary file in a \unix/ directory. -This directory is called a {\it folder}. -If you choose to keep and organize your messages, -you may create as many folders as you wish. -There is no limit as to the number of messages in a folder. -Typically messages are numbered from~1 up. -All of your personal folders, -along with some other information that \MH/ needs to know, -are kept in a special directory called \file{Mail} under your home directory. -Normally, \MH/ manages these files and directories automatically, -so you needn't muck around with them directly unless you really want to. - -You won't have any folders until somebody sends mail to you, as a rule. -If you are anxious to try out \MH/, but no one has sent you mail yet, -try sending mail to yourself to start out with. - - \section{Reading New Mail} -When you are notified that you have mail (usually when you log in), -perhaps with the message -\example You have mail.\endexample -then you know that messages are waiting in your {\it maildrop}. -To read these messages, you first have to {\it incorporate} the mail -into your ``in-box'' by typing the command: -\example inc\endexample -This incorporates the new mail from your mail drop to your in-box, -which is a folder named (naturally enough) \arg{+inbox}. -As \pgm{inc} incorporates your new mail, -it generates a {\it scan listing} of the mail: -$$\vbox{\tenpoint\tx\halign{\hfil#&#\hfil&& \quad#\hfil\cr -\noalign{\noindent Incorporating new mail into inbox...\medskip} -2&+& 10/10& WESTINE\%USC-ISIF& RFC 916 Now Available& - < version; fi -touch version -echo '\catcode`\#=12' > version.tex -awk ' { version = $1 + 1; }\ -END { printf "\\def\\versiontag/{#2.%d}%%\n", version >> "version.tex"; \ - printf "%d\n", version > "version"; }' < version -echo '\def\versiondate/{'`date`'}%' >> version.tex -echo '\catcode`\#=6' >> version.tex -echo '\tell{Version \versiontag/ of \versiondate/}' >> version.tex diff --git a/docs/historical/tutorial/version.tex b/docs/historical/tutorial/version.tex deleted file mode 100644 index 48c2f0c6..00000000 --- a/docs/historical/tutorial/version.tex +++ /dev/null @@ -1,5 +0,0 @@ -\catcode`\#=12 -\def\versiontag/{#2.8}% -\def\versiondate/{Wed May 21 21:04:08 PDT 1986}% -\catcode`\#=6 -\tell{Version \versiontag/ of \versiondate/}