Annotation of 43BSD/contrib/mh/papers/mh5/text.tex, revision 1.1.1.1

1.1       root        1: % begin text
                      2: \banner
                      3: \section{Acknowledgements}
                      4: The \MH/ system described herein is based on the original Rand \MH/ system.
                      5: It has been extensively developed (perhaps too much so) by Marshall Rose and
                      6: John Romine at the University of California, Irvine.
                      7: Einar Stefferud, Jerry Sweet, and Terry Domae provided numerous suggestions
                      8: to improve the UCI version of \MH/.
                      9: 
                     10: \section{Disclaimer}
                     11: The Regents of the University of California wish to make it known that:
                     12: \bigquote
                     13: Although each program has been tested by its contributor,
                     14: no warranty, express or implied,
                     15: is made by the contributor or the University of California,
                     16: as to the accuracy and functioning of the program
                     17: and related program material,
                     18: nor shall the fact of distribution constitute any such warranty,
                     19: and no responsibility is assumed by the contributor
                     20: or the University of California in connection herewith.
                     21: \endbigquote
                     22: 
                     23: \section{Conventions}
                     24: In this document,
                     25: certain \TeX -formatting conventions are adhered to:
                     26: \smallskip
                     27: {\advance\leftskip by\parindent
                     28: \item{1.} The names of \unix/ commands, such as \pgm{comp},
                     29: are presented in {\it text italics}.
                     30: \item{2.} Arguments to programs, such as \arg{msgs},
                     31: are presented in {\tt typewriter style} and delimited by single-quotes.
                     32: \item{3.} \unix/ pathnames and envariables,
                     33: such as \file{/usr/uci/} and \file{\$SIGNATURE},
                     34: are presented in {\sl slanted roman}.
                     35: \item{4.} Text presenting an example, such as
                     36: \example comp\ -editor\ zz\endexample
                     37: is presented in {\tt typewriter style}.
                     38: \smallskip}
                     39: 
                     40: \bop\section{General Changes}
                     41: The author is pleased to announce that there are actually very few
                     42: user-visible changes to \mh5 from the \mh4 distribution.
                     43: The majority of \mh5 development was in the form of bug fixes and slight
                     44: generalizations.
                     45: In addition, \mh5 is somewhat faster than \mh4:
                     46: all programs have been speeded-up slightly,
                     47: a few, such as \pgm{msh}, have been speeded-up signficantly.
                     48: 
                     49: \subsection{Library Paths}
                     50: When a filter or form file argument is given to an \MH/ program,
                     51: and the name specified is not absolute (doesn't start with a \file{/\/}),
                     52: then the \MH/ program will first check in the user's \MH/ directory.
                     53: If the file is not present,
                     54: then program will consult the standard \MH/ library for the file.
                     55: This convention allows the PostMaster to make available system-wide
                     56: templates and skeletons.
                     57: 
                     58: \subsection{MH Directory}
                     59: If the \MH/ directory of a user doesn't exist,
                     60: then \MH/ will query the user if it should be created.
                     61: This is primarily useful when copying a \profile/ from one host to another,
                     62: or when the site administrator creates a \profile/ for a user when creating
                     63: the associated login.
                     64: 
                     65: \subsection{Documentation}
                     66: Two new documents have been prepared for the \mh5 distribution:
                     67: {\sl The Rand MH Message Handling System: Tutorial},
                     68: which is cited as \cite{MH.TUT};
                     69: and,
                     70: {\sl The Rand MH Message Handling System: The UCI BBoards Facility},
                     71: which is cited as \cite{MH.BB}.
                     72: The former is a useful tutorial for novice users of \MH/.
                     73: The latter describes BBoard handling and \MH/.
                     74: 
                     75: \section{Draft Handling}
                     76: This section discusses how the handling of drafts has been changed in \mh5.
                     77: 
                     78: The most important change is that the {\it draft-folder} notation
                     79: and the {\it push} option at \whatnow/ level have been explicitly made
                     80: visible in the \MH/ system.
                     81: There's a new profile entry called \eg{Draft-Folder} which defines the
                     82: default draft-folder for the \MH/ user.
                     83: By using this entry, such as \example Draft-Folder:\ +drafts\endexample
                     84: the \MH/ user needn't add \switch{draftfolder\ drafts} to the entries
                     85: for \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} in the user's
                     86: \profile/ file.
                     87: 
                     88: \subsection{What Happens if the Draft Exists}
                     89: A new option has been added to \pgm{comp}, \pgm{dist}, \pgm{forw}, and
                     90: \pgm{repl} when the draft already exists: \eg{refile\ +folder}.
                     91: This allows you to \pgm{refile} the draft into another folder and then get a
                     92: fresh draft.
                     93: 
                     94: \subsection{Editing Environment}
                     95: In previous versions of \MH/,
                     96: when \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} allowed the user to
                     97: edit the draft,
                     98: the \MH/ user's current working directory was somewhere inside of the user's
                     99: \MH/ directory.
                    100: This often lead to confusing results.
                    101: In \mh5,
                    102: when the user edits a draft,
                    103: the current working directory is unchanged.
                    104: Furthermore, two envariables are defined during the editing session for
                    105: \pgm{dist} and \pgm{forw}:
                    106: \file{\$editalt},
                    107: which is the name of the message (\unix/ file) being distributed or replied-to;
                    108: and,
                    109: \file{\$mhfolder},
                    110: which is the name of the folder (\unix/ directory) containing the message
                    111: being distributed or replied-to.
                    112: 
                    113: \subsection{Rapid Composition}
                    114: The \pgm{prompter} command has two new switches \switch{rapid} and
                    115: \switch{norapid}.
                    116: If the \switch{rapid} option is given then \pgm{repl} won't display an
                    117: existing body of the draft being edited.
                    118: This is useful for using \pgm{forw} with a slow terminal.
                    119: 
                    120: \subsection{Ultra Rapid Composition}
                    121: The \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} commands have a new
                    122: option, \switch{noedit}.
                    123: If \switch{noedit} is given,
                    124: then the initial edit is supressed.
                    125: This is useful for various canned applications
                    126: (and perhaps more graceful than \switch{-editor /bin/true\/}).
                    127: 
                    128: \subsection{Digest Generation}
                    129: The \pgm{forw} command has the beginnings of a digest-composition facility,
                    130: with the \switch{digest\ list}, \switch{issue\ number},
                    131: and \switch{volume\ number} switches.
                    132: 
                    133: If \pgm{forw} is given the argument \eg{list} to the \switch{digest} switch,
                    134: and the \switch{issue\ number} switch is not given,
                    135: then \pgm{forw} looks for a profile entry called
                    136: \eg{digest-issue-list:} and increments its value to use as the issue
                    137: number.
                    138: Similarly,
                    139: if the \switch{volume\ number} switch is not given,
                    140: then \pgm{forw} looks for \eg{digest-volume-list:}
                    141: (but does not increment its value) to use as the volume number.
                    142: 
                    143: Having calculated the name of the digest and the volume and issue numbers,
                    144: \pgm{forw} will look for a profile entry called \eg{sedproc:}
                    145: (which defaults to \pgm{/bin/sed\/})and filter the components file
                    146: (as specified with the \switch{form\ formfile} switch)
                    147: with the following definitions:
                    148: \eg{@(digest)}, \eg{@(issue)}, \eg{@(volume)}, and \eg{@(date)}.
                    149: 
                    150: \tagdiagram{1}{Sample skeleton for digest composition}{digestcomps}
                    151: A good components file to use, (which might be called \file{digestcomps\/}) is
                    152: shown in Figure~\digestcomps.
                    153: 
                    154: \pgm{Forw} will now compose the draft,
                    155: using the standard digest encapsulation algorithm
                    156: (even putting a \eg{End of list Digest} trailer in the draft).
                    157: Once the draft is composed by \pgm{forw},
                    158: it writes out the volume and issue profile entries for the digest,
                    159: and then invokes the editor.
                    160: 
                    161: \tagdiagram{2}{Sample template for digest messages}{mhldigest}
                    162: Naturally, when composing the draft,
                    163: the \pgm{forw} program will honor the\hbreak
                    164: \switch{filter\ filterfile} switch,
                    165: which is given to \pgm{mhl} to filter each message being forwarded prior to
                    166: encapsulation in the draft.
                    167: A good filter file to use, (which might be called \file{mhl.digest\/})
                    168: is shown in Figure~\mhldigest.
                    169: 
                    170: \subsection{Replies}
                    171: The \pgm{repl} command has two new switches \switch{query} and
                    172: \switch{noquery}.
                    173: If the \switch{query} option is given then for each address that would go in
                    174: the \eg{cc:} field of the reply,
                    175: \pgm{repl} asks the user if the address should be included.
                    176: This is sometimes useful for replying to mail sent to a large number of people.
                    177: (Obviously, one could simply edit the draft produced by \pgm{repl},
                    178: but the \switch{query} option is useful if \pgm{prompter} is the editor used
                    179: by \pgm{repl} and one doesn't want to invoke a second editor.)
                    180: 
                    181: Previous versions of \pgm{repl} would terminate if a \eg{From:} or
                    182: \eg{Sender:} field was not found or could not be parsed.
                    183: The \pgm{repl} program in \mh5 will continue to compose the reply draft,
                    184: after advising you of this anomaly.
                    185: 
                    186: \subsection{Blind Carbon Copies}
                    187: After much experimentation, \MH/ has finally stabilized on the format of
                    188: blind-carbon-copies.
                    189: As in \mh4, when \pgm{post} generates a draft for blind recipients,
                    190: a new draft is composed with a minimal set of headers.
                    191: In \mh5 however, the \eg{BCC-Disclaimer:} field is no longer used.
                    192: Instead, the draft for the blind recipients contains the original message as a
                    193: forwarded message.
                    194: This more clearly identifies a blind-carbon-copy to the blind recipient.
                    195: 
                    196: \subsection{File Carbon Copies}
                    197: A message draft can now have more than one folder listed in a \eg{Fcc:} field.
                    198: Each folder should be separated by a comma, just like the addresses in a
                    199: \eg{cc:} field.
                    200: In addition, the folders listed in a \eg{Fcc:} field may use the
                    201: relative-folder addressing notation
                    202: (though this latter activity is not recommended).
                    203: 
                    204: \subsection{Refiling the Draft}
                    205: At \whatnow/ level, there is a new option, \eg{refile}.
                    206: This options takes any arguments acceptable to the \pgm{refile} program,
                    207: and \pgm{refile\/}'s the message draft into the named folder(s).
                    208: 
                    209: \subsection{Annotations}
                    210: If the \switch{annotate} switch is given to \pgm{dist}, \pgm{forw}, or
                    211: \pgm{repl}, and the message is (re)moved by the user prior to the successful
                    212: posting of the draft, the \MH/ program will not complain as before.
                    213: Hence, users of the \eg{push} option at \whatnow/ level need not worry about
                    214: asynchronous error messages.
                    215: 
                    216: \section{Other Changes}
                    217: This last section describes the other more program-specific changes made to
                    218: \MH/.
                    219: 
                    220: \subsection{Bursting}
                    221: The bursting mechanism in \MH/ has been made sufficiently general to allow
                    222: \pgm{burst} to work on forwarded messages and blind-carbon-copies in addition
                    223: to digests.
                    224: Although \pgm{burst} can not always successfully decapsulate messages
                    225: encapsulated by sites not running \MH/,
                    226: it handles forwarded messages and blind-carbon-copies,
                    227: as constructed by \pgm{forw} and \pgm{send}, easily.
                    228: 
                    229: In addition, the \pgm{send} program has two new switches,
                    230: \switch{forward}, and \switch{noforward}.
                    231: If the \switch{forward} option is given,
                    232: then if a \pgm{send} which has been \pgm{push\/}'d in the background fails,
                    233: in addition to containing the reasons for the failure,
                    234: the failure notice contains the draft as a forwarded message.
                    235: This means one can simply \pgm{burst} the failure notice to get the draft
                    236: back,
                    237: instead of hunting around for it.
                    238: 
                    239: \subsection{Incorporation of Mail}
                    240: There's a new profile entry called \eg{MailDrop} which can be used to define
                    241: the default maildrop that \pgm{inc} should use.
                    242: In addition, if the envariable \file{\$MAILDROP} is defined,
                    243: then \pgm{inc} will use its value as the default maildrop.
                    244: 
                    245: The \pgm{inc} program also has a new option:
                    246: \switch{truncate} and \switch{notruncate},
                    247: which indicates if the maildrop should be truncated.
                    248: By default, \switch{truncate} is used defualt maildrop is used,
                    249: otherwise \switch{notruncate} is used.
                    250: 
                    251: \subsection{Clearing the Display}
                    252: The \switch{ff} and \switch{noff} switches have been removed from the
                    253: \pgm{scan} and \pgm{mhl} programs.
                    254: Instead, the \pgm{scan} has been given two switches,
                    255: \switch{clear} and \switch{noclear}
                    256: (\pgm{mhl} already has these switches).
                    257: The action of the \switch{clear} option is simple:
                    258: if the standard output to the \MH/ program is a terminal,
                    259: then the program will output the correct ``escape sequence'' to clear the
                    260: terminal's screen;
                    261: if the standard output is not a terminal,
                    262: then the program will output a formfeed.
                    263: 
                    264: In addition,
                    265: both \pgm{scan} and \pgm{mhl} consult the \file{\$TERM} envariable to
                    266: determine such things as the length and width of your terminal.
                    267: The \pgm{scan} program uses this to determine how long each line of the scan
                    268: listing should be.
                    269: The \pgm{mhl} program uses this to determine the default length and width
                    270: of your terminal (instead of the $40$ by $80\/$),
                    271: prior to reading the template or consulting command line options.
                    272: 
                    273: \subsection{Folder Handling}
                    274: If the \pgm{folder} command is given the name of a folder that does not exist,
                    275: \pgm{folder} will query the user if the folder should be created.
                    276: This is useful for creating a folder that the \MH/ user intends to access
                    277: later.
                    278: 
                    279: In previous releases of \MH/,
                    280: the \pgm{rmf} program would consider a folder writable if it was writable by
                    281: the user.
                    282: Since \pgm{rmf} ultimately removes the folder itself,
                    283: \pgm{rmf} considers a folder writable if the folder and its parent are
                    284: writable by the user.
                    285: If not, the folder is treated as a read-only folder by \pgm{rmf}.
                    286: 
                    287: \subsection{MailDrops}
                    288: The name of the \pgm{pack} program has been changed to \pgm{packf}.
                    289: The author didn't want to do this.
                    290: Some people don't know when to leave well enough alone.
                    291: 
                    292: \subsection{Refiling}
                    293: The \pgm{refile} program now has a \switch{draft} switch saying to file the
                    294: current draft.
                    295: 
                    296: \subsection{RcvMail Support}
                    297: In addition to the standard \pgm{rcvpack} and \pgm{rcvtty} receive mail hooks,
                    298: and the \pgm{rcvtrip} shell script,
                    299: there's a new rcvmail hook called \pgm{rcvdist}.
                    300: The \pgm{rcvdist} hook allows a user of \MH/ to have his/her mail forwarded
                    301: without the intervention of the PostMaster.
                    302: (By the way, the \pgm{rcvpack} hook used to be called \pgm{rcvcron\/}.)
                    303: 
                    304: \subsection{Reading BBoards}
                    305: The \pgm{msh} program (which used to be called \pgm{bbr\/})
                    306: implements an \MH/ shell.
                    307: In addition to the commands that the old \pgm{bbr} program had,
                    308: \pgm{msh} also has the
                    309: \pgm{inc}, \pgm{mhmail}, \pgm{pack}, \pgm{rmm} and \pgm{sortm} commands.
                    310: 
                    311: In addition, \pgm{msh} uses a ``maildrop mapping'' mechanism to
                    312: significantly speed-up its start-up time compared to the old \pgm{bbr}.
                    313: The \pgm{pack} program supports this mechanism as well,
                    314: so \pgm{msh} starts quickly on ordinary \pgm{pack\/}'d files as well.
                    315: 
                    316: Finally, \pgm{mhl} is now built-in to \pgm{msh},
                    317: so with a \eg{showproc} of \pgm{mhl},
                    318: the \pgm{msh} user gets speedy response in listing messages.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.