Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

v12i036: Mail User's Shell, Part08/19

2 views
Skip to first unread message

Dan Heller

unread,
May 5, 1990, 1:20:05 PM5/5/90
to
Posting-number: Volume 12, Issue 36
Submitted-by: ar...@Eng.Sun.COM (Dan Heller)
Archive-name: mush/part08

#! /bin/sh
# This is a shell archive. Remove anything before this line, then feed it
# into a shell via "sh file" or similar. To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sou...@uunet.uu.net if you want that tool.
# If this archive is complete, you will see the following message at the end:
# "End of archive 8 (of 19)."
# Contents: mush/fkeys.c mush/mush.1.d mush/tool_help
# Wrapped by argv@turnpike on Wed May 2 13:59:28 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'mush/fkeys.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mush/fkeys.c'\"
else
echo shar: Extracting \"'mush/fkeys.c'\" \(1717 characters\)
sed "s/^X//" >'mush/fkeys.c' <<'END_OF_FILE'
X/* @(#)fkeys.c (c) copyright 10/18/86 (Dan Heller) */
X
X#include "mush.h"
X
X#define L(n) KEY_LEFTFIRST+(n)-1
X#define R(n) KEY_RIGHTFIRST+(n)-1
X#define F(n) KEY_TOPFIRST+(n)-1
X#define BREAK_KEY KEY_TOPLAST
X
Xstatic int func_key();
X
XNotify_value
Xfkey_interposer(client, event, arg, type)
XFrame client;
XEvent *event;
XNotify_arg arg;
XNotify_event_type type;
X{
X if ((event_is_key_left(event) || event_is_key_right(event) ||
X event_is_key_top(event)) &&
X event_is_down(event) && func_key(event_id(event)))
X return NOTIFY_DONE;
X
X return notify_next_event_func(client, event, arg, type);
X}
X
X/*
X * Execute commands defined by a function key.
X * Left keys:
X * L1 = (null) can't be set
X * L2 ... L10
X * Top function keys
X * F1 ... F9, BREAK/backspace (key not definable)
X * Right function keys
X * R1 ... R15
X * Usually, the last Function key displays the others' settings.
X */
Xstatic int
Xfunc_key(key)
Xregister int key;
X{
X register char **argv, *p;
X char buf[256];
X int n;
X
X if (key >= KEY_LEFTFIRST && key <= KEY_LEFTLAST)
X buf[0] = 'L', n = key - KEY_LEFTFIRST;
X else if (key >= KEY_TOPFIRST && key <= KEY_TOPLAST)
X buf[0] = 'F', n = key - KEY_TOPFIRST;
X else if (key >= KEY_RIGHTFIRST && key <= KEY_RIGHTLAST)
X buf[0] = 'R', n = key - KEY_RIGHTFIRST;
X (void) sprintf(buf+1, "%d", n+1);
X
X if (!(p = do_set(fkeys, buf))) {
X if (!chk_option("quiet", "fkey"))
X wprint("Function key \"%s\" not set.\n", buf);
X return FALSE;
X }
X /* make_command will screw up "p", so copy it first */
X (void) strcpy(buf, p);
X Debug("(%s) \"%s\": ", key, p), turnon(glob_flags, CONT_PRNT);
X if (argv = make_command(buf, TRPL_NULL, &n))
X (void) do_command(n, argv, msg_list);
X return TRUE;
X}
END_OF_FILE
if test 1717 -ne `wc -c <'mush/fkeys.c'`; then
echo shar: \"'mush/fkeys.c'\" unpacked with wrong size!
fi
# end of 'mush/fkeys.c'
fi
if test -f 'mush/mush.1.d' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mush/mush.1.d'\"
else
echo shar: Extracting \"'mush/mush.1.d'\" \(33714 characters\)
sed "s/^X//" >'mush/mush.1.d' <<'END_OF_FILE'
X.B respond
Xand
X.BR mail .
X.TP
X.B warning
X(Boolean)
XIf set, warning messages are printed when:
X.in +4
X.ti -2
X\(bu A command line alias (\*Qcmd\*U) looks like a command.
X.br
XFor example,
X.ti +2
Xcmd mail 'set fortune; \\mail'
X.ti +2
Xcmd respond 'unset fortune; \\respond;'
X.ti -2
X\(bu The date format of a message is unknown.
X.br
XThe date of a message is taken from the \*QDate:\*U header.
XIf the date on that header is unknown, other headers are searched for a
Xvalid date format until a legal one is found.
XThis date may not be
Xcorrect in that it was the date the message was received, not sent.
X.ti -2
X\(bu A variable is unset without first being set.
X.br
XFor example, if you give the command
X.ti +2
Xunset metoo
Xand the variable
X.B metoo
Xis not set, you will be notified that the variable is not defined.
X.ti -2
X\(bu No header can be found for a digest article.
X.br
XThis occurs when the
X.B undigest
Xcommand encounters what appears to be an article separator but cannot
Xfind a \*QFrom:\*U or \*QDate:\*U header in the following text.
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.
XThere may also be warning messages of failed routines
Xor assertions that are not fatal enough to interrupt normal running
Xof the program.
X.TP
X.B wrap
X(Boolean)
XNormally, when the last message is deleted, the current message
Xpointer remains pointing to the last message and the user is done
Xreviewing his mail.
XIf the
X.B wrap
Xvariable is set, the current message pointer will wrap around to the
Xbeginning of the user's messages again to the next undeleted message.
XThis also applies to the
X.B next
Xcommand.
X.TP
X.B wrapcolumn
X(Numeric)
XMay be set to a column number at which line wrap will occur when
Xcomposing messages.
XIf set, but given no value, column 78 will be assumed.
XWhen
X.I Mush
Xis able to determine the number of columns on your screen, it will
Xenforce a maximum value for
X.B wrapcolumn
Xof two less than that number of columns.
XLine wrapping can be disabled either by unsetting
X.B wrapcolumn
Xor by setting it with the explicit value of 0 (zero).
X.sp
XLine wrapping occurs only at whitespace (spaces or tabs).
XLines containing no whitespace to the left of the specified column
Xwill not be wrapped.
XIf \fIMush\fR was started with the \-e (echo mode) option, or is in tool mode,
Xline wrapping cannot be done due to I/O incompatibilities.
X.PP
XIn addition to the named variables described above, three special
Xvariable forms are recognized.
X.TP
X.B $$
XThis string returns the process id (PID) of the current
X.I mush
Xprocess.
XColon modifiers are not recognized for this special variable.
X.TP
X.BI $[ %fmt ]
XThe string \fI%fmt\fR is interpreted as a header formatting string
X(as in the
X.B hdr_format
Xvariable) and is expanded using the headers from the current message.
XColon modifiers are allowed to follow the format.
XFor example,
X.sp
X.ti +4
Xsave $[%4n]:l
X.sp
Xwill save the current message in a file whose name is the first four
Xcharacters of the name of the author, converted to lower case.
X.TP
X.BI $( %c )
XThe string `\fI%c\fR' is interpreted as a prompt format
X(as in the
X.B prompt
Xvariable) and is expanded.
XColon modifiers are allowed.
XFor example,
X.sp
X.ti +4
Xecho $(%T)
X.sp
Xwill print the current time.
XNote that \*Q$(%F)\*U is equivalent to \*Q$thisfolder\*U.
X.PP
XNOTE: Evaluation of many \*Q$[%...]\*U or \*Q$(%...)\*U values in a single
Xcommand is inefficient.
XIf expansion of several formats is desired, it is better to use the \-h
Xand \-p options of
X.B echo
Xor
X.BR eval ,
Xwhich also provide better quoting of the interpolated strings.
X.SH "MUSH SCRIPTS"
XOne of the most useful features of
X.I Mush
Xis the ability to write scripts of
Xcommands, which can be read by the
X.B source
Xcommand from within
X.IR Mush ,
Xor by redirecting input from the script and using the \-i option.
XIf your operating system supports the \*Q#!\*U interpreter mechanism,
Xa script can be even be executed as a program.
XScript files can use all the usual
X.I Mush
Xcommands; the only restriction is
Xthat the `!' history notation for referencing arguments of
X.B cmd
Xaliases is disabled in scripts, so only very simple
X.BR cmd s
Xwill work.
X.PP
XFor example, a filtering file, \*Qfilter\*U, might contain:
X.sp
X.nf
X.in +2
Xset newfolder = /usr/spool/mail/$USER
Xif is_shell
X.in +4
Xif -z $newfolder
X.ti +4
Xset newfolder = $mbox # mbox must be set!
Xendif
Xif -e $newfolder
X.ti +4
Xfolder $newfolder
Xelse
X.ti +4
Xquit
Xendif
X.in -4
Xendif
X.sp
Xpick -f Mailer-Daemon | save mail_errors
Xpick -f yukko | delete
Xpick -s -i thesis | save +thesis_mail
Xpick -t unix-wizards | +wizmail
Xupdate
Xsort d
X.in -2
X.fi
X.sp
XThen the first command the user types when beginning a
X.I Mush
Xsession might be \*Qsource filter\*U, and the following would happen:
X.sp
X.in +2
XFirst, a new variable called \fBnewfolder\fR is set to the the user's spool
Xmailbox (the system mailbox).
XA test is made to see if the shell is running, because the \fBfolder\fR
Xcommand can only be used from the shell.
XThen a test is done to see the spool mailbox is zero length, and if it is,
Xthe variable is reset to the value of the user's \fBmbox\fR variable
X(mbox must already be set by this time or this will fail).
XA final test assures that the new folder exists.
XIf it does, \fIMush\fR changes folders to the new folder.
XIf it doesn't exist, the program exits (via \fBquit\fR).
X.sp
XOnce the correct folder has been loaded, all messages that have
X\*QMailer-Daemon\*U in the From header will be saved in the file mail_errors.
XThen, all mail from the user \*Qyukko\*U will simply be deleted.
XNext, all mail that has in the Subject field, \*Qthesis\*U
X(case ignored, so \*QThesis\*U would also match) will be
Xsaved in the file $folder/thesis.
XThe next command will find all messages that are addressed to
Xthe group \*Qunix-wizards\*U (of which the user is an elite
Xmember) and save them in the file $folder/wizmail.
XLast, the folder will be updated, removing all deleted mail
X(saved mail may be marked as deleted)
Xand the folder is reread and sorted according to the date of the messages.
X.in -2
X.PP
XIf the \*Q#!\*U mechanism is supported, the \*Qfilter\*U script can be
Xmade into a program by adding as the first line:
X.sp
X.ti +4
X#! /usr/local/bin/mush -F
X.sp
X(The actual location of
X.I mush
Xmay vary from system to system; /usr/local/bin is used as an example.) Then
Xmake the file executable:
X.sp
X.ti +4
Xchmod +x filter
X.sp
XNow, when the command \*Qfilter\*U is typed at the user's regular shell
Xprompt, the
X.I mush
Xprogram will be invoked by the operating system.
X.I Mush
Xwill first read the commands from the \*Qfilter\*U file and perform them,
Xexactly as described above, and then will continue into the usual interface.
XIf it would be preferable for
X.I mush
Xto exit after reading the script, the first line can be changed to:
X.sp
X.ti +4
X#! /usr/local/bin/mush -F!
X.sp
XThe \-F! option should also be used when running
Xscripts in the background or in other circumstances where the standard
Xinput cannot be a terminal, and the only commands to be executed are those
Xin the script itself.
X.PP
XNote that any additional arguments passed to a \*Q#!\*U script are
Xinterpreted by
X.IR mush ;
Xthey are not passed along in any way that makes them accessible to the script.
XThus,
X.sp
X.ti +4
X% filter \-f mbox
X.sp
Xwould apply the commands in the \*Qfilter\*U script to the \*Qmbox\*U folder.
X.SH MACROS
XMacros are available in several different modes in
X.IR Mush .
X.I "Curses mode macros"
Xare created by using the
X.B bind
Xcommand with the special function
X.B macro
X(or by using
X.BR bind-macro ,
Xwhich is synonymous).
XThese macros are effective only when the curses interface is active.
X.I "Line mode macros"
Xare created with the
X.B map
Xcommand, and are effective only in the line-oriented command interface.
XFinally,
X.I "composition mode macros"
Xare created with the
X.B map!
Xcommand, and are effective only when composing mail messages.
XMacros are not available in the
X.I tool
Xmode, nor when composing messages from the tool mode.
XLine and composition mode macros are also nonfunctional when
X.I Mush
Xis started with the \-e (echo) option.
X.PP
XIn general, macros consist of two parts: a
X.I "key sequence"
Xand an
X.IR expansion .
XThe
X.B "key sequence"
Xis the character or string of characters which, when typed in the
Xappropriate mode, is recognized by
X.I Mush
Xas a reference to a macro.
XThe
X.B expansion
Xpart of a macro is the string that will actually be \*Qseen\*U by
X.I Mush
Xwhen the key sequence is recognized.
XMacros are like an interactive search-and-replace function;
Xif a key sequence appears in the input, the associated expansion is
Xsubstituted in its place.
XThus, if you create a macro whose key sequence is \*Q^X^W\*U (control-X
Xcontrol-W) and whose expansion is \*Qsave\*U, then when you hold down the
Xcontrol key and type the two characters `x' and `w', the effect will be
Xas if you had actually typed the four characters `s', `a', `v' and `e'.
XThis is called \*Qexpanding\*U the macro.
XMore detailed examples of macros will be presented in the subsections
Xfor each mode in which macros can be used.
X.PP
XKey sequences are usually made up of control characters or special
Xstrings of characters generated by \*Qfunction keys,\*U
Xbut may in fact be almost any string the user desires.
XKeys that generate a signal or an end-of-file from the keyboard
X(for example, on BSD systems, control-Z generates a TSTP signal and
Xcontrol-D generates an end-of-file) can never appear
Xin key sequences, and macros in line or composition modes cannot
X.I begin
Xwith a newline, control-D, or any of the editing keys
X(erase, word-erase, line-erase, etc.).
XOtherwise, there are no restrictions.
XIt should be kept in mind, however, that for the line and composition
Xmodes, key sequences should be unusual characters or combinations of
Xcharacters, not individual lower-case letters.
XIf common characters or strings are used for key sequences, much
Xconfusion can result when typing commands or messages.
XThis is not important in the curses mode.
X.PP
XIn the line and composition modes, a
X.I timeout
Xis used for key recognition; that is, once the first character of the
Xkey sequence has been typed, the succeeding characters must be typed
Xafter it relatively quickly, or
X.I Mush
Xwill fail to recognize them as a continuous sequence.
XIt is for this reason that key sequences are usually either very short,
Xor are strings that are automatically generated by pressing a special
Xkey on the terminal.
XOn the other hand, the timeout can be used intentionally to prevent a
Xmacro from being expanded; simply type the first character of the macro,
Xthen wait for it to echo before typing the next.
XThis does not work in curses mode, because curses macros
Xnever \*Qtime out.\*U
X.PP
XIn any mode, macros are
X.IR recursive ;
Xthat is, if the
X.I "key sequence"
Xof one macro appears in the
X.I expansion
Xof another macro (or even of the same macro), the second key sequence
Xwill be recognized when the first macro is expanded, and this new key
Xsequence will also be expanded.
XGreat care should be taken when creating macros to be certain that
Xrecursive expansions do not happen unintentionally.
XExpansion can be prevented in line or composition modes by using a
X.I literal-next
Xcharacter.
X.PP
XLiteral-next characters may be used from the keyboard or embedded
Xin expansions.
XIn either case, they prevent the next character
Xfrom being interpreted as part of a key sequence.
X.I Mush
Xrecognizes the literal-next character from the tty settings of the
Xterminal, if the \*Qnew\*U BSD-style device driver is available;
Xotherwise, `^V' (control-V) is recognized as a literal-next.
XNote that, if you have a tty literal-next character,
Xthen when typing you will need to type
X.I two
Xof them in order to send one to \fIMush\fR; this is because the tty
Xdriver consumes the first one.
XIt is not necessary to use two literal-nexts in macro expansions
Xunless you wish to cause the second literal-next to be literal.
X.PP
XBackslash can be used as a literal-next when typing, and can
Xsometimes be used as a literal-next in expansions; but use it
Xwith caution, because it also introduces escape sequences
X(see \*QMacro syntax,\*U below).
XThere is no literal-next mechanism for curses mode.
X.PP
XA macro will always abort whenever
X.I any
Xcommand called by the macro returns an error.
XThis includes recursive expansions, so no matter how often a macro has
Xrecurred, it will be terminated completely.
XErrors in curses mode include illegal cursor movements, such as up from
Xthe top of the screen or down from the last message.
X.PP
X.BR "Macro syntax" .
X.PP
XA special syntax is provided for specifying control characters and other
Xnon-printing characters in macro key sequences and expansions.
XThis syntax is the same as that for bindings, discussed in the
XCURSES INTERFACE section; it can be summarized as:
X.ta 1.25i
X.in +2
X.nf
X\\CX control-X (where X is any capital letter)
X\\E the escape character
X\\n a newline (other C-style escapes also work)
X.fi
X.in -2
X.sp
XThus, to create a line mode macro for control-X control-W, as in the
Xexample above, the command would be
X.sp
X.ti +4
Xmap '\\CX\\CW' save
X.PP
XAlso provided is a syntax for executing functions from within macros.
XThere are two special functions that are effective in all modes;
Xthese are
X.I getstr
Xand
X.IR getline .
XBoth of these functions interrupt expansion of the current macro,
Xand wait for a newline-terminated string to be entered from the
Xstandard input.
XThis input string is inserted into the macro expansion.
XThe functions differ in that
X.B getline
Xretains the newline character (carriage-return) at the end of the
Xinput string, whereas
X.B getstr
Xstrips off the newline (one must still be typed to terminate input).
XThese functions can be executed by surrounding their name with
Xsquare brackets
X.RB ( [ ,
X.BR ] );
Xfor example,
X.sp
X.ti +4
Xmap '\\CX\\CW' save [getline]
X.sp
Xcreates a line mode macro, which is expanded when control-X control-W is
Xtyped, and which displays \*Qsave\*U followed by a space and then waits
Xfor the user to type a line of input; the input line will be used as the
Xarguments to the save command.
X.PP
XAdditional functions are currently available only in the curses mode.
XHowever, the syntax of enclosing the function name in square brackets
Xapplies to all functions, regardless of mode.
XNote that
X.I ONLY
Xthe function name can appear in the brackets; no whitespace is allowed.
X.PP
X.BR "Curses mode macros" .
X.PP
XMacros in curses mode are the most versatile, because they can access the
Xfull range of curses commands quickly and easily.
XEvery character that appears in the expansion part of a curses mode macro
Xcan reference a curses command or another macro.
XLike other curses functions, curses mode macros are created with the
X.B bind
Xcommand.
XFor example, to sort your messages by date and then send the most recent
Xone to the printer, you could use
X.sp
X.ti +4
Xbind @ macro 'od$|'
X.sp
XWhen the `@' key is typed, this macro first invokes sort
X(`o' from the default bindings) and instructs it to use date (d)
Xfor sorting; it then moves the current-message pointer to the last
Xmessage ($) and prints that message (|).
X.PP
XAdmittedly, the above macro is somewhat cryptic, and is dependent upon
Xthe bindings for sort, last-msg, and lpr being set to the defaults.
XIt would be better, and possibly more understandable, to refer to the
Xdesired curses functions without using their key bindings.
XTo allow this, the \*Q[function]\*U syntax described above may be used
Xin curses mode macros to reference curses functions.
XThe only function that is prohibited from appearing in the \*Q[\|]\*U
Xis the special
X.I macro
Xfunction, which cannot be called when it has no binding.
XThe example macro can therefore be rewritten as
X.sp
X.ti +4
Xbind @ macro [sort]d[last-msg][lpr]
X.sp
XSuch references to curses functions may be made only in curses mode
Xmacros, and are effective only when \fIMush\fR is actually in curses mode.
XThat may sound strange, but the most common use of curses macros is
Xto quickly perform functions that require an escape to the line mode.
XFor example, although there is a variation of the curses mode
X.I mail
Xfunction that will prompt for additional flags, there is no function
Xto prompt for flags to be passed to
X.IR reply .
XA macro can easily be created to provide this:
X.sp
X.ti +4
Xbind R macro '[line-mode]reply '
X.sp
XThis macro binds `R' to perform an escape to line mode and type
Xthe string \*Qreply\*U followed by a space.
XMacro expansion then ends, leaving it up to the user to supply
Xflags to the command or to backspace over it if a different command
X(or none) is desired.
XOf course, the macro could also have provided some default arguments:
X.sp
X.ti +4
Xbind R macro '[line-mode]reply \-ei '
X.PP
XNote that, if the
X.B getline
Xor
X.B getstr
Xfunction is used in a line-mode escape, it is not possible to
Xerase the text that is typed before the
X.IR get ;
Xthat is, if the macro had been
X.sp
X.ti +4
Xbind R macro '[line-mode]reply \-ei [getline]'
X.sp
Xthen the user would be forced to use the \-ei flags.
X.PP
X.BR "Line mode macros" .
X.PP
XLine mode macros combine some of the convenience of single-keystroke
Xcommands with the versatility of the line-oriented text interface.
XAs has been noted, the choice of characters for line mode key sequences
Xshould be made carefully, so as not to interfere with normal typing.
XLine mode macros are created with the
X.B map
Xcommand; for example, suppose you frequently forward messages to a
Xfriend named \*Qfred.\*U You could create a macro to do this:
X.sp
X.ti +4
Xmap '\\CF' 'mail \-f . fred\\n'
X.sp
XThis macro causes the single keystroke `^F' (control-F) to forward
Xthe current message to \*Qfred.\*U Note the newline
Xcharacter \*Q\\n\*U at the end of the expansion;
Xthis causes the command to be executed immediately,
Xwithout you having to type a carriage-return.
X.PP
XThe expansion part of a line mode macro will echo to the screen when
Xit is expanded, so you can see what the macro is doing.
XYou can therefore use parts of the expansion as a \*Qprompt.\*U In
Xthe above example, suppose you wished to enter a message list rather
Xthan always forwarding the current message.
XChange the macro to:
X.sp
X.ti +4
Xmap '\\CF' 'mail \-f [getstr] fred\\n'
X.sp
XThis version of the macro prints \*Qmail \-f\*U and a space, then waits
Xfor a newline-terminated string from the standard input.
XThe newline is stripped, and the string is used as the message list
Xpassed to the \*Qmail \-f\*U command.
XThe address \*Qfred\*U is also passed to
X.BR mail ,
Xso the messages in the list are forwarded to fred.
X.PP
XIf you want to be able to \*Qchange your mind\*U after starting a
Xline mode macro, you must leave the \*Q\\n\*U out of the expansion.
XWithout the newline, the macro will not be executed immediately, so
Xyou have a chance erase the line (or part of it) and type
Xsomething different.
XRemember that the
X.B getline
Xfunction keeps the newline in the string it gets, so if you don't
Xwant a newline to appear, you must use
X.BR getstr .
XWhen using the
X.I get
Xfunctions, you should also remember that you can
X.I never
Xbackspace past the \*Qbeginning\*U of a
X.BR getline ,
Xand you can backspace past the beginning of a
X.B getstr
Xonly after the get has been completed.
X.PP
XWhen the
X.B getstr
Xfunction is used in line mode macros,
X.I Mush
Xwill reprint the current input line so you can see what the whole
Xthing looks like, but will not redisplay the line mode prompt
X(see the entry for
X.B prompt
Xin the VARIABLES section for information on what the
Xprompt looks like).
XDon't let this worry you.
XThe input line is also reprinted when
X.B getline
Xis used, but the newline in the input string usually results in a
Xnew prompt being displayed.
X.PP
X.IR NOTE :
XLine mode macros are not available when using the line-mode escape
Xfunction in curses mode.
XIt is necessary to escape all the way to line mode (that is, leave
Xcurses mode by typing carriage-return at the `:' prompt) in order
Xto access line mode macros.
XThis is to prevent possible confusion when similar macros exist
Xin both line and curses modes.
X.PP
X.BR "Composition mode macros" .
X.PP
XComposition mode macros are very similar to line mode macros, and
Xprovide a \*Qpower typing\*U function when composing messages.
XFor example, you might want to have the word \*Qpercent\*U inserted
Xinto your message whenever you hit the `%' key:
X.sp
X.ti +4
Xmap! % percent
X.sp
XAnother use is to simulate the indentation features of editors.
XFor example, you might
X.sp
X.ti +4
Xmap! '\\CT' '\ \ \ \ '
X.sp
X(where the expansion is four spaces, enclosed in single quotes).
XThis macro causes four spaces to be inserted into the message whenever
Xcontrol-T is typed.
X.PP
XComposition mode macros can also be used to execute
X.I tilde-escapes
X(see the GENERAL USAGE section for a list of these).
XFor example, you could create a macro to invoke the editor:
X.sp
X.ti +4
Xmap! '\\CE' '\\n~v\\n'
X.sp
XWhen control-E is typed, this macro prints a newline (to be sure that
Xthe tilde-escape is the first thing on a line), then types \*Q~v\*U
Xfollowed by another newline, to start the editor.
XSimilar macros can be created for other tilde-escapes.
X.PP
X.BR "Mixed mode macros" .
X.PP
XIt is not normally possible to mix macros among the different modes.
XHowever, once expansion has begun, it is interrupted only by an error
Xor by the appearance of one of the special
X.I get
Xfunctions.
XIt is therefore possible to have a macro expansion which causes
Xthe mode to change before the expansion has completed.
XIn this case, recursive expansions will apply to the new mode.
XSuppose we are using a variation of the editor-starting macro shown
Xabove for composition mode:
X.sp
X.ti +4
Xmap! '\\CE' '\\n~v emacs\\n'
X.sp
XThis macro causes the \*Qemacs\*U editor to be started when control-E
Xis typed in composition mode.
XWe can now create a line mode macro that makes use of this
Xcomposition mode macro:
X.sp
X.ti +4
Xmap '#' 'reply \-i [getline]~t[getline]\\CE'
X.sp
XWhen the `#' key is pressed in line mode, this macro will
Xprint \*Qreply \-i\*U and wait for a message list, then enter
Xcomposition mode (by executing the
X.B reply
Xcommand).
XIn composition mode, it will display the To: line
X(the \*Q~t\*U escape) and wait for other addresses to be added.
XFinally, it will recursively expand the control-E macro, to
Xstart editing the message with emacs.
X.PP
XAs can be seen from this example, the
X.I Mush
Xmacro facility is very powerful.
XBe very careful not to accidentally expand recursive macros,
Xespecially when using macros that change modes.
XWhen testing new macros, it is a good idea to start
X.I Mush
Xin
X.I read-only
Xmode (the \-r command line flag) to be sure that messages are
Xnot lost or altered.
X.PP
X.BR "Getting rid of macros" .
X.PP
XIt is not necessary to delete a macro in order to redefine it.
XNew expansions for existing key sequences will automatically replace
Xthe old expansions.
XIf it is necessary to remove a macro completely, the commands
X.BR unbind ,
X.B unmap
Xand
X.B unmap!
Xcan be used to remove curses mode, line mode, and composition mode
Xmacros, respectively.
XRemember to use a backslash or other literal-next character to prevent
Xthe expansion of line mode macros when using these commands, especially
X.BR unmap .
X.SH "MAIL ADDRESSES"
XWhenever a command that requires a user address or set of addresses
Xis specified
X.RB ( mail ,
X.BR reply ,
X.BR alias ,
X.BR etc )
Xthe addresses given must be separated by commas.
XMost casual users specify addresses that contain no comments or whitespace.
XThe simplest addresses are just the login names of the users you wish to send
Xyour message to:
X.sp
X.ti +2
X\fBmail\fR fred barney wilma betty
X.sp
XIn these cases,
X.I Mush
Xcan figure out that they are separate addresses and
Xinsert commas between addresses automatically.
X.sp
X.ti +2
XTo: fred, barney, wilma, betty
X.sp
XAddresses may also contain `!', `@' and `%' characters which are used
Xto separate hostnames and the final user name from each other.
XThis is primarily used to mail to users on other machines.
XUUCP addresses are specified as
X.sp
X.ti +2
Xhost1!host2!user
X.sp
Xwhere there may be as many hosts as necessary to route the message
Xto the recipient user.
XHere, the user's account is on \*Qhost2\*U
Xand that machine is connected to \*Qhost1\*U.
X.I Domain
Xaddresses (also called Arpanet, Internet, RFC822, and \*Qfully qualified\*U
Xaddresses) are specified as
X.sp
X.ti +2
Xu...@host.domain
X.ti +2
Xuser%host2.domain@host1
X.sp
Xwhere \*Qdomain\*U is a domain name such as \*Q.berkeley.edu\*U or \*Q.com\*U.
XAs in the first example, the user is on \*Qhost2\*U, but that machine talks
Xto \*Qhost1\*U.
XIt is beyond the scope of this document to discuss in detail the ramifications
Xof inter-network mailing.
XMore information can be obtained through your system manager.
X.PP
X.I Mush
Xunderstands addresses containing a comment field.
XComment fields do not affect the destination address of mail being sent.
XThese fields are purely for
Xhuman legibility and may be specified according to the following constraints:
X.sp
XAnything within angle brackets is an address; whatever is outside of the
Xaddress is considered a comment:
X.sp
X.ti +2
XDan Heller <zipcode!ar...@cad.berkeley.edu>
X.ti +2
XDan Heller <ar...@zipcode.com>
X.sp
XAnything that has parentheses is a comment; whatever is outside of the
Xparentheses is considered the address:
X.sp
X.ti +2
Xzipcode!argv (Dan Heller)
X.ti +2
Xa...@zipcode.com (Dan Heller)
X.sp
XDouble quotes (") are treated just like parentheses:
X.sp
X.ti +2
X"Dan Heller" zipcode!argv
X.ti +2
X"Dan Heller" ar...@zipcode.com
X.sp
XIf the comment is to contain a comma, the first case above may not be used;
Xyou must use either the parenthesis or double-quote cases.
X.sp
X.ti +2
Xf...@flintstone.bed.rock (Fred Flintstone, Cave Man)
X.sp
XIf the comment contains unbalanced quotes, unpredictable results may occur
X.RI ( Mush
Xwon't deliver the mail).
X.sp
XSince the angle brackets have the highest precedence, quotes or parentheses
Xmay be used in conjunction with one another.
X.sp
X.ti +2
XYabba Dabba Doo (Fred Flintstone) <fred>
X.ti +2
XScoobie "Doobie" Doo <sco...@shaggys.mystery.machine>
X.PP
XMultiple addresses may appear on a line:
X.sp
X.in +2
Xa...@zipcode.com ar...@garp.mit.edu dheller
X.in -2
X.sp
XBecause there is no indication of comments (parenthesis, angle bracket,
Xor quotes), it is assumed that these are separate addresses and
X.I Mush
Xwill insert commas between these addresses accordingly.
XIt is for this reason that the user is encouraged to explicitly insert
Xcommas between all mail addresses and not depend on the automation of comma
Xinsertion to correctly separate addresses from one another.
X.PP
XMail aliases may contain addresses of the form described above.
X.sp
X.nf
X.in +2
X.ta 1.5i
Xalias george George Jetson <geo...@spacely.space.sprockets>
Xalias jane Jane Jetson <ja...@sky-high.appts>
Xalias group george, jane
X.in -2
X.fi
X.sp
XYou can mail using the alias as an address and it will be expanded
Xaccordingly.
XYou cannot, however, reference an alias and specify a
Xcomment or another address at the same time.
X.sp
X.ti +2
XTo: The Jetsons <group>
X.sp
XThe alias \*Qgroup\*U will not be expanded because the angle brackets
Xcauses it to be considered as another address entirely.
X.SH FILES
X.nf
X.ta 2.0i
X/usr/spool/mail/* Directory for incoming mail
X~/Mail Default \fBfolder\fR directory
X~/mbox File where old mail is saved
X~/.mushrc File giving initial \fIMush\fR commands
X~/.mailrc Alternate initialization file
X~/.edXXXXXXX Temporary for file for outgoing messages
X~/.mushXXXXXX Temporary mail file (copy of current folder)
X.fi
X.PP
XTemporary files that are created by the program are always
Xcreated with read/write access to the owner only; group and other
Xpermissions are never set.
XThis is also true for the /usr/spool/mail/* files.
XAll other files created by the user via commands internal or external
Xto the program have permissions set by the user's default umask.
XIf the umask is reset within the program, the mask remains
Xintact even after exiting.
XRemember 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).
XFilesystems mounted for read/write
Xaccess should be mounted as \*Qhard\*U NFS mounts or you may lose
Xmailboxes during 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.SH "SEE ALSO"
X.IR Mail (1),
X.IR binmail (1),
X.IR csh (1),
X.IR aliases (5),
X.IR mount (1),
X.IR mailaddr (7),
X.IR sendmail (8),
X.IR printf (3),
X.IR execl (3),
X.IR umask (1),
X.IR utime (2).
X.SH AUTHOR
XThe original
X.I Mush
Xwas written entirely by Dan Heller.
XCode to support macros, line wrapping, and a whole lot of other miscellaneous
Xdetails, was written by Bart Schaefer, who gets his name in print
Xbecause he updated and proofread this manual.
XNumerous others have supplied valuable suggestions
Xand assorted bits and pieces.
X.PP
Xa...@sun.com zipcode!argv
X.SH DISCLAIMERS
X.I Mush
Xcontains no
X.IR UNIX (TM)
Xsources and never has.
XIt is also not a modified version of any other mail user agent.
XSimilarities
Xwith any other mailer may have been designed for compatibility reasons.
X.PP
X.I UNIX
Xis a trademark of AT&T.
X.PP
XThe Flintstones and The Jetsons are trademarks of Hannah-Barbara Inc.
X.SH BUGS
XThe curses interface uses the curses library.
XThe routines from the library that are used are the most basic and simple
Xso as to avoid possible bugginess that
Xdifferent versions of UNIX might have.
XHowever, one unavoidable problem is the reverse video mode.
XDepending on your terminal,
Xthe termcap entry for it, and the version of curses you are running,
Xthe reverse video may make things worse than desired.
XIn such situations, the user should set the variable
X.B no_reverse
Xto not get reverse video.
X\&`^R' may still be entered at runtime in the curses
Xinterface to toggle reverse video.
X.PP
XToggling from the curses mode to the line mode to get the full
Xfunctionality of the shell/line mode is unfortunately necessary
Xin order to maintain the display in a sensible manner and to keep the
Xkeystroke-command interface simple and \*Quser friendly\*U.
XMostly, such escapes are only necessary
Xfor piping of commands and using the pick command.
XMacros are a big help with this.
X.PP
XIf the program is already running and the system [later] has to swap
Xand there is no swap space left, there may be problems.
XOne such problem is sending mail.
XIf this happens, then sending mail
Xwill fail and a segmentation fault from the spawned/forked child may occur
X(unless the -v flag was given to mail).
XThe unsent letter will not be removed from the editing file ($home/.edXXXXXX)
Xand may be recovered.
X.PP
XMany functions available to the line oriented mode (shell mode)
Xare not available to the tool mode.
XFor example,
X.B pick
Xmay not be directly accessed although experienced users may find that
Xtyping pick commands within single backquotes in the \*QRange:\*U panel item
Xabove the header window and then selecting a command that uses the the range
Xwill indeed pick messages.
XThis is mostly for selecting the \*Qdelete range\*U item
Xor the middle mouse button icon in the header panel.
X.PP
XVersion 6.5.6 was the last version designed to run under SunWindows, and is
Xtherefore the most recent version that will function under SunOS 2.x.
XThe current version, 7.0, has been ported to SunView, and may have
Xa completely new set of problems in addition to those described below.
XAlso, some of those described below may have been eliminated, and remain
Xin this discussion only for completeness.
X.PP
XShell escapes (of any kind) may be called only from the \*Qpipe\*U command
Xin the tool mode, should not be interactive, and should produce
Xoutput only to a file.
XThe reason for this is that there is no tty
X.I window
Xin which to do input/output.
XSince the interactive function-key binding interface has gone away, it is
Xunfortunately only possible to execute commands that have been pre-defined
Xin the initialization file.
XFuture revisions may correct these deficiencies.
X.PP
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.
XThis of course means that the function keys are relatively untested
Xin conjunction with SunView (SunOS later than 3.3).
XThe default function key bindings have been eliminated
Xto avoid collisions with SunView window system functions.
X.PP
XChanging the value of the
X.BR screen_win ,
X.BR crt_win ,
Xor
X.B msg_win
Xvariables after the tool is running simply has no effect.
X.PP
XWhen using
X.B vi
Xin the tool mode, the window is periodically one
Xline \*Qshort.\*U
XThat is, scrolling is off by one line and you have
Xto redraw the window (using \*Qz.\*U in vi) to get it in sync again.
XThis problem remains in most SunView implementations, but does not
Xseem to appear with the current default composition window size.
X.PP
XWhen running on full filesystems,
X.I Mush
Xmay complain or not even run since it needs temporary space with which
Xto work.
XInstead of finding new filesystems on its own,
X.I Mush
Xleaves this task up to the user.
XThe workaround is to set the variable
X.B tmpdir
Xin the initialization file to be a writable place in a filesystem that
Xhas enough disk space.
X.PP
XMost of the other known and documented bugs
Xare in the supplied README files accompanying the source.
XThe source is also an excellent place to look as many known bugs are
Xdocumented in comments.
XA good way to track suspicious bugs is to use the
X.B debug
Xcommand, but note that
Xthis command is very difficult to use in curses mode.
END_OF_FILE
if test 33714 -ne `wc -c <'mush/mush.1.d'`; then
echo shar: \"'mush/mush.1.d'\" unpacked with wrong size!
fi
# end of 'mush/mush.1.d'
fi
if test -f 'mush/tool_help' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'mush/tool_help'\"
else
echo shar: Extracting \"'mush/tool_help'\" \(17313 characters\)
sed "s/^X//" >'mush/tool_help' <<'END_OF_FILE'
X@(#)tool_help (c) copyright 10/18/86 (Dan Heller)
X
X%general%
X
X IF ALL ELSE FAILS, READ THE DIRECTIONS!
X
XThis famous quote applies here more than ever. If
Xyou are unfamiliar with Mushview, you should get
Xyourself acquainted with it by choosing HELP options
Xin menu items. If you get frustrated or confused
Xabout how to use or run a command, or if you want to
Xknow how something works or get to know quick shortcuts
Xin achieving tasks, it is advisable to look at the
XHelp option available with some items.
X%%
X
X%help%
XHelp was designed for users to get help from all commands
Xand options. The last item in many menus is a "help"
Xchoice. You will get an appropriate help message describing
Xwhat you can do at the position you are in on the Mushview
Xwindow.
X
XIf a help message isn't much help, it may be more helpful to
Xreference a different help item which describes in more detail
Xwhat you want to know. For example, reading the help for
X"folder" will help you better understand the method in which
Xmail messages are stored than it would if you had read the help
Xmessage for "save" first.
X%%
X
X%mouse%
XThe mouse is an image (cursor) which moves across the screen. Its
Xposition indicates which window is to receive input when you type
Xor click a mouse button.
X
XThe mouse may take upon different images which indicate various
Xthings. When the image looks like a "coffee cup", Mushview is in
Xthe process of doing something, like sending mail, or reading in
Xnew mail. In this event, you should wait till the cursor returns
Xto its normal state before attempting to do anything else. Go get
Xsome coffee.
X
XWhen in the Header Window, the cursor will look like the mouse
Xdevice that you hold with the buttons flashing on and off. This
Xis to remind you that you can use each button to do different tasks.
XUsing the RIGHT mouse button gives you a menu of options to do for
Xthe message under the mouse.
X%%
X
X%respond%
XThis item responds to mail in 4 ways.
XIn all cases, at least one recipient of your message will be the
Xsender of the message you are responding to. If a subject was in
Xthe author's letter, then it will be used as your subject.
X
XThe first and most used method of response is to the author of the
Xmessage only. Selecting this item with the LEFT mouse button will
Xuse this method for responding to mail.
X
XIf you want to include a copy of the author's message, then choose
Xthe menu item which says to include the message. If you wish for
Xall the recipients of the message to receive a copy of your reply,
Xthen choosing the third item will include them.
X
XThe fourth menu item will mail to the author and everyone listed on
Xthe To and Cc lines of the message, and include the message you are
Xresponding to in your text.
X
XIn such cases where you include the message you are responding to,
Xthe included message will be indented by "> " to identify it from
Xyour message. If you would like to have a string other than the
Xdefault used, then set the appropriate option to whatever you would
Xprefer by selecting the "Opts" item, moving the mouse on top of the
Xstring, "indent-str", selecting the LEFT mouse button and typing the
Xdesired string.
X%%
X
X%delete%
XYou may delete or undelete messages with this item.
XWhen using the LEFT mouse button, you will delete the
Xcurrent message (HIGHLIGHTED in the headers' window).
XOtherwise, you may select the menu item for undelete.
X
XYou may delete or undelete a "range" of messages by
Xtyping the range in the Header Window.
X
XFor help on valid message ranges, select the menu in
Xthe area marked "range" in the Header Panel Window.
X%%
X
X%folder%
XYour "folder" is a place to keep all your individual messages. Usually,
Xif you are a heavy mail user, you would organize your mail in such a
Xway in which related mail would be saved together in one folder. You
Xcreate folders simply by saving mail to a filename. Additional mail
Xcan be saved to those files in the same way. To manipulate messages
Xin folders, you "change folders" to the folder you wish to access
Xusing the folder item. Since it may occur that you switch back and
Xforth between two folders, you may use the previous folder menu item
Xwhich updates changes made to the current folder and changes your
Xfolder to the one previous to the current.
X
XYou may also select the exact name of the folder you wish to access
Xby selecting the left mouse button on the "folder" item and TYPING
Xthe exact name of the folder you wish to access. The "pathname" to
Xthe folder may start with a tilde (~) indicating your home directory.
XOr, it may contain a plus sign before the name indicating your Mail
Xdirectory (+reports, for example). Alternatively, you can type '%'
Xto access your system Mailbox, the place where all your mail is first
Xdelivered. And finally, you can type '#' to indicate the previously
Xaccessed folder.
X%%
X
X%save%
XYou may save messages in two ways. The most commonly used method is to
Xsave messages to your mailbox folder ("mbox") in your home directory.
XIf you use mail very frequently and save large amounts of mail, you can
Xsave messages to other folders for better organization.
X
XUsually, when messages are saved, mushtool marks them for deletion for
Xthe next update. If you don't want to have saved messages deleted, you
Xmust undelete them or set the variable "keepsave" in the options screen.
X
XThere is a text item in the Main Panel Window which allows you to type
Xthe name of the file to save a message. Type the filename and then
Xselect the LEFT mouse button over the "Save" item. If there is no
Xfilename specified, then messages are saved to your mbox file.
X
XYou may also choose a folder name by selecting the RIGHT mouse button
Xover the "Save" item and choosing from the menu of files displayed.
X
XYou can specify a range, or group of messages to save by typing a range
Xin the Header Panel Window. If there is a message list in that panel
Xitem, then the range of messages specified there will be saved. If not,
Xthe current message will be saved.
X
XFor additional information, see the help option for Folders.
X%%
X
X%quit%
XThere are various ways in which you may be finished with Mushview.
XThe most commonly used method is to simply "close" the tool to an
Xiconic form. This means that you haven't really quit, but you have
Xmerely put it on "hold" till later. It will become an icon on the
Xside or corner of the screen and appear to sit and do nothing. To
Xclose the tool to icon form, there are two methods which have will
Xhave two different effects.
X
XThe first method is to select this panel item with the left mouse
Xbutton. This will update your current folder (deleting messages
Xmarked for deletion) and close the tool. The second method is to
Xuse the tool manager around the perimeter of the window and select
X"close". This will close the tool without updating your mailfile.
X
XWhenever Mushview is in the "closed" state, it periodically
Xchecks your mail and updates your folder with the new mail. While
XMushview is in iconic form, it will display the number of messages
Xyou have in the current folder.
X
XThere are two equally similar methods of exiting Mushview, rather
Xthan just closing to an icon: you may select the second menu item
Xin the menu given by this panel item or you may use the tool mana-
X "quit" item.
X
XUsing the tool manager's quit will exit the tool without updating
Xyour folder whereas the panel item's menu selection will have the
XMushview prompt you whether to update the current folder or not.
X%%
X
X%update%
XThis item will update the current folder you are using. Changes are
Xupdated to the folder; that is, deleted mail is removed and all other
Xmail is copied back to the folder unless otherwise specified. See the
Xhelp in "folder" for more information on folders.
X
XIf new mail has arrived, it will incorporate it. Otherwise, new mail
Xis incorporated every two minutes or so, if some comes in.
X%%
X
X%headers%
XThe message headers are displayed in their own separate window.
XThe "current" message is usually displayed in either BOLD or
XREVERSE text. This "highlighted" message is the one which is
Xdisplayed at the bottom, larger window. In the message window,
Xeach message is displayed in the following format:
Xthe message number is displayed first; if it is the "current"
Xmessage, then there is a '>' sign.
XThe next character is the 'status' character:
X 'N' -- New (and unread)
X 'U' -- not new, but still Unread
X '*' -- delete messages (set show_deleted)
X 'P' -- preserve in spoolfile.
X 'O' -- Old message which has also been Read.
XIf there is just a space (no character), the message is new, but
Xyou've already read it. You should explicitly save or delete these.
X
XFollowing that is the Author of the message and/or all or part of
Xhis network address and login name. Following that is the number
Xof lines the message is. In quotes is all or part of the "Subject"
X(if one was specified).
X
XTo read a message, select either the READ item in the main panel
Xsubwindow or move the mouse over the message header you want to read
Xand press the LEFT mouse button. Or, the MIDDLE mouse button will
Xdelete that message. Choosing the RIGHT mouse button will give you
Xa menu of things to do then. Included in the menu, is a help item
Xwhich describes the selections in the menu.
X%%
X
X%Menu Read%
XWhen pointing at a message header in the header subwindow, hold down
Xthe RIGHT mouse button and select "Read" from the menu. A new window
Xwill open containing the text of the message. In this way, you can
Xdisplay more than one message at a time.
X
XThis operation sometimes fails on SunOS 3.5 systems due to limitations
Xon the number of windows Mush can open at once. When all the available
Xwindows are in use, the selected message is displayed in the message
Xsubwindow at the bottom of the main window.
X%%
X
X%preserve%
XUsually, after you read mail and you "update" or quit Mushview, unread
Xmessages are copied back into your system mailbox, deleted messages are
Xremoved, and messages which have been read but not deleted are saved in
Xyour "mbox" file. Specifying "hold" prevents this from ever happening,
Xbut you can mark specific messages to be held in your system mailbox by
Xpreserving them.
X%%
X
X%compose%
XWhen you start to compose a letter for mailing, you will be prompted
Xfor a recipient (To:) and other optional mail headers. The cursor for
Xthe text subwindow will look like a bent arrow to indicate that when
Xyou hit RETURN, the cursor will automatically forward to the next
Xheader (the Subject: line, for example).
X
XWhen the cursor resumes its original shape, the RETURN key enters new
Xlines as normal.
X
XThere must be a recipient specified in order to send a message. The
Xrecipient may be a user or a file or program name.
X%%
X
X%next%
XYou can page through all your messages by selecting "Next" after reading
Xeach message. The same effect is gotten when you select the "Delete" item
Xwhen the option, "autoprint" is set to be true (see "opts") except that
Xthe current message is deleted before the next one is displayed. Deleting
Xmail which is not important helps the efficiency of Mushview and reduces
Xunnecessary use of system resources.
X
XIn the Header Window, you will notice the cursor looks like the mouse you
Xuse. The blinking buttons on the mouse image remind you that you can use
Xany of the three buttons at any time. When you move the mouse over a
Xmessage and choose a button, the message under the mouse is going to be
Xthe one affected. Choosing left button will read the message, the middle
Xbutton will delete it, and the right button will give you a menu.
X%%
X
X%aliases%
XAliases are used as a method of mailing to users with long addresses using
Xshort names. For example, if you wanted to mail to
X ar...@sun.com
Xbut didn't want to type that all the time, then you could make an alias by
Xselecting the alias menu item that specifies "adding alias" and then TYPE:
X Dan ar...@sun.com
XIf you want to mail to a list of people and do so frequently enough to want
Xan alias name for the whole list, then you would type something like this:
X project-group fred mary bob@foo-bar herb s...@baz.bitnet
X
XTo mail to an "alias" you would compose a letter and address the letter:
X
XTo: Dan
XSubject: Alias example
XCc: project-group
X(rest of letter)
X%%
X
X%alts%
X"Alternates" are alternate names for YOU. In messages you receive,
Xyour account will appear on the "To" or "Cc" list. When you REPLY to
Xthose messages, Mushview will construct a message header for your
Xletter which will contain the To and Cc lists of recipients from the
Xoriginal message. You would probably want your name taken off the list
Xso you do not mail yourself a copy of your own message. If you have
Xother account names or accounts on other machines, you can let Mushview
Xknow what those mail addresses are so they can be removed from the
Xlists as well.
X
XNote, that if YOU add your name MANUALLY (type it yourself) to either
Xof the lists, it will not be removed.
X
XYou can set such a list in your .mailrc file in your home directory by
Xadding the line:
X
Xalts hostname1 hostname2 ...
X
XIf you prefer to not have your name removed from lists when responding
Xto mail, set the option "metoo"; this prevents the need for alternates
Xand your name will never be removed.
X%%
X
X%options%
XTo set or unset options and their values, move the mouse over the
Xoption of your choice and select the LEFT button to toggle true/false
Xvalues. If an option requires a string value, you must type the value,
Xso select the LEFT button to reference the option, and then type away.
X
XNOTE: You must use a Carriage Return to enter the final value for the
Xoption or the value will not change.
X%%
X
X%ignore%
XWhen reading mail, the message "headers" may clutter up the
Xwindow with information you are not interested in. For
Xexample, you may not be interested in the "Received" or
X"Message-Id" field of the mail message. You would find that
Xin time, it will become annoying to see these uninteresting
Xmessage headers.
X
XYou can specify which message headers should not be shown,
Xthus shortening the appearance of the length of the message.
X
XTypical settings:
X Received
X Message-Id
X Status
X%%
X
X%printer%
XThis item will send the current message, or the message specified on
Xthe range item, to the printer. The printer used is given by the
Xvariable $printer. To specify a different printer, change the printer
Xoption by selecting the item "Options" in the Main Panel Window, moving
Xthe mouse over the "printer" option, selecting the LEFT mouse button
Xand typing the name of the printer which you'd like to use.
X
XBe sure to set this option before printing because the DEFAULT option
Xmay not be what you want.
X
XYou can print messages that are NOT the current message by moving the
Xmouse into the Header Window and selecting the RIGHT mouse button on
Xtop of the message you want to print and selecting the PRINT menu
Xoption.
X%%
X
X%windows%
X"Windows" are the boxes which contain items, text, or graphic
Ximages. There are two "panel" windows. A panel window is one
Xwhich contains items, which are the little boxes with words
Xthat you can place the mouse over and click the left or mouse
Xbutton.
X
XEach window has a separate function for different purposes.
XStarting at the top of the main "tool" (contains all windows)
Xwe have the "header panel." Everything in this panel pertains
Xto the message headers, only. The panel in the middle of the
Xtool is the "mail panel" which is more general and applies to
Xjust about everything. For a description of each of the items
Xwithin any panel, select the "Help" option from the menu
Xyou get by selecting the RIGHT mouse button.
X%%
X
X%message range%
XYou can specify a large group of messages using a combination of special
Xsymbols in addition to numbers. For example, if you wish to save all of
Xthe messages, then you can use `*' to represent them all. If you were to
Xtype the "star" and select the Save menu option for "save range", then
Xyou would save ALL the messages you have (including deleted ones).
X
XIf you would like to save messages 4 through 9, then you would specify:
X 4-9
XIf you want to specify the messages between 2 and 32 except for messages
X6, 8 and message 12-14, you would type:
X 2-32 {6,8,12-14}
XCommas or spaces can be used to separate numbers.
X
XNote that you cannot specify negated messages without first specifying
Xnormal messages; e.g. {2-5} 1-11 doesn't make sense.
X%%
X
X%sort%
XSorting messages can be accomplished by selecting one of the
Xmenu items in this panel item. By default (using the LEFT mouse
Xbutton), sorting is done by message status. New messages are
Xfirst, followed by unread messages, old/read messages, replied
Xto messages, and finally deleted messages. You may also sort
Xmessages by author, date, or subject by selecting the menu item.
X%%
X
X%include%
XTo include a message in your letter, first enter the number of the
Xmessage you wish to include in the Range: item of the main mush
Xframe. Then select Include from the composition window panel by
Xpressing the LEFT mouse button. If you do not specify a message
Xin the Range: item, the current message will be included.
X
XTo forward a message, choose the message to be forwarded as above,
Xuse the RIGHT mouse button on the Include item and select Forward
XMessage from the menu.
X%%
END_OF_FILE
if test 17313 -ne `wc -c <'mush/tool_help'`; then
echo shar: \"'mush/tool_help'\" unpacked with wrong size!
fi
# end of 'mush/tool_help'
fi
echo shar: End of archive 8 \(of 19\).
cp /dev/null ark8isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 19 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

0 new messages