[comp.sources.unix] v14i033: Mail User's Shell, version 6.0, Part01/14

rsalz@bbn.com (Rich Salz) (04/14/88)

Submitted-by: island!argv@sun.com (Dan Heller)
Posting-number: Volume 14, Issue 33
Archive-name: mush6.0/part01

(This synopsis is from Rich $alz...)
Mush is a mail program.  It helps you send, read, and generally
manage electronic mail.  There's a Sun "tool" interface, a curses
interface, and a shell-like, from which the name Mail User's Shell
is derived.  It runs on a wide variety of Un-x machines, including
BSD, USG, and Xenix machines.

Mush provides many of the features of UCB Mail (a/k/a mailx).
Mush is only a user-agent; it's designed to work with Sendmail as
the program to transport, but using other progams shouldn't be
too much work.  There's a few notes about using MMDF, and I don't
think a smail port would be too hard.  The old /bin/mail program
can be used; check the config.h file.

In curses mode, it's pretty good at fooling an MH user, but it's
more fun to be using the shell mode and have some C-shell hacker
wander by...

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 14)."
# Contents:  MANIFEST README README-6.0 bindings.h check.pr
#   coffee.cup.pr config.h-dist cycle.pr dn.arrow.pr edit_menu.c
#   envelope.pr glasses.pr mail.icon.1 mail.icon.2 makefile.bsd
#   makefile.sun makefile.sys.v makefile.x286 makefile.x386 strings.h
#   up.arrow.pr write.pr
# Wrapped by rsalz@fig.bbn.com on Wed Apr 13 20:04:40 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'MANIFEST'\"
else
echo shar: Extracting \"'MANIFEST'\" \(2005 characters\)
sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
X   File Name		Archive #	Description
X-----------------------------------------------------------
X MANIFEST                   1	This shipping list
X README                     1	
X README-6.0                 1	
X aliases.c                  2	
X bind.c                     5	
X bindings.h                 1	
X check.pr                   1	
X cmd_help                   6	
X coffee.cup.pr              1	
X commands.c                 8	
X config.h-dist              1	
X curs_io.c                  3	
X curses.c                   7	
X cycle.pr                   1	
X dates.c                    3	
X dn.arrow.pr                1	
X doproc.c                   5	
X edit_menu.c                1	
X envelope.pr                1	
X execute.c                  3	
X expr.c                     2	
X file.c                     3	
X fkeys.c                    6	
X folders.c                  2	
X glasses.pr                 1	
X hdr_panel.c                2	
X hdr_procs.c                2	
X hdrs.c                    10	
X help.c                     4	
X init.c                     4	
X loop.c                     9	
X mail.c                    14	
X mail.icon.1                1	
X mail.icon.2                1	
X main.c                     5	
X main_panel.c               3	
X makefile.bsd               1	
X makefile.sun               1	
X makefile.sys.v             1	
X makefile.x286              1	
X makefile.x386              1	
X misc.c                     4	
X msgs.c                     7	
X mush.1.a                  11	
X mush.1.b                  12	
X mush.1.c                  13	
X mush.h                     8	
X pick.c                     4	
X print.c                    2	
X rite.c                     2	
X select.c                   6	
X setopts.c                  4	
X signals.c                  3	
X sort.c                     2	
X strings.c                  2	
X strings.h                  1	
X tool.c                     2	
X tool_help                  9	
X up.arrow.pr                1	
X viewopts.c                 5	
X write.pr                   1	
END_OF_FILE
if test 2005 -ne `wc -c <'MANIFEST'`; then
    echo shar: \"'MANIFEST'\" unpacked with wrong size!
fi
# end of 'MANIFEST'
fi
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(10665 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
X/* @(#)README	2.5	(c) copyright 10/24/87	(Dan Heller) */
X
Author:
X    Dan Heller
X
Network address:
X    island!argv@sun.com		dheller@ucbcory.berkeley.edu
X    argv@garp.mit.edu		argv@spam.istc.sri.com
X
When sending mail, mail to the addresses in the order given.
X
Contained is the source for "Mail User's Shell" (MUSH), an interface
for the sending, viewing and managing of electronic mail on UNIX(tm) systems.
Redistribution of this code is permitted as long as all copyright notices
remain intact and all other identifying notices remain in the code and
in the binary.  This includes message headers on outgoing mail and
the startup message.  Failing to adhere to this reflects on your poor
sense of fair play and bad attitude -- you will probably fail in your
social and business affairs with little honor and respect from your peers.
X
With that out of the way...
X
To install Mush on your system, find the file that most closely resembles
X"config.h" (probably "config.h-dist") COPY it to config.h, edit it to reflect
the system dependencines described there.  Decide which makefile applies
to you.  makefile.sun applies only to suns and creates a binary called
X"mush."  If the binary ends in "tool", then the graphics (tool) mode will
be used by default on invocation. Otherwise, you must specify -t for toolmode
on sun workstations.  The SUNTOOL define must be set in the makefile.sun
in order to compile the suntools version.  You don't need to be running
sunview; old sunwindows (2.0+) may be used.
X
If you're on a BSD system and it's not a sun workstation, or if you're on a
sun workstation and know that you're not going to use the suntools mode then
you should use makefile.bsd so that SUNTOOL won't be defined and unneccessary
files not be compiled so the binary will be made smaller.
X
The files makefile.x286 and makefile.x386 were created especially for
xenix machines.  Depending on the configuration of your particular xenix box,
some tweeking of the makefile flags may be necessary.  If your xenix
release is 2.2 or higher then you must define USG. Libraries to use should
be -ltinfo *not* -lcurses -ltermlib.  This is because the curses package
uses termio instead of the sgtty data structure.  If you want to use termio
anyway, even if you're on an older xenix system (that supports termio),
then you may define USG anyway.
X
makefile.sys.v is for unix machines that are not running any flavor of
BSD and probably running a system-v flavor of unix -- this defines USG
so that termio will be used.  Some older unix systems have SYSV defined
in /usr/include/curses.h (which is used if you are compiling with CURSES)
In most cases, these only generate annoying warning messages and does not
effect the compilation of the code.
X
Mush was designed to use sendmail as the Mail Transport Agent. However,
other MTA's will work.  The MTA you use should be defined in config.h
under the MAIL_DELIVERY macro define. By default, /usr/lib/sendmail -i
is used -- the option, -i, tells sendmail not to accept "." on a line
by itself as an end-of-file marker.
X
If you do not use sendmail, then you should be familiar enough with your
MTA to know whether it uses "From " to separate messages.  Some mailers
use special control characters to separate messages in a folder.  MMDF may
use "^A^A^A^A" or older delivermail versions would use "^C".  Whatever
your system uses, if it is NOT "From " (just the first 5 chars on a line
matching "From "), then this string should be defined in config.h under
MSG_SEPARATOR.
X
Even if you do use the "From " construct to separate messages, some people
complain about messages which contain lines that start with "From ", but
are not message separators.  Few MTA's allow lines beginning with "From "
to be a part of a message body and modify the line by preceding it with a
X'>' resulting in ">From ..."   However, there are some mailers that don't
do this -- What mush does is look for a pattern of
From <string> <date format>
The string is usually the return address of the sender.  The date format
is supposed to be in ctime(3) format.  Even still, some MTA's don't conform
completely to this standard and vary slightly in implementation.  The function
X"getmail()" (which reads in messages) contains a scanf which looks for this
format to verify that this is indeed a new message we're reading.  If you
install mush and find that you are entering a shell, but mush indicates there
are no messages in the folder, it could be that you have a weird "From "
line format and the scanf needs to be modified or even removed.
X
Some MTA's, especially older ones like /bin/mail or execmail (xenix), do
not conform to RFC822 and provide the required headers: From: and Date:.
To remedy either #define OLD_MAILER in config.h or add the -D option
OLD_MAILER in the appropriate makefile: -DOLD_MAILER as part of the CFLAGS
variable.
X
If your mailer does NOT have a verbose option, then you should not have
VERBOSE_ARG defined.  Otherwise, define it to be whatever the
verbose argument is for your mailer.
X
Sendmail uses the -m argument to say, "metoo" -- when sending to mailing
lists, normally sendmail will send mail to mailing lists, but if you're
in that list, you are excluded from getting your own mail.  However, if
you have the variable metoo set with your variables, then the METOO argument
is passed to sendmail to say, "I know I'm on this mailing list, but send
me a copy of my message even tho I sent it."  For sendmail, this is -m.
If your mailer uses something else, then define METOO_ARG in the config file.
If you don't have it (sys-v), then do not define this macro.
X
VPRINTF should be defined if your system has the vprintf functions. You
X*have* these functions if 1) you are running system V, 2) xenix, or 3) you
are running a Sun release on or later than version 3.0.  If you are still not
sure, try the following command from your shell:
X
X% ar t /lib/libc.a | grep vprintf
X
If you have it, you'll probably get something like
vprintf.o
vsprintf.o
as output.  If you don't have it, you won't have any output.  If your
main C-libraries are not in /lib/libc.a, then find where they are and
try the same command using that file.
X
If you have REGCMP, this should be defined so that you will use the
routines regcmp() and regex() as the regular expression composer/parser.
If you don't have REGCMP defined, then the routines re_comp() and re_exec()
are used (this is the default).  Note that some systems do not have either
set of routines in the default libraries.  You must find the library to use
and add it to the list of libraries to use.  If this is the case, your link
will fail with the errors that regex and re_comp are undefined functions.
Read your man page for regex(3) to find where to locate those libraries.
X
A default mailrc should be installed for new users.  UCB mail's default
Mailrc works but no mailrc works also. The location of the default
file should be defined in config.h.  To have no default mailrc, set the
default to /dev/null.  For sun systems, the default .mailrc (/usr/lib/Mailrc)
does not work very well because sun's Mail is not standard /usr/ucb/Mail.
For this reason, sun has not changed the default mailrc file and still
resides in /usr/lib/Mail.rc (note this has the "." whereas the other file
does not).  The default config.h-dist reflects this.
X
The help files should be placed somewhere which is readable and accessible
by all. Failing to do so removes virtually the entire help facility's
ability to help anyone.  There is a help file for command help ( `command -?'),
and the other is for the graphics mode (Sun workstations only).  You should
define where you want these files in "config.h" so at runtime, they can be
accessed without error.
X
The default settings in config.h may be documented as the default values
in the help files.  Be aware that changing some default values may cause
inconsistencies with the help files and documentation.
X
If your system has *sys_siglist[], skip this paragraph.  If it doesn't,
or if your system has a non-standard list, you should edit signals.c at
the top and build the table manually from the one given for System-V people.
Note that most system-v unix systems need not change anything as long as
SYSV is defined.
X
Maintenance:
X
If you want to use dbx or any other debugger, the undocumented flag, -e
should be used as command line argument when you run the binary under
the debugger.  What this flag does is prevents your echo from being
turned off and leaving cbreak on, thus, keeping your tty in a sane state.
Beware of curses mode tho, since it must be turned off for that -- e.g.
the -e flag is overridden if you enter curses mode.  The -e flag can be
used in general usage anyway, but there's no difference known to the user
except for the fact that you can not type control characters.
X
If you have memory allocation checking and validation (sun 3.0+ ?) then
define M_DEBUG in the makefile (main.c) and add the library
X/usr/lib/debug/malloc.o to the library list. Do this only if you are
find bugs in the program and suspect memory allocation errors. main.c
has the code which sets the debugging level according to the value of
an environment variable.  Because malloc-debugging is so cpu intensive,
the sunwindows program will get a SIGXCPU (cpu time limit exceeded)
because of the large amount of opening and closing large pixrects and
devices.  For this reason, SIGXPCPU is is caught in main.c.
X
If you ever get "Message N has bad date: <date string>" then note
the FORMAT of that date and edit dates.c.  There are a number of
X"sscanf"s which you can see match known date formats.  Use them as
examples and insert the new date format you have.
X
If you ever add new variables, be sure to add them in viewopts.c and the
man page.
X
If Mush ever coredumps and you are suspicious about whether or not
your folder (or spool directory) was removed.  Or, if you were editing
a letter, you should check for the files .mushXXXXXX and .edXXXXXXX.
Mush won't die without telling you that it's dying and it will ask if you
want to save the .mush????? file and if you actually want it to dump core.
Note that if you run mush from .suntools and there is a core dump, it
probably wants to do some IO with the console and may hang (not exit)
because it doesn't know it can't talk to you.
X
Last attempted, mush passed lint with a small number of errors indicating
that fflush, fclose and other similar functions returned values which
were always ignored.  Sorry.  I did not attempt lint on the suntools mode.
Curses doesn't lint very well, but even when you lint mush with CURSES
defined, it only complains about the unused curses globals in curses.h.
END_OF_FILE
if test 10665 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'README-6.0' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README-6.0'\"
else
echo shar: Extracting \"'README-6.0'\" \(16732 characters\)
sed "s/^X//" >'README-6.0' <<'END_OF_FILE'
This is the README for release 6.0 of mush.  Note that the orginal README
has changed as well, so it should be read again.  It contains important
information for installing mush on your system.
X
With this distribution, there is a file called Mailrc which can be
used as the "default" mailrc (see config.h-dist).  This file will set
variables and command line aliases to make mush look as much like ucb Mail
as it possibly can.
X
New makefile && compiler flags:
X    System V machines that aren't XENIX should use the makefile.sys.v makefile.
X    The old makefile.sys.v has been removed. System-V machines
X    that aren't xenix may note -DUSG in the makefile.  USG is defined in
X    curses.h but is required to be in the makefile if compiling without the
X    curses libraries.  It should be in the makefile anyway so you never have
X    to worry about it. Xenix machines should use makefile.x286 or makefile.x386
X    USG should probably be defined on your xenix system unless you are running
X    a _very_ old version of xenix.  I don't know how old it would be, but
X    try compiling mush with USG first -- if that fails, then undefine it.
X
X    Some systems have regcmp/regex as their regular expression matching
X    routines while others have re_comp/re_exec -- If you have regcmp,
X    then you must have -DREGCMP in the makefile you're using. If you have
X    both sets of routines, take a pick.  Note that some systems do not
X    have either set of routines in the default libraries.  You must find
X    the library to use and add it to the list of libraries to use.  If this
X    is the case, your link will fail with the errors that regex and re_comp
X    are undefined functions.  Read your man page for regex(3) to find where
X    to locate those libraries.
X
X    Machines that use mail transfer agents that *do not* use a colon-less
X    "From " line as a message separator should #define in config.h the string
X    MSG_SEPARATOR.  Since this string is usually control characters, you
X    need to specify actual ascii values for those characters.  Users of MMDF,
X    for example, may use "\001\001\001\001" since some mmdf versions use four
X    control-A's to separate messages.  This message separator assumes that
X    there is a carriage return at the end of the string.  Systems that use
X    sendmail need not concern themselves with this define.
X
X    Some mailers (not RFC822 compatible, like execmail and older binmail's)
X    do not accept commas between addresses on outgoing mail.  Such mailers
X    also tend not to add the From: field and Date: field, which are headers
X    required to be compatible with RFC822.  This does not apply to BSD systems
X    or systems which run sendmail.  If this applies to your system, you
X    should define OLD_MAILER in config.h as "#define OLD_MAILER" or in the
X    makefile in addition to the CFLAGS definition: -DOLD_MAILER.  This does not
X    affect the user interface at all; mush will still enforce commas between
X    addresses.  However, addresses given on the command line to the mailer
X    will have commas stripped out if OLD_MAIL is defined in the makefile or
X    config.h.
X
System V:
X    New functions:
X	lock_file() /* returns -1 if can't lock */
X	close_lock() /* unlocks and calls fclose */
X    These functions also support BSD, xenix and sys-v.  These are provided
X    as locking mechanisms for all systems -- ifdef's decide how to lock.
X
X    Support for termio functionality.  Macros in mush.h have been modified
X    to provide for echo/cbreak modes to depending on the compiler flags:
X    CURSES and SYSV/BSD/USG.  There are 6 different possible cases here.
X
X    Problem with xenix/sys-v getting the "name" from a "From:" field since
X    char pointer and char arrays are different sizes.  (hdrs.c, compose_hdr())
X
X    sendmail mail now forks off and returns you to a mush prompt so you
X    don't have to wait for the mail to be delivered.  This is true for
X    both xenix and sys-v.
X
X    terminfo is now supported.
X
Command line arguments:
X    -u [user]
X    /usr/spool/mail/user is used as the current folder. If "user" isn't
X    specified, /usr/spool/mail/root is used.
X
X    -T timeout implies -t (for tooldmoe), so -t is not required if -T is given.
X
X    If -r (readonly) flag is given on the command line or to the folder/update
X    commands, the folder (or spoolfile) is opened readonly and the mail is
X    *not* copied into a temporary buffer.  This speeds up IO dramatically in
X    systems with slow IO or disk drives (typically, xenix/sys-v).
X
X    -H implies -r, so -r is not necessary.  If mush is started just to read
X    the headers of your mail, then forcing read only improves performance.
X
X    a folder as well as an address can be given on the command line. Thus,
X    % mush -f foldername address-list
X    will first interactively mail to the address-list and upon return read
X    in the folder "foldername".
X
Misc:
X    There is now an internal pager which is used if the user has no
X    "pager" variable set and no environment PAGER variable.  This pager
X    is very simple and understands <space> for next $crt lines, \n does
X    just the next line, ^D does the next half $crt lines, and q,Q quits.
X    The user can "set pager" (to null, effectively) or to the string "internal"
X    to always get the internal pager.  The DEF_PAGER macro in config.h can
X    be set to "internal" also. (do_pager() misc.c)
X
X    Mush now understands 'well-formed' addresses.  A well-formed address
X    consists of tokens of the form:
X
X    $path
X    $path (Name or comment here)
X    Name or comment <$path>
X    "Name or comment" $path
X
X    See the man page for Extensive examples and rules for what formats
X    are legal, but may not be supported.
X
X    To: lines which are too long from incoming mail are truncated. Previously,
X    a segmentation fault would result -- replies to messages containing long
X    To: lines will attempt to chop off the list between addresses.
X
X    Add right justification in hdr_format format string field similar
X    to printf style formatting.  Example:
X    set hdr_format = '%-25n %7d (%l) "%s"'
X    will produce a header format such that the name of the author is
X    right justified 25 positions, 7 chars of the date is printed, the
X    number of lines in the message and the subject surrounded by quotes.
X    Also subwidths are allowed using the same dot notation as provided by
X    printf.  (hdrs.c)
X
X    The '%S' switch for message status has been removed and the status of
X    a message is always at the beginning of the message header line
X    by default along with the msg number and the '>' if it's the current msg.
X    There is a new status flag for replied to messages.  If a message has
X    been replied to, then a 'r' is placed in the header string just after
X    the first status flag.. Thus, the header:
X      4 >*r Dan Heller <island!argv@sun.com> ....
X    means that message 4 is the current message, it has been deleted,
X    and has been replied to...
X
X    In the hdr_format string, the date of a message can be printed
X    using the same formatting characters as the prompt uses.  %T is
X    the time, etc... Note that %d still prints the whole date, but
X    the new formatting characters allow parts of the date to be printed.
X
X    New option for mail:
X    mail -s [subject]
X    With no subject specified, -s forces a prompt for the subject
X    header even if the variable "ask" is not set.  If a subject is
X    specified, then the subject is set to that string explicitly.
X    This allows the reply command to change the subject or to prompt
X    to change the subject.
X
X    Saveopts now warns if file already exists; you must confirm overwrite.
X
X    Control characters typed are now understood and can be entered into
X    letters etc... To enter a special control character such as your backspace
X    character or kill line character use the backslash.  In the toolmode,
X    use your literal next character (^V in most cases).
X
X    "varargs" now used in print.c to provide support for machine that
X    do not stack arguments compatible with vax/68000/etc... These machines
X    are Pyramids, Sun4's and more... (print.c)
X
X    The temporary file used to type in messages is now _closed_ before
X    invoking an editor.  This is for gnuemacs users or users of other
X    editors which insist on no other references to that file be open.
X
X    Using job control (^Z/fg) which in the headers portion of a message
X    (e.g. "To: ") would cause mush to be confused about what state the program
X    is in and would inadvertently show a prompt (user's $prompt) even
X    tho it was executing the right code (prompting for the To: line). This
X    has been fixed so that the prompt isn't given, but the To: line will
X    not be reprompted.
X
X    Mailing to users from the command line and ^C-ing while in the To: or
X    Subject: prompt would just report an interrupt and not abort the message;
X    it now exits.(hdrs.c, set_header())
X
X    If the user's home dir isn't writeable, or permissions changed during
X    runtime, mush changes to ALTERNATE_HOME and tries again rather than just
X    returning an error message.  If the alternate home also fails, an error
X    is printed and the function aborted.
X	(main.c, mail.c, start_file())
X
X    When updating a folder, ignored headers are now copied back regardless
X    of the variable, "alwaysignore". This is necessary because the user may
X    ignore headers that are required to be read when reading in a folder.
X	(msgs.c, copy_msg())
X
X    pick has a new option to pick from an arbitrary header.
X    pick -h return-path ucbvax
X    searches for the string "ucbvax" in the Return-Path: header of all
X    messages.
X
New Variables:
X    autosign2
X    Use an alternate signature for specific users.  Format for string:
X    set autosign2 = "address, address, ... : <signature>"
X    where "address" is a legal address (or alias) and signature is that
X    described by "autosign".  the colon separates the list from the signature.
X    If the colon is missing or if the list is null, the signature is used
X    and no checks are made against the recipient list.  Otherwise, each
X    address on the recipient list of outgoing mail must also exist in
X    the autosign2 list.  Otherwise, the signature in autosign is used.
X    If autosign is not set, the autosigning isn't done unless ~S is used.
X
X    show_hdrs (String)
X    Set to a list (space and/or comma separated) of headers which are to
X    be the only headers displayed when viewing a message.  This disables
X    the headers supressed by the ignore command. Example:
X	set show_hdrs = "from date subject to cc"
X    will only display the headers,
X	From: Date: Subject: To: Cc:
X    in their entirety.
X
X    mil_time -- if set, 24 hour military time format is used in message
X    dates or if the time is used in the prompt. Otherwise, 12-hour with
X    an added "am/pm" is displayed.
X
X    The variable "no_expand" prevents expansion of mush addresses in
X    outgoing mail.  The To: line will read the same as it was typed --
X    this hides the complete list of addresses of everyone on the list.
X
X    A new variable called "wrap" has been added.  When the last message is
X    deleted, the next "current" message is usually the next undeleted message.
X    If wrap is not set, then the curent message remains at the end of the
X    list of messages.  Similarly, if "next" ('n', CR) is specified, wrapping
X    to the beginning of the list only happens if the variable is set.
X
X    The variable fixaddr has been removed and the variable auto_route has
X    been modified to route uucp mail thru the host of the author of the
X    message being replied to as well as removing redundant hostnames such as:
X    host1!host2!host1!user -> host1!user
X
X    "cdpath" added.  This is like csh's but note you can't use ()'s to
X    set the path -- use quotes: (").  When the cd command is issued,
X    if there is no cdpath set, then the directory mentioned is cd'ed to.
X    If there is a cdpath and the pathname given is not a full pathname,
X    then each element in the cdpath is searched for the directory specified.
X    Recommend putting "." first in cdpath if one is used.
X
X    "sendmail" -- if set, this program is used instead of the default Mail
X    Transfer Agent defined as MAIL_DELIVERY in config.h ... If used, the
X    default flags -i and -m are not passed along to the MTA, so any flags
X    which are necessary for the MTA should be included in the sendmail
X    variable's string value.
X
X    pre_indent_str, post_indent_str (string)
X    These strings have the same properties as "hdr_format". The
X    pre_indent_str string will precede the body of text interpolated into
X    the message buffer and the post_indent_str will succeed the text. See
X    the man page for extensive details.
X
X    in_reply_to (string)
X    set to a string interpreted the same as "hdr_format" -- when replying
X    to mail, an additionaly outgoing message header In-Reply-To: is added.
X    See man page for more extensive details.
X
X    "ask" is a boolean which is for compatibility with ucb-Mail. If set,
X    you will be prompted for a subject.  otherwise, no subject prompting
X    is done.
X
Curses:
X    In curses mode, line-mode-escape commands which contain pipes,
X    :pick -s pattern | save folder
X    would segmentation fault on the command that follows such commands.
X    The next command to execute thinks that piping is on causing a segmentation
X    fault trying to reference the non-existent message list.  This was fixed by
X    resetting the DO_PIPE/IS_PIPE flags to off in the cmd_line() routine.
X	(misc.c, cmd_line())
X
X    Quitting now goes to the bottom of the screen rather than moving
X    down one line [as well as other quit-related update bugs]
X	(curses.c, case C_QUIT:)
X
X    Updating (^U) now redraws the screen right if you weren't on the
X    first "screenful" of messages. (curses.c, case C_UPDATE)
X
X    's' (save) command wasn't saving to mbox on no input (CR).  It tried
X    to save to "" which maps to "." which is a directory.  (curses.c)
X
X    The bug causing the GOTO command to inifinite loop if there were 0
X    or 1 messages in the folder if invoked by selecting a digit key has
X    been fixed.  The manual entry for how the goto command works has a
X    more detailed description and gives an example for effective usage.
X    Due to its versatility, there can be some screen updating problems
X    if the user specifies a message list which contains a command that
X    produces any "stdout" type output.  Normally, this shouldn't happen,
X    because most commands which are used to "search for messages" will
X    not output anything if they are being "piped".  If the user wishes
X    to specify a command that produces output (like echo) then the screen
X    will not be updated correctly (use ^L to redraw).  See the updated
X    man page entry for deatils on the above.
X
X    The bind command doesn't require the use of \Cc to represent control
X    characters anymore.  The old interface is still supported -- in fact
X    control characters that are typed are converted to this ascii format
X    for purposes of displaying current bindings and to allow .mushrc files
X    to specify bindings in ascii format.  However, control characters may
X    be typed as is.  The spacebar may be bound to a command if it is given
X    in the .mushrc file or on a Mush command line.  See the manual.
X
Tool mode:
X    Trying to start tool in icon mode sometimes aborts with segementation
X    fault.  This is caused by the window size being 0 and the message
X    trying to be written to the empty window.  The routine which tries to
X    output each line of the message to the window is recursive. If the line
X    wraps because of the window's width being less than the length of the
X    line, Addstr() finds the position in the line which wraps and calls
X    itself recursively passing the remainder of the string.  The size of
X    0 means that Addstr is calling itself at the the beginning of the string
X    all the time.  The fix is in copy_msg where it checks to see if the
X    window is large enough to attempt printing the message (msgs.c, copy_msg())
X
X    When changing folders, if there are no messages in the new folder,
X    the last read message was still displayed leaving the user somewhat
X    confused.  If there are no messages, the window is cleared. (folders.c)
X
X    To be consistent with the other two interfaces, both delete and
X    backspace will backspace if in type-in mode. (rite.c)
X
X    When returning from using the editor, the window displaying the letter
X    being composed would contain what the letter looked like before the editor
X    was invoked.  This has been fixed by printing out the last part of the
X    letter up to the size of the window available.
END_OF_FILE
if test 16732 -ne `wc -c <'README-6.0'`; then
    echo shar: \"'README-6.0'\" unpacked with wrong size!
fi
# end of 'README-6.0'
fi
if test -f 'bindings.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bindings.h'\"
else
echo shar: Extracting \"'bindings.h'\" \(1492 characters\)
sed "s/^X//" >'bindings.h' <<'END_OF_FILE'
X/* bindings.h  -- command bindings */
X
X/* to see if a key sequece matches, prefixes or misses a set binding */
X#define NO_MATCH	0
X#define MATCH		1
X#define A_PREFIX_B	2
X#define B_PREFIX_A	3
X
X#define NULL_MAP	(struct cmd_map *)0
X#define C_NULL		0
X#define C_GOTO_MSG	1
X#define C_WRITE_MSG	2
X#define C_WRITE_LIST	3
X#define C_SAVE_MSG	4
X#define C_SAVE_LIST	5
X#define C_COPY_MSG	6
X#define C_COPY_LIST	7
X#define C_DELETE_MSG	8
X#define C_DELETE_LIST	9
X#define C_UNDEL_MSG	10
X#define C_UNDEL_LIST	11
X#define C_REVERSE	12
X#define C_REDRAW	13
X#define C_NEXT_MSG	14
X#define C_PREV_MSG	15
X#define C_FIRST_MSG	16
X#define C_LAST_MSG	17
X#define C_TOP_PAGE	18
X#define C_BOTTOM_PAGE	19
X#define C_NEXT_SCREEN	20
X#define C_PREV_SCREEN	21
X#define C_SHOW_HDR	22
X#define C_SOURCE	23
X#define C_SAVEOPTS	24
X#define C_NEXT_SEARCH	25
X#define C_PREV_SEARCH	26
X#define C_CONT_SEARCH	27
X#define C_PRESERVE	28
X#define C_SORT		29
X#define C_REV_SORT	30
X#define C_QUIT_HARD	31
X#define C_QUIT		32
X#define C_EXIT_HARD	33
X#define C_EXIT		34
X#define C_UPDATE	35
X#define C_FOLDER	36
X#define C_SHELL_ESC	37
X#define C_CURSES_ESC	38
X#define C_PRINT_MSG	39
X#define C_CHDIR		40
X#define C_VAR_SET	41
X#define C_IGNORE	42
X#define C_ALIAS		43
X#define C_OWN_HDR	44
X#define C_VERSION	45
X#define C_MAIL_FLAGS	46
X#define C_MAIL		47
X#define C_REPLY_SENDER	48
X#define C_REPLY_ALL	49
X#define C_DISPLAY_MSG	50
X#define C_TOP_MSG	51
X#define C_DISPLAY_NEXT	52
X#define C_BIND		53
X#define C_UNBIND	54
X#define C_HELP		55 /* THIS MUST BE THE LAST ITEM */
END_OF_FILE
if test 1492 -ne `wc -c <'bindings.h'`; then
    echo shar: \"'bindings.h'\" unpacked with wrong size!
fi
# end of 'bindings.h'
fi
if test -f 'check.pr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'check.pr'\"
else
echo shar: Extracting \"'check.pr'\" \(240 characters\)
sed "s/^X//" >'check.pr' <<'END_OF_FILE'
X/* "@(#)check.pr	2.2	9/3/86 (Dan Heller)"; */
X
X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
X */
X	0x0000,0x0000,0x0001,0x0003,0x0007,0x000E,0x001C,0x0038,
X	0xC070,0xE0E0,0x71C0,0x3B80,0x1F00,0x0E00,0x0400,0x0000
END_OF_FILE
if test 240 -ne `wc -c <'check.pr'`; then
    echo shar: \"'check.pr'\" unpacked with wrong size!
fi
# end of 'check.pr'
fi
if test -f 'coffee.cup.pr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'coffee.cup.pr'\"
else
echo shar: Extracting \"'coffee.cup.pr'\" \(193 characters\)
sed "s/^X//" >'coffee.cup.pr' <<'END_OF_FILE'
X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
X */
X	0x0200,0x0100,0x0600,0x0800,0x0600,0x0100,0xFFF8,0x800C,
X	0x800A,0x4012,0x401C,0x2020,0x9048,0x7FF0,0x3FE0,0x0000
END_OF_FILE
if test 193 -ne `wc -c <'coffee.cup.pr'`; then
    echo shar: \"'coffee.cup.pr'\" unpacked with wrong size!
fi
# end of 'coffee.cup.pr'
fi
if test -f 'config.h-dist' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'config.h-dist'\"
else
echo shar: Extracting \"'config.h-dist'\" \(2000 characters\)
sed "s/^X//" >'config.h-dist' <<'END_OF_FILE'
X/* config.h 1.1	(c) copyright 1986 (Dan Heller) */
X
X#define MAILRC		".mushrc"
X#define ALTERNATE_RC	".mailrc"
X#define LIBDIR		"/usr/lib
X#define DEFAULT_RC	LIBDIR/Mail.rc"
X#define COMMAND_HELP	LIBDIR/cmd_help"
X#ifdef SUNTOOL
X#    define TOOL_HELP	LIBDIR/tool_help"
X#endif /* SUNTOOL */
X#define ALTERNATE_HOME	"/tmp"       /* Path must be read/write to EVERYONE */
X#define EDFILE  	".edXXXXXX"  /* file/pathname added to user's "home" */
X
X/* mail delivery system */
X#define MAIL_DELIVERY	"/usr/lib/sendmail -i"
X#define VERBOSE_ARG	"-v"    /* undef if none exists */
X#define METOO_ARG	"-m"    /* man sendmail for more info. */
X
X#define	MAXMSGS		1000	/* maximum number of messages we can read */
X#ifndef MAXPATHLEN
X#define MAXPATHLEN 256
X#endif
X
X#define VPRINTF		/* If your system supports the vprintf() functions,
X			 * True for sys-v and later sun versions (3.0+ ?).
X			 */
X
X/* If your mail transfer agent uses something *besides* "From " to separate
X * adjacent messages in a folder, define MSG_SEPARATOR to be this string.
X * If that string is 4 ^A's, then the string would be "\001\001\001\001"
X * If you don't know what this means, leave it alone.
X */
X/* #define MSG_SEPARATOR "From " */
X
X/* The maximum number of hostnames YOUR host may have (usually found in
X * /etc/hosts for BSD systems).  System-V/xenix doesn't use this (use 1).
X */
X#define MAX_HOST_NAMES  1
X
X#define LS_COMMAND	"ls"
X#define FORTUNE		"/usr/games/fortune"
X#define LPR		"lpr"
X#define SIGNATURE	".signature"
X#define MAILDIR		"/usr/spool/mail"
X
X/* default settings for some variable strings */
X#define DEF_PROMPT	"Msg %m of %t: "
X#define DEF_PAGER	"more" /* set to "internal" to use internal pager */
X#define DEF_SHELL	"csh"
X#define DEF_EDITOR	"vi"
X#define DEF_FOLDER	"~/Mail"        /* default Mail folder */
X#define DEF_MBOX	"~/mbox"	/* default mbox */
X#define DEF_INDENT_STR	"> "		/* indent included mail */
X#define DEF_PRINTER	"lp"
X#define DEF_ESCAPE	"~"
X#define DEF_HDR_FMT	"%25f %7d (%l/%c) \"%s\"" /* default hdr_format */
END_OF_FILE
if test 2000 -ne `wc -c <'config.h-dist'`; then
    echo shar: \"'config.h-dist'\" unpacked with wrong size!
fi
# end of 'config.h-dist'
fi
if test -f 'cycle.pr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cycle.pr'\"
else
echo shar: Extracting \"'cycle.pr'\" \(241 characters\)
sed "s/^X//" >'cycle.pr' <<'END_OF_FILE'
X/* "@(#)cycle.pr	2.2	9/3/86 (Dan Heller)"; */
X
X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
X */
X	0x07C0,0x0FE0,0x1834,0x301C,0x601C,0x203C,0x0000,0x0000,
X	0x7808,0x700C,0x7018,0x5830,0x0FE0,0x07C0,0x0000,0x0000
X
END_OF_FILE
if test 241 -ne `wc -c <'cycle.pr'`; then
    echo shar: \"'cycle.pr'\" unpacked with wrong size!
fi
# end of 'cycle.pr'
fi
if test -f 'dn.arrow.pr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'dn.arrow.pr'\"
else
echo shar: Extracting \"'dn.arrow.pr'\" \(243 characters\)
sed "s/^X//" >'dn.arrow.pr' <<'END_OF_FILE'
X/* "@(#)dn.arrow.pr	2.2	9/3/86 (Dan Heller)"; */
X
X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
X */
X	0xFFFF,0x8001,0xBFFD,0xBFFD,0xBFFD,0x9FF9,0x8FF1,0x87E1,
X	0x83C1,0x8181,0xB825,0xA435,0xA42D,0xB825,0x8001,0xFFFF
END_OF_FILE
if test 243 -ne `wc -c <'dn.arrow.pr'`; then
    echo shar: \"'dn.arrow.pr'\" unpacked with wrong size!
fi
# end of 'dn.arrow.pr'
fi
if test -f 'edit_menu.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'edit_menu.c'\"
else
echo shar: Extracting \"'edit_menu.c'\" \(3334 characters\)
sed "s/^X//" >'edit_menu.c' <<'END_OF_FILE'
X/* @(#)edit_menu.c	(c) copyright	10/18/86 (Dan Heller) */
X
X/* edit_menu.c
X * 
X * Routine which handles the menu you get when in the msg_win while editing
X * a letter.  This is just a fancy front end for ~ commands (nyuk, nyuk).
X */
X#include "mush.h"
X
X#define EDIT_IT     	(char *)'e'
X#define PAGE     	(char *)'p'
X#define INC 	 	(char *)'i'
X#define INC_HDR		(char *)'H'
X#define FWD_MSG		(char *)'f'
X#define TO_LIST		(char *)'t'
X#define SUBJECT		(char *)'s'
X#define CC_LIST		(char *)'c'
X#define BC_LIST		(char *)'b'
X#define ALL_HDR		(char *)'h'
X#define SIGN_IT		(char *)'S'
X#define NO_SIGN		(char *)'n'
X#define FORT		(char *)'F'
X#define NO_FORT		(char *)'N'
X#define ERASE   	(char *)'E'
X#define SEND	   	(char *)'X'
X#define ABORT   	(char *)'q'
X#define MENU_HELP	(char *)'?'
X
static struct menuitem edit_items[] = {
X    { MENU_IMAGESTRING,  "Enter Editor",	EDIT_IT  },
X    { MENU_IMAGESTRING,  "Send Letter",		SEND     },
X    { MENU_IMAGESTRING,  "Abort Letter",	ABORT    },
X    { MENU_IMAGESTRING,  "Review Letter",	PAGE     },
X    { MENU_IMAGESTRING,  "Include Message",	INC      },
X    { MENU_IMAGESTRING,  "Inc. msg w/hdr",	INC_HDR  },
X    { MENU_IMAGESTRING,  "Forward message",	FWD_MSG  },
X    { MENU_IMAGESTRING,  "Change To line",	TO_LIST  },
X    { MENU_IMAGESTRING,  "Change Subject",	SUBJECT  },
X    { MENU_IMAGESTRING,  "Change Cc list",	CC_LIST  },
X    { MENU_IMAGESTRING,  "Change Bcc list",	BC_LIST  },
X    { MENU_IMAGESTRING,  "Change All hdrs",	ALL_HDR  },
X    { MENU_IMAGESTRING,  "Add .signature",	SIGN_IT  },
X    { MENU_IMAGESTRING,  "No .signature",	NO_SIGN  },
X    { MENU_IMAGESTRING,  "Add a fortune",	FORT     },
X    { MENU_IMAGESTRING,  "No fortune",		NO_FORT  },
X    { MENU_IMAGESTRING,  "Erase Message",	ERASE    },
X    { MENU_IMAGESTRING,  "Help",		MENU_HELP  }
X};
X
static struct menu menu = {
X    MENU_IMAGESTRING, "Editing options",
X    sizeof (edit_items) / sizeof (struct menuitem), edit_items,
X    (struct menu *)NULL,
X    NULL
X};
X
edit_menu(event, fd)
struct inputevent *event;
X{
X    static char buf[5];
X    struct menuitem *m_item;
X    register char *action, *p = buf+1;
X    struct menu *menu_ptr = &menu;
X
X    if (!(m_item = menu_display(&menu_ptr, event, fd)) || get_hdr_field) {
X	if (get_hdr_field)
X	    print("Finish the message header first.");
X	return;
X    }
X    action = m_item->mi_data;
X    if (txt.x > 5)
X	add_to_letter(rite('\n'));  /* flush line for him */
X
X    if (!msg_cnt && (action == INC || action == INC_HDR || action == FWD_MSG)) {
X	print("No messages to include");
X	return;
X    }
X    buf[0] = *escape;
X    switch(action) {
X	case EDIT_IT  : (void) strcpy(p, "v");
X	when PAGE     : (void) strcpy(p, "p");
X	when INC      : (void) strcpy(p, "i");
X	when INC_HDR  : (void) strcpy(p, "H");
X	when ALL_HDR  : (void) strcpy(p, "h");
X	when SUBJECT  : (void) strcpy(p, "s");
X	when TO_LIST  : (void) strcpy(p, "t");
X	when CC_LIST  : (void) strcpy(p, "c");
X	when BC_LIST  : (void) strcpy(p, "b");
X	when FWD_MSG  : (void) strcpy(p, "f");
X	when SIGN_IT  : (void) strcpy(p, "S");
X	when NO_SIGN  : (void) strcpy(p, "S!");
X	when FORT     : (void) strcpy(p, "F");
X	when NO_FORT  : (void) strcpy(p, "F!");
X	when ERASE    : (void) strcpy(p, "E");
X	when ABORT    : (void) strcpy(p, "q");
X	when SEND     : finish_up_letter(); return;
X	otherwise     : (void) strcpy(p, "?");
X    }
X    add_to_letter(buf);
X}
END_OF_FILE
if test 3334 -ne `wc -c <'edit_menu.c'`; then
    echo shar: \"'edit_menu.c'\" unpacked with wrong size!
fi
# end of 'edit_menu.c'
fi
if test -f 'envelope.pr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'envelope.pr'\"
else
echo shar: Extracting \"'envelope.pr'\" \(247 characters\)
sed "s/^X//" >'envelope.pr' <<'END_OF_FILE'
X/* "@(#)envelope.cursor	2.2	9/3/86 (Dan Heller)"; */
X
X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
X */
X	0x0000,0x0000,0xFFFF,0xC003,0xA005,0x9009,0x8811,0x8421,
X	0x8241,0x8181,0x8001,0x8001,0x8001,0xFFFF,0x0000,0x0000
END_OF_FILE
if test 247 -ne `wc -c <'envelope.pr'`; then
    echo shar: \"'envelope.pr'\" unpacked with wrong size!
fi
# end of 'envelope.pr'
fi
if test -f 'glasses.pr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'glasses.pr'\"
else
echo shar: Extracting \"'glasses.pr'\" \(246 characters\)
sed "s/^X//" >'glasses.pr' <<'END_OF_FILE'
X/* "@(#)glasses.cursor	2.2	9/3/86 (Dan Heller)"; */
X
X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
X */
X	0x0000,0x0000,0x0C06,0x1209,0x1209,0x2211,0x2010,0x4020,
X	0x4020,0x8C40,0xF3C0,0x8C40,0x8C40,0x8C40,0x7380,0x0000
END_OF_FILE
if test 246 -ne `wc -c <'glasses.pr'`; then
    echo shar: \"'glasses.pr'\" unpacked with wrong size!
fi
# end of 'glasses.pr'
fi
if test -f 'mail.icon.1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mail.icon.1'\"
else
echo shar: Extracting \"'mail.icon.1'\" \(1933 characters\)
sed "s/^X//" >'mail.icon.1' <<'END_OF_FILE'
X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X */
X	0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
X	0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
X	0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
X	0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x0000,0x0001,
X	0x8000,0x0000,0x0000,0x0001,0x8000,0x1FFF,0xFFFF,0xFE01,
X	0x8000,0xFE00,0x0000,0x0181,0x8007,0x01C0,0x0000,0x0061,
X	0x8018,0x0030,0x0000,0x0011,0x8020,0x7008,0x0000,0x0011,
X	0x80C1,0xFC06,0x0000,0x0009,0x8101,0xFC01,0x0000,0x0009,
X	0x8103,0xFE01,0x0000,0x0005,0x8203,0xFE00,0x8000,0x0005,
X	0x8403,0xFE00,0x4000,0x0005,0x8401,0xFC00,0x4000,0x0005,
X	0x8801,0xFC00,0x2000,0x0005,0x8800,0x7000,0x2000,0x0005,
X	0x8800,0x0000,0x3000,0x0005,0x9000,0x0000,0x1000,0x0005,
X	0x9000,0x0000,0x1000,0x0005,0x93FF,0xFFFF,0x9000,0x0025,
X	0xA200,0x0000,0x9000,0x00E5,0xA200,0x0000,0x9000,0x03A5,
X	0xA200,0x0000,0x9000,0x0625,0xA3FF,0xFFFF,0x9000,0x1C25,
X	0xA000,0x0000,0x1000,0x3425,0xA000,0x0000,0x1000,0xC425,
X	0xA000,0x0000,0x1003,0x8425,0xA000,0x0000,0x1006,0x0425,
X	0xA000,0x0000,0x101C,0x0425,0xA000,0x0000,0x11F0,0x0425,
X	0xA000,0x0000,0x13E0,0x0445,0xA000,0x0000,0x13E0,0x0585,
X	0xA000,0x0000,0x13E0,0x0605,0xA000,0x0000,0x11C0,0x0405,
X	0xA000,0x0000,0x1000,0x000D,0xA000,0x0000,0x1000,0x0011,
X	0xA000,0x0000,0x1000,0x0021,0xA000,0x0000,0x1000,0x00C1,
X	0xA000,0x0000,0x1000,0x0101,0xA000,0x0000,0x1000,0x0601,
X	0xA000,0x0000,0x1000,0x0801,0xA000,0x0000,0x1000,0x3801,
X	0xA000,0x0000,0x1000,0x4801,0xA000,0x0000,0x1000,0x8801,
X	0xA000,0x0000,0x1003,0x0801,0xA000,0x0000,0x1004,0x0801,
X	0xA000,0x0000,0x101C,0x0801,0xA000,0x0000,0x1024,0x0801,
X	0xA000,0x0000,0x1044,0x0801,0xA000,0x0000,0x1184,0x0801,
X	0xA000,0x0000,0x1204,0x0801,0xA000,0x0000,0x1404,0x0801,
X	0xBFFF,0xFFFF,0xF804,0x0801,0x8000,0x0000,0x0004,0x0801,
X	0x8000,0x0000,0x0004,0x0801,0x8000,0x0000,0x0004,0x0801,
X	0x8000,0x0000,0x0004,0x0801,0xFFFF,0xFFFF,0xFFFF,0xFFFF
END_OF_FILE
if test 1933 -ne `wc -c <'mail.icon.1'`; then
    echo shar: \"'mail.icon.1'\" unpacked with wrong size!
fi
# end of 'mail.icon.1'
fi
if test -f 'mail.icon.2' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mail.icon.2'\"
else
echo shar: Extracting \"'mail.icon.2'\" \(1933 characters\)
sed "s/^X//" >'mail.icon.2' <<'END_OF_FILE'
X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X */
X	0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
X	0x8000,0x0000,0x0000,0x0001,0x8000,0x0000,0x00E0,0x0001,
X	0x8000,0x0000,0x00DE,0x0001,0x8000,0x0000,0x00C1,0xE001,
X	0x8000,0x0000,0x00C0,0x1801,0x8000,0x0000,0x00C0,0x0801,
X	0x8000,0x0000,0x00C0,0x0801,0x8000,0x1FFF,0xFFC0,0x0E01,
X	0x8000,0xFE00,0x00C0,0x0981,0x8007,0x01C0,0x00C0,0x0861,
X	0x8018,0x0030,0x00C0,0x0811,0x8020,0x7008,0x00C0,0x0811,
X	0x80C1,0xFC06,0x00C0,0x1809,0x8101,0xBC01,0x00C0,0x6009,
X	0x8103,0x1E01,0x00C1,0x8005,0x8202,0x0E00,0x80C6,0x0005,
X	0x8404,0x0400,0x40D8,0x0005,0x8408,0x0200,0x40E0,0x0005,
X	0x8810,0x0100,0x20C0,0x0005,0x8820,0x6080,0x20C0,0x0005,
X	0x8840,0x4040,0x30C0,0x0005,0x9081,0x3020,0x10C0,0x0005,
X	0x9041,0x9C10,0x10C0,0x0005,0x93E0,0x8A0F,0x90C0,0x0005,
X	0xA210,0x6404,0x90C0,0x0005,0xA208,0x3002,0x90C0,0x0005,
X	0xA204,0x1401,0x90C0,0x0005,0xA3FF,0xFFFF,0x90C0,0x0005,
X	0xA000,0x0000,0x10C0,0x0005,0xA000,0x0000,0x10C0,0x0005,
X	0xA000,0x0000,0x10C0,0x0005,0xA000,0x0000,0x10C0,0x0005,
X	0xA000,0x0000,0x10C0,0x0005,0xA000,0x0000,0x11C0,0x0005,
X	0xA000,0x0000,0x13E0,0x0005,0xA000,0x0000,0x13E0,0x0005,
X	0xA000,0x0000,0x13E0,0x0005,0xA000,0x0000,0x11C0,0x0005,
X	0xA000,0x0000,0x1000,0x000D,0xA000,0x0000,0x1000,0x0011,
X	0xA000,0x0000,0x1000,0x0021,0xA000,0x0000,0x1000,0x00C1,
X	0xA000,0x0000,0x1000,0x0101,0xA000,0x0000,0x1000,0x0601,
X	0xA000,0x0000,0x1000,0x0801,0xA000,0x0000,0x1000,0x3001,
X	0xA000,0x0000,0x1000,0x4001,0xA000,0x0000,0x1000,0x8001,
X	0xA000,0x0000,0x1003,0x8001,0xA000,0x0000,0x1004,0x8001,
X	0xA000,0x0000,0x1018,0x8001,0xA000,0x0000,0x1020,0x8001,
X	0xA000,0x0000,0x1060,0x8001,0xA000,0x0000,0x1180,0x8001,
X	0xA000,0x0000,0x1280,0x8001,0xA000,0x0000,0x1480,0x8001,
X	0xBFFF,0xFFFF,0xFC80,0x8001,0x8000,0x0000,0x0080,0x8001,
X	0x8000,0x0000,0x0080,0x8001,0x8000,0x0000,0x0080,0x8001,
X	0x8000,0x0000,0x0080,0x8001,0xFFFF,0xFFFF,0xFFFF,0xFFFF
END_OF_FILE
if test 1933 -ne `wc -c <'mail.icon.2'`; then
    echo shar: \"'mail.icon.2'\" unpacked with wrong size!
fi
# end of 'mail.icon.2'
fi
if test -f 'makefile.bsd' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'makefile.bsd'\"
else
echo shar: Extracting \"'makefile.bsd'\" \(1129 characters\)
sed "s/^X//" >'makefile.bsd' <<'END_OF_FILE'
X# makefile.bsd	(c) copyright 1986	(Dan Heller)
X#
HDRS= mush.h config.h-dist strings.h bindings.h
SRCS= main.c init.c misc.c mail.c hdrs.c execute.c commands.c print.c dates.c \
X      signals.c aliases.c setopts.c msgs.c pick.c sort.c expr.c folders.c \
X      loop.c help.c viewopts.c curses.c curs_io.c bind.c file.c strings.c
OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
X      signals.o aliases.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
X      folders.o dates.o loop.o help.o viewopts.o curses.o curs_io.o bind.o
HELP_FILES= README-6.0 README cmd_help mush.1
MAKES= makefile.bsd makefile.x286 makefile.x386 makefile.sys.v
X
CFLAGS= -O -DCURSES -DBSD
LDFLAGS= -s
LINTFLAGS= -bxah -Dlint -DCURSES -DBSD
LIBES= -lcurses -ltermlib
X
mush: $(OBJS)
X	@echo loading...
X	@cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
X
tape:
X	@tar fcv /dev/rst0 $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
X
tar:
X	@tar fcv MUSH $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES)
X
tarmail:
X	tar fcv - $(MAKES) $(HDRS) $(SRCS) $(HELP_FILES) | \
X	compress | btoa > mush.tarmail
X
lint:
X	lint $(LINTFLAGS) $(SRCS)
X
clean:
X	rm -f *.o core mush
END_OF_FILE
if test 1129 -ne `wc -c <'makefile.bsd'`; then
    echo shar: \"'makefile.bsd'\" unpacked with wrong size!
fi
# end of 'makefile.bsd'
fi
if test -f 'makefile.sun' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'makefile.sun'\"
else
echo shar: Extracting \"'makefile.sun'\" \(1365 characters\)
sed "s/^X//" >'makefile.sun' <<'END_OF_FILE'
X# makefile.sun	(c) copyright 1986	(Dan Heller)
X#
HDRS= mush.h config.h-dist strings.h bindings.h
X
SRCS= main.c init.c misc.c mail.c hdrs.c execute.c commands.c rite.c \
X      select.c doproc.c print.c signals.c aliases.c setopts.c msgs.c \
X      hdr_procs.c tool.c hdr_panel.c main_panel.c help.c viewopts.c sort.c \
X      pick.c fkeys.c expr.c folders.c dates.c loop.c edit_menu.c \
X      curses.c curs_io.c bind.c file.c strings.c
X
OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o rite.o \
X      select.o doproc.o print.o signals.o aliases.o setopts.o msgs.o \
X      hdr_procs.o tool.o hdr_panel.o main_panel.o help.o viewopts.o sort.o \
X      pick.o fkeys.o expr.o folders.o dates.o loop.o edit_menu.o \
X      curses.o curs_io.o bind.o file.o strings.o
X
IMAGES= mail.icon.1 mail.icon.2 check.pr cycle.pr envelope.pr glasses.pr \
X	write.pr up.arrow.pr dn.arrow.pr coffee.cup.pr
X
HELP_FILES= README-6.0 README cmd_help tool_help mush.1
X
MAKES= makefile.sun makefile.bsd makefile.sys.v makefile.x286 makefile.x386
X
CFLAGS= -O -DSUNTOOL -DCURSES -DBSD
LDFLAGS= -s
LIBES= -lcurses -ltermlib -lsuntool -lsunwindow -lpixrect
LINTFLAGS= -bxah -Dlint
X
mush: $(OBJS)
X	@echo loading...
X	@cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
X
tar:
X	@tar fcv MUSH $(HELP_FILES) $(MAKES) $(IMAGES) $(HDRS) $(SRCS)
X
lint:
X	make -f makefile.bsd lint
X
clean:
X	rm -f *.o core mush
END_OF_FILE
if test 1365 -ne `wc -c <'makefile.sun'`; then
    echo shar: \"'makefile.sun'\" unpacked with wrong size!
fi
# end of 'makefile.sun'
fi
if test -f 'makefile.sys.v' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'makefile.sys.v'\"
else
echo shar: Extracting \"'makefile.sys.v'\" \(929 characters\)
sed "s/^X//" >'makefile.sys.v' <<'END_OF_FILE'
HDRS1= mush.h config.h
HDRS2= strings.h
HDRS3= bindings.h
SRCS1= aliases.c commands.c dates.c execute.c expr.c folders.c \
X		hdrs.c init.c loop.c mail.c main.c misc.c msgs.c pick.c \
X		print.c setopts.c signals.c sort.c viewopts.c
SRCS2= bind.c curs_io.c curses.c help.c file.c strings.c
X
OBJS1= aliases.o commands.o dates.o execute.o expr.o folders.o \
X		hdrs.o init.o loop.o mail.o main.o misc.o msgs.o pick.o \
X		print.o setopts.o signals.o sort.o viewopts.o
OBJS2= bind.o curs_io.o curses.o help.o file.o strings.o
X
X# Sun OS systems who wish to compile with sys-v options:
X# CC= /usr/5bin/cc
X# CFLAGS= 	-O -DSYSV -DCURSES -DUSG
X# LIBS= -L/usr/5lib -lcurses
CFLAGS= 	-O -DSYSV -DCURSES -DREGCMP -DUSG
LDFLAGS= 	-s
LIBS= 		-lcurses
PROG=		mush
X
X$(PROG): $(OBJS1) $(OBJS2)
X	@echo loading...
X	@cc $(LDFLAGS) $(OBJS1) $(OBJS2) -o $(PROG) $(LIBS)
X
X$(OBJS1): $(HDRS1) $(HDRS2)
X$(OBJS2): $(HDRS1) $(HDRS2) $(HDRS3)
help.o: strings.h
END_OF_FILE
if test 929 -ne `wc -c <'makefile.sys.v'`; then
    echo shar: \"'makefile.sys.v'\" unpacked with wrong size!
fi
# end of 'makefile.sys.v'
fi
if test -f 'makefile.x286' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'makefile.x286'\"
else
echo shar: Extracting \"'makefile.x286'\" \(1296 characters\)
sed "s/^X//" >'makefile.x286' <<'END_OF_FILE'
HDRS= mush.h config.h-dist strings.h bindings.h
SRCS1= main.c init.c misc.c execute.c
SRCS2= signals.c aliases.c msgs.c pick.c viewopts.c
SRCS3= sort.c expr.c folders.c dates.c help.c
SRCS4= loop.c bind.c
SRCS5= commands.c setopts.c hdrs.c
SRCS6= mail.c print.c 
SRCS7= curses.c curs_io.c
SRCS8= file.c strings.c
OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
X      signals.o aliases.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
X      folders.o dates.o loop.o help.o viewopts.o bind.o curses.o curs_io.o
DOCS= README cmd_help mush.1
MAKES= makefile.sys.v makefile.xenix makefile.bsd
X
CFLAGS= -O -DSYSV -Mle -DCURSES -DREGCMP -DUSG
LDFLAGS= -X -Mle -lx -F 4000
LIBES= -lcurses -ltermlib
X
mush: $(OBJS)
X	@echo loading...
X	@cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
X
misc.o:	misc.c
X	cc $(CFLAGS) -LARGE -c misc.c
X
bind.o:	bind.c
X	cc $(CFLAGS) -LARGE -c bind.c
X
shar:
X	shar ${DOCS} ${MAKES} ${HDRS}>hdr.shr
X	shar ${SRCS1} > src1.shr
X	shar ${SRCS2} > src2.shr
X	shar ${SRCS3} > src3.shr
X	shar ${SRCS4} > src4.shr
X	shar ${SRCS5} > src5.shr
X	shar ${SRCS6} > src6.shr
X	shar ${SRCS7} > src7.shr
X	shar ${SRCS8} > src8.shr
X
tar:
X	tar fcv MUSH ${MAKES} ${HDRS} ${DOCS} ${SRCS1} \
X	${SRCS2} ${SRCS3} ${SRCS4} ${SRCS5} ${SRCS6} ${SRCS7} ${SRCS}8
X
clean:
X	rm -f *.o core mush
END_OF_FILE
if test 1296 -ne `wc -c <'makefile.x286'`; then
    echo shar: \"'makefile.x286'\" unpacked with wrong size!
fi
# end of 'makefile.x286'
fi
if test -f 'makefile.x386' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'makefile.x386'\"
else
echo shar: Extracting \"'makefile.x386'\" \(1240 characters\)
sed "s/^X//" >'makefile.x386' <<'END_OF_FILE'
HDRS= mush.h config.h-dist strings.h bindings.h
SRCS1= main.c init.c misc.c execute.c
SRCS2= signals.c aliases.c msgs.c pick.c viewopts.c
SRCS3= sort.c expr.c folders.c dates.c help.c
SRCS4= loop.c bind.c
SRCS5= commands.c setopts.c hdrs.c
SRCS6= mail.c print.c
SRCS7= curses.c curs_io.c
SRCS8= file.c strings.c
OBJS= main.o init.o misc.o mail.o hdrs.o execute.o commands.o print.o file.o \
X      signals.o aliases.o setopts.o msgs.o pick.o sort.o expr.o strings.o \
X      folders.o dates.o loop.o help.o viewopts.o bind.o curses.o curs_io.o
DOCS= README cmd_help mush.1
MAKES= makefile.sys.v makefile.xenix makefile.bsd
X
CFLAGS= -O -DSYSV -M3e -DCURSES -DREGCMP -DUSG 
LDFLAGS= -X -M3 -lx
LIBES= -lcurses -ltermlib
X
mush: $(OBJS)
X	@echo loading...
X	@cc $(LDFLAGS) $(OBJS) $(LIBES) -o mush
X
bind.o:	bind.c
X	cc $(CFLAGS) -LARGE -c bind.c
X
shar:
X	shar ${DOCS} ${MAKES} ${HDRS}>hdr.shr
X	shar ${SRCS1} > src1.shr
X	shar ${SRCS2} > src2.shr
X	shar ${SRCS3} > src3.shr
X	shar ${SRCS4} > src4.shr
X	shar ${SRCS5} > src5.shr
X	shar ${SRCS6} > src6.shr
X	shar ${SRCS7} > src7.shr
X	shar ${SRCS8} > src8.shr
X
tar:
X	tar fcv MUSH ${MAKES} ${HDRS} ${DOCS} ${SRCS1} \
X	${SRCS2} ${SRCS3} ${SRCS4} ${SRCS5} ${SRCS6} ${SRCS7} ${SRCS8}
X
clean:
X	rm -f *.o core mush
END_OF_FILE
if test 1240 -ne `wc -c <'makefile.x386'`; then
    echo shar: \"'makefile.x386'\" unpacked with wrong size!
fi
# end of 'makefile.x386'
fi
if test -f 'strings.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'strings.h'\"
else
echo shar: Extracting \"'strings.h'\" \(473 characters\)
sed "s/^X//" >'strings.h' <<'END_OF_FILE'
X/* @(#)strings.h	(c) copyright 9/3/86 (Dan Heller) */
X
X/* External function definitions for routines described in string(3).  */
char	*strcat(), *strncat(), *strcpy(), *strncpy();
int	strcmp(), strncmp(), strlen();
X
X#ifdef SYSV
X#define sprintf Sprintf
X#define	index	strchr
X#define	rindex	strrchr
X#endif /* SYSV */
X
char 
X    *sprintf(),		/* Sprintf for sysv -- see end of misc.c */
X    *any(), 		/* return first char in str2 that exists in str1 */
X    *index(), *rindex();
END_OF_FILE
if test 473 -ne `wc -c <'strings.h'`; then
    echo shar: \"'strings.h'\" unpacked with wrong size!
fi
# end of 'strings.h'
fi
if test -f 'up.arrow.pr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'up.arrow.pr'\"
else
echo shar: Extracting \"'up.arrow.pr'\" \(243 characters\)
sed "s/^X//" >'up.arrow.pr' <<'END_OF_FILE'
X/* "@(#)up.arrow.pr	2.2	9/3/86 (Dan Heller)"; */
X
X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
X */
X	0xFFFF,0x8001,0xA439,0xA425,0xA439,0x9821,0x8181,0x83C1,
X	0x87E1,0x8FF1,0x9FF9,0xBFFD,0xBFFD,0xBFFD,0x8001,0xFFFF
END_OF_FILE
if test 243 -ne `wc -c <'up.arrow.pr'`; then
    echo shar: \"'up.arrow.pr'\" unpacked with wrong size!
fi
# end of 'up.arrow.pr'
fi
if test -f 'write.pr' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'write.pr'\"
else
echo shar: Extracting \"'write.pr'\" \(244 characters\)
sed "s/^X//" >'write.pr' <<'END_OF_FILE'
X/* "@(#)write.cursor	2.2	9/3/86 (Dan Heller)"; */
X
X/* Format_version=1, Width=16, Height=16, Depth=1, Valid_bits_per_item=16
X */
X	0x0018,0x002C,0x0056,0x00A4,0x0148,0x0290,0x0520,0x0A40,
X	0x1080,0x2100,0x4200,0xE400,0xE800,0xF000,0xE000,0x0000
END_OF_FILE
if test 244 -ne `wc -c <'write.pr'`; then
    echo shar: \"'write.pr'\" unpacked with wrong size!
fi
# end of 'write.pr'
fi
echo shar: End of archive 1 \(of 14\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 14 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
-- 
Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.