📄 mh.rf
字号:
.\" .(f.\" \** Note that in this case,.\" \fIsend\fR consults the profile entry for whatever name it was invoked as,.\" such as \fIsendf\fR..\" .)f.ppBy using \fIpush\fR, the user can free the shell to do other things,because it appears to the shell that the \fIMH\fR command has finished.As a result the shell will immediately prompt for another command,despite the fact that the command is really still running.Note that if the user indicates that annotations are to be performed(with `\-annotate' to \fIdist\fR, \fIforw\fR, or \fIrepl\fR),the annotations will be performed after the message has beensuccessfully sent.This action will appear to occur asynchronously.Obviously, if one of the messages that is to be annotated isremoved before the draft has been successfully sent,then when \fIMH\fR tries to make the annotations,it won't be able to do so.In previous versions of \fIMH\fR,this resulted in an error message mysteriously appearing on the user'sterminal.In \fImh.5\fR and later versions,in this special circumstance, no error will be generated..ppIf send is \fIpush\fR\0'd,then the `\-forward' switch is examined if a failure notice is generated.If given,then the draft is forwarded with the failure notice sent to the user.This allows rapid \fIburst\fR\0'ing of the failure notice to retrieve theunsent draft..UH "Options at What now? Level".ppBy default,the message composition programs call a program called \fIwhatnow\fR beforethe initial draft composition.The \fIMH\fR user can specify any program for this.Following is some information about the default \*(lqWhat now?\*(rq level.More detailed information can be found in the \fIwhatnow\fR\0(1) manual entry..ppWhen using the \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR commands at\*(lqWhat now?\*(rq level,the \fIedit\fR, \fIlist\fR, \fIheaders\fR, \fIrefile\fR,and (for the \fIdist\fR and \fIrepl\fR commands) the \fIdisplay\fR optionswill pass on any additional arguments given them to whatever program theyinvoke..ppIn \fImh.1\fR (the original RAND \fIMH\fR\0)and \fImh.2\fR (the first UCI version of \fIMH\fR\0),\fIMH\fR used a complicated heuristic to determine if the draft should bedeleted or preserved after an unsuccessful edit.In \fImh.3\fR,\fIMH\fR was changed to preserve the draft always,since \fIcomp\fR, et. al.,could usually look at a draft, apply another set of heuristics,and decide if it was important or not.With the notion of a \fIdraft folder\fR, in which one by default gets a `new' message draft,the edit deletion/preservation algorithm was re-implemented,to keep the draft folder from being cluttered with aborted edits..ppAlso,note that by default,if the draft cannot be successfully sent,these commands return to \*(lqWhat now?\*(rq level.But, when \fIpush\fR is used, this does not happen (obviously).Hence,if these commands were expected to annotate any messages,this will have to be done by hand, later on, with the \fIanno\fR command..ppFinally, if the `\-delete' switch is not given to the \fIquit\fR option,then these commands will inform the user of the name of the unsent draft file..UH "Digests".ppThe \fIforw\fR command has the beginnings of a digestifying facility,with the `\-digest\ list', `\-issue\ number', and `\-volume\ number' switches.If \fIforw\fR is given \*(lqlist\*(rq to the `\-digest' switchas the name of the discussion group,and the `\-issue\ number' switch is not given,then \fIforw\fR looks for an entry in the user's \fIMH\fR context called\*(lq\fIdigest\fR\-issue\-list\*(rq and increments its value to use as theissue number.Similarly,if the `\-volume\ number' switch is not given,then \fIforw\fR looks for \*(lq\fIdigest\fR\-volume\-list\*(rq(but does not increment its value) to use as the volume number.Having calculated the name of the digest and the volume and issue numbers,\fIforw\fR will now process the components file using the same format stringmechanism used by \fIrepl\fR.The current `%'\-escapes are:.nf.ta \w'escape 'u +\w'integer 'u\fIescape\fR \fItype\fR \fIsubstitution\fRdigest string digest namemsg integer issue numbercur integer volume number.re.fiIn addition, to capture the current date,any of the escapes valid for \fIdp\fR\0(8) are also valid for \fIforw\fR.The default components file used by \fIforw\fR when in digest mode is:.nf.in +.5i.ne 10.eo.so @(MHETCPATH)/digestcomps.ec.in -.5i.fiHence, when the `\-digest' switch is present,the first step taken by \fIforw\fR is to expand the format strings in thecomponent file.The next step is to compose the draft usingthe standard digest encapsulation algorithm(even putting an \*(lqEnd of list Digest\*(rq trailer in the draft).Once the draft is composed by \fIforw\fR,\fIforw\fR writes out the volume and issue profile entries for the digest,and then invokes the editor.Naturally, when composing the draft,\fIforw\fR will honor the `\-filter\ filterfile' switch,which is given to \fImhl\fR to filter each message being forwarded prior toencapsulation in the draft.A good filter file to use, which is called \fImhl.digest\fR, is:.nf.in +.5i.ne 10.eo.so @(MHETCPATH)/mhl.digest.ec.in -.5i.fi.uh "FOLDER HANDLING".ppThere are two interesting facilities for manipulating folders:relative folder addressing,which allows a user to shorten the typing of long folder names;andthe folder\-stack,which permits a user to keep a stack of current folders..UH "Relative Folder Addressing".ppBy default, when `+folder' is given,and the folder name is not absolute(does not start with \fB/\fR, \fB\&./\fR, or \fB\&.\&./\fR),then the UNIX pathname of the folder is interpreted relative to the user's\fIMH\fR directory.Although this mechanism works fine for top\-level folders and their immediatesub\-folders,once the depth of the sub\-folder tree grows, it becomes rather unwieldly:.ti +.5iscan\0+mh/mh.4/draft/flamesis a lot of typing.\fIMH\fR can't do anything if the current folder was \*(lq+inbox\*(rq,but if the current folder was, say, \*(lq+mh/mh.4/draft\*(rq,\fIMH\fR has a short\-hand notation to reference a sub\-folder of thecurrent folder.Using the `@folder' notation,the \fIMH\fR user can direct any \fIMH\fR program which expects a `+folder'argument to look for the folder relative to the current folder instead of theuser's \fIMH\fR directory.Hence, if the current folder \fIwas\fR \*(lq+mh/mh.4/draft\*(rq,then.ti +.5iscan\0@flameswould do the trick handily.In addition, if the current folder \fIwas\fR \*(lq+mh/mh.4/draft\*(rq,.ti +.5iscan\0@../pickwould scan the folder \*(lq+mh/mh.4/pick\*(rq,since, in the UNIX fashion,it references the folder \*(lqpick\*(rq which is a sub\-folder ofthe folder that is the parent of the current folder.Since most advanced \fIMH\fR users seem to exhibit a large degree of localityin referencing folders when they process mail,this convention should receive a wide range of uses..UH "The Folder\-Stack".ppThe \fIfolder\-stack\fR mechanism in \fIMH\fR gives the \fIMH\fR user afacility similar to the \fICShell\fR\0's directory\-stack.Simply put,.ti +.5ifolder\0\-push\0+foomakes \*(lqfoo\*(rq the current folder,saving the folder that was previously the current folder on the\fIfolder\-stack\fR.As expected,.ti +.5ifolder\0\-poptakes the top of the \fIfolder\-stack\fR and makes it the current folder.Each of these switches lists the \fIfolder\-stack\fR when they execute.It is simple to write a \fIpushf\fR command as a shell script.It's one line:.ti +.5iexec\0folder\0\-push\0$@Probably a better way is to link \fIfolder\fR to the $HOME/bin/ directory underthe name of \fIpushf\fR and then add the entry.ti +.5ipushf:\0\-pushto the \&.mh\(ruprofile..ppThe manual page for \fIfolder\fR discusses the analogy between the\fICShell\fR directory stack commands and the switches in \fIfolder\fR whichmanipulate the \fIfolder\-stack\fR.The \fIfolder\fR command uses the context entry `Folder\-Stack:' to keeptrack of the folders in the user's stack of folders.\"\" On to the Appendices\".fo ''-%-''.he ''''.(x.spAppendix.)x _.de $c \" Major Heading printer.ceAppendix \\n+(ch.sp 2p.ce.b "\\s12\\$1\\s0" \" 12 Point Bold Header.(x\ \ \ \\n(ch.\\ \\ \\$2.)x.sp 45p \" 45 points or about 1/2 inch...++ A.bp.$c "COMMAND SUMMARY" "Command Summary".po -.50i.so mh-chart.me.po +.50i.if t \{.ll 32P.lt 32P\}.bp.$c "MESSAGE NAME BNF" "Message Name BNF".nf.in 1i.ta \w'signed-number 'u +\w':= 'u +\w'user-defined-sequence 'umsgs := msgspec | msgs msgspecmsgspec := msg | msg-range | msg-sequence | user-defined-sequencemsg := msg-name | <number>msg-name := \*(lqfirst\*(rq | \*(lqlast\*(rq | \*(lqcur\*(rq | \*(lq\&.\*(rq | \*(lqnext\*(rq | \*(lqprev\*(rqmsg-range := msg\*(lq-\*(rqmsg | \*(lqall\*(rqmsg-sequence := msg\*(lq:\*(rqsigned-numbersigned-number := \*(lq+\*(rq<number> | \*(lq-\*(rq<number> | <number>.re.fi.sp.lpWhere <number> is a decimal number greater than zero..lpMsg-range specifies all of the messages in the given rangeand must not be empty..lpMsg-sequence specifies up to <number> of messages, beginningwith \*(lqmsg\*(rq (in the case of first, cur, next, or <number>),or ending with \*(lqmsg\*(rq (in the case of prev or last).+<number> forces \*(lqstarting with msg\*(rq, and \-<number> forces\*(lqending with number\*(rq.In all cases, \*(lqmsg\*(rq must exist..lpUser\-defined sequences are defined and manipulated with the \fIpick\fRand \fImark\fR commands..in 0.bp.ce.b \\s12REFERENCES\\s0.(x.spREFERENCES.)x.sp 3.in .4i.ti 01. Crocker, D. H., J. J. Vittal, K. T. Pogran, and D. A. Henderson, Jr.,\*(lqStandard for the Format of ARPA Network Text Messages,\*(rq\fIRFC733\fR,November 1977..ti 02. Thompson, K., and D. M. Ritchie, \*(lqThe UNIX Time-sharing System,\*(rq\fICommunications of the ACM\fR, Vol. 17, July 1974, pp. 365-375..ti 03. McCauley, E. J., and P. J. Drongowski, \*(lqKSOS\-The Design of a SecureOperating System,\*(rq \fIAFIPS Conference Proceedings\fR,National Computer Conference,Vol. 48, 1979, pp. 345-353..ti 04. Crocker, David H., \fIFramework and Functions of the \*(lqMS\*(rq PersonalMessage System\fR, The RAND Corporation, R-2134-ARPA, December 1977..ti 05. Thompson, K., and D. M. Ritchie, \fIUNIX Programmer's Manual\fR, 6th ed.,Western Electric Company, May 1975 (available only to UNIX licensees)..ti 06. Crocker, D. H.,\*(lqStandard for the Format of ARPA Internet Text Messages,\*(rq\fIRFC822\fR,August 1982..de $c.ce.b "\\s12\\$1\\s0" \" 12 Point Bold Header.(x y.sp\\$1.)x.sp 3...++ P.bp 1.fo ''''.he ''-%-''.+c "READ THIS".ppAlthough the \fIMH\fR system was originally developed by the RAND Corporation,and is now in the public domain,the RAND Corporation assumes no responsibility for \fIMH\fRor this particular version of \fIMH\fR..ppIn addition,the Regents of the University of California issue the following\fBdisclaimer\fR in regard to the UCI version of \fIMH\fR:.sp 1.in +.5i\*(lqAlthough each program has been tested by its contributor,no warranty, express or implied,is made by the contributor or the University of California,as to the accuracy and functioning of the programand related program material,nor shall the fact of distribution constitute any such warranty,and no responsibility is assumed by the contributoror the University of California in connection herewith.\*(rq.in -.5i.ppThis version of \fIMH\fR is in the public domain,and as such,there are no real restrictions on its use.The \fIMH\fR source code and documentation have no licensing restrictionswhatsoever.As a courtesy,the authors ask only that you provide appropriate credit to the RANDCorporation and the University of California for having developed the software..pp\fIMH\fR is a software package that is supported neither by the RANDCorporation nor the University of California.However,since we do use the software ourselves and plan to continue using(and improving) \fIMH\fR,bug reports and their associated fixes should be reported back to us so thatwe may include them in future releases.The current computer mailbox for \fIMH\fR is \fBBug\-MH@ICS.UCI.EDU\fR(in the ARPA Internet),and \fB...!ucbvax!ucivax!bug\-mh\fR (UUCP).Presently,there are two Internet discussion groups, \fBMH\-Users@ICS.UCI.EDU\fRand \fBMH\-Workers@ICS.UCI.EDU\fR. \fBMH\-Workers\fP is for peoplediscussing code changes to \fIMH\fP. \fBM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -