rsalz@uunet.UU.NET (Rich Salz) (09/19/87)
Submitted-by: island!argv@Sun.COM (Dan Heller) Posting-number: Volume 11, Issue 54 Archive-name: mush5.7/Part04 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 04 (of 12)." # Contents: mush.1.b PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'mush.1.b' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'mush.1.b'\" else echo shar: Extracting \"'mush.1.b'\" \(46963 characters\) sed "s/^X//" >'mush.1.b' <<'END_OF_FILE' X.I Mush Xcommand ``cmd''. You may not run any form of reply or sending of Xmail at all. It is inadvisable to change folders at this time Xsince the current message list may be corrupted, but the action is Xallowed nonetheless providing flexibility for experienced users. X.TP X~u XUp one line. If the user made a mistake typing a letter and he Xhas already hit carriage return, he may avoid entering the editor Xand edit the previous line using ~u. The line is retyped and Xthe cursor is placed at the end allowing the user to backspace Xover it and retype the line. System V users should note that if Xthe new line is shorter than is was previous to the ~u command, the Xline is padded with blanks to the previous length of the file. X.TP X~E XErase message buffer; clear all contents of letter. X.TP X~~ XA line beginning with two escape characters will be unaffected by X.I Mush Xexcept that only a single tilde will be inserted into the letter. X.sp XThe variable X.B escape Xmay be set to describe a character other than ``~'' to be used as the Xescape character. XWhen sending mail, all the above applies to all three user interfaces. X.PP X.SH COMMANDS XDescribed below are legal commands understood by X.I Mush Xthat you can type at your prompt. Most commands have abbreviations X(given in parentheses) and can be followed by message lists. In most cases, Xwhitespace is not necessary to separate commands from message lists. XFor example, "d*" will delete all messages. X"u1-7 {4}" will undelete messages 1 through 7 except for message number 4. X.in -2 X.PP XThe ability to customize commands using the X.B cmd Xfacility allows users to have X.I Mush Xhave a command line appearance to reflect other mailers. However, there Xhave been efforts already made to have commands which are backwards compatible Xwith other line-mode mailers. Users of the graphics tool mode of X.I Mush Xmay have little need for the command line mode because the icon based Xinterface allows interaction with many commands. The graphics mode is much Xmore restrictive in favor of user friendliness but most useful commands may be Xachieved anyway. X.TP X.B alternates X(\fBalts\fR) is useful if you have accounts on several machines. XIt can be used to inform X.I Mush Xthat the listed addresses are really you. When you X.B reply Xto messages, X.I Mush Xwill not send a copy of the message to any of the addresses Xlisted on the X.I alternates Xlist. If the X.B alternates Xcommand is given with no argument, the current set of alternate Xnames is displayed. X.TP X.B cd Xchange the working directory to that specified, if given. If Xno directory is given, then changes to the user's home directory. X.TP X.B cmd/un_cmd XCommand line aliases are set and unset using these commands. More Xextensive information is given in the first section of this document. X.B uncmd Xmay take `*' as an argument to uncmd everything set. X.TP X.B debug [N] XSet debugging level to N (1 by default). When in debug mode, the Xuser can see some of the flow of control the program makes while Xexecuting. The intent of the debug level is for tracking down Xbugs with the program at specific locations. Periodically, the Xprogram will segmentation fault and core dump. When this happens, Xthe user can reenter the program, set the debugging level and recreate Xthe problem. X.sp XIf the user suspects memory allocation problems, a debugging Xlevel of 2 or higher will prevent memory from being freed causing no Xoverwriting of memory bounds. X.sp XIf the user suspects sendmail errors, Xa debugging level of 3 or higher will prevent sendmail from starting Xand outgoing mail is sent to the standard output instead of actually Xbeing sent. X.TP X.B delete XTakes a message list as argument and marks them all as deleted. XDeleted messages will not be saved in X.IR mbox , Xnor will they be available for most other commands. X.TP X.B dt XDeletes the current message and prints the next message. X.TP X.B echo Xechoes all the arguments given on the command line expanding variables Xand expanding history references. X.TP X.B exit X(\fBx\fR) Effects an immediate return to the Shell without Xmodifying the current folder or system spool directory. X.TP X.B expand XAliases, given as arguments, are expanded as they would be if you Xwere to send mail to each. X.TP X.B fkey/un_fkey XPrints the values of the function keys. The function keys are used in Xthe graphics tool mode only. You can set the values of function keys Xexplicitly using the X.B fkey Xcommand, but the whole process is automated by using the function key Xinterface provided by the graphics mode. By default, the Xlast key in each function key pad displays the values of all the function Xkeys in that set of function keys. There are the left, right and top set Xof keys. X.TP X.B folder X(\fBfo\fR) [-N] [-r] [!] [ %[user] | # | & | file ] X.br XChange current folder. No arguments prints current folder. X.nf X.if t .ta 1.5i X.in +2 X-N No headers are displayed upon entering new folder. X-r read only mode (you won't be able to write changes to this folder). X! is specified, the current folder is not updated first. X%[user] folder to /usr/spool/mail/[user] (yours, by default) X# folder accessed previous to current folder X& "mbox" -- default is ~/mbox; or set mbox = "file" X.in -2 X.fi X.TP X.B folders XList the names of the folders in your folder directory. XYour folder directory is the directory X.I Mail Xin your home directory. Or, you can set the variable X.B folder Xto specify another folder directory. X.br X.TP X.B from X(\fBf\fR) With no arguments, from will print the current message's header. XIf given a message list, from will print the headers of those Xmessages which are in the list. X.sp XThe special arguments, `-' and `+' can be given to move the Xcurrent message pointer to the previous or next message Xrespectively while also printing that message's header. XIf a message list was given in addition to `-' or `+', then Xthe current message pointer will be set to the first or last Xmessage, respectively, in the message list given. X.sp X.ti +2 Xpick -f Dan | from + X.sp Xwill print the headers of all messages that contain Dan in Xin the author's name and set the current message pointer to Xthe last one of that kind in the list. X.sp X.ti +2 Xfrom - 10-30 {16} X.sp Xwill print the headers of messages 10 through 30 except for Xmessage 16 and set the current message pointer to 10. X.sp X.ti +2 Xfrom + X.sp Xwill print the header of the message after the current message Xand increment the current message pointer to the next message. X.sp X.ti +2 Xfrom $ X.sp Xwill print the last message's header and not move the current Xmessage pointer. X%% X.TP X.B headers X(\fBh, z\fR) Prints a screenful of message headers listed in the Xcurrent folder. If a message number is given on the command line, Xthe first message of the screenful of messages will be Xthat message number. The ``z'' command is identical to the ``h'' Xcommand and remains for compatibility reasons. The variable X.B screen Xmay be set to tell how many headers are in a "screen." In the graphics Xtool mode, the variable, X.B screen_win Xcontains the number of headers used in the headers subwindow. X.sp XA typical header may look like: X.sp X.ti +2 X5 >N argv@spam.istc.sri.com Feb. 9, (10/278) Test Message. X.sp XThis line indicates that it is message number 5, X.I > Xindicates that the "current message pointer" is pointing to this Xmessage, the author of this message is X.I argv@spam.istc.sri.com, Xthe date is X.I Feb. 9, Xthe number of lines in the message is X.I 10, Xthe number of characters is X.I 278 Xand the subject of the message is X.I Test Message. XThe format of the message header exemplified here is described by Xthe string variable, X.B hdr_format. XThe format style of this variable string is just like printf in C. XWhen printing the information, the variable is evaluated and each Xcharacter in the string is echoed unless a ``%'' character is Xencountered. If one is found, the Xfollowing string substitutions may be made: X.in +2 X.nf X%S message Status. X%f the entire "From:" field (author). X%a the address of the author. X%n the name of the author. X%t "to" field (recipients). X%d date of the message. X%s subject of the message. X%l number of lines in the message. X%c number of characters (bytes) in the message. X\\n \ a newline X\\t \ a tab. X.fi X.in -2 XA field specifier may be used in all options. Thus, %20f will print the Xfirst 20 characters of the from line. No matter what the formatting string, Xthe message number followed by a '>' (if current message) is printed. X.sp XThe "address" and "name" of the author are extracted from the "From:" Xfield of the message. The name may be given in parentheses and Xthe rest of the line is the address, or the address is given in angle Xgrackets, (``<'' and ``>'') and the rest of the line is the name. Sometimes, Xthe address is the only thing on the line in which case the name and address Xare the same. X.sp XThe example given above has a hdr_format of X.ti +2 Xset hdr_format = "%S %25f %7d (%l/%c) %25s" X.sp XYou can print a special subset of message headers by using the X.I -H:c Xoption, where ``c'' is one of: X.nf X.in +2 Xn just print messages headers of new messages Xd deleted messages Xu unread messages Xo old messages Xa all messages X.fi X.in -2 X.sp XMore options to the X.B headers Xcommand include X.I + Xand X.I -. XEach will print the next or previous screenful of message headers. XEquivalent commands include X.B z [+] [-]. X``z'' alone will print the next screenful (thus, the + is optional). XThe ``-'' is equivalent to ``h -''. X.sp XHeaders affects all the messages it displays, so piping may be done Xfrom the headers command. Piping to the headers command causes the Xmessage headers affected by the previous command to be printed. This Xaction would be identical to piping to the X.B from Xcommand. X.TP X.B help XHelp is provided on a per topic basis and on a general basis. XFor general help, just typing, X.I help Xwill provide some general information as to how to get further help Xand a list of topics suggested for more specific help. There is also Xhelp provided for each command by using the "-?" option to most commands. XThis option will provide command line usage information as well as a Xdescription of what the command does and how to use it. X.TP X.B history [-h] [-r] [#histories] XThe command history is displayed in chronological order; early commands Xare printed first followed by more recent commands displayed last. X.I -h Xsuppresses printing of history event numbers with each history command. X.br X.I -r Xreverses the order of the history events displayed. X.sp XIf a number of histories is given, then that number of histories is Xechoed rather than the number of histories set by the variable, X.B history. X.TP X.B ignore XDisplay or set a list of headers to be ignored when displaying messages. XWhen reading messages, all the message headers are displayed with the text Xbody of the message. Since these message identifier fields are cumbersome Xand uninteresting in many cases, you can filter out those headers by using the X.B ignore Xcommand. X.sp X.ti +2 Xignore Received Date Message-Id X.sp XThe command, X.B unignore Xis used to reverse the effects of X.B ignore. XThese commands may be specified in the initializing files. X.TP X.B lpr [-Pname] [msg_list] Xtakes a message list and sends them, one by one, to the printer Xeach separated by page feeds. XA default printer name is supplied if one is not specified on the Xcommand line (-Pprinter-name). If you have a variable X.B printer Xset, that printer name will be used. X.sp XIf the variable, X.B print_cmd Xis set, the command described by that variable will be used instead Xof the default system command. In such cases, the -P option and the X.B printer Xvariable is ignored and the command is simply executed as is. This is Xuseful for sending C source thruough pgrind or other formatting types of Xcommands. X.TP X.B ls XJust like the X.I UNIX Xcommand X.I /bin/ls. XThe variable, X.B lister Xdescribes flags to be passed to ls automatically. By default, X.I ls Xalways uses the -C flag (column output). X.TP X.B mail X(\fBm\fR) Send mail to a list of users. If no user list is specified on the X.I Mush Xcommand line, then a "To: " prompt will request one. A list of recipients Xmust be supplied. This implementation of X.I Mush Xsupports mailing to files and programs as recipients. Filenames must Xbe full pathnames, thus, they must start with a '/' or there is no way to Xknow whether a recipient is a pathname or a real user. The ~ is allowed Xand is expanded to the user's home directory. Mailing to programs is indicated Xby the pipe `|' character preceding the program name. Since the user's path Xis searched, full pathnames are not required for programs. X.sp XExample: X.ti +2 Xmail username /path/to/filename "|program_name" X.sp XAfter, a Xsubject will be prompted for, but this heading is optional. XOptional flags are: X.nf X.in +2 X.if t .ta 1.8i X-v verbose (passed onto mail delivery program) X-e immediately enter editor (autoedit) X-F add random fortune to the end of message. X-i [msg_list] include msg_list into letter. X-h [msg_list] include msg_list with headers. X-f [msg_list] forward msg_list (not indented). X.in -2 X.fi X.TP X.B my_hdr/un_hdr XYou can create personalized headers in your outgoing mail using this command. X.sp X.nf XUsages: X.in +2 X.if t .ta 2.0i Xmy_hdr prints all currently set headers Xmy_hdr header value associated with header Xmy_hdr header: string set header to string Xun_hdr header: unset header X.in -2 X.sp X.fi XTo set a header, the first argument must be a string Xthat contains no whitespace (spaces or tabs) and must end with Xa colon ``:''. The rest of the command line is taken to be the Xtext associated with the mail header specified. XIf any quotes are used in the header and the header itself is not set in Xquotes, then quotes should be escaped (preceded) by a backslash. This holds Xtrue for semicolons, pipe characters or any other metacharacter that X.I Mush Xmight interpret as a command line modifier. X.sp XIf the variable, X.B no_hdrs Xis set, then your headers will not be added to outgoing messages, but will Xnot unset any headers. X.B un_hdr Xmay take `*' as an argument to un_hdr everything set. X.TP X.B pick Xallows the user to select particular messages from a folder. XWith no arguments, pick will search each message for the previously Xsearched string (regular expression). You can search for messages from a user, Xfor a particular subject line, between certain dates, and limit searches to Xa range of messages. You can also find all messages that do not Xmatch the same arguments mentioned above. X.sp X.nf XUsage: X.ti +2 Xpick [-r \fImsg_list\fR] [-d [-][date]] [-s|-f|-t] [-x] [-i] [<pattern>] X.sp X.fi XEntire messages are scanned for a <pattern> unless -s, -f, or -t is specified. XMessages marked for deletion are also searched. XOnly one of -s, -f, -t, and -d can be specified at once. No patterns can Xbe specified with the -d option. X.sp X.nf XOptions: X.if t .ta 1.25i X.in +2 X-r msg_list restrict the range of messages search to "msg_list" X-s search for pattern in the "subject" headers only. X-f search for pattern in the "from" field (author) only. X-t search for pattern in the "to" field only. X-i ignore case of letters (upper and lower case are the same). X-d print message headers on or after [`-' before] `date'. X-x messages which do not contain the pattern. May not be used with -d. X.in -2 X.fi X.sp X`date' is of the form: month/date/year. Omitted fields default to Xtoday's values. X.sp XExamples on dates: X.nf X.in +2 X.if t .ta 2.0i X.sp Xpick -d 4/20 msgs on or after April 20, this year Xpick -d -/2/85 on or before the 2nd, this month, 1985 Xpick -d / today only. X.fi X.in -2 X.sp XAt least one `/' char must be used in date. XThere is no strong date checking; 2/30 would be considered a valid date. X.sp XIf no arguments are given, the previous expression searched for is used. X<pattern> is a "regular expression" described by `ed'. X.sp XExamples using X.B pick: X.sp X.ti +2 Xpick -d 2/5/86 | pick -d -2/5/87 | pick -s "mail stuff" | lpr X.sp XThis will find all the messages between the dates February 5, 1986 and XFebruary 5, 1987 that contain the subject "mail stuff" and print them. X.sp X.ti +2 Xpick -s Re: | delete X.sp XDeletes messages that have "Re:" in the subject X.sp X.ti +2 Xfolder +project | pick -f frank X.sp XFinds all messages from frank in the folder described by +project. X.TP X.B preserve X(\fBpre\fR) Saves a message list in your spool directory rather than Xyour mailbox unless it has been explicitly deleted. The variable X.B hold Xcauses all messages to be held in your spool directory automatically. X.TP X.B print X(\fBp, type, t\fR) XTakes a message list and types out each message on the user's terminal. X.TP X.B pwd XPrints the current working directory. X.TP X.B quit X(\fBq\fR) XMessages which have been read go to your X.I mbox Xor the file described by the string variable X.B mbox. XIf the variable "hold" then all messages not marked for deletion are Xsaved in the spool directory. XMessages marked for deletion are discarded. XUnread messages go back to the spool directory in all cases. X.TP X.B reply, replyall, respond X(\fBr, R\fR) XMessages are replied to by sending mail to the sender of each message Xin the given message list. X.B replyall Xresponds to all the recipients as well as the Xsender of the message. You may pass X.B mail Xflags as they are passed on to the X.B mail Xcommand. X.sp XWhen contructing a return mail address to the author of a message, X.B replyall Xsearches for special mail headers in the author's message which Xindicate the most efficient mail path for return mail. X.I Mush Xwill search for the following headers by default: X.B Reply-To:, Return-Path:, From:. X.sp XIf none of these fields are found in the message, the first line of the Xmessage is parsed; this "From " line is different from the "From: " line. XIf the user wishes to change the order or the actual fields to search for Xreturn paths, then the variable, X.B reply_to_hdr Xis checked for a list of headers to be used (in the order specified). If X.B reply_to_hdr Xis set, but has no value, the first "From " line is used regardless of what Xheaders the author's message contains. This is a special case setting for Xthe variable and the "From " line may not be specified explicitly or as an Xitem in the list of reply-to headers. X.sp XWhen replying to all recipients of the message using the X.B replyall (R) Xcommand, only the original author's address can be obtained from Xthe message headers. There is no way determine the best path to the Xother recipients of the message from message headers aside from taking Xtheir addresses directly from the To: and Cc: lines. X.sp XNormally, this isn't a problem with arpanet style addressing schemes. XThe problems start with uucp because mail is not "one hop away." That Xis to say that mail must be routed through other computers, often many Xof them, till the message finally gets to its desitination. If the Xoriginal sender of the message was on a remote machine which your machine Xmay or may not exchange uucp mail with, then a uucp path will have to be Xcreated to respond to the author. However, if he mailed to other people Xon machines which are also multi-hops away, the addresses he used for Xthose recipients may differ from what you should specify if you were to Xtry to reply to all everyone on the original message. X.sp XFor example, if the original sender came from remote host, X.B pixar Xand the list of recipients looked like, X.sp X.ti +2 XTo: r2d2!user1 r2d2!user2 X.sp Xyou would not be able to respond to those users if your machine Xdid not connect with the host, X.B r2d2. X.sp XThis problem will be attempted to be solved if the variable, X.B fixaddr Xis set. If so, an attempt will be made to compensate by reconstructing Xthe addresses for user1 and user2 according to the address of the original Xsender. The new addresses for user1 and user2 should therefore become, X.sp X.ti +2 Xpixar!r2d2!user1, pixar!r2d2!user2. X.sp XThere is an additional case where your machine calls X.B both Xr2d2 and pixar. Then, it becomes unneccessary to route the mail through Xpixar and then to r2d2 if you can deliver the mail directly yourself. XThe variable, X.B known_hosts Xmay be set to a list of hosts which you know your machine to have Xuucp mail connections with. This list is checked when constructing Xmail addresses and the shortest path is made by removing from the Xuucp path those hosts which do not need to be called. See the entry for X.B known_hosts Xin the VARIABLES section. X.sp XIf the variable, X.B auto_route Xis set, all redundant hostnames from all uucp pathnames are removed Xto avoid unnecessary uucp connections and improve speeding up mail delivery. XThe reason for this stems from cases where a number of replies to the same Xmessage go back and forth and the return address becomes long and contains Xdedundancy. X.sp X.ti +2 Xpixar!island!sun!island!argv X.sp XHere, we have an example where mail was probably originally Xsent to users at pixar and sun from somewhere undetermined now. Since sun Xand pixar do not talk to each other, the users on those machines may have Xresponded to mail creating the type of addresses stated above. XWith auto_route set, X.I Mush Xwill modify this address to look like, X.sp X.ti +2 Xpixar!island!argv X.sp XThis is not necessary for arpanet users since connections can almost always Xbe established without having to route through other arpanet hosts. If a Xmixture of arpanet sites and uucp sites are mixed, then unknown results may Xoccur. X.TP X.B copy/save/write [!] [message list] [filename] X(\fBs\fR) With no arguments, X.B copy, save Xand X.B write Xwill save the current message to the file, X.I mbox Xin the user's home directory (or the file specified by the, X.B mbox Xvariable). If a message list is given, then the messages specified by Xthe list are saved. If a filename is given, then that filename is used Xinstead of mbox. If the file exists and is writable, the specified command Xwill append each message to the end of the file. If the `!' is given, Xthen the file is overwritten causing whatever contents it contains Xto be lost. The X.B write Xcommand differs from X.B save Xand X.B copy Xin that the message headers are X.I not Xsaved in the file along with the body of text. X.sp XIf the current folder is the system mailbox, then saved messages are Xmarked for deletion when the user exits using the X.B quit Xcommand. If the variable X.I keepsave Xis set or the current folder is not the system mailbox, then messages are Xnot marked for deletion. The X.B copy Xcommand is is like X.B save Xexcept that messages are not marked for deletion regarless of whether X.B keepsave Xis set or not. X.sp XBecause message lists are used to determine the messages to be saved, Xif the user wishes to save messages to a file that begins with a digit Xor any other message list metacharacter, a back-slash should precede Xthe filename to escape the message list expansion routine. The back-slash Xwill not be a part of the filename. X.TP X.B saveopts XThe completement of X.B source, saveopts Xwill save all settable variables, aliases and cmd's in the initializing file. X(See the X.B source Xcommand for more information on initializing files.) XIf an argument is given, that file is used. Beware that this will overwrite Xfiles so any ``if'' expressions used will be lost. There is no prompting for Xconfirmation on overwrites, either. Using saveopts is highly discouraged Xand is intended for the naive user only. X.TP X.B set/unset XWith no arguments, prints all variable values. Otherwise, sets Xoption. Arguments are of the form ``option=value'' (whitespace is allowed). XBoolean expressions need not have ``=value'' associated in the command. XThe special command, X.I set ?all Xwill print all known variables utilized by the program and a brief description Xof what they do. The user may set and manipulate his own set of variables, but Xinternal variables that are utilized by the program are the only ones displayed. X.sp XThe command X.I set ?variable_name Xwill print the same information for one variable instead of all variables. XYou may unset everything by issuing the command ``unset *''. This is also Xtrue for aliases, own_hdrs, ignored headers, cmds and function keys. X.TP X.B sh [command] XInvokes an interactive version of the shell. The shell spawned Xis described by the variable, X.B shell. XIf the optional argument, X.B command Xis given, then that command is executed under the Bourne Shell. XIf the special character `&' is at the end of any shell command, Xthen the command will be executed in background. X.TP X.B source Xreads X.I Mush Xcommands from a file. If no filename is specified, the files searched Xfor are .mushrc or .mailrc in the user's home directory. If the environment Xvariable MAILRC is set, then that file is sourced. If a filename is given Xon the command line, that file is sourced. See the X.B INITIALIZATION Xheading and the X.B home Xvariable descriptions for more information. X.TP X.B sort Xwill sort messages according to author, date, status or subject X(with or without considering the "Re: ", in replied messages). In Xaddition, the messages can be sorted in reverse order (same arguments). X.nf Xsort [-] [d | a | s | S | R] X.in +2 X- reverse sort order. Xd sort according to date received. Xa author (alphabetical). Xs subject ignoring Re: as part of the subject. XR subject (alphabetical). XS by message status. X.in -2 X.fi XBy default (no arguments), X.B sort Xsorts messages by status: XNew, unread messages are first, followed by preserved messages Xand finally the deleted messages are placed at the end of the list. X.sp XIf the variable X.I sort Xis set, messages are sorted each time the user's system mailbox is Xread as the current folder. The X.I sort Xvariable can be set to nothing or to legal "sort" arguments. XNote that only one argument (except for the `-'), may be used. X.sp XSubsorting can be acheived by using the piping mechanism intrinsic to Xthe line mode interface; no other interface allows subsorting "directly." XEach interface may allow subsorting if appropriate actions are taken discussed Xlater. X.sp XTo subsort messages, the folder must be in a particular order to begin Xwith. To sort mail by author and then by subject heading, you would Xhave to first sort by author: X.sp X.ti +2 Xsort a X.sp XNow that the messages are in order according to author, sorting a Xsublist of messages is done using pipes: X.sp X.ti +2 Xpick -f island!argv@sun.com | sort s X.sp XThis finds all messages from the user, "island!argv@sun.com" and sorts them Xby subject. Since these messages are already grouped together via the Xprevious sort command, the sorting by subject (s) will restrict itself Xto such messages. You may specify the exact message list by specifying Xthat message list on the command line and using a pipe: X.sp X.ti +2 X10-. | sort d X.sp XThis command means to sort the messages from 10 to the current message Xaccording to the date. X.sp XTo specify subsorting from with the curses interface, the temporary Xcurses escape key must be used (the colon ':') and the command issued Xat the command line given (as if giving an ``ex'' command to ``vi''). XWhen the command is finished, the "...continue..." prompt is given and Xthe user may continue or return to the top level of the curses mode. X.sp XIn the tool interface, the user must map a function key to the desired Xcommand. Select the "Opts" icon with the right mouse button, choose Xthe menu item labeled, "function keys" and user the interface provided Xto set a function key to the desired piped mechanism. X.TP X.B stop XFor systems with job control, stop will cause X.I Mush Xto send a SIGTSTP to itself. The command was introduced to facilitate Xthe stop-job action from a complex command line alias rather than the user Xhaving to type his stop character explicitly. X.TP X.B top XTakes a message list and prints the top few lines of each. XThe number of lines printed is controlled by the variable X.B toplines Xand defaults to the size of the value of the variable X.B crt. XThis command is ignored in the tool mode. X.SH VARIABLES X.PP XShell variables are controlled via the X.B set Xand X.B unset Xcommands. Options may be either boolean, in which case it is only Xsignificant to see whether they are set or not, string, in which Xcase the actual value is of interest, or numerical, in which the Xnumerical value is important. Some variables may have attributes Xof boolean and string at the same time. X.sp XIf you or the program references a variable which is not explicitly set, Xthen the environment variables are checked and a pointer to that data Xis returned. X.TP X.B alwaysignore (boolean) XIf set, the mail headers set by the X.B ignore Xcommand are always ignored. XNormally, ignore will only ignore headers when reading, saving(writing) Xto files, or interpolating messages into letters with the ~f escape. See the X.B ignore Xcommand for more information. X.TP X.B askcc (boolean) XIf set, you will be prompted for a Cc list (carbon copy) when you are finished Xediting a letter to be sent. In the tool mode, this is ignored; the Cc list Xis always prompted for after the Subject is prompted. X.TP X.B autodelete (boolean) XWhen exiting mail, all messages which have been read X.I regardless of whether they have been marked for deletion Xare removed. Only messages that haven't been read or marked as X.B preserved, Xare not removed. X.TP X.B autoedit (boolean) XIf set, you are automatically put into your editor whenever you Xsend or reply to mail. X.TP X.B autoinclude (boolean) XWhen replying to any mail, a copy of the message being replied to Xis automatically inserted into your message body indented by Xthe string described by the variable X.B indent_str. X.TP X.B autoprint (boolean) XAfter you delete a message, the next message is printed automatically. X.TP X.B auto_route XAutomatic trancation of uucp address to a more brief and efficient path Xis attempted resulting in faster mail delivery. Redundant hostnames are Xremoved from the uucp path if they occur and heuristics are used to Xdetermine the shortest path to the desination based on return addresses. XAlso see the variables, X.B known_hosts, fixaddr, Xand the command, X.B replyall. X.TP X.B autosign (boolean/string) XIf the variable is set, Xbut not to a string (e.g. boolean-true), then the file ~/.signature is used. X.sp XOtherwise, the variable is interpreted as a pathname opened relative to Xthe current directory. For this reason, it is adviseable to use full Xpathnames here. As usual, the ~ and + are expanded as described earlier. XIf the file is found, it is opened and its contents are read into the Xmessage buffer. X.sp XIf the variable is set to a string that begins with `$', then the string Xis interpreted as a user definable variable and it is expanded and appended Xto the letter. X.sp XFinally, if the variable is set to a string that begins with a backslash (\\), Xthen the string itself (minus the \\ character) is used and no expansion Xis done and no files are read. X.sp XIn the latter two cases, it is advisable to set the variable using single Xquotes to avoid expanding the variable beforehand or from eliminating the Xbackslash. For example, X.br X.nf Xset autosign = '$foo' Xset autosign = '\\this is an exmple string.' X.fi X.TP X.B crt (numeric) XSet to a value which describes the number of lines a message Xmust have before invoking the X.B pager Xto view a message. X.TP X.B cwd (string) XThe X.B current working directory Xstring is automatically set upon startup of X.I Mush Xand each time the command, X.B cd, Xis called. It is referenced each time X.B pwd Xis called and may be used as any other shell variable. X.TP X.B dead (string) XFile to use instead of "dead.letter" when dead mail is saved. X.TP X.B dot (boolean) XAccepts a "." on a line by itself instead of ^D to terminate letter. X.TP X.B editor (string) XEditor to use when ~e is specified. Default is the value of the variable, X.B visual. X.TP X.B escape (character) XWhen typing in a letter (not in an editor), when the X.B escape Xcharacter is the first character on the line, the following character Xis examined and a corresponding function associated with that X.B escape command Xis executed. See X.B tilde escapes Xfor more information. X.TP X.B fixaddr (boolean) XCauses replyall to modify the return addresses of all recipients to Xroute through the original sender's host. Mostly used for uucp mail. XSee the X.B replyall Xcommand for more detailed information. X.TP X.B folder (string) XThe folder variable is set to a path where folders are kept. ~/Mail Xis the default value. X.TP X.B fortune (boolean/string) XIf fortune is set, a random fortune is appended to the end of Xall outgoing mail using the X.I UNIX Xcommand, X.B /usr/games/fortune X(may vary from system to system). XIf fortune is set to something that starts with Xa '-', then it is interpreted as a flag to fortune (e.g. "-o"). If X.B fortune Xstarts with a '/', then the program described by Xthe string is executed (thus not doing fortune at all, if you want). XBy default, fortune -s (short fortunes) is used. X.TP X.B fortunates (string) XThis is a variable set to a list of people who, if any are Xon the To: line, or the Cc: line, a fortune is added. XIf those lists do not contain names which are on the fortunates Xlist, then no fortune is added. X.I "NOTE: fortune must be set in order for fortunates to work." X.TP X.B hdr_format (string) XSee the description of hdr_format above. X.TP X.B hold (boolean) XNormally, on termination of mail, read messages are saved in Xmbox (except those marked as preserved). Hold, prevents this Xfrom happening and messages remain in /usr/spool/mail/user. XThis does not apply to folders, obviously. X.TP X.B home (string) XThis variable describes the user's home directory. The variable Xis initialized to the value of the environment variable, HOME, Xbut can be modified at any time during the X.I Mush Xsession. The home directory is the same directory where temporary Xfiles are kept for editing and so forth. If the home directory cannot Xbe found or read/write access is denied, an alternate directory, typically X/tmp, is used. X.TP X.B ignore_bang (boolean) XIgnore the `!' character as a history reference. X.TP X.B ignoreeof (boolean/string) XIf set, ^D will not exit mail. If set to a "string", that string is Xexecuted as a command. X.TP X.B indent_str (string) XWhen including messages into the text of a letter you are editing, Xthe messages are preceded by whatever is described by indent_str. XThe default string used is "> ". X.TP X.B keepsave (boolean) XIf set, the commands, X.I save Xand X.I write Xwill X.B not Xmark messages for deletion. X.TP X.B known_hosts (string) XUsed in conjunction with the variable, X.B auto_route, Xthis variable is set to a list of hosts, separated by spaces, tabs, Xand/or commas, and describes Xthe hosts with whom you know your machine shares uucp connections. XWhen replying to mail, many times you will see the return path constructed Xwill have hostnames which your site could call, but instead the mail would Xbe routed throughout a number of different machines first. X.sp XFor example, if you respond to mail which would mail to the path, X.sp X.ti +2 Xunicom!pixar!root X.sp Xbut your know your machine already calls pixar, then sending the mail Xto unicom first would be unneccessary. If you have your known_hosts Xstring include pixar in its list, the resulting address would look like, X.sp X.ti +2 Xpixar!root X.sp XAlso see the command, X.B replyall Xfor more information on constructing more correct return addresses. X.TP X.B lister (string) XDefault arguments to the "ls" command for printing the Xcontents of a directory. X.TP X.B mbox (string) XSet to the pathname of a file you'd like mush to use as the default Xholder for read mail. The default is ~/mbox. X.TP X.B metoo (boolean) XWhen replying to mail, you are normally deleted from the list of Xrecipients. If metoo is set, you remain on the list. See alternates Xfor information on determining whether or not you're even on the list. X.TP X.B newline (boolean/string) XIf set, Carriage Returns are ignored, if set to a "string", that string is Xexecuted as a command. Otherwise CR's read the next undeleted message. X.TP X.B no_hdr (boolean) XDon't include your personalized mail headers in messages. This does Xnot unset your headers, it just disables them from being specified. X.TP X.B no_reverse XIn curses mode and in the tool mode, reverse video is not used to indicate the X.I current message. XIn the tool mode, if reverse video is not in use, text is displayed in "bold". X.TP X.B nosave (boolean) XIf set, terminated mail is not saved in dead.letter X.TP X.B pager (string) XIf a message is longer than what the variable X.B crt Xis set to, then this program is executed to view a message. The Xdefault value for pager is /usr/ucb/more. X.TP X.B printer (string) XUsed to set the default printer for the lpr command. X.TP X.B prompt (string) XYou can set your prompt to tell you many different pieces of information. XBy default, the prompt is set to the string, X.ti +2 X"Msg %m of %t: " X.br XIf you have 10 messages and your current message is 5, then your prompt Xwould look like: X.ti +2 XMsg 5 of 10: X.br XThe string variable X.B prompt Xcan be set to display other information. XThe string value that prompt is set to will be printed as your Xprompt. If the string contains a ``%'', then that character is Xignored and the next character is evaluated and an appropriate Xvalue is printed in its place: X.nf X.in +2 X%m expands to the "current message" number. X%t total number of messages. X%u number of unread messages. X%d number of deleted messages. X%n number of "new" messages. X%f expands to the filename of the current folder. X%T the current time (hours and seconds). X%D today's day (sun, mon, tues...). X%N today's date (Number of the day in the month). X%Y this year. X\\n \ \ will have a RETURN in the prompt. X\\t \ \ a tab. X.fi X.in -2 X.TP X.B quiet (boolean) XIf set, the currently running version of X.I Mush Xis not printed on startup. X.TP X.B record (string) XSet to the name of a file to record all outgoing mail. This should be a Xfull pathname or the current directory is searched. The pathname may begin Xwith ``+'' (indicating the user's ~/Mail directory or described by $folder) Xor with a ``~'' indicating the user's home directory (or ~user). X.TP X.B reply_to_hdr (string) XWhen replying to mail, X.I Mush Xsearches for return paths from the message by searching for Xthe message headings, "reply-to", "return-path", and "from:" Xrespectively. If none are found, then the first line of the Xmessage created by the delivery system is parsed and the address Xgiven there is used. If the variable, X.B reply_to_hdr Xis set, then the list of headers (delimited by spaces or commas) Xis searched. If none of the headers listed in the variable exist Xin the message, then a warning message is printed and the default Xheaders are used. X.TP X.B screen (numerical value) XNumber of message headers to display at a time. X.TP X.B screen_win (numerical value) XNumber of message headers to display in the tool mode. There Xis a subwindow for message headers and its size is large enough Xto hold `screen_win' number of headers. X.TP X.B show_deleted (boolean) XIf true, deleted message headers are displayed along with Xother messages ('*' indicates a deleted message). In curses mode, Xthis variable is ignored and deleted messages are always displayed Xwith other messages to facilitate undeleting messages. X.TP X.B squeeze XWhenever messages are read, piped, or saved, if this variable is set, Xall consecutive blank lines are squeezed into one blank line. X.TP X.B toplines (numerical value) XThe number of lines of a message to print when the "top" command Xis issued. If unset, `crt' lines are printed. X.TP X.B unix (boolean) XIf set, commands which are not X.I Mush Xcommands are considered to be X.I UNIX Xcommands. This removes the inconvenience of requiring the user to do Xshell escapes to do quick UNIX commands. For systems that support job Xcontrol, SIGTSTP will stop the entire shell as well as the process Xbeing executed. When SIGCONT is delivered, both will receive the Xsignal and the shell will continue to wait for the job to finish. X.sp XThe lack of real job control, input/output redirection and UNIX command piping, Xthis mode of the shell is not intended to be used as a login shell. X.sp XIf a X.I Mush Xcommand conflicts with a UNIX command, use 'sh' to override the shell command. X.sp X.I "WARNING: Be aware that Mush commands return message lists, NOT TEXT.\ " XYou cannot pipe UNIX or shell commands to or from UNIX commands. XUNIX commands should be simple commands without pipes or metacharacters. X.sp XThis feature is not available for the graphics (tool-based) mode. X.TP X.B verbose (boolean) XPasses verbose flag to mail delivery systems when sending mail. X.TP X.B verify (boolean) XWhen through editing messages, just before sending, X.B verify Xwill ask you if you want to send, continue editing, or abort the Xwhole message all together. X.TP X.B visual (string) XVisual editor to use when ~v is specified. Default is vi. The visual Xeditor is invoked with -e arguments to the commands, "respond" and "mail." X.TP X.B warning (boolean) XIf set, warning messages are printed when: X.in +4 X.ti -2 X\(bu a command line alias (`cmd') looks like a command. For example, X.br Xcmd mail 'set fortune; \\mail' X.br Xcmd respond 'unset fortune; \\respond;' X.br X.ti -2 X\(bu a variable is set differently from its default value. XFor example, if the escape character is set to something other Xthat the tilde ( ~ ), then a warning message will be printed. X.in -4 X.sp XThe intent is so that users who are used to their own environments Xwill be aware of changes in other environments should they be forced Xto use them. X.SH FILES X.if n .ta 2.5i X.if t .ta 1.8i X/usr/spool/mail/* The directory for incoming mail. X.br X~/Mail Default \fBfolder\fR directory. X.br X~/mbox Old Mail. X.br X~/.mushrc File giving initial \fIMush\fR commands. X.br X~/.mailrc Alternate initialization file. X.br X~/.edXXXXXXX Temporary for file for outgoing messages. X.br X~/.mushXXXXXX Temporary mail file (copy of current folder). X.PP XTemporary files which are created by the program are always Xcreated with read/write access to the owner only; group and other Xpermissions are never set. This is also true for the /usr/spool/mail/* Xfiles. All other files created by the user via commands internal or Xexternal to the program have permissions set by the user's default Xumask. If the umask is reset within the program, the mask remains Xin tact even after exiting. Remember to set the variable, X.B unix Xbefore attempting to set the umask value. X.PP XIf your system is using Sun Microsystem's NFS, take special note to Xread the manual page for mount(1). Filesystems mounted for read/write Xaccess should be mounted as "hard" NFS mounts or you may lose mailboxes Xduring a timeout during a write or update. X.PP XFilesystems that use RFS still have bugs to be ironed out in the way Xof owners and permissions concerning utime(2). X.sp X.SH "SEE ALSO" XMail(1), binmail(1), csh(1), aliases(5), mount(1), Xmailaddr(7), sendmail(8), printf(3), execl(3), umask(1), utime(2). X.sp X.SH AUTHOR XThis code was written entirely by Dan Heller and contains no UNIX sources Xor is a modified version of any other mailer. Similarities with any other Xmailer previous to X.I Mush Xmay have been designed for compatibility reasons with such mailers, but Xno source code was barrowed, or even referenced to develop X.I Mush. X.PP Xargv@spam.istc.sri.com island!argv@sun.com X.sp X.SH BUGS XThe curses interface uses the curses library. The routines from the Xlibrary that are used are the most basic and simple to avoid possible Xbugginess that different versions of UNIX might have. However, one Xunavoidable problem is the reverse video mode. Depending on your terminal, Xthe termcap entry for it, and the version of curses you are running, Xthe reverse video may makes things worse than desired. In such situations, Xthe user should set the variable, X.B no_reverse Xto not get reverse video. ^R may still be entered at runtime in the curses Xinterface to toggle reverse video. X.sp XIf the program is already running and the system [later] has to swap Xand there is no swap space left, there may be problems. One such Xproblem is sending mail. If this happens, then sending mail Xwill fail and a segmentation fault from the spawned forked child will occur Xunless the -v flag was given to mail. The unsent letter will Xnot be removed from the editing file ($home/.edXXXXXX) and may be recovered. X.sp XMany functions available to the line oriented mode (shell mode) Xare not available to the tool mode. For example, X.B pick Xmay not be directly accessed although experienced users may find that Xtyping pick commands within single backquotes in the "range" panel item Xin the header window will indeed pick messages. This is mostly for selecting Xthe "delete range" item or the middle mouse button icon in the header panel. X.sp XShell escapes (of any kind) may not be called from Xthe tool/graphics mode. The reason for this is that there is no tty X.I window Xto run commands from. It is impossible to determine whether or Xnot the user wants to run an interactive program or not so it is Xbest to disallow its usage all together. The experienced window user Xcan figure out how to really do shell layers from within the tool mode. X.sp XToggling from the curses mode to the line mode to get the full Xfunctionality of the shell/line mode is unfortunately necessary Xin the name of "user friendliness." Mostly, this is only necessary Xfor piping of commands and using the pick command. X.sp XThe function keys and their ability to X.I work Xhas been variable depending on the version of SunWindows/SunView Xyour Sun Workstation has. From time to time, it works, but when it Xdoesn't, it seems to be related to other user or system definable Xdot-files or whatever. I hardly use them, so I haven't had a chance Xto really debug that part much. My experiences have shown them to Xwork in Sun versions 2.0, 2.2, and 3.3, but not 2.2, 2.3, 3.0 or 3.2. X.sp XWhen using X.B vi Xin the tool/graphics mode, periodically the window will be one line X"short." That is, scrolling will be off by one and line and you may Xhave to redraw the window (using `z.' in vi) to get it in sync again. XThis is a known problem with SunWindows, but Sun refuses to fix it Xas SunWindows are "obsolete." X.sp XWhen running on full filesystems, X.I Mush Xmay complain or not even run since it needs temporary space with which Xto work. Instead of finding new filesystems on it's own, X.I Mush Xleaves this task up to the user. The workaround is to set the variable X.B home Xin the initialization file to be a writable place in a filesystem which Xhas enough disk space. This will set the user's home directory to be Xset incorrectly, but resetting the home manually once in the shell Xwill correct the problem. X.sp XMost of the other known and documented bugs Xare in the supplied README file accompanying the source. Of course, Xthe source is an excellent place to look as most known bugs are documented Xright in the source code. A good way to track suspicious bugs is to use the X.B debug Xcommand. This command is very difficult to use in curses mode. END_OF_FILE if test 46963 -ne `wc -c <'mush.1.b'`; then echo shar: \"'mush.1.b'\" unpacked with wrong size! fi # end of 'mush.1.b' fi echo shar: End of archive 04 \(of 12\). cp /dev/null ark04isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 12 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0