[comp.sources.unix] v11i054: Mail user's shell, Part04/12

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