home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-05-06 | 55.1 KB | 1,534 lines |
-
- #! /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-sources-unix@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
- Xuser@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!argv@cad.berkeley.edu>
- X.ti +2
- XDan Heller <argv@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
- Xargv@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" argv@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
- Xfred@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 <scooby@shaggys.mystery.machine>
- X.PP
- XMultiple addresses may appear on a line:
- X.sp
- X.in +2
- Xargv@zipcode.com argv@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 <george@spacely.space.sprockets>
- Xalias jane Jane Jetson <jane@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
- Xargv@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 argv@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 argv@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 sly@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
-
-
-