home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume18
/
mush6.4
/
part01
/
README-6.4
< prev
next >
Wrap
Text File
|
1989-03-12
|
16KB
|
373 lines
New features/bug fixes to Mail User's Shell (Mush) since version 6.3:
For general information about mush, comments, bug reports, etc:
Dan Heller <island!argv@sun.com>
Extra special thanx to Bart Schaefer <schaefer@ogccse.ogc.edu>
for his help in fixing some bugs, and adding some new features.
Thanx to Marc Rouleau <mer6g@virginia.acc.virginia.edu> for his
work on providing MMDF support.
The main README has been rewritten to be more easily read. someday,
this will be mostly replaced by a Configure file once I figure out
Metaconfig :-).
Several "rc" files for demonstrating sample user configuration environments
are provided. Each are documented, but the man page does not reference them.
The person responsible for the changes are indicated in []'s.
=========
A new command line option, -m mailbox-path, can reset the value of your
main (system) mailbox. Mush will treat this new mailbox as if it were
your /usr/spool/mail/$USER file. Read the man page to understand all
the implications of this.
[Dan Heller]
---------
The variables, autosign2 and fortunates now take a new style of
addresses to specify an alternate signature or "fortune" program
appendatures. One side effect of this is that you can have a "local"
signature and a remote signature simply by specifying "!hostname"
in your autosign2 variable. (hostname is the name of your local
host). The old format is still supported, but the new syntax supports
some new funtionality. I set mine to:
set autosign2 = "!island @berkeley.edu @mit.edu *schaefer root: \--dan"
This means that any mail I send to 1) anyone at island, 2) anyone at
berkeley, 3) anyone at mit, 4) bart shcaefer, wherever he may be,
and 4) root on my local machine only (this includes root@my-machine-name)
will be signed by my "alternate" signature. If any address on the
recipient list fails to satisfy these four matches, the mail will be
signed by my regular signature. More precisely, the syntax is:
The list of recipients, after alias expansion and comment removal, is
then scanned and the following patterns are matched against those addresses
specified in the autosign2 or fortunates variable according to these rules.
user *user !host !path!name @dom.ain host!user
user the user is on the local host only. user!localhost will also match.
*user the address matches regardless of the path to the user.
includes: user, user@host1, host2!user, ...!path!user
!host matches any user who resides on the specified host.
includes: ...!foo!bar!host!user
!host1!host2 just like above, but path is more specific:
includes: ...!foo!bar!host1!host2!user
@dom.ain matches any user whose destination host lies within the domain.
includes: ...!host.dom.ain.etc!user
[Dan Heller]
---------
Variable modifiers :t and :h are now supported. If a variable expands
to a filename, the head of the path (up to the filename itself) is
returned for :h, and the title of the path (filename itself) is returned
for :t. Thus, you could set your prompt:
a fo 'fo \!*; set prompt = "! [$thisfolder:t] "'
Whenever you change folders, your prompt will tell you the name
of the folder you're in.
[Bart Schaefer]
---------
The alternates command (alts) now supports the added feature of
alternate login names as well as paths to login names. If you
have another login name on the local machine or on a remote machine,
specify this in the alts command as "!login" or "!path!to!login"
The point is, precede the login name or path by a !.
[Dan Heller]
---------
If someone else updates your folder while you're in it, mush will
immediately modify your folder to reflect the current version of
the folder. You would therefore lose any changes you made, so be
sure that no one else uses the same folder you do while you're
using it.
[Dan Heller]
---------
Arguments to mush may be "clumped" together when appropriate... Like
% mush -CS
Also, there are now long names for arguments... such as
% mush -shell -curses
Finally, it is now possible to specify blind-carbon recipients on the
command line, with the -b (-blind) option.
[Bart Schaefer]
---------
Command parsing has been improved. Notably, handling of commands appearing
to the right of `|' or `;' separators has been made uniform with that for
commands at the beginning of a line. Variable expansions in commands to the
right of a `;' now take place _after_ the command to the left has been run.
Quoting of separators (e.g. '|' or ";") also works properly, but you still
can't generate null arguments with empty quotes (sigh).
This now allows you to do things like:
cmd cd 'cd \!*; set prompt = "[$cwd] "'
whereas it didn't used to before.
Also, message lists are now separated only from command names to the left,
not from other strings to the right. This means that
save 3 ../msg_three
will save message 3 in the file "msg_three" in the parent directory, rather
than attempting to save messages 3 and the current message in "/msg_three".
Similarly, a command like
write12somefile
will be parsed as "write 12somefile" and will therefore save the current
message in "12somefile" in the current directory.
[Bart Schaefer]
---------
The tilde-escapes, ~c and ~b now work like ~t in that they append addresses
specified on the tilde line:
~c root
will append the user root rather than replace the entire Cc list.
[Dan Heller]
---------
When replying to multiple messages, all the messages will be replied to
at once rather than one at a time as it was before.
reply 2 4 6 -i 6 8
will reply to all the authors of messages 2 4 and 6 and include in the
text of the message the contents of messages 6 and 8.
[Dan Heller]
---------
When appropriate, the terminal settings for erase, word erase, line kill,
etc. special characters are now examined BEFORE the mush defaults, so
conflicts will now be resolved in favor of the stty settings. For example,
this allows the delete character (\177, ^?) to be defined as line kill;
previously, mush would have interpreted ^? as character erase.
[Bart Schaefer]
---------
You can now save a list of messages in a variable by piping mush
commands to the "set" command. For example,
mush> pick -f argv | set argv_msgs
The variable $argv_msgs will be a string which can be used as the
msg_list argument to other commands. So you can type: save $argv_msgs
[Dan Heller]
---------
variable testing can be done via "$?variable" --if the variable
is set, then the string "1" is returned. Otherwise, "0" is.
[Dan Heller]
---------
If-else-endif statements in the initialization file can now be nested.
They also understand the $?variable syntax, e.g.,
if ! $?autoedit
set wrapcolumn=75
else
if ! $?editor
set editor=/usr/local/bin/emacs
endif
endif
Note that there is no "elseif" syntax, and the "else" must still be on
a line by itself.
[Bart Schaefer]
---------
A new variable $thisfolder has been added. Its value is the full path name
of the current folder. $thisfolder cannot be changed by the "set" command.
Instead, it changes automatically whenever a new folder is entered. For
example,
cmd fo 'folder \!*; set prompt="$thisfolder "'
When initialization files are read (before a folder has been loaded),
$thisfolder is not set, so $?thisfolder can be used in a test around
other commands that manipulate messages. Example:
if $?thisfolder
sort -d
pick -f argv | save +argv_msgs | d
endif
[Bart Schaefer]
---------
The new variable $curses_help may be set to a list of curses command names.
The key bindings for the commands in this list will be displayed in a menu
format on the last few lines of the curses screen. If $curses_help is set,
but not to a value, then a default list of commands is used. See the file
config.h-dist for the default menu. Note that the commands listed in this
variable should be separated by spaces or tabs, not commas.
[Bart Schaefer]
---------
Linewrapping in composition mode is available through a new
variable, $wrapcolumn; set it to the last column in which you want
characters to appear.
[Bart Schaefer]
---------
Macros ala vi are now available in three flavors: curses, line mode,
and composition mode. See new commands, below.
[Bart Schaefer, Dan Heller]
---------
Support for MMDF and for system mailboxes kept in each user's home
directory have been added. #define MMDF and/or HOMEMAIL in config.h.
[Marc Rouleau]
=========
New commands and command options:
=========
A new command, edit, has been introduced to allow you to edit
messages. See the man page, but it's pretty straightforward.
[Dan Heller]
---------
The command, pipe, allows you to invoke unix commands with
message text as standard input. For example,
mush> pipe patch
sends the current message to "patch". See the man page for details.
[Bart Schaefer & Dan Heller, instigated by Marc Rouleau]
---------
The write/save/copy commands now have the options -a and -s. This
means, save the message according to the author or subject (respectively).
So, if you type "save -s" and the subject of the message was "READ ME"
then the message will be saved in a file called "READ_ME". Note that
spaces and slashes are converted to underscores.
A directory name may be specified:
mush> save -a $folder
Then mush will save the current message to the file described by the
author of the message's login name in your folder directory.
[Dan Heller]
---------
The mail/reply/replyall commands now have options -b and -c to specify
blind-carbon and carbon-copy recipients. These are most useful in
conjunction with the -f option, because forwarding does not allow the
use of the ~c and ~b escapes (unless the -e option was given).
[Bart Schaefer]
---------
The -f option to mail now forwards mail in such a way as to retain all
the original headers of the message -- "Resent-" fields are added by
mush according to RFC822. Note that this makes "replying" to messages
that have been forwarded potentially tricky. The reply_to_hdr variable
may specify headers to build a reply-path, yet the headers may be
inconsistent from message to message. It is advised to set reply_to_hdr
to be "From:" when trying to reply to forwarded messages to heighten the
probability of a correct return address to the _original_ author. Otherwise,
the return address will probably be that of the forwarder.
[Dan Heller]
---------
The previously undocumented "flags" command has become documented and
has picked up some new options. See the man page for details.
[Dan Heller]
---------
A new command "eval" has been added, analogous to the sh and csh "eval".
[Bart Schaefer]
---------
Commands bind-macro, map, and map! have been added for creating macros.
See the descriptions of these commands in the man page, and the new man
page section on MACROS. New curses functions for each of these have
also been created. Currently, the unmap and unmap! commands can only be
used from line mode; "unbind" will remove curses mode macros.
[Dan Heller, Bart Schaefer]
---------
Another new variable, $nonobang, lets you turn off those annoying
"event not found" messages without shutting history off altogether.
When nonobang is set, failed history references simply do not expand;
the effect is similar to csh's "nonomatch" for filename expansions.
[Bart Schaefer]
---------
The undigest command disassembles digests into the set of messages which
comprises it. The -m option will merge these messages into the current
folder. Otherwise, if a filename is specified, a new folder is created
and the user can change folders to read the messages separately.
If a message list is specified, each digest is disassembled to the same
filename (if given). If no filename is given and the user did not request
a merge, then a temporary file is made.
[Dan Heller, Bart Schaefer]
---------
dead.letter is now saved in mbox format.
[Dan Heller]
---------
uucp-style mbox formats with From uucp and >From lines are now collapsed
into the "correct" From line format. All the >From lines are removed
and the mailbox is stored in the format permenantly. This does not apply
to read-only folders.
[Dan Heller]
=========
Changes to old commands/functions/variables:
=========
Curses functions referenced by the "bind" command no longer have two-word
names. "delete list", "mail flags", etc. have been replaced by hyphenated
commands "delete-list", "mail-flags", etc. The "search" commands have
changed from "search down" to "search-back", "search up" to "search-next"
and "search cont" to "search-again", to avoid confusion with "up" and "down"
referring to message number rather than to screen direction. "show hdr" is
no longer a recognized name.
[Bart Schaefer, Dan Heller]
---------
The show_deleted variable now controls whether or you you can display
deleted messages in addition to whether to display their headers for a
headers command. All other mush commands affect all messages regardless
of whether or not they are deleted. Commands that wish to not affect
deleted messages should prepend the command with "* {`:d`} |"
[Dan Heller]
---------
The "screen-back" curses function (default 'Z') now places the current
message at the bottom of the screen instead of the top. Both the
"screen-back" and "screen-next" (default 'z') commands will leave the
current message unchanged if it is still visible on the new screen.
[Bart Schaefer]
---------
The "next-msg" curses function (default 'j') will now scroll downward
from the bottom of the page whenever there are blank lines available
on the screen. It stops when the last message or the bottom of the
screen is reached.
[Dan Heller]
---------
The "saveopts" command now saves all bindings and macros, as well as
variable settings, aliases, etc. Note that this also saves the system
defaults, too. Using saveopts will probably create very large .mushrc
files.
[Bart Schaefer]
---------
echo now understands -h and -p flags. When -h is used, the arguments
are treated as if you changed your header format to the argument(s) and
the current message header is printed using those formatting args. The
-p flag is as if you changed your prompt to the given arguments. This
allows the user to do things like:
echo -h This message is from %n and was dated on %d.
echo -p There are %u unread messages in folder %f.
[Dan Heller]
---------
reply_to_hdr now understands From_ to mean the colon-less From line.
Now, you can say:
set reply_to_hdr = "reply-to, return-path, sender, from_"
previously, you could only specify the From_ header by setting
reply_to_hdr to a null value. Also, regardless of which header
the return path is gotten from, the "name" is always taken from
the From: header if it exists. The result is a To: line which
contains the user's name and address.
[Dan Heller]
---------
While composing a message, if new mail arrives, then you will be
notified accordingly and you may continue composing your letter.
This does not happen if you are in an editor. This is not a feature
which can be turned off.
[Dan Heller]
---------
The day-of-week formatting parameter for the prompt formatting
string and the header formatting string ("prompt" and "hdr_format")
has changed from %D to %W altho the old method is still supported
even tho it's not documented.
[Dan Heller]
---------
A new formatting parameter for hdr_format: %i produces the message-id
of the message in question. This is a header not produced by OLD_MAILER
type MTA's.
[Dan Heller]
---------
config.h --a new macro HDRSIZ is available to redefine how large a
mail message header can be. This was based on the fact that some
systems' BUFSIZ is not very large and that some To: headers can
exceed that size. This resulted in a truncated reply list. HDRSIZ
is defined to be BUFSIZ by default. It should *not* be redefined
to a value less than BUFSIZ, but it can be increased.
[Dan Heller]
---------
MAX_HOST_NAMES define has gone away in config.h -- there is no more
limit on hostnames that your host can be called. By default, the
hostname is the legal hostname the system thinks it is, and the
rest of the names are set by various other sources. The user can
add to or override these names at any time.
[Dan Heller]
---------
makefile.x386 and makefile.x286 have gone away and replaced by
makefile.xenix. See the README and the makefile itself if you
run xenix.
[Dan Heller]
=========