Annotation of 43BSDReno/contrib/mh/conf/doc/MH.rf, revision 1.1.1.1

1.1       root        1: .\"    @(MHWARNING)
                      2: .po +.75i
                      3: .de $c                          \" Major Heading printer
                      4: .ce
                      5: .b "\\s12\\n+(ch.\\ \\$1\\s0"   \" 12 Point Bold Header
                      6: .(x
                      7: 
                      8: \ \ \ \\n(ch.\\ \\ \\$1
                      9: .)x
                     10: .sp 45p         \" 45 point space or about 1/2 inch
                     11: ..
                     12: \".nr xs .15v     \" Put index entries closer together
                     13: .(x
                     14: 
                     15: Section
                     16: .)x _
                     17: .de $0          \" Sub-Heading macro called AFTER printing the heading
                     18: .(x
                     19: .sp .3v
                     20: .ti .5i
                     21: \\$1
                     22: .)x
                     23: ..
                     24: .de $s          \" Macro to print footnote separator
                     25: \"\l'2i'        \" No line drawn
                     26: .if n \
                     27: .       sp 1.3  \" But extra space to make up for it.
                     28: ..
                     29: .fc ^ ~         \" The characters ^ and ~ CANNOT BE USED
                     30: \"                 throughout this document except as field
                     31: \"                 delimiter & pad indicator!
                     32: .he ''-%-''
                     33: .ll 32P         \" 32 Picas or about 5+1/3 inch Line Length
                     34: .if n .ll 72m   \" Use 72 ems for nroff
                     35: .nr ss 30p      \" 30 point space before section titles
                     36: .nr fm 5v       \" Rand likes bigger than normal [3v] bottom margins
                     37: .nr bm 7v       \"   ditto
                     38: .ds . \\fB.\\fP\\h'-(1m/3)' \" Bold period to stand out.
                     39: .ds << <\\h!-(\\w'<'/2)!<
                     40: .ds >> >\\h!-(\\w'>'/2)!>
                     41: .ds ** \v'-3p'\s+1*\s0\v'+3p'
                     42: .so version.rf
                     43: .tp
                     44: .(l C
                     45: \fIdiscard this page\fR
                     46: .sp 4
                     47: The Rand \fIMH\fR
                     48: Message Handling System:
                     49: User's Manual
                     50: .sp
                     51: UCI Version
                     52: .sp 2
                     53: \*(td
                     54: \*(MH
                     55: .)l
                     56: .++ C
                     57: .+c INTRODUCTION
                     58: .pp
                     59: Although people can travel cross-country in hours and can
                     60: reach others by telephone in seconds, communications still depend
                     61: heavily upon paper, most of which is distributed through the mails.
                     62: .pp
                     63: There are several major reasons for this continued dependence on
                     64: written documents.
                     65: First, a written document may be proofread
                     66: and corrected prior to its distribution, giving the author
                     67: complete control over his words.
                     68: Thus, a written document is
                     69: better than a telephone conversation in this respect.
                     70: Second,
                     71: a carefully written document is far less likely to be
                     72: misinterpreted or poorly translated than a phone conversation.
                     73: Third, a signature offers reasonable verification of authorship,
                     74: which cannot be provided with media such as telegrams.
                     75: .pp
                     76: However, the need for
                     77: .u fast ,
                     78: accurate, and reproducible document distribution is
                     79: obvious.
                     80: One solution in widespread use is the telefax.
                     81: Another
                     82: that is rapidly gaining popularity is electronic mail.
                     83: Electronic mail is similar to telefax in that the data to be sent
                     84: are digitized, transmitted via phone lines, and
                     85: turned back into a document at the receiver.
                     86: The advantage of
                     87: electronic mail is in its compression factor.
                     88: Whereas a telefax
                     89: must scan a page in very fine lines and send all of the black and
                     90: white information, electronic mail assigns characters fixed
                     91: codes which can be transmitted as a few bits of information.
                     92: Telefax presently has the advantage of being able to transmit an
                     93: arbitrary page, including pictures, but electronic mail is
                     94: beginning to deal with this problem.
                     95: Electronic mail also integrates well
                     96: with current directions in office automation, allowing documents
                     97: prepared with sophisticated equipment at one site to be quickly
                     98: transferred and printed at another site.
                     99: .pp
                    100: Currently, most electronic mail is intraorganizational,
                    101: with mail transfer remaining within one computer.
                    102: As computer
                    103: networking becomes more common, however, it is becoming more feasible to
                    104: communicate with anyone whose computer can be linked to your
                    105: own via a network.
                    106: .pp
                    107: The pioneering efforts on general-purpose electronic mail
                    108: were by organizations using the DoD ARPAnet[1].
                    109: The capability to send messages between computers existed before
                    110: the ARPAnet was developed, but it was used only in limited ways.
                    111: With the advent of the
                    112: ARPAnet, tools began to be developed which made it convenient for
                    113: individuals or organizations to distribute messages
                    114: over broad geographic areas, using
                    115: diverse computer facilities.
                    116: The interest and activity in
                    117: message systems has now reached such proportions that steps
                    118: have been taken within the DoD to coordinate and
                    119: unify the development of military message systems.
                    120: The use of electronic mail is expected to increase
                    121: dramatically in the next few years.
                    122: The utility of such systems
                    123: in the command and control and intelligence environments is
                    124: clear, and applications in these areas will probably lead the
                    125: way.
                    126: As the costs for sending and handling electronic messages
                    127: continue their rapid decrease, such uses can be
                    128: expected to spread rapidly into other areas and, of course, will
                    129: not be limited to the DoD.
                    130: .pp
                    131: A message system provides tools that help users (individuals
                    132: or organizations) deal with messages in various ways.
                    133: Messages
                    134: must be composed, sent, received, stored, retrieved,
                    135: forwarded, and replied to.
                    136: Today's best interactive computer
                    137: systems provide a variety of word-processing and information
                    138: handling capabilities.
                    139: The message handling facilities should be
                    140: well integrated with the rest of the system, so as to be a
                    141: graceful extension of overall system capability.
                    142: .pp
                    143: The message system described in this report, \fIMH\fR, provides most of the
                    144: features that can be found in other message systems and also
                    145: incorporates some new ones.
                    146: It has been built on the UNIX time-sharing
                    147: system[2], a popular operating system for the DEC PDP-11\**
                    148: and VAX-11 classes of computers.
                    149: .(f
                    150: \** PDP and VAX are trademarks of Digital Equipment Corporation.
                    151: .)f
                    152: A \*(lqsecure\*(rq operating
                    153: system similar to UNIX is currently being developed[3],
                    154: and that system will also run \fIMH\fR.
                    155: .pp
                    156: This report provides a complete description of \fIMH\fR and
                    157: thus may serve as a user's manual, although parts of the report
                    158: will be of interest to non-users as well.
                    159: Sections 2 and 3, the
                    160: Overview and Tutorial, present the key
                    161: ideas of \fIMH\fR and will give those not familiar with message systems
                    162: an idea of what such systems are like.
                    163: .pp
                    164: \fIMH\fR consists of a set of commands which use some special
                    165: files and conventions.
                    166: The final section is divided into three parts.
                    167: The first part covers the information
                    168: a user needs to know in addition to the
                    169: commands.
                    170: Then, each of the \fIMH\fR commands is described in detail.
                    171: Finally, other obscure details are revealed.
                    172: A summary of the commands is given in Appendix A,
                    173: and the syntax of message sequences is given in Appendix B.
                    174: .pp
                    175: A novel approach has been taken in the design of \fIMH\fR.
                    176: Instead of creating a large subsystem that appears as a single
                    177: command to the user (such as MS[4]),
                    178: \fIMH\fR is a collection of separate commands
                    179: which are run as separate programs.
                    180: The file and directory
                    181: system of UNIX are used directly.
                    182: Messages are stored as
                    183: individual files (datasets), and collections of them are grouped
                    184: into directories.
                    185: In contrast, most other message systems store
                    186: messages in a complicated data structure within a monolithic
                    187: file.
                    188: With the \fIMH\fR approach, UNIX commands can be
                    189: interleaved with commands invoking the functions of the message
                    190: handler.
                    191: Conversely, existing UNIX commands
                    192: can be used in connection with messages.
                    193: For
                    194: example, all the usual UNIX editing, text-formatting, and printing
                    195: facilities can be applied directly to individual messages.
                    196: MH,
                    197: therefore, consists of a relatively small amount of new code; it
                    198: makes extensive use of other UNIX software to provide the
                    199: capabilities found in other message systems.
                    200: .+c OVERVIEW
                    201: .pp
                    202: There are three main aspects of \fIMH\fR\0:  the  way  messages  are
                    203: stored (the message database), the user's profile (which directs
                    204: how certain actions of the message handler take place), and the
                    205: commands for dealing with messages.
                    206: .pp
                    207: Under \fIMH\fR, each message is stored as a separate file.
                    208: A user
                    209: can take any action with a message that he could with an ordinary
                    210: file in UNIX.
                    211: A UNIX directory in which messages are stored is
                    212: called a folder.
                    213: Each folder contains some standard entries to support
                    214: the message-handling functions.
                    215: The messages in a folder have numerical
                    216: names.
                    217: These folders (directories)
                    218: are entries in a particular directory path, described in
                    219: the user profile, through which \fIMH\fR can find message folders.
                    220: Using the UNIX \*(lqlink\*(rq facility, it is possible for one copy of a
                    221: message to be \*(lqfiled\*(rq in more than one folder, providing a
                    222: message index facility.
                    223: Also, using the UNIX tree-structured
                    224: file system, it is possible to have a folder within a folder,
                    225: nested arbitrarily deep,
                    226: and have the full power of the \fIMH\fR commands available.
                    227: .pp
                    228: Each user of \fIMH\fR has a user profile, a file in
                    229: his \fB$HOME\fR (initial login) directory called \fI\&.mh\(ruprofile\fR.
                    230: This profile contains several
                    231: pieces of information used by the \fIMH\fR commands:
                    232: a path name to the directory that contains the message folders
                    233: and parameters that tailor \fIMH\fR commands
                    234: to the individual user's requirements.
                    235: There is also another file,
                    236: called the user context,
                    237: which contains information concerning which folder the user last referenced
                    238: (the \*(lqcurrent\*(rq folder).
                    239: It also contains
                    240: most of the necessary state information concerning how
                    241: the user is dealing with his messages, enabling \fIMH\fR to be
                    242: implemented as a set of individual UNIX commands, in contrast to the
                    243: usual approach of a monolithic subsystem.
                    244: .pp
                    245: In \fIMH\fR, incoming mail is appended
                    246: to the end of a file in a system spooling area for the user.
                    247: This area is called the mail drop directory,
                    248: and the file is called the user's mail drop.
                    249: Normally when the user logins in,
                    250: s/he is informed of new mail
                    251: (or the \fIMH\fR program \fImsgchk\fR may be run).
                    252: The user adds the new messages to his/her collection of \fIMH\fR messages
                    253: by invoking the command
                    254: \fIinc\fR.
                    255: The \fIinc\fR (incorporate) command adds the new
                    256: messages to a folder called \*(lqinbox\*(rq, assigning them names which
                    257: are consecutive integers starting with the next highest integer
                    258: available in inbox.
                    259: \fIinc\fR also produces a
                    260: \fIscan\fR summary of
                    261: the messages thus incorporated.
                    262: A folder can be compacted into a single file,
                    263: for easy storage,
                    264: by using the \fIpackf\fR command.
                    265: Also,
                    266: messages within a folder can be sorted by date and time with the \fIsortm\fR
                    267: command.
                    268: 
                    269: .pp
                    270: There are four commands for examining the messages in a
                    271: folder:
                    272: \fIshow\fR,
                    273: \fIprev\fR,
                    274: \fInext\fR,
                    275: and
                    276: \fIscan\fR.
                    277: The \fIshow\fR command displays a message in a folder,
                    278: \fIprev\fR displays the message preceding the current message, and
                    279: \fInext\fR displays the message following the current message.
                    280: \fIMH\fR lets the user choose the program that displays individual messages.
                    281: A special program, \fImhl\fR, can be used to display messages according
                    282: to the user's preferences.
                    283: The \fIscan\fR command summarizes the messages in a folder,
                    284: normally producing one line per message, showing who the message is from,
                    285: the date, the subject, etc.
                    286: .pp
                    287: The user may move a message from one folder to another with
                    288: the command
                    289: \fIrefile\fR.
                    290: Messages may be removed from a folder
                    291: by means of the command
                    292: \fIrmm\fR.
                    293: In addition, a user may query
                    294: what the current folder is and may specify that a new folder
                    295: become the current folder, through the command
                    296: \fIfolder\fR.
                    297: All folders may be summarized with the \fIfolders\fR command.
                    298: A message folder (or subfolder) may be removed by means of
                    299: the command
                    300: \fIrmf\fR.
                    301: .pp
                    302: A set of messages based on content may be selected by
                    303: use of the command \fIpick\fR.
                    304: This command searches through
                    305: messages in a folder and selects those that match a given
                    306: set of criteria.
                    307: These messages are then bound to a \*(lqsequence\*(rq name for use with other
                    308: \fIMH\fR commands.
                    309: The \fImark\fR command manipulates these sequences.
                    310: .pp
                    311: There are five commands enabling the user to create new
                    312: messages and send them:
                    313: \fIcomp\fR,
                    314: \fIdist\fR,
                    315: \fIforw\fR,
                    316: \fIrepl\fR,
                    317: and
                    318: \fIsend\fR.
                    319: The \fIcomp\fR command
                    320: provides the facility for the user to compose a
                    321: new message;
                    322: \fIdist\fR redistributes mail to additional addressees;
                    323: \fIforw\fR enables the user to forward messages; and
                    324: \fIrepl\fR facilitates the generation of a reply to an incoming message.
                    325: The last three commands may optionally annotate the original message.
                    326: Messages may be arbitrarily annotated with the \fIanno\fR command.
                    327: Once a draft has been constructed by one of the four above composition
                    328: programs,
                    329: a user\-specifiable program is run to query the user as to the disposition of
                    330: the draft prior to sending.
                    331: \fIMH\fR provides the simple \fIwhatnow\fR program to start users off.
                    332: If
                    333: a message is not sent directly by one of these commands, it may
                    334: be sent at a later time using the command
                    335: \fIsend\fR.
                    336: \fIMH\fR allows the use of any UNIX editor when composing a message.
                    337: For rapid entry, a special editor, \fIprompter\fR, is provided.
                    338: For programs, a special mail-sending program, \fImhmail\fR, is provided.
                    339: .pp
                    340: \fIMH\fR supports a personal aliasing facility which gives users the
                    341: capability to considerably shorten address typein
                    342: and use meaningful names for addresses.
                    343: The \fIali\fR program can be used to query \fIMH\fR as to the expansion of a
                    344: list of aliases.
                    345: After composing a message, but prior to sending, the \fIwhom\fR command
                    346: can be used to determine exactly who a message would go to.
                    347: .pp
                    348: \fIMH\fR provides a natural interface for telling the user's shell the names
                    349: of \fIMH\fR messages and folders.
                    350: The \fImhpath\fR program achieves this capability.
                    351: .pp
                    352: @BEGIN: BBOARDS
                    353: Finally, \fIMH\fR supports the UCI BBoards facility.
                    354: \fIbbc\fR can be used to query the status of a group of BBoards,
                    355: while \fImsh\fR can be used to read them.
                    356: BBoard leaders are also well supported, with the \fIbbl\fR program.
                    357: @END: BBOARDS
                    358: The \fIburst\fR command can be used to \*(lqshred\*(rq digests of messages
                    359: into individual messages.
                    360: .pp
                    361: All of the elements summarized above
                    362: are described in more detail in the following sections.
                    363: Many of the
                    364: normal facilities of UNIX provide additional capabilities for
                    365: dealing with messages in various ways.
                    366: For example, it is
                    367: possible to print messages
                    368: on the line-printer without requiring any additional code within
                    369: \fIMH\fR\0.
                    370: Using standard UNIX facilities, any terminal output can be
                    371: redirected to a file for repeated or future viewing.
                    372: In general,
                    373: the flexibility and capabilities of the UNIX interface with the
                    374: user are preserved as a result of the integration of \fIMH\fR into the UNIX
                    375: structure.
                    376: .+c TUTORIAL
                    377: .pp
                    378: This tutorial provides a brief introduction to the \fIMH\fR commands.
                    379: It should be sufficient
                    380: to allow the user to read his mail, do some simple manipulations of
                    381: it, and create and send messages.
                    382: .pp
                    383: A message has two major pieces:  the
                    384: header and the body.
                    385: The body consists of the text of the message
                    386: (whatever you care to type in).
                    387: It follows the header and is separated from
                    388: it by an empty line.
                    389: (When you compose a message, the form that appears
                    390: on your terminal shows a line of dashes after the header.
                    391: This is for
                    392: convenience and is replaced by an empty line when the message is
                    393: sent.)  The header is composed of several components, including the
                    394: subject of the message and the person to whom it is addressed.
                    395: Each component starts with a name
                    396: and a colon; components must not start with a blank.
                    397: The text of the
                    398: component may take more than one line, but each continuation line must
                    399: start with a blank.
                    400: Messages typically have \*(lqTo:\*(rq, \*(lqcc:\*(rq, and
                    401: \*(lqSubject:\*(rq components.
                    402: When composing a message, you should include
                    403: the \*(lqTo:\*(rq and \*(lqSubject:\*(rq components;
                    404: the \*(lqcc:\*(rq (for people you want to send copies to) is not necessary.
                    405: .pp
                    406: The basic \fIMH\fR commands are
                    407: \fIinc\fR,
                    408: \fIscan\fR,
                    409: \fIshow\fR,
                    410: \fInext\fR,
                    411: \fIprev\fR,
                    412: \fIrmm\fR,
                    413: \fIcomp\fR,
                    414: and
                    415: \fIrepl\fR.
                    416: These are described below.
                    417: 
                    418: \fIinc\fR
                    419: .pp
                    420: When you get the message \*(lqYou have mail\*(rq, type the command \fIinc\fR.
                    421: You will get a \*(lqscan listing\*(rq such as:
                    422: 
                    423: .nf
                    424: .in +.5i
                    425: .ta \w'7+  'u +\w'11/26  'u +\w'To:norm  'u
                    426: 7+     \07/13  Cas     revival of measurement work
                    427: 8      10/\09  Norm    NBS people and publications
                    428: 9      11/26   To:norm question \*(<<Are there any functions
                    429: .re
                    430: .in -.5i
                    431: .fi
                    432: .pp
                    433: This shows the messages you received since the last time you
                    434: executed this command (\fIinc\fR adds these new messages to your inbox folder).
                    435: You can see this list again, plus a list of any
                    436: other messages you have, by using the
                    437: \fIscan\fR command.
                    438: 
                    439: \fIscan\fR
                    440: .pp
                    441: The scan listing shows the message number, followed by the
                    442: date and the sender.
                    443: (If you are the sender, the addressee in the \*(lqTo:\*(rq
                    444: component is displayed.
                    445: You may send yourself a message by including
                    446: your name among the \*(lqTo:\*(rq or \*(lqcc:\*(rq addressees.)
                    447: It also shows the message's subject; if
                    448: the subject is short, the first part of the body of the message is
                    449: included after the characters \*(<<.
                    450: 
                    451: .ne 5
                    452: \fIshow\fR
                    453: .pp
                    454: This command shows the current message, that is,
                    455: the first one of the new messages after an
                    456: \fIinc\fR.
                    457: If the message is not
                    458: specified by name (number), it is
                    459: generally the last message referred to by an \fIMH\fR command.
                    460: For example,
                    461: 
                    462: 
                    463: .ta \w'\fIshow\fR\0|\0\fIlpr\fR  'u
                    464: .ti .5i
                    465: ^\fIshow\fP\05~^will show message 5.
                    466: .re
                    467: 
                    468: .pp
                    469: You can use the show command to copy a message or print a
                    470: message.
                    471: 
                    472: .(b L
                    473: .in .5i
                    474: .ta \w'\fIshow\fR\0|\0\fIlpr\fR  'u
                    475: ^\fIshow\fR\0>\0\fIx\fR~^will copy the message to file x.
                    476: .br
                    477: ^\fIshow\fR\0|\0\fIlpr\fR~^will print the message, using the \fIlpr\fR command.
                    478: .br
                    479: ^\fInext\fR~^will show the message that follows the current message.
                    480: .br
                    481: ^\fIprev\fR~^will show the message previous to the current message.
                    482: .br
                    483: ^\fIrmm\fR~^will remove the current message.
                    484: .br
                    485: ^\fIrmm\03\fR~^will remove message 3.
                    486: .)b
                    487: 
                    488: .ne 5
                    489: \fIcomp\fR
                    490: .pp
                    491: The
                    492: \fIcomp\fR command puts you in the editor to write or edit a message.
                    493: Fill in or
                    494: delete the \*(lqTo:\*(rq, \*(lqcc:\*(rq, and \*(lqSubject:\*(rq fields,
                    495: as appropriate, and type the body of the message.
                    496: Then
                    497: exit normally from the editor.
                    498: You will be asked
                    499: \*(lqWhat now?\*(rq.
                    500: Type a carriage return to see the options.
                    501: Typing \fBsend\fR
                    502: will cause the message to be sent; typing \fBquit\fR will cause an exit
                    503: from
                    504: \fIcomp\fR,
                    505: with the message draft saved.
                    506: .pp
                    507: If you quit without sending the message, it will be saved in a file
                    508: called <name>/Mail/draft (where <name> is your \fB$HOME\fR directory).
                    509: You can resume editing the message later with \*(lqcomp\0\-use\*(rq;
                    510: or you can send the message later, using the \fIsend\fR command.
                    511: 
                    512: .ne 4
                    513: \fIcomp\0\-editor\0prompter\fR
                    514: .pp
                    515: This command uses a different editor and is useful for preparing
                    516: \*(lqquick and dirty\*(rq messages.
                    517: It prompts you for each component of the
                    518: header.
                    519: Type the information for that component, or type a carriage
                    520: return to omit the component.
                    521: After that, type the body of the
                    522: message.
                    523: Backspacing is the only form of editing allowed with this editor.
                    524: When the body is complete, type a carriage return followed by <EOT>
                    525: (usually <CTRL-D>).
                    526: This completes the initial preparation of the message; from then on, use
                    527: the same procedures as with
                    528: \fIcomp\fR (above).
                    529: 
                    530: .ne 5
                    531: \fIrepl\fR
                    532: .br
                    533: \fIrepl\fR\0n 
                    534: .pp
                    535: This command makes up an initial message form with a header
                    536: that is appropriate for
                    537: replying to an existing message.
                    538: The message being answered is the
                    539: current message if no message number is mentioned, or n if a number
                    540: is specified.
                    541: After the header is completed, you can finish the message as in
                    542: \fIcomp\fR (above).
                    543: .pp
                    544: This is enough information to get you going using \fIMH\fR.
                    545: There are more commands,
                    546: and the commands described here have more features.
                    547: Subsequent sections
                    548: explain \fIMH\fR in complete detail.
                    549: The system is quite powerful if you
                    550: want to use its sophisticated features, but the foregoing commands
                    551: suffice for sending and receiving messages.
                    552: .pp
                    553: There are numerous additional capabilities you may wish to explore.
                    554: For example, the
                    555: \fIpick\fR command will select a subset of messages
                    556: based on specified criteria such as sender and/or subject.
                    557: Groups of
                    558: messages may be designated, as described in Sec. IV,
                    559: under \fBMessage Naming\fR.
                    560: The file \fI\&.mh\(ruprofile\fR can be used to tailor your use of
                    561: the message system to your needs and preferences, as described in Sec. IV,
                    562: under \fBThe User Profile\fR.
                    563: In general, you may
                    564: learn additional features of the system selectively, according to your
                    565: requirements,
                    566: by studying the relevant sections of this manual.
                    567: There is no need to
                    568: learn all the details of the system at once.
                    569: .+c "DETAILED DESCRIPTION"
                    570: .pp
                    571: This section describes the \fIMH\fR system in detail, including the components
                    572: of the user profile, the conventions for message naming, and some of
                    573: the other \fIMH\fR conventions.
                    574: Readers who are
                    575: generally familiar with computer systems will be able to follow
                    576: the principal ideas, although some details may be meaningful only to
                    577: those familiar with UNIX.
                    578: .uh "THE USER PROFILE"
                    579: .pp
                    580: The first time an \fIMH\fR command is issued by a new user, the system
                    581: prompts for a \*(lqPath\*(rq and creates an \fIMH\fR \*(lqprofile\*(rq.
                    582: .pp
                    583: Each \fIMH\fR user has a profile which contains tailoring
                    584: information for each individual program.
                    585: Other profile entries control the \fIMH\fR path (where folders and
                    586: special files are kept), folder and message protections, editor
                    587: selection, and default arguments for each \fIMH\fR program.
                    588: Each user of \fIMH\fR also has a context file which contains
                    589: current state information for the \fIMH\fR package
                    590: (the location of the context file is kept in the user's \fIMH\fR directory,
                    591: or may be named in the user profile).
                    592: When a folder becomes
                    593: the current folder, it is recorded in the user's context.
                    594: (Other state information is kept in the context file,
                    595: see the manual entry for \fImh\-profile\0\fR(5) for more details.)
                    596: In general,
                    597: the term \*(lqprofile entry\*(rq refer to entries in either the profile or
                    598: context file.
                    599: Users of \fIMH\fR needn't worry about the distinction,
                    600: \fIMH\fR handles these things automatically.
                    601: .pp
                    602: The \fIMH\fR profile is stored in the file \fI\&.mh\(ruprofile\fR in the
                    603: user's \fB$HOME\fR directory\**.
                    604: .(f
                    605: \** By defining the envariable \fB$MH\fR,
                    606: you can specify an alternate profile to be used by \fIMH\fR commands.
                    607: .)f
                    608: It has the format of a message without
                    609: any body.
                    610: That is, each profile entry is on one line, with a
                    611: keyword followed by a colon (:) followed by text particular to
                    612: the keyword.
                    613: .br
                    614: \(rh\ \ \&
                    615: \fIThis file must not have blank lines.\fR
                    616: .br
                    617: The keywords
                    618: may have any combination of upper and lower case.
                    619: (See the information of \fImh\-mail\fR later on in this manual
                    620: for a description of message formats.)
                    621: .pp
                    622: For the average \fIMH\fR user, the only profile entry of
                    623: importance is \*(lqPath\*(rq.
                    624: Path specifies a directory in which \fIMH\fR
                    625: folders and certain files such as \*(lqdraft\*(rq are found.
                    626: The
                    627: argument to this keyword must be a legal UNIX path that names an
                    628: existing directory.
                    629: If this path is not absolute
                    630: (i.e., does not begin with a \fB/\fR\0),
                    631: it will be presumed to start from the user's \fB$HOME\fR directory.
                    632: All folder and message references within
                    633: \fIMH\fR will relate to this path unless full path names are used.
                    634: .pp
                    635: Message protection defaults to 644, and folder protection to
                    636: 711.
                    637: These may be changed by profile entries \*(lqMsg-Protect\*(rq
                    638: and \*(lqFolder-Protect\*(rq, respectively.
                    639: The argument to these
                    640: keywords is an octal number which is used as the UNIX file mode\**.
                    641: .(f
                    642: \** See \fIchmod\fR\0(1) in the \fIUNIX Programmer's Manual\fR\0[5].
                    643: .)f
                    644: .pp
                    645: When an \fIMH\fR program starts running, it looks through the
                    646: user's profile for an entry with a keyword matching the program's
                    647: name.
                    648: For example, when
                    649: \fIcomp\fR is run, it looks for a \*(lqcomp\*(rq
                    650: profile entry.
                    651: If one is found, the text of the profile entry is
                    652: used as the default switch setting until all defaults are overridden
                    653: by explicit switches passed to the program as arguments.
                    654: Thus the profile
                    655: entry \*(lqcomp:\0\-form\0standard.list\*(rq would direct
                    656: \fIcomp\fR to use the
                    657: file \*(lqstandard.list\*(rq as the message skeleton.
                    658: If an explicit
                    659: form switch is given to the
                    660: \fIcomp\fR command, it will override the
                    661: switch obtained from the profile.
                    662: .pp
                    663: In UNIX, a program may exist under several names,
                    664: either by linking or aliasing.
                    665: The actual invocation name is used by an \fIMH\fR
                    666: program when scanning for its profile defaults\**.
                    667: .(f
                    668: \** Unfortunately,
                    669: the shell does not preserve aliasing information when calling a program,
                    670: hence if a program is invoked by an alias different than its name,
                    671: the program will examine the profile entry for it's name,
                    672: not the alias that the user invoked it as.
                    673: The correct solution is to create a (soft) link in your \fI$HOME/bin\fR
                    674: directory to the \fIMH\fR program of your choice.
                    675: By giving this link a different name,
                    676: you can use an alternate set of defaults for the command.
                    677: .)f
                    678: Thus, each \fIMH\fR program
                    679: may have several names by which it can be invoked, and each name
                    680: may have a different set of default switches.
                    681: For example, if
                    682: \fIcomp\fR is invoked by the name
                    683: \fIicomp\fR,
                    684: the profile entry
                    685: \*(lqicomp\*(rq will control the default switches for this invocation of
                    686: the
                    687: \fIcomp\fR program.
                    688: This provides a powerful
                    689: definitional facility for commonly used switch settings.
                    690: .pp
                    691: The default editor
                    692: for editing within
                    693: \fIcomp\fR,
                    694: \fIrepl\fR,
                    695: \fIforw\fR,
                    696: and
                    697: \fIdist\fR,
                    698: is usually \fIprompter\fR,
                    699: but might be something else at your site,
                    700: such as \fI/usr/ucb/ex\fR or \fI/bin/e\fR.
                    701: A different editor may be used by specifying
                    702: the profile entry
                    703: \*(lqEditor: \*(rq.
                    704: The argument to \*(lqEditor\*(rq is the name of an
                    705: executable program or shell command file which can be found via
                    706: the user's $PATH defined search path, excluding the current
                    707: directory.
                    708: The \*(lqEditor:\*(rq profile specification
                    709: may in turn be overridden by a `\-editor\0<editor>'
                    710: profile switch associated with
                    711: \fIcomp\fR,
                    712: \fIrepl\fR,
                    713: \fIforw\fR,
                    714: or
                    715: \fIdist\fR.
                    716: Finally, an explicit editor switch specified with any
                    717: of these four commands will have ultimate precedence.
                    718: .pp
                    719: During message composition, more than one editor may be
                    720: used.
                    721: For example, one editor (such as \fIprompter\fR\0)
                    722: may be used
                    723: initially, and a second editor may be invoked later to revise
                    724: the message being composed
                    725: (see the discussion of
                    726: \fIcomp\fR in Section 5 for details).
                    727: A profile entry \*(lq<lasteditor>\-next:\0<editor>\*(rq specifies the name of
                    728: the editor to be used after a particular editor.
                    729: Thus \*(lqcomp:\0\-e\0prompter\*(rq
                    730: causes the initial text to be collected by
                    731: \fIprompter\fR,
                    732: and the profile entry \*(lqprompter\-next:\0ed\*(rq names ed as the
                    733: editor to be invoked for the next round of editing.
                    734: .pp
                    735: Some of the \fIMH\fR commands, such as
                    736: \fIshow\fR,
                    737: can be used on
                    738: message folders owned by others, if those folders are readable.
                    739: However,
                    740: you cannot write in someone else's folder.
                    741: All the \fIMH\fR command
                    742: actions not requiring write permission may be used with
                    743: a \*(lqread-only\*(rq folder.
                    744: .pp
                    745: Table 1 lists examples of some of the currently defined profile
                    746: entries, typical arguments, and the programs that reference the
                    747: entries.
                    748: .bp
                    749: .in .9i
                    750: .ll -.9i
                    751: .ta \w'<program>:\0default switches  'u
                    752: .sp 30p
                    753: .ce
                    754: Table 1
                    755: .sp 8p
                    756: .ce
                    757: P\s-2ROFILE\s0 C\s-2OMPONENTS\s0
                    758: .hl             \" ~12p preceding + 1v (12p) after
                    759: .nf
                    760: ^^\fIMH\fR Programs that
                    761: ^Keyword and Argument~^\ use Component\h'|\n(.lu-.9i'\v'4p'\l'|0'\v'-4p'  \" \l'..' does underlining
                    762: .sp
                    763: ^Path:\0Mail~^All
                    764: ^Current-Folder:\0inbox~^Most
                    765: ^Editor:\0/usr/ucb/ex~^\fIcomp, dist, forw, repl\fR
                    766: ^Msg\-Protect:\0644~^\fIinc\fR
                    767: ^Folder\-Protect:\0711~^\fIinc, pick, refile\fR
                    768: ^<program>:\0default switches~^All
                    769: ^prompter\-next:\0ed~^\fIcomp, dist, forw, repl\fR
                    770: .hl
                    771: .ll +.9i
                    772: .in 0
                    773: .fi
                    774: .pp
                    775: Path
                    776: .u should
                    777: be present.
                    778: Current\-Folder is maintained
                    779: automatically by many \fIMH\fR commands (see the \fBContext\fR sections of
                    780: the individual commands in Sec. IV).
                    781: All other entries are optional,
                    782: defaulting to the values described above.
                    783: .uh "MESSAGE NAMING"
                    784: .pp
                    785: Messages may be referred to explicitly or implicitly when
                    786: using \fIMH\fR commands.
                    787: A formal syntax of message names is given in Appendix B, but the
                    788: following description should be sufficient for most \fIMH\fR users.
                    789: Some details of message naming that apply only to certain
                    790: commands are included in the description of those
                    791: commands.
                    792: .pp
                    793: Most of the \fIMH\fR commands accept arguments specifying one or
                    794: more folders, and one or more messages to operate on.
                    795: The use of
                    796: the word \*(lqmsg\*(rq as an argument to a command means that exactly one
                    797: message name may be specified.
                    798: A message name may be a number,
                    799: such as 1, 33, or 234, or it may be
                    800: one of the \*(lqreserved\*(rq message names:
                    801: first, last, prev, next, and cur.
                    802: (As a shorthand, a
                    803: period (\&.) is equivalent to cur.)
                    804: The meanings of these names are straightforward:
                    805: \*(lqfirst\*(rq is the first message in the folder;
                    806: \*(lqlast\*(rq is the last message in the folder;
                    807: \*(lqprev\*(rq is the message numerically previous to the current message;
                    808: \*(lqnext\*(rq is the message numerically following the current message;
                    809: \*(lqcur\*(rq (or \*(lq\&.\*(rq) is the current message in the folder.
                    810: In addition,
                    811: \fIMH\fR supports user\-defined\-sequences;
                    812: see the description of the \fImark\fR command for more information.
                    813: .pp
                    814: The default in commands that take a \*(lqmsg\*(rq argument is
                    815: always \*(lqcur\*(rq.
                    816: .pp
                    817: The word \*(lqmsgs\*(rq indicates that several messages may be
                    818: specified.
                    819: Such a specification consists of several message
                    820: designations separated by spaces.
                    821: A message designation is
                    822: either a message name or a message range.
                    823: A message range is a
                    824: specification of the form name1\-name2 or name1:n, where name1 and
                    825: name2 are message names and n is an integer.
                    826: The first form
                    827: designates all the messages from name1 to name2 inclusive; this
                    828: must be a non-empty range.
                    829: The second form specifies up to n
                    830: messages, starting with name1 if name1 is a number, or first,
                    831: cur, or next, and ending with name1 if name1 is last or
                    832: prev.
                    833: This interpretation of n is overridden if n is preceded
                    834: by a plus sign or a minus sign;
                    835: +n always means up to n messages starting with
                    836: name1, and \-n always means up to n messages ending with name1.
                    837: Repeated specifications of the same message have the same effect
                    838: as a single specification of
                    839: the message.
                    840: Examples of
                    841: specifications are:
                    842: 
                    843: .(b
                    844: 1 5 7\-11 22
                    845: first 6 8 next
                    846: first\-10
                    847: last:5
                    848: .)b
                    849: .pp
                    850: The message name \*(lqall\*(rq is a shorthand for \*(lqfirst\-last\*(rq,
                    851: indicating all of the messages in the folder.
                    852: .pp
                    853: In commands that accept \*(lqmsgs\*(rq arguments, the default is
                    854: either cur or all, depending on which makes more sense.
                    855: .pp
                    856: In all of the \fIMH\fR commands, a plus sign preceding an argument
                    857: indicates a folder name.
                    858: Thus, \*(lq+inbox\*(rq is the name of the
                    859: user's standard inbox.
                    860: If an explicit folder argument is given
                    861: to an \fIMH\fR command, it will become the current folder (that is,
                    862: the \*(lqCurrent-Folder:\*(rq entry
                    863: in the user's profile will be changed to this folder).
                    864: In the case of the
                    865: \fIrefile\fR command, which
                    866: can have multiple output folders, a new source folder (other than
                    867: the default current folder) is specified by `\-src\0+folder'.
                    868: .uh "OTHER MH CONVENTIONS"
                    869: .pp
                    870: One very powerful feature of \fIMH\fR is that the \fIMH\fR commands may
                    871: be issued from any current directory, and the proper path to
                    872: the appropriate folder(s) will be taken from the user's profile.
                    873: If the \fIMH\fR path is not appropriate for a specific folder or file,
                    874: the automatic prepending of the \fIMH\fR path can be avoided by
                    875: beginning a folder or file name with \fB/\fR,
                    876: or with \fB\&./\fR or \fB\&.\&./\fR component.
                    877: Thus any specific absolute path may be specified along with any path
                    878: relative to the current working directory.
                    879: .pp
                    880: Arguments to the various programs may be given in any order,
                    881: with the exception of a few switches whose arguments must follow
                    882: immediately, such as `\-src\0+folder' for \fIrefile\fR.
                    883: .pp
                    884: Whenever an \fIMH\fR command prompts the user, the valid options
                    885: will be listed in response to a <RETURN>.
                    886: (The first of the
                    887: listed options is the default if end-of-file is encountered,
                    888: such as from a command file.)
                    889: A valid response is any \fIunique\fR abbreviation of one of the listed options.
                    890: .pp
                    891: Standard UNIX documentation conventions are used in this report
                    892: to describe \fIMH\fR command syntax.
                    893: Arguments enclosed in brackets
                    894: ([ ]) are optional; exactly one of the arguments enclosed
                    895: within braces ({ }) must be specified, and all other
                    896: arguments are required.
                    897: The use of ellipsis dots (...) indicates
                    898: zero or more repetitions of the previous item.
                    899: For example,
                    900: \*(lq+folder ...\*(rq would indicate that one or more \*(lq+folder\*(rq
                    901: arguments is required
                    902: and \*(lq[+folder ...]\*(rq indicates that 0 or more
                    903: \*(lq+folder\*(rq arguments may be given.
                    904: .pp
                    905: \fIMH\fR departs from UNIX standards by using switches that consist of
                    906: more than one character, e.g. `\-header'.
                    907: To minimize typing,
                    908: only a unique abbreviation of a switch need be typed; thus, for
                    909: `\-header', `\-hea' is probably sufficient, depending on the
                    910: other switches the command accepts.
                    911: Each \fIMH\fR program
                    912: accepts the switch `\-help' (which \fBmust\fR be spelled out fully)
                    913: and produces a syntax description and a list of switches.
                    914: In the
                    915: list of switches, parentheses indicate required characters.
                    916: For example, all `\-help' switches will appear as \*(lq\-(help)\*(rq,
                    917: indicating that no abbreviation is accepted.
                    918: Furthermore,
                    919: the `\-help' switch tells the version of the \fIMH\fR program you invoked.
                    920: .pp
                    921: Many \fIMH\fR switches have both on and off forms, such as
                    922: `\-format' and `\-noformat'.
                    923: In many of the descriptions which follow,
                    924: only one form is defined; the other form, often used to
                    925: nullify profile switch settings, is assumed to be the opposite.
                    926: .br
                    927: .bp
                    928: .uh "MH COMMANDS"
                    929: .pp
                    930: The \fIMH\fR package comprises several programs:
                    931: .\"    I pity the fool who tampers with the next line...
                    932: .ds ZZ -me
                    933: .so mh.me
                    934: .pp
                    935: These programs are described below.
                    936: The form of the descriptions
                    937: conforms to the standard
                    938: form for the description of UNIX commands.
                    939: .if t \{
                    940: .ll 6.5i
                    941: .lt 6.5i
                    942: \}
                    943: .fo '[mh.6]'MH'UCI version'
                    944: .de SC
                    945: .he '\\$1(\\$2)'-%-'\\$1(\\$2)'
                    946: .bp
                    947: .(x
                    948: .ti .8i
                    949: \\$1
                    950: .)x
                    951: ..
                    952: .de NA
                    953: .b \\s-2NAME\\s0
                    954: .ti .5i
                    955: ..
                    956: .de SY
                    957: .sp
                    958: .b \\s-2SYNOPSIS\\s0
                    959: .in 1i
                    960: .ti .5i
                    961: .na
                    962: ..
                    963: .de DE
                    964: .ad
                    965: .sp
                    966: .in 0
                    967: .b  \\s-2DESCRIPTION\\s0
                    968: .sp
                    969: .fi
                    970: .in .5i
                    971: ..
                    972: .de Hh
                    973: .ad
                    974: .sp
                    975: .in 0
                    976: .b "\\s-2Helpful Hints\\s0"
                    977: .sp
                    978: .fi
                    979: .in .5i
                    980: ..
                    981: .de Fi
                    982: .(b L
                    983: .ti 0
                    984: .b \\s-2Files\\s0
                    985: .ta \w'@(MHETCPATH)/ExtraBigFileName  'u
                    986: ..
                    987: .de Pr
                    988: .)b
                    989: .(b L F
                    990: .ta \w'ExtraBigProfileName  'u
                    991: .ti 0
                    992: .b "\\s-2Profile Components\\s0"
                    993: .ti .5i
                    994: ..
                    995: .de Ps
                    996: .ti .5i
                    997: ..
                    998: .de Sa
                    999: .)b
                   1000: .(b L F
                   1001: .ti 0
                   1002: .b "\\s-2See Also\\s0"
                   1003: .br
                   1004: ..
                   1005: .de De
                   1006: .)b
                   1007: .(b L
                   1008: .in .5i
                   1009: .ti 0
                   1010: .b \\s-2Defaults\\s0
                   1011: ..
                   1012: .de Ds
                   1013: ..
                   1014: .de Co
                   1015: .)b
                   1016: .(b L F
                   1017: .ti 0
                   1018: .b \\s-2Context\\s0
                   1019: .br
                   1020: ..
                   1021: .de Hi
                   1022: .)b
                   1023: .(b L F
                   1024: .ti 0
                   1025: .b \\s-2History\\s0
                   1026: .br
                   1027: ..
                   1028: .de Bu
                   1029: .)b
                   1030: .(b L F
                   1031: .ti 0
                   1032: .b \\s-2Bugs\\s0
                   1033: .br
                   1034: ..
                   1035: .de En
                   1036: .)b
                   1037: .in 0
                   1038: ..
                   1039: .po -.50i
                   1040: .so ali.me
                   1041: .so anno.me
                   1042: @BEGIN: BBOARDS
                   1043: .so bbc.me
                   1044: .so bbl.me
                   1045: .so bbleader.me
                   1046: .so bboards.me
                   1047: @END: BBOARDS
                   1048: .so burst.me
                   1049: @BEGIN: TMA
                   1050: .so cipher.me
                   1051: @END: TMA
                   1052: .so comp.me
                   1053: @BEGIN: TMA
                   1054: .so decipher.me
                   1055: @END: TMA
                   1056: .so dist.me
                   1057: .so folder.me
                   1058: .so forw.me
                   1059: .so inc.me
                   1060: .so mark.me
                   1061: .so mhl.me
                   1062: .so mhmail.me
                   1063: .so mhook.me
                   1064: .so mhpath.me
                   1065: .so msgchk.me
                   1066: .so msh.me
                   1067: .so next.me
                   1068: .so packf.me
                   1069: .so pick.me
                   1070: .so prev.me
                   1071: .so prompter.me
                   1072: .so rcvstore.me
                   1073: .so refile.me
                   1074: .so repl.me
                   1075: .so rmf.me
                   1076: .so rmm.me
                   1077: .so scan.me
                   1078: .so send.me
                   1079: .so show.me
                   1080: .so sortm.me
                   1081: @BEGIN: TMA
                   1082: .so tma.me
                   1083: @END: TMA
                   1084: .so vmh.me
                   1085: .so whatnow.me
                   1086: .so whom.me
                   1087: .po +.50i
                   1088: .he ''-%-''
                   1089: .fo ''''
                   1090: .br
                   1091: .if t \{
                   1092: .ll 32P
                   1093: .lt 32P
                   1094: \}
                   1095: .bp
                   1096: .uh "MORE DETAILS"
                   1097: .pp
                   1098: This section describes some of the more intense points of the \fIMH\fR system,
                   1099: by expanding on topics previously discussed.
                   1100: The format presented conforms to the standard form for the description of UNIX
                   1101: documentation.
                   1102: .if t \{
                   1103: .ll 6.5i
                   1104: .lt 6.5i
                   1105: \}
                   1106: .fo '[mh.6]'MH'UCI version'
                   1107: .po -.50i
                   1108: .so mh-alias.me
                   1109: .so mh-format.me
                   1110: .so mh-mail.me
                   1111: .so mh-profile.me
                   1112: .so ap.me
                   1113: .so conflict.me
                   1114: .so dp.me
                   1115: .so install-mh.me
                   1116: .so post.me
                   1117: .po +.50i
                   1118: .he ''-%-''
                   1119: .fo ''''
                   1120: .br
                   1121: .if t \{
                   1122: .ll 32P
                   1123: .lt 32P
                   1124: \}
                   1125: .+c "REPORTING PROBLEMS"
                   1126: .pp
                   1127: If problems are encountered with an \fIMH\fR program,
                   1128: the problems should be reported to the local maintainers of \fIMH\fR.
                   1129: When doing this,
                   1130: the name of the program should be reported,
                   1131: along with the version information for the program.
                   1132: To find out what version of an \fIMH\fR program is being run,
                   1133: invoke the program with the `\-help' switch.
                   1134: In addition to listing the syntax of the command,
                   1135: the program will list information pertaining to its version.
                   1136: This information includes the version of \fIMH\fR,
                   1137: the host it was generated on,
                   1138: and the date the program was loaded.
                   1139: A second line of information,
                   1140: found on versions of \fIMH\fR after #5.380 include \fIMH\fR configuration
                   1141: options.
                   1142: For example,
                   1143: 
                   1144: .in +.5i
                   1145: version: MH 6.1 #1[UCI] (nrtc-gremlin) of Wed Nov  6 01:13:53 PST 1985
                   1146: .br
                   1147: options: [BSD42] [MHE] [NETWORK] [SENDMTS] [MMDFII] [SMTP] [POP]
                   1148: .in -.5i
                   1149: 
                   1150: The `6.1 #1[UCI]' indicates that the program is from the UCI \fImh.6\fR
                   1151: version of \fIMH\fR.
                   1152: The program was generated on the host `nrtc-gremlin' on
                   1153: `Wed Nov  6 01:13:53 PST 1985'.
                   1154: It's usually a good idea to send the output of the `\-help' switch along
                   1155: with your report.
                   1156: 
                   1157: If there is no local \fIMH\fR maintainer,
                   1158: try the address \fBBug-MH\fR.
                   1159: If that fails, use the Internet mailbox \[email protected]\fR.
                   1160: 
                   1161: .+c "ADVANCED FEATURES"
                   1162: .de UH
                   1163: .lp
                   1164: .b "\\$1"
                   1165: .pp
                   1166: .(x
                   1167: .ti .8i
                   1168: \\$1
                   1169: .)x
                   1170: ..
                   1171: .pp
                   1172: This section describes some features of \fIMH\fR that were included strictly
                   1173: for advanced \fIMH\fR users.
                   1174: These capabilities permit \fIMH\fR to exhibit more powerful behavior for the
                   1175: seasoned \fIMH\fR users.
                   1176: .uh "USER\-DEFINED SEQUENCES"
                   1177: .pp
                   1178: User\-defined sequences allow the \fIMH\fR user a tremendous amount of power
                   1179: in dealing with groups of messages in the same folder
                   1180: by allowing the user to bind a group of messages to a meaningful symbolic
                   1181: name.
                   1182: The user may choose any name for a message sequence,
                   1183: as long as it consists of alphanumeric characters and does not conflict with
                   1184: the standard \fIMH\fR reserved message names
                   1185: (e.g., \*(lqfirst\*(rq, etc).
                   1186: After defining a sequence,
                   1187: it can be used wherever an \fIMH\fR command expects a `msg' or `msgs'
                   1188: argument.
                   1189: Although all \fIMH\fR commands expand user\-defined sequences as appropriate,
                   1190: there are two commands that allow the user to define and manipulate them:
                   1191: \fIpick\fR and \fImark\fR.
                   1192: .UH "Pick and User\-Defined Sequences"
                   1193: .pp
                   1194: Most users of \fIMH\fR will use user\-defined sequences only with
                   1195: the \fIpick\fR command.
                   1196: By giving the `\-sequence\ name' switch to \fIpick\fR
                   1197: (which can occur more than once on the command line),
                   1198: each sequence named is defined as those messages which \fIpick\fR matched
                   1199: according the the selection criteria it was given.
                   1200: Hence,
                   1201: 
                   1202: .ti +.5i
                   1203: pick\0\-from\0frated\0\-seq\0fred
                   1204: 
                   1205: finds all those messages in the current folder which were from
                   1206: \*(lqfrated\*(rq,
                   1207: creates a sequence called \*(lqfred\*(rq,
                   1208: and then adds them to the sequence.
                   1209: The user could then invoke
                   1210: 
                   1211: .ti +.5i
                   1212: scan\0fred
                   1213: 
                   1214: to get a \fIscan\fR listing of those messages.
                   1215: Note that by default,
                   1216: \fIpick\fR creates the named sequences
                   1217: before it adds the selected messages to the sequence.
                   1218: Hence, if the named sequence already existed,
                   1219: the sequence is destroyed prior to being re\-defined
                   1220: (nothing happens to the messages that were a part of this sequence,
                   1221: they simply cease to be members of that sequence).
                   1222: By using the `\-nozero' switch, this behavior can be inhibited,
                   1223: as in
                   1224: 
                   1225: .in +.5i
                   1226: pick\0\-from\0frated\0\-seq\0sgroup
                   1227: .br
                   1228: pick\0\-from\0fear\0\-seq\0sgroup\0\-nozero
                   1229: .br
                   1230: pick\0\-from\0freida\0\-seq\0sgroup\0\-nozero
                   1231: .in -.5i
                   1232: 
                   1233: finds all those messages in the current folder which were from
                   1234: \*(lqfrated\*(rq, \*(lqfear\*(rq, or \*(lqfreida\*(rq,
                   1235: and defines the sequence called \*(lqsgroup\*(rq as exactly those messages.
                   1236: These operations amounted to an \*(lqinclusive\-or\*(rq of three selection
                   1237: criteria,
                   1238: using \fIpick\fR,
                   1239: one can also generate the \*(lqand\*(rq of some selection criteria as well:
                   1240: 
                   1241: .in +.5i
                   1242: pick\0\-from\0frated\0\-seq\0fred
                   1243: .br
                   1244: pick\0\-before\0friday\0\-seq\0fred\0fred
                   1245: .in -.5i
                   1246: 
                   1247: This example defines the sequence called \*(lqfred\*(rq as exactly those
                   1248: messages from \*(lqfrated\*(rq that were dated prior to \*(lqfriday\*(rq.\**
                   1249: .(f
                   1250: \** Of course,
                   1251: it is much easier to simply use the built\-in boolean operation of
                   1252: \fIpick\fR to get the desired results:
                   1253: 
                   1254: .ti +.5i
                   1255: pick\0\-from\0frated\0\-or\0\-from\0fear\0\-or\0\-from\0freida\0\-seq\0sgroup
                   1256: 
                   1257: and
                   1258: 
                   1259: .ti +.5i
                   1260: pick\0\-from\0frated\0\-and\0\-before\0friday\0\-seq\0fred
                   1261: 
                   1262: do exactly the same thing as the five commands listed above.
                   1263: Hence, the `\-nozero' option to \fIpick\fR is only useful to manipulate
                   1264: existing sequences.
                   1265: .)f
                   1266: .pp
                   1267: \fIPick\fR is normally used as a back\-quoted command,
                   1268: for example,
                   1269: 
                   1270: .ti +.5i
                   1271: scan\0`pick\0\-from\0postmaster`
                   1272: 
                   1273: Now suppose that the user decides that another command should be issued,
                   1274: using exactly those messages.
                   1275: Since,
                   1276: \fIpick\fR wasn't given a `\-sequence\ name' argument in this example,
                   1277: the user would end\-up typing the entire back\-quoted command again.
                   1278: A simpler way is to add a default sequence name to the \&.mh\(ruprofile.
                   1279: For example,
                   1280: 
                   1281: .ti +.5i
                   1282: pick:\0\-seq\0select\0\-list
                   1283: 
                   1284: will tell \fIpick\fR to always define the sequence \*(lqselect\*(rq whenever
                   1285: it's run.
                   1286: The `-list' is necessary since the `\-sequence\ name' switch sets `\-nolist'
                   1287: whenever the former is encountered.
                   1288: Hence, this profile entry makes \fIpick\fR define the \*(lqselect\*(rq
                   1289: sequence and otherwise behave exactly as if there was no profile entry at all.
                   1290: .UH "Mark and User\-Defined Sequences"
                   1291: .pp
                   1292: The \fImark\fR command lets the user perform low\-level manipulation of
                   1293: sequences,
                   1294: and also provides a well\-needed debug facility to the
                   1295: implementors/developers/maintainers of \fIMH\fR (the \fIMH\fR\-hacks).
                   1296: In the future, a user\-friendly \*(lqfront\-end\*(rq for \fImark\fR will
                   1297: probably be developed to give the \fIMH\fR user a way to take better
                   1298: advantage of the underlying facilities.
                   1299: .UH "Public and Private User\-Defined Sequences"
                   1300: .pp
                   1301: There are two kinds of sequences: \fIpublic\fR sequences,
                   1302: and \fIprivate\fR sequences.
                   1303: \fIPublic\fR sequences of a folder are accessible to any \fIMH\fR user that
                   1304: can read that folder and are kept in the \&.mh\(rusequences file in the folder.
                   1305: \fIPrivate\fR sequences are accessible only to the \fIMH\fR user that defined
                   1306: those sequences and are kept in the user's \fIMH\fR context file.
                   1307: By default,
                   1308: \fIpick\fR (and \fImark\fR\0) create \fIpublic\fR sequences
                   1309: if the folder for which the sequences are being defined is writable by the
                   1310: \fIMH\fR user.
                   1311: Otherwise, \fIprivate\fR sequences are created.
                   1312: This can be overridden with the `\-public' and `\-private' switches.
                   1313: .UH "Sequence Negation"
                   1314: .pp
                   1315: In addition to telling an \fIMH\fR command to use the messages in the sequence
                   1316: \*(lqseen\*(rq, as in
                   1317: 
                   1318: .ti +.5i
                   1319: refile\0seen\0+old
                   1320: 
                   1321: it would be useful to be easily able to tell an \fIMH\fR command to use all
                   1322: messages \fIexcept\fR those in the sequence.
                   1323: One way of doing this would be to use \fImark\fR and define the sequence
                   1324: explicitly,
                   1325: as in
                   1326: 
                   1327: .ti +.5i
                   1328: mark\0\-delete\0\-zero\0seen\0\-seq\0notseen
                   1329: 
                   1330: which,
                   1331: owing to \fImark\fR\0's cryptic interpretation of `\-delete' and `\-zero',
                   1332: defines the sequence \*(lqnotseen\*(rq to be all messages not in the sequence
                   1333: \*(lqseen\*(rq.
                   1334: Naturally,
                   1335: anytime the sequence \*(lqseen\*(rq is changed,
                   1336: \*(lqnotseen\*(rq will have to be updated.
                   1337: Another way to achieve this is to define the entry
                   1338: \*(lqSequence\-Negation:\*(rq in the \&.mh\(ruprofile.
                   1339: If the entry was
                   1340: 
                   1341: .ti +.5i
                   1342: Sequence\-Negation:\0not
                   1343: 
                   1344: then anytime an \fIMH\fR command was given \*(lqnotseen\*(rq as a `msg' or
                   1345: `msgs' argument,
                   1346: it would substitute all messages that are not a member of the sequence
                   1347: \*(lqseen\*(rq.
                   1348: That is,
                   1349: 
                   1350: .ti +.5i
                   1351: refile\0notseen\0+new
                   1352: 
                   1353: does just that.
                   1354: The value of the \*(lqSequence\-Negation:\*(rq entry in the profile can be
                   1355: any string.
                   1356: Hence,
                   1357: experienced users of \fIMH\fR do not use a word,
                   1358: but rather a special character which their shell does not interpret
                   1359: (users of the \fICShell\fR use a single caret or circumflex (usually shift\-6),
                   1360: while users of the Bourne shell use an exclamation\-mark).
                   1361: This is because there is nothing to prevent a user of \fIMH\fR from defining a
                   1362: sequence with this string as its prefix,
                   1363: if the string is nothing by letters and digits.
                   1364: Obviously,
                   1365: this could lead to confusing behavior
                   1366: if the \*(lqSequence\-Negation:\*(rq entry leads \fIMH\fR to believe that two
                   1367: sequences are opposites by virtue of their names differing by the prefix
                   1368: string.
                   1369: .UH "The Previous Sequence"
                   1370: .pp
                   1371: Many times users find themselves issuing a series of commands on the same
                   1372: sequences of messages.
                   1373: If the user first defined these messages as a sequence,
                   1374: then considerable typing may be saved.
                   1375: If the user doesn't have this foresight,
                   1376: \fIMH\fR provides a handy way of having \fIMH\fR remember the `msgs' or
                   1377: `msg' argument last given to an \fIMH\fR command.
                   1378: If the entry \*(lqPrevious\-Sequence:\*(rq is defined in the
                   1379: \&.mh\(ruprofile,
                   1380: then when the command finishes,
                   1381: it will define the sequence(s) named in the value of this entry as being
                   1382: exactly those messages that were specified.
                   1383: Hence, a profile entry of
                   1384: 
                   1385: .ti +.5i
                   1386: Previous\-Sequence:\0pseq
                   1387: 
                   1388: directs any \fIMH\fR command that accepts a `msg' or `msgs' argument to
                   1389: define the sequence \*(lqpseq\*(rq as those messages when it finishes.
                   1390: More than one sequence name may be placed in this entry,
                   1391: separated with spaces.
                   1392: The one disadvantage of this approach
                   1393: is that the \fIMH\fR progams have to update the sequence information for
                   1394: the folder each time they run
                   1395: (although most programs read this information,
                   1396: usually only \fIpick\fR and \fImark\fR have to write this information out).
                   1397: .UH "The Unseen Sequence"
                   1398: .pp
                   1399: Finally, some users like to distinguish between messages which have been
                   1400: previously seen by them.
                   1401: Both \fIinc\fR and \fIshow\fR honorthe profile entry
                   1402: \*(lqUnseen\-Sequence\*(rq to support this activity.
                   1403: Whenever \fIinc\fR places new messages in a folder,
                   1404: if the entry \*(lqUnseen\-Sequence\*(rq is defined in the \&.mh\(ruprofile,
                   1405: then when the command finishes,
                   1406: \fIinc\fR will add the new messages to the sequence(s) named in the value of
                   1407: this entry.
                   1408: Hence, a profile entry of
                   1409: 
                   1410: .ti +.5i
                   1411: Unseen\-Sequence:\0 unseen
                   1412: 
                   1413: directs \fIinc\fR to add new messages to the sequence \*(lqunseen\*(rq.
                   1414: Unlike the behavior of the \*(lqPrevious\-Sequence\*(rq entry in the profile
                   1415: however,
                   1416: the sequence(s) will \fBnot\fR be zero'd.
                   1417: .pp
                   1418: Similarly,
                   1419: whenever \fIshow\fR (or \fInext\fR or \fIprev\fR\0) displays a message,
                   1420: they remove those messages from any sequences named by the
                   1421: \*(lqUnseen\-Sequence\*(rq entry in the profile.
                   1422: .uh "COMPOSITION OF MAIL"
                   1423: .pp
                   1424: There are a number of interesting advanced facilities for the composition of
                   1425: outgoing mail.
                   1426: 
                   1427: .UH "The Draft Folder"
                   1428: .pp
                   1429: The \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR commands have two
                   1430: switches, `\-draftfolder\0+folder' and `\-draftmessage\0msg'.
                   1431: If `\-draftfolder\0+folder' is used,
                   1432: these commands are directed to construct a draft message in the indicated
                   1433: folder.
                   1434: (The \*(lqDraft\-Folder:\*(rq profile entry may be used to declare a
                   1435: default draft folder for use with
                   1436: \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR)
                   1437: If `\-draftmessage\0msg' is not used, it defaults to `new'
                   1438: (unless the user invokes \fIcomp\fR with `\-use',
                   1439: in which case the default is `cur').
                   1440: Hence, the user may have several message compositions in progress
                   1441: simultaneously.
                   1442: Now, all of the \fIMH\fR tools are available on each of the user's message
                   1443: drafts
                   1444: (e.g., \fIshow\fR, \fIscan\fR, \fIpick\fR, and so on).
                   1445: If the folder does not exist,
                   1446: the user is asked if it should be created (just like with \fIrefile\fR\0).
                   1447: Also,
                   1448: the last draft message the user was composing is known as `cur' in the
                   1449: draft folder.
                   1450: .pp
                   1451: Furthermore,
                   1452: the \fIsend\fR command has these switches as well.
                   1453: Hence, from the shell,
                   1454: the user can send off whatever drafts desired using the
                   1455: standard \fIMH\fR `msgs' convention with `\-draftmessage msgs'.
                   1456: If no `msgs' are given, it defaults to `cur'.
                   1457: .pp
                   1458: In addition,
                   1459: all five programs have a `\-nodraftfolder' switch,
                   1460: which undoes the last occurrence of `\-draftfolder\0folder'
                   1461: (useful if the latter occurs in the user's \fIMH\fR profile).
                   1462: .pp
                   1463: If the user does not give the `\-draftfolder\0+folder' switch,
                   1464: then all these commands act ``normally''.
                   1465: Note that the `\-draft' switch to \fIsend\fR and \fIshow\fR
                   1466: still refers to the file called `draft' in the user's \fIMH\fR
                   1467: directory.
                   1468: In the interests of economy of expression,
                   1469: when using \fIcomp\fR or \fIsend\fR,
                   1470: the user needn't prefix the draft `msg' or `msgs' with
                   1471: `\-draftmessage'.
                   1472: Both of these commands accept a `file' or `files' argument,
                   1473: and they will, if given `\-draftfolder\0+folder' treat these arguments
                   1474: as `msg' or `msgs'.\**
                   1475: .(f
                   1476: \** This may appear to be inconsistent, at first,
                   1477: but it saves a lot of typing.
                   1478: .)f
                   1479: Hence,
                   1480: 
                   1481: .ti +.5i
                   1482: send -draftf +drafts first
                   1483: 
                   1484: is the same as
                   1485: 
                   1486: .ti +.5i
                   1487: send -draftf +drafts -draftm first
                   1488: 
                   1489: .pp
                   1490: To make all this a bit more clear, here are some examples.
                   1491: Let's assume that the following entries are in the \fIMH\fR profile:
                   1492: 
                   1493: .in +.5i
                   1494: .nf
                   1495: Draft\-Folder: +drafts
                   1496: sendf: -draftfolder +drafts
                   1497: .fi
                   1498: .in -.5i
                   1499: 
                   1500: Furthermore,
                   1501: let's assume that the program \fIsendf\fR is a (symbolic) link in the user's 
                   1502: \fB$HOME/bin/\fR directory to \fIsend\fR.
                   1503: Then, any of the commands
                   1504: 
                   1505: .in +.5i
                   1506: .nf
                   1507: comp
                   1508: dist
                   1509: forw
                   1510: repl
                   1511: .fi
                   1512: .in -.5i
                   1513: 
                   1514: constructs the message draft in the `draft' folder using the `new'
                   1515: message number.
                   1516: Furthermore,
                   1517: they each define `cur' in this folder to be that message draft.
                   1518: If the user were to use the \fIquit\fR option at `What now?' level,
                   1519: then later on,
                   1520: if no other draft composition was done,
                   1521: the draft could be sent with simply
                   1522: 
                   1523: .ti +.5i
                   1524: sendf
                   1525: 
                   1526: Or,
                   1527: if more editing was required,
                   1528: the draft could be edited with
                   1529: 
                   1530: .ti +.5i
                   1531: comp -use
                   1532: 
                   1533: Instead,
                   1534: if other drafts had been composed in the meantime,
                   1535: so that this message draft was no longer known as `cur' in the `draft'
                   1536: folder,
                   1537: then the user could \fIscan\fR the folder to see which message draft in the
                   1538: folder should be used for editing or sending.
                   1539: Clever users could even employ a back-quoted \fIpick\fR to do the work:
                   1540: 
                   1541: .ti +.5i
                   1542: comp -use `pick +drafts -to bug-mh`
                   1543: 
                   1544: or
                   1545: 
                   1546: .ti +.5i
                   1547: sendf `pick +drafts -to bug-mh`
                   1548: 
                   1549: Note that in the \fIcomp\fR example,
                   1550: the output from \fIpick\fR must resolve to a single message draft
                   1551: (it makes no sense to talk about composing two or more drafts with one
                   1552: invocation of \fIcomp\fR\0).
                   1553: In contrast,
                   1554: in the \fIsend\fR example,
                   1555: as many message drafts as desired can appear,
                   1556: since \fIsend\fR doesn't mind sending more than one draft at a time.
                   1557: .pp
                   1558: Note that the argument `\-draftfolder\0+folder' is not
                   1559: included in the profile entry for \fIsend\fR,
                   1560: since when \fIcomp\fR, et. al., invoke \fIsend\fR directly,
                   1561: they supply \fIsend\fR with the UNIX pathname of the message draft,
                   1562: and \fBnot\fR a `draftmessage\0msg' argument.
                   1563: As far as \fIsend\fR is concerned,
                   1564: a \fIdraft folder\fR is not being used.
                   1565: .pp
                   1566: It is important to realize that \fIMH\fR treats the draft folder like a standard
                   1567: \fIMH\fR folder in nearly all respects.
                   1568: There are two exceptions:
                   1569: .u first ,
                   1570: under no circumstancs will the `\-draftfolder\0folder' switch cause the
                   1571: named folder to become the current folder.\**
                   1572: .(f
                   1573: \** Obviously,
                   1574: if the folder appeared in the context of a standard `+folder'
                   1575: argument to an \fIMH\fR program, as in
                   1576: 
                   1577: .ti +.5i
                   1578: scan +drafts
                   1579: 
                   1580: it might become the current folder, depending on the context changes of the
                   1581: \fIMH\fR program in question.
                   1582: .)f
                   1583: .u Second ,
                   1584: although conceptually \fIsend\fR deletes the `msgs' named in the draft
                   1585: folder,
                   1586: it does not call `delete-prog' to perform the deletion.
                   1587: 
                   1588: .UH "What Happens if the Draft Exists"
                   1589: .pp
                   1590: When the \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR commands are
                   1591: invoked and the draft you indicated already exists,
                   1592: these programs will prompt the user for a reponse directing the program's
                   1593: action.
                   1594: The prompt is
                   1595: 
                   1596: .ti +.5i
                   1597: Draft ``/usr/src/uci/mh/mhbox/draft'' exists (xx bytes).
                   1598: .ti +.5i
                   1599: Disposition?
                   1600: 
                   1601: The appropriate responses and their meanings are:
                   1602: .u replace :
                   1603: deletes the draft and starts afresh;
                   1604: .u list :
                   1605: lists the draft;
                   1606: .u refile :
                   1607: files the draft into a folder and starts afresh;
                   1608: and,
                   1609: .u quit :
                   1610: leaves the draft intact and exits.
                   1611: In addition, if you specified `\-draftfolder\0folder' to the command,
                   1612: then one other response will be accepted:
                   1613: .u new :
                   1614: finds a new draft,
                   1615: just as if `\-draftmessage\0new' had been given.
                   1616: Finally, the \fIcomp\fR command will accept one more response:
                   1617: .u use :
                   1618: re-uses the draft,
                   1619: just as if `\-use' had been given.
                   1620: 
                   1621: .UH "The Push Option at What now? Level"
                   1622: .pp
                   1623: The \fIpush\fR option to the \*(lqWhat now?\*(rq query
                   1624: in the \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR commands,
                   1625: directs the command to \fIsend\fR the draft
                   1626: in a special detached fashion,
                   1627: with all normal output discarded.
                   1628: If \fIpush\fR is used and the draft can not be sent,
                   1629: then \fIMH\fR will send the user a message,
                   1630: indicating the name of the draft file,
                   1631: and an explanation of the failure.
                   1632: .\" Although using \fIpush\fR calls \fIsend\fR\0(1),
                   1633: .\" the \fIsend\fR command will consult the profile entry for \fIpush\fR.
                   1634: .pp
                   1635: The user can also invoke \fIsend\fR from the shell with the `\-push'
                   1636: switch,
                   1637: which makes \fIsend\fR act like it had been \fIpush\fR\0'd by one of the
                   1638: composition commands.
                   1639: .\" composition commands.\**
                   1640: .\" .(f
                   1641: .\" \** Note that in this case,
                   1642: .\" \fIsend\fR consults the profile entry for whatever name it was invoked as,
                   1643: .\" such as \fIsendf\fR.
                   1644: .\" .)f
                   1645: .pp
                   1646: By using \fIpush\fR, the user can free the shell to do other things,
                   1647: because it appears to the shell that the \fIMH\fR command has finished.
                   1648: As a result the shell will immediately prompt for another command,
                   1649: despite the fact that the command is really still running.
                   1650: Note that if the user indicates that annotations are to be performed
                   1651: (with `\-annotate' to \fIdist\fR, \fIforw\fR, or \fIrepl\fR),
                   1652: the annotations will be performed after the message has been
                   1653: successfully sent.
                   1654: This action will appear to occur asynchronously.
                   1655: Obviously, if one of the messages that is to be annotated is
                   1656: removed before the draft has been successfully sent,
                   1657: then when \fIMH\fR tries to make the annotations,
                   1658: it won't be able to do so.
                   1659: In previous versions of \fIMH\fR,
                   1660: this resulted in an error message mysteriously appearing on the user's
                   1661: terminal.
                   1662: In \fImh.5\fR and later versions,
                   1663: in this special circumstance, no error will be generated.
                   1664: .pp
                   1665: If send is \fIpush\fR\0'd,
                   1666: then the `\-forward' switch is examined if a failure notice is generated.
                   1667: If given,
                   1668: then the draft is forwarded with the failure notice sent to the user.
                   1669: This allows rapid \fIburst\fR\0'ing of the failure notice to retrieve the
                   1670: unsent draft.
                   1671: 
                   1672: .UH "Options at What now? Level"
                   1673: .pp
                   1674: By default,
                   1675: the message composition programs call a program called \fIwhatnow\fR before
                   1676: the initial draft composition.
                   1677: The \fIMH\fR user can specify any program for this.
                   1678: Following is some information about the default \*(lqWhat now?\*(rq level.
                   1679: More detailed information can be found in the \fIwhatnow\fR\0(1) manual entry.
                   1680: .pp
                   1681: When using the \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR commands at
                   1682: \*(lqWhat now?\*(rq level,
                   1683: the \fIedit\fR, \fIlist\fR, \fIheaders\fR, \fIrefile\fR,
                   1684: and (for the \fIdist\fR and \fIrepl\fR commands) the \fIdisplay\fR options
                   1685: will pass on any additional arguments given them to whatever program they
                   1686: invoke.
                   1687: .pp
                   1688: In \fImh.1\fR (the original Rand \fIMH\fR\0)
                   1689: and \fImh.2\fR (the first UCI version of \fIMH\fR\0),
                   1690: \fIMH\fR used a complicated heuristic to determine if the draft should be
                   1691: deleted or preserved after an unsuccessful edit.
                   1692: In \fImh.3\fR,
                   1693: \fIMH\fR was changed to preserve the draft always,
                   1694: since \fIcomp\fR, et. al.,
                   1695: could usually look at a draft, apply another set of heuristics,
                   1696: and decide if it was important or not.
                   1697: With the notion of a \fIdraft folder\fR, 
                   1698: in which one by default gets a `new' message draft,
                   1699: the edit deletion/preservation algorithm was re-implemented,
                   1700: to keep the draft folder from being cluttered with aborted edits.
                   1701: .pp
                   1702: Also,
                   1703: note that by default,
                   1704: if the draft cannot be successfully sent,
                   1705: these commands return to \*(lqWhat now?\*(rq level.
                   1706: But, when \fIpush\fR is used, this does not happen (obviously).
                   1707: Hence,
                   1708: if these commands were expected to annotate any messages,
                   1709: this will have to be done by hand, later on, with the \fIanno\fR command.
                   1710: .pp
                   1711: Finally, if the `\-delete' switch is not given to the \fIquit\fR option,
                   1712: then these commands will inform the user of the name of the unsent draft file.
                   1713: 
                   1714: .UH "Digests"
                   1715: .pp
                   1716: The \fIforw\fR command has the beginnings of a digestifying facility,
                   1717: with the `\-digest\ list', `\-issue\ number', and `\-volume\ number' switches.
                   1718: 
                   1719: If \fIforw\fR is given \*(lqlist\*(rq to the `\-digest' switch
                   1720: as the name of the discussion group,
                   1721: and the `\-issue\ number' switch is not given,
                   1722: then \fIforw\fR looks for an entry in the user's \fIMH\fR context called
                   1723: \*(lq\fIdigest\fR\-issue\-list\*(rq and increments its value to use as the
                   1724: issue number.
                   1725: Similarly,
                   1726: if the `\-volume\ number' switch is not given,
                   1727: then \fIforw\fR looks for \*(lq\fIdigest\fR\-volume\-list\*(rq
                   1728: (but does not increment its value) to use as the volume number.
                   1729: 
                   1730: Having calculated the name of the digest and the volume and issue numbers,
                   1731: \fIforw\fR will now process the components file using the same format string
                   1732: mechanism used by \fIrepl\fR.
                   1733: The current `%'\-escapes are:
                   1734: 
                   1735: .nf
                   1736: .ta \w'escape  'u +\w'integer  'u
                   1737: \fIescape\fR   \fItype\fR      \fIsubstitution\fR
                   1738: digest string  digest name
                   1739: issue  integer issue number
                   1740: volume integer volume number
                   1741: .re
                   1742: .fi
                   1743: 
                   1744: In addition, to capture the current date,
                   1745: any of the escapes valid for \fIdp\fR\0(8) are also valid for \fIforw\fR.
                   1746: 
                   1747: The default components file used by \fIforw\fR when in digest mode is:
                   1748: 
                   1749: .nf
                   1750: .in +.5i
                   1751: .ne 10
                   1752: .eo
                   1753: .so @(MHETCPATH)/digestcomps
                   1754: .ec
                   1755: .in -.5i
                   1756: .fi
                   1757: 
                   1758: Hence, when the `\-digest' switch is present,
                   1759: the first step taken by \fIforw\fR is to expand the format strings in the
                   1760: component file.
                   1761: The next step is to compose the draft using
                   1762: the standard digest encapsulation algorithm
                   1763: (even putting an \*(lqEnd of list Digest\*(rq trailer in the draft).
                   1764: Once the draft is composed by \fIforw\fR,
                   1765: \fIforw\fR writes out the volume and issue profile entries for the digest,
                   1766: and then invokes the editor.
                   1767: 
                   1768: Naturally, when composing the draft,
                   1769: \fIforw\fR will honor the `\-filter\ filterfile' switch,
                   1770: which is given to \fImhl\fR to filter each message being forwarded prior to
                   1771: encapsulation in the draft.
                   1772: A good filter file to use, which is called \fImhl.digest\fR, is:
                   1773: 
                   1774: .nf
                   1775: .in +.5i
                   1776: .ne 10
                   1777: .eo
                   1778: .so @(MHETCPATH)/mhl.digest
                   1779: .ec
                   1780: .in -.5i
                   1781: .fi
                   1782: 
                   1783: .uh "FOLDER HANDLING"
                   1784: .pp
                   1785: There are two interesting facilities for manipulating folders:
                   1786: relative folder addressing,
                   1787: which allows a user to shorten the typing of long folder names;
                   1788: and
                   1789: the folder\-stack,
                   1790: which permits a user to keep a stack of current folders.
                   1791: 
                   1792: .UH "Relative Folder Addressing"
                   1793: .pp
                   1794: By default, when `+folder' is given,
                   1795: and the folder name is not absolute
                   1796: (does not start with \fB/\fR, \fB\&./\fR, or \fB\&.\&./\fR),
                   1797: then the UNIX pathname of the folder is interpreted relative to the user's
                   1798: \fIMH\fR directory.
                   1799: Although this mechanism works fine for top\-level folders and their immediate
                   1800: sub\-folders,
                   1801: once the depth of the sub\-folder tree grows, it becomes rather unwieldly:
                   1802: 
                   1803: .ti +.5i
                   1804: scan\0+mh/mh.4/draft/flames
                   1805: 
                   1806: is a lot of typing.
                   1807: \fIMH\fR can't do anything if the current folder was \*(lq+inbox\*(rq,
                   1808: but if the current folder was, say, \*(lq+mh/mh.4/draft\*(rq,
                   1809: \fIMH\fR has a short\-hand notation to reference a sub\-folder of the
                   1810: current folder.
                   1811: Using the `@folder' notation,
                   1812: the \fIMH\fR user can direct any \fIMH\fR program which expects a `+folder'
                   1813: argument to look for the folder relative to the current folder instead of the
                   1814: user's \fIMH\fR directory.
                   1815: Hence, if the current folder \fIwas\fR \*(lq+mh/mh.4/draft\*(rq,
                   1816: then
                   1817: 
                   1818: .ti +.5i
                   1819: scan\0@flames
                   1820: 
                   1821: would do the trick handily.
                   1822: In addition, if the current folder \fIwas\fR \*(lq+mh/mh.4/draft\*(rq,
                   1823: 
                   1824: .ti +.5i
                   1825: scan\0@../pick
                   1826: 
                   1827: would scan the folder \*(lq+mh/mh.4/pick\*(rq,
                   1828: since, in the UNIX fashion,
                   1829: it references the folder \*(lqpick\*(rq which is a sub\-folder of
                   1830: the folder that is the parent of the current folder.
                   1831: Since most advanced \fIMH\fR users seem to exhibit a large degree of locality
                   1832: in referencing folders when they process mail,
                   1833: this convention should receive a wide range of uses.
                   1834: 
                   1835: .UH "The Folder\-Stack"
                   1836: .pp
                   1837: The \fIfolder\-stack\fR mechanism in \fIMH\fR gives the \fIMH\fR user a
                   1838: facility similar to the \fICShell\fR\0's directory\-stack.
                   1839: Simply put,
                   1840: 
                   1841: .ti +.5i
                   1842: folder\0\-push\0+foo
                   1843: 
                   1844: makes \*(lqfoo\*(rq the current folder,
                   1845: saving the folder that was previously the current folder on the
                   1846: \fIfolder\-stack\fR.
                   1847: As expected,
                   1848: 
                   1849: .ti +.5i
                   1850: folder\0\-pop
                   1851: 
                   1852: takes the top of the \fIfolder\-stack\fR and makes it the current folder.
                   1853: Each of these switches lists the \fIfolder\-stack\fR when they execute.
                   1854: It is simple to write a \fIpushf\fR command as a shell script.
                   1855: It's one line:
                   1856: 
                   1857: .ti +.5i
                   1858: exec\0folder\0\-push\0$@
                   1859: 
                   1860: Probably a better way is to link \fIfolder\fR to the $HOME/bin/ directory under
                   1861: the name of \fIpushf\fR and then add the entry
                   1862: 
                   1863: .ti +.5i
                   1864: pushf:\0\-push
                   1865: 
                   1866: to the \&.mh\(ruprofile.
                   1867: .pp
                   1868: The manual page for \fIfolder\fR discusses the analogy between the
                   1869: \fICShell\fR directory stack commands and the switches in \fIfolder\fR which
                   1870: manipulate the \fIfolder\-stack\fR.
                   1871: The \fIfolder\fR command uses the context entry `Folder\-Stack:' to keep
                   1872: track of the folders in the user's stack of folders.
                   1873: \"
                   1874: \"              On to the Appendices
                   1875: \"
                   1876: .fo ''-%-''
                   1877: .he ''''
                   1878: .(x
                   1879: .sp
                   1880: Appendix
                   1881: .)x _
                   1882: .de $c                          \" Major Heading printer
                   1883: .ce
                   1884: Appendix \\n+(ch
                   1885: .sp 2p
                   1886: .ce
                   1887: .b "\\s12\\$1\\s0"              \" 12 Point Bold Header
                   1888: .(x
                   1889: \ \ \ \\n(ch.\\ \\ \\$2
                   1890: .)x
                   1891: .sp 45p                                \" 45 points or about 1/2 inch
                   1892: ..
                   1893: .++ A
                   1894: .bp
                   1895: .$c "COMMAND SUMMARY" "Command Summary"
                   1896: .po -.50i
                   1897: .so mh-chart.me
                   1898: .po +.50i
                   1899: .if t \{
                   1900: .ll 32P
                   1901: .lt 32P
                   1902: \}
                   1903: .bp
                   1904: .$c "MESSAGE NAME BNF" "Message Name BNF"
                   1905: 
                   1906: .nf
                   1907: .in 1i
                   1908: .ta \w'signed-number 'u +\w':=  'u +\w'user-defined-sequence  'u
                   1909: msgs   :=      msgspec |
                   1910:                msgs msgspec
                   1911: 
                   1912: msgspec        :=      msg     |
                   1913:                msg-range       |
                   1914:                msg-sequence    |
                   1915:                user-defined-sequence
                   1916: 
                   1917: msg    :=      msg-name        |
                   1918:                <number>
                   1919: 
                   1920: msg-name       :=      \*(lqfirst\*(rq |
                   1921:                \*(lqlast\*(rq  |
                   1922:                \*(lqcur\*(rq   |
                   1923:                \*(lq\&.\*(rq   |
                   1924:                \*(lqnext\*(rq  |
                   1925:                \*(lqprev\*(rq
                   1926: 
                   1927: msg-range      :=      msg\*(lq-\*(rqmsg       |
                   1928:                \*(lqall\*(rq
                   1929: 
                   1930: msg-sequence   :=      msg\*(lq:\*(rqsigned-number
                   1931: 
                   1932: signed-number  :=      \*(lq+\*(rq<number>     |
                   1933:                \*(lq-\*(rq<number>     |
                   1934:                <number>
                   1935: .re
                   1936: .fi
                   1937: .sp
                   1938: .lp
                   1939: Where <number> is a decimal number greater than zero.
                   1940: .lp
                   1941: Msg-range specifies all of the messages in the given range
                   1942: and must not be empty.
                   1943: .lp
                   1944: Msg-sequence specifies up to <number> of messages, beginning
                   1945: with \*(lqmsg\*(rq (in the case of first, cur, next, or <number>),
                   1946: or ending with \*(lqmsg\*(rq (in the case of prev or last).
                   1947: +<number> forces \*(lqstarting with msg\*(rq, and \-<number> forces
                   1948: \*(lqending with number\*(rq.
                   1949: In all cases, \*(lqmsg\*(rq must exist.
                   1950: .lp
                   1951: User\-defined sequences are defined and manipulated with the \fIpick\fR
                   1952: and \fImark\fR commands.
                   1953: .in 0
                   1954: .bp
                   1955: .ce
                   1956: .b \\s12REFERENCES\\s0
                   1957: .(x
                   1958: .sp
                   1959: REFERENCES
                   1960: .)x
                   1961: .sp 3
                   1962: .in .4i
                   1963: .ti 0
                   1964: 1.  Crocker, D. H., J. J. Vittal, K. T. Pogran, and D. A. Henderson, Jr.,
                   1965: \*(lqStandard for the Format of ARPA Network Text Messages,\*(rq
                   1966: \fIRFC733\fR,
                   1967: November 1977.
                   1968: 
                   1969: .ti 0
                   1970: 2.  Thompson, K., and D. M. Ritchie, \*(lqThe UNIX Time-sharing System,\*(rq
                   1971: \fICommunications of the ACM\fR, Vol. 17, July 1974, pp. 365-375.
                   1972: 
                   1973: .ti 0
                   1974: 3.  McCauley, E. J., and P. J. Drongowski, \*(lqKSOS\-The Design of a Secure
                   1975: Operating System,\*(rq \fIAFIPS Conference Proceedings\fR,
                   1976: National Computer Conference,
                   1977: Vol. 48, 1979, pp. 345-353.
                   1978: 
                   1979: .ti 0
                   1980: 4.  Crocker, David H., \fIFramework and Functions of the \*(lqMS\*(rq Personal
                   1981: Message System\fR, The Rand Corporation, R-2134-ARPA, December 1977.
                   1982: 
                   1983: .ti 0
                   1984: 5.  Thompson, K., and D. M. Ritchie, \fIUNIX Programmer's Manual\fR, 6th ed.,
                   1985: Western Electric Company, May 1975 (available only to UNIX licensees).
                   1986: 
                   1987: .ti 0
                   1988: 6. Crocker, D. H.,
                   1989: \*(lqStandard for the Format of ARPA Internet Text Messages,\*(rq
                   1990: \fIRFC822\fR,
                   1991: August 1982.
                   1992: .de $c
                   1993: .ce
                   1994: .b "\\s12\\$1\\s0"   \" 12 Point Bold Header
                   1995: .(x y
                   1996: .sp
                   1997: \\$1
                   1998: .)x
                   1999: .sp 3
                   2000: ..
                   2001: .++ P
                   2002: .bp 1
                   2003: .fo ''''
                   2004: .he ''-%-''
                   2005: .+c "READ THIS"
                   2006: .pp
                   2007: Although the \fIMH\fR system was originally developed by the Rand Corporation,
                   2008: and is now in the public domain,
                   2009: the Rand Corporation assumes no responsibility for \fIMH\fR
                   2010: or this particular version of \fIMH\fR.
                   2011: .pp
                   2012: In addition,
                   2013: the Regents of the University of California issue the following
                   2014: \fBdisclaimer\fR in regard to the UCI version of \fIMH\fR:
                   2015: .sp 1
                   2016: .in +.5i
                   2017: \*(lqAlthough each program has been tested by its contributor,
                   2018: no warranty, express or implied,
                   2019: is made by the contributor or the University of California,
                   2020: as to the accuracy and functioning of the program
                   2021: and related program material,
                   2022: nor shall the fact of distribution constitute any such warranty,
                   2023: and no responsibility is assumed by the contributor
                   2024: or the University of California in connection herewith.\*(rq
                   2025: .in -.5i
                   2026: .pp
                   2027: This version of \fIMH\fR is in the public domain,
                   2028: and as such,
                   2029: there are no real restrictions on its use.
                   2030: The \fIMH\fR source code and documentation have no licensing restrictions
                   2031: whatsoever.
                   2032: As a courtesy,
                   2033: the authors ask only that you provide appropriate credit to the Rand
                   2034: Corporation and the University of California for having developed the software.
                   2035: .pp
                   2036: \fIMH\fR is a software package that is supported neither by the Rand
                   2037: Corporation nor the University of California.
                   2038: However,
                   2039: since we do use the software ourselves and plan to continue using
                   2040: (and improving) \fIMH\fR,
                   2041: bug reports and their associated fixes should be reported back to us so that
                   2042: we may include them in future releases.
                   2043: The current computer mailbox for \fIMH\fR is \fBBug\[email protected]\fR
                   2044: (in the ARPA Internet),
                   2045: and \fB...!ucbvax!ucivax!bug\-mh\fR (UUCP).
                   2046: Presently,
                   2047: there are two Internet discussion groups,
                   2048: \fBMH\[email protected]\fR and \fBMH\[email protected]\fR.
                   2049: If there is sufficient interest,
                   2050: corresponding Usenet news groups may be established along with the
                   2051: appropriate gateways.
                   2052: .+c FOREWORD
                   2053: .pp
                   2054: This document describes the Rand \fIMH\fR Message Handling System.
                   2055: Its primary purpose is to serve as a user's manual.
                   2056: It has been heavily based on a previous version of the manual,
                   2057: prepared by Bruce Borden, Stockton Gaines, and Norman Shapiro.
                   2058: .pp
                   2059: \fIMH\fR is a particularly novel system,
                   2060: and thus it is often more prone to change than other pieces of production
                   2061: software.
                   2062: As such, some specific points in this manual may not be correct in the
                   2063: future.
                   2064: In all cases, the on\-line sections of this manual,
                   2065: available through the UNIX\** \fIman\fR command,
                   2066: should present the most current information.
                   2067: .(f
                   2068: \** UNIX is a trademark of AT&T Bell Laboratories.
                   2069: .)f
                   2070: .pp
                   2071: When reading this document as a user's manual,
                   2072: certain sections are more interesting than others.
                   2073: The Preface and Summary are not particularly interesting to those
                   2074: interested in learning \fIMH\fR.
                   2075: The Introduction is slightly more interesting,
                   2076: as it touches upon the organization of the remainder of this document.
                   2077: The most useful sections are the Overview, Tutorial, and Detailed
                   2078: Description.
                   2079: The Overview should be read by all \fIMH\fR users, regardless of their
                   2080: expertise (beginning, novice, advanced, or hacker).
                   2081: The Tutorial should be read by all beginning and novice \fIMH\fR users,
                   2082: as it presents a nice description of the \fIMH\fR system.
                   2083: The Detailed Description should be read by the day\-to\-day user of \fIMH\fR,
                   2084: as it spells out all of the realities of the \fIMH\fR system.
                   2085: The Advanced Features section discusses some powerful \fIMH\fR capabilities for
                   2086: advanced users.
                   2087: Appendix A is particularly useful for novices,
                   2088: as it summarizes the invocation syntax of all the \fIMH\fR commands.
                   2089: .pp
                   2090: There are also several other documents which may be useful to you:
                   2091: \fIThe Rand MH Message Handling System: Tutorial\fR,
                   2092: which is a tutorial for \fIMH\fR;
                   2093: \fIThe Rand MH Message Handling System: The UCI BBoards Facility\fR,
                   2094: which describes the BBoards handling under \fIMH\fR;
                   2095: \fIMH.5: How to process 200 messages a day and still get some real work
                   2096: done\fR,
                   2097: which was presented at the 1985 Summer Usenix Conference and
                   2098: Exhibition in Portland, Oregon;
                   2099: \fIMH: A Multifarious User Agent\fR,
                   2100: which has been accepted for publication by Computer Networks;
                   2101: \fIMZnet: Mail Service for Personal Micro\-Computer Systems\fR,
                   2102: which was presented at the First International Symposium on Computer Message
                   2103: Systems in Nottingham, U.K.;
                   2104: and,
                   2105: \fIDesign of the TTI Prototype Trusted Mail Agent\fR,
                   2106: which describes a proprietary \*(lqtrusted\*(rq mail system built on \fIMH\fR.
                   2107: All of these documents exist in the \fImh.6\fR distribution sent to your
                   2108: site.
                   2109: There's also a document,
                   2110: \fIChanges to the Rand MH Message Handling System: MH.6\fR,
                   2111: which describes user\-visible changes made to \fIMH\fR since the last major
                   2112: release.
                   2113: .pp
                   2114: This manual is very large, as it describes a large, powerful system in
                   2115: gruesome detail.
                   2116: The important thing to remember is:
                   2117: .sp 2
                   2118: .ce
                   2119: .b "\s+4DON'T PANIC\s0\**"
                   2120: .sp 2
                   2121: As explained in the tutorial, you really need to know only 5 commands to
                   2122: handle most of your mail.
                   2123: .(f
                   2124: \** Note the large, \fIfriendly\fR letters.
                   2125: .)f
                   2126: .pp
                   2127: Very advanced users may wish to consult 
                   2128: \fIThe Rand MH Message Handling System: Administrator's Guide\fR,
                   2129: which is also present in the \fImh.6\fR distribution sent to your site.
                   2130: .+c ACKNOWLEDGMENTS
                   2131: .pp
                   2132: The \fIMH\fR system described herein is based on the original Rand \fIMH\fR
                   2133: system.
                   2134: It has been extensively developed (perhaps too much so) by Marshall T. Rose and
                   2135: John L. Romine at the University of California, Irvine.
                   2136: Einar A. Stefferud, Jerry N. Sweet, and Terry P. Domae provided numerous
                   2137: suggestions to improve the UCI version of \fIMH\fR.
                   2138: Of course,
                   2139: a large number of people have helped \fIMH\fR along.
                   2140: The list of ``\fIMH\fR immortals'' is too long to list here.
                   2141: However, Van Jacobson deserves a special acknowledgement for his tireless
                   2142: work in improving the performance of \fIMH\fR.
                   2143: Some programs have been speeded-up by a factor of 10 or 20.
                   2144: All of users of \fIMH\fR, everywhere, owe a special thanks to Van.
                   2145: .pp
                   2146: This manual is based on the original \fIMH\fR manual written at Rand by
                   2147: Bruce Borden, Stockton Gaines, and Norman Shapiro.
                   2148: .+c PREFACE
                   2149: .pp
                   2150: This report describes a system for dealing with messages transmitted on a
                   2151: computer.  Such messages might originate with other users of the same
                   2152: computer or might come from an outside source through a network to which the user's
                   2153: computer is connected.  Such computer-based message systems are
                   2154: becoming increasingly widely used, both within and outside the Department
                   2155: of Defense.
                   2156: .pp
                   2157: The message handling system \fIMH\fR was developed for two reasons.
                   2158: One was to investigate some
                   2159: research ideas concerning how a message system might take advantage of
                   2160: the architecture of the UNIX time-sharing operating system for
                   2161: Digital Equipment Corporation PDP-11 and VAX computers, and the special
                   2162: features of UNIX's command-level interface with the user (the
                   2163: \*(lqshell\*(rq).  The other reason was to provide a better and more
                   2164: adaptable base than that of conventional designs
                   2165: on which to build a command and control message system.
                   2166: The effort has succeeded in both
                   2167: regards, although this report mainly describes the message system itself
                   2168: and how it fits in with UNIX.
                   2169: .pp
                   2170: The present report should be of interest to three groups of readers.  First,
                   2171: it is a complete reference manual for the users of \fIMH\fR.
                   2172: Second, it should be
                   2173: of interest to those who have a general knowledge of computer-based
                   2174: message systems, both in civilian and military applications.  Finally,
                   2175: it should be of interest to those who build large subsystems that
                   2176: interface with users, since it illustrates a new approach to such
                   2177: interfaces.
                   2178: .pp
                   2179: The original \fIMH\fR system was developed by Bruce Borden,
                   2180: using an approach suggested by Stockton Gaines and Norman Shapiro.
                   2181: Valuable assistance was provided by Phyllis Kantar in the later
                   2182: stages of the system's implementation.
                   2183: Several colleagues
                   2184: contributed to the ideas included in this system, particularly
                   2185: Robert Anderson and David Crocker.
                   2186: In addition, valuable experience
                   2187: in message systems, and a valuable source of ideas, was available
                   2188: to us in the form of a previous message system for UNIX called
                   2189: MS, designed at Rand by David Crocker.
                   2190: .pp
                   2191: This report was originally prepared as part of the Rand project entitled
                   2192: \*(lqData Automation Research\*(rq, sponsored by Project AIR FORCE.
                   2193: .+c SUMMARY
                   2194: .pp
                   2195: Electronic communication of text messages is becoming
                   2196: commonplace.  Computer-based message systems\-software
                   2197: packages that provide tools for dealing with messages\-are used in many
                   2198: contexts.  In particular, message systems are becoming
                   2199: increasingly important in command and control and intelligence
                   2200: applications.
                   2201: .pp
                   2202: This report describes a message handling system called \fIMH\fR.
                   2203: This system provides the user
                   2204: with tools to compose, send, receive, store, retrieve, forward, and
                   2205: reply to messages.  \fIMH\fR has been built on the UNIX time-sharing system,
                   2206: a popular operating system developed for the DEC PDP-11 and VAX classes of
                   2207: computers.
                   2208: .pp
                   2209: A complete description of \fIMH\fR is given for users of
                   2210: the system.  For those who do not intend to use the system, this description
                   2211: gives a general idea of what a message system is like.  The system involves
                   2212: some new ideas about how large subsystems can be constructed.
                   2213: .pp
                   2214: The interesting and unusual features of \fIMH\fR include the
                   2215: following:  The user command interface to \fIMH\fR is the UNIX \*(lqshell\*(rq
                   2216: (the standard UNIX command interpreter).  Each separable
                   2217: component of message handling, such as message composition or
                   2218: message display, is a separate command.  Each program is driven from
                   2219: and updates a private user environment, which is stored as a file
                   2220: between program invocations.  This private environment also contains
                   2221: information to \*(lqcustom tailor\*(rq \fIMH\fR to the individual's tastes.
                   2222: \fIMH\fR stores each message as a separate file under UNIX, and it utilizes the
                   2223: tree-structured UNIX file system to organize groups of files within
                   2224: separate directories or \*(lqfolders\*(rq.  All of the UNIX facilities
                   2225: for dealing with files and directories, such as
                   2226: renaming, copying, deleting, cataloging, off-line printing, etc., are
                   2227: applicable to messages and directories of messages (folders).  Thus,
                   2228: important capabilities needed in a message system are available in \fIMH\fR
                   2229: without the need (often seen in other message systems) for code that
                   2230: duplicates the facilities of the supporting operating system.
                   2231: It also allows users familiar with the shell to use \fIMH\fR with minimal
                   2232: effort.
                   2233: .he ''''
                   2234: .fo ''''
                   2235: .bp
                   2236: .ce
                   2237: .b \\s12CONTENTS\\s0
                   2238: .sp 3
                   2239: .xp y
                   2240: .xp x
                   2241: .bp
                   2242: .\"    And now the COVER sheet
                   2243: .po +.325i
                   2244: .ll 32P
                   2245: .nf
                   2246:  
                   2247: .sp 1.5in
                   2248: .ps 24
                   2249: .vs 32
                   2250: .ft B
                   2251: .ce 4
                   2252: THE RAND MH
                   2253: MESSAGE HANDLING
                   2254: SYSTEM:
                   2255: USER'S MANUAL
                   2256: .ft R
                   2257: .sp .8i
                   2258: .ps 20
                   2259: .vs 24
                   2260: .ce
                   2261: UCI Version
                   2262: .sp 0.7i
                   2263: .ce 2
                   2264: Marshall T. Rose
                   2265: John L. Romine
                   2266: .sp 0.5i
                   2267: .ce 2
                   2268: Based on the original manual by
                   2269: Borden, Gaines, and Shapiro
                   2270: .vs
                   2271: .sp 1i
                   2272: .ps 18
                   2273: .vs 22
                   2274: .ce 2
                   2275: \*(td
                   2276: \*(MH

unix.superglobalmegacorp.com

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