schaefer@ogicse.cse.ogi.edu (Barton E. Schaefer) (11/05/90)
This is Part 4 of the Official Patch Kit for conversion of Mush 7.1.2 to
Mush 7.2.0. See Part 1 for a complete manifest and other information.
*** /tmp/,RCSt1009549 Sun Nov 4 20:02:38 1990
--- Mushrc Sun Oct 21 19:24:37 1990
***************
*** 29,35 ****
set newline
# When reading messages, don't bother looking at lengthy, boring headers.
! ignore message-id received via status
# Since mush has csh-like history, you might find it annoying to type
# things like "mail host\!host1\!host2\!user" from within the mush shell.
--- 29,35 ----
set newline
# When reading messages, don't bother looking at lengthy, boring headers.
! ignore message-id received via status priority
# Since mush has csh-like history, you might find it annoying to type
# things like "mail host\!host1\!host2\!user" from within the mush shell.
*** /tmp/,RCSt1009538 Sun Nov 4 20:02:35 1990
--- advanced.mushrc Sun Oct 21 19:24:40 1990
***************
*** 15,21 ****
#
if ! $?thisfolder
# Ignore the usual stuff
! ignore received via message-id status
# Hide folders in ~/.mail and save read mail in spool
set folder=~/.mail hold
# Remember a few commands, set up editors, act like a shell
--- 15,21 ----
#
if ! $?thisfolder
# Ignore the usual stuff
! ignore received via message-id status priority
# Hide folders in ~/.mail and save read mail in spool
set folder=~/.mail hold
# Remember a few commands, set up editors, act like a shell
*** /tmp/,RCSt1009409 Sun Nov 4 20:01:10 1990
--- bindings.h Sun Oct 21 19:24:41 1990
***************
*** 76,82 ****
#define C_MAP_BANG 55L
#define C_MAP 56L
#define C_MACRO 57L
! #define C_HELP 58L/* THIS MUST BE THE LAST ITEM */
struct cmd_map {
/* long so glob_flags can be saved in mac_stack */
--- 76,83 ----
#define C_MAP_BANG 55L
#define C_MAP 56L
#define C_MACRO 57L
! #define C_MARK_MSG 58L
! #define C_HELP 59L/* THIS MUST BE THE LAST ITEM */
struct cmd_map {
/* long so glob_flags can be saved in mac_stack */
*** /tmp/,RCSt1009532 Sun Nov 4 20:02:31 1990
--- cmd_help Sun Oct 21 19:24:42 1990
***************
*** 1,5 ****
! /* @(#)cmd_help 1.4 10/24/88 (Dan heller) */
%?%
? [command]
--- 1,55 ----
! /* @(#)cmd_help 10/24/88 (Dan Heller) */
+ %about%
+ Mush, the Mail User's Shell was conceived, written and performed by
+
+ Dan Heller Bart Schaefer
+ argv@monet.berkeley.edu schaefer@cse.ogi.edu
+ argv@uunet.uu.net schaefer@zipcode.com
+ argv@zipcode.com
+ argv@ora.com
+
+ Mush is copyright (c) 1986, 1987, 1988, 1989, 1990 by Dan Heller.
+ All Rights Reserved.
+
+ This software is not in the public domain. It is freely available
+ under the restrictions discussed in the README file accompanying
+ this distribution.
+
+ Dan Heller is currently working on his second book, The Motif
+ Programmer's Manual for O'Reilly && Associates. Bart Schaefer
+ recently completed his Ph.D. in Computer Science and Engineering
+ at the Oregon Graduate Institute. Bart and Dan have co-founded
+ ZipCode Software Corporation to produce, among other things,
+ ZipMail, the successor to Mush. If you like Mush, talk to us
+ about ZipMail :-).
+
+ History:
+ Mush was created as a friendlier and more versatile replacement
+ for the commonly available UNIX mail utilities. It originated in
+ 1985 as "frankenmail", with strictly a SunWindows interface, but
+ soon expanded to line and curses modes under the demands of excited
+ users. Bart climbed aboard on version 6.0 in October 1987. The
+ current version, 7.2, is the culmination of efforts by Dan, Bart,
+ and numerous contributors from around UseNet:
+
+ Don Lewis Rich Burridge
+ Bill Randle Bill Petro
+ Marc Rouleau (MMDF support) Akkana
+ James Bohem Michael Berman
+ Mike O'Carroll (DOS ports) David St. Pierre
+ Kevin Sheehan
+
+ and many others who may have been lost or weren't listed for fear
+ of misspelling.
+
+ Discussion and support of Mush is available via the newsgroup
+ comp.mail.mush or mailing list mush-users@apple.com, which are
+ one and the same in content. If you cannot get the newsgroup
+ at your site, you can request to join mush-users by sending such
+ a request to mush-users-request@apple.com.
+ %%
+
%?%
? [command]
***************
*** 30,38 ****
With no parameters, set lists all variables and their values.
To set a boolean variable (on or off), use:
! set variable
To set a variable's value to a string, use:
! set variable = value
If you want double-quotes or white-space embedded in a string,
encase the string in single quotes. If you want single quotes
--- 80,88 ----
With no parameters, set lists all variables and their values.
To set a boolean variable (on or off), use:
! set variable
To set a variable's value to a string, use:
! set variable = value
If you want double-quotes or white-space embedded in a string,
encase the string in single quotes. If you want single quotes
***************
*** 39,47 ****
in a string, encase the string in double quotes.
For a list of all variables with special meanings, use:
! set ?all
For help on a particular one of these variables, use:
! set ?variable_name
%%
%readmsg%
--- 89,97 ----
in a string, encase the string in double quotes.
For a list of all variables with special meanings, use:
! set ?all
For help on a particular one of these variables, use:
! set ?variable_name
%%
%readmsg%
***************
*** 143,149 ****
Commands can be "piped" to one another, because the return value
of a command is a msg_list, not text. For example,
! pick -f fred | lpr
will find all messages "from fred" and send them to the printer.
Commands dealing with more than one message process them in
--- 193,199 ----
Commands can be "piped" to one another, because the return value
of a command is a msg_list, not text. For example,
! pick -f fred | lpr
will find all messages "from fred" and send them to the printer.
Commands dealing with more than one message process them in
***************
*** 154,160 ****
%hdr_format%
This variable controls the display of message headers. Use:
! set hdr_format="string"
to change the header display. The string uses printf style
formatting and follows these conventions:
%a address of the author
--- 204,210 ----
%hdr_format%
This variable controls the display of message headers. Use:
! set hdr_format="string"
to change the header display. The string uses printf style
formatting and follows these conventions:
%a address of the author
***************
*** 184,190 ****
%prompt%
This variable controls the prompt that mush will display.
! set prompt = "string"
The "string" follows printf style formatting conventions:
%F full path of the current working folder
%f name (path tail) of the current folder
--- 234,240 ----
%prompt%
This variable controls the prompt that mush will display.
! set prompt = "string"
The "string" follows printf style formatting conventions:
%F full path of the current working folder
%f name (path tail) of the current folder
***************
*** 199,206 ****
--- 249,263 ----
%M month name (this month)
%Y year (this year)
%y year (last 2 digits only)
+ %$ introduces variable name
\n newline
\t tab
+
+ The special sequence %$ must be followed by the name of a variable.
+ The value of that variable will be inserted into the prompt at the
+ time the prompt is displayed. When setting a %$variable sequence
+ in your prompt, be sure to enclose the string in single quotes ('')
+ to prevent the shell from expanding the variable at that time.
%%
%preserve%
***************
*** 219,224 ****
--- 276,310 ----
each message as you read it, except that no `P' status is set.
%%
+ %mark%
+ mark [-[A|B|C|D|E]] [msg_list]
+ unmark [msg_list]
+
+ The "mark" command places a tag on messages that you wish to
+ reference later. If no argument or a msg_list only is given, the
+ mark is temporary and will not be saved when the folder is updated.
+ The command "headers -H:m" (abbreviated as ":m") can be used to
+ reference all messages having this temporary mark.
+
+ A "priority" may be set to messages by specifying a `-' followed
+ by a letter in the range A through E. The "sort" and "pick" commands
+ can be used to order or select messages according to their priorities.
+ Message priority is saved across folder updates.
+
+ Messages may have both a temporary mark and a priority, but may not
+ have more than one priority. The presence of a temporary mark is
+ shown by a `+' character immediately following the message number
+ in the "headers" command display, while the priority letter is
+ displayed in the same place if the message unmarked but prioritized.
+
+ The "unmark" command removes temporary marks only. To remove the
+ priority of a message, do not specify a priority:
+
+ mark - [msg_list]
+
+ See also the commands "set", "sort", "pick" and "headers".
+ %%
+
%save%
save/write/copy [-s|-S|-a|-A] [-f] [msg_list] [filename]
***************
*** 341,347 ****
-a by author (alphabetical)
-d according to date
-l by length (size)
! -R by subject including Re: (alphabetical)
-s by subject ignoring Re: (alphabetical)
-S by status
--- 427,433 ----
-a by author (alphabetical)
-d according to date
-l by length (size)
! -R by subject including Re:
-s by subject ignoring Re: (alphabetical)
-S by status
***************
*** 377,383 ****
%pick%
pick [+<num>] [-<num>] [-r msg_list] [-x] [-i] [-h hdr] [-f|s|t]
! [-d [-][date]] [-ago [+|-] [n days] [n weeks] [n months]] [[-e] <pat>]
Search for patterns within messages. Entire messages are
searched for <pattern> unless -f, -h, -s, or -t is specified.
--- 463,470 ----
%pick%
pick [+<num>] [-<num>] [-r msg_list] [-x] [-i] [-h hdr] [-f|s|t]
! [-d [-][date]] [-ago [+|-] [n days] [n weeks] [n months]]
! [-p priority] [[-e] <pat>]
Search for patterns within messages. Entire messages are
searched for <pattern> unless -f, -h, -s, or -t is specified.
***************
*** 388,394 ****
+<num> return only the first <num>ber messages matched
-<num> return only the last <num>ber messages matched
-x return all the messages which do NOT match
! -e remaining arguments are the <pat> (`e'xpression)
-f match pattern in the "From:" field (author) only
-s match pattern in the "Subject:" header only
-t match pattern in the "To:" field only
--- 475,481 ----
+<num> return only the first <num>ber messages matched
-<num> return only the last <num>ber messages matched
-x return all the messages which do NOT match
! -e remaining arguments are the <pat> (`e'xpression)
-f match pattern in the "From:" field (author) only
-s match pattern in the "Subject:" header only
-t match pattern in the "To:" field only
***************
*** 403,424 ****
pick -d +5/4 on or after May 4, this year
pick -d / finds today's messages only
At least one `/' char must be used in a date. There is
! no strong date checking; 2/30 would be considered valid.
-ago select messages relative to the current date
! Date formats for "ago" are more verbose than for -d; see
! the manual page for details.
Examples:
Find the first 5 messages with the subject "Telephone Message":
! pick +5 -s Telephone Message
Find the first 2 messages of the last 4 that are to "mush-users":
! pick -4 +2 -t mush-users
Find those among messages 1 to 10 that are 2 months or more old:
! pick -r 1-10 -ago -2m
Find messages that are 1 week old or newer:
! pick -ago +1w
Find messages that contain "-request" in the Resent-From field:
! pick -h resent-from -e -request
A description of the pick operation will be printed before the search
is performed, unless the value of the variable $quiet contains the
--- 490,514 ----
pick -d +5/4 on or after May 4, this year
pick -d / finds today's messages only
At least one `/' char must be used in a date. There is
! no strong date checking; 2/30 would be considered valid.
-ago select messages relative to the current date
! Date formats for "ago" are more verbose than for -d; see
! the manual page for details.
! -p [A-E] select messages with specified priority
! Multiple -p flags may be used to search for several
! priorities at once.
Examples:
Find the first 5 messages with the subject "Telephone Message":
! pick +5 -s Telephone Message
Find the first 2 messages of the last 4 that are to "mush-users":
! pick -4 +2 -t mush-users
Find those among messages 1 to 10 that are 2 months or more old:
! pick -r 1-10 -ago -2m
Find messages that are 1 week old or newer:
! pick -ago +1w
Find messages that contain "-request" in the Resent-From field:
! pick -h resent-from -e -request
A description of the pick operation will be printed before the search
is performed, unless the value of the variable $quiet contains the
***************
*** 466,481 ****
Examples:
! from - 10-30 {16}
will print the headers of messages 10 through 30 except for
message 16 and set the current message pointer to 10.
! pick -f Dan | from +
will print the headers of all messages that contain "Dan" in the
author's name and set the current message pointer to the last
one of that kind in the list.
! from +
will print the header of the message after the current message
and increment the current message pointer to that message.
--- 556,571 ----
Examples:
! from - 10-30 {16}
will print the headers of messages 10 through 30 except for
message 16 and set the current message pointer to 10.
! pick -f Dan | from +
will print the headers of all messages that contain "Dan" in the
author's name and set the current message pointer to the last
one of that kind in the list.
! from +
will print the header of the message after the current message
and increment the current message pointer to that message.
***************
*** 490,499 ****
outgoing mail.
Options for my_hdr:
! my_hdr show all headers
! my_hdr header show value of header
! my_hdr header: string set header to string
! un_hdr header unset header
Note that there is no space between the header name and the
colon in the third form of the command.
--- 580,589 ----
outgoing mail.
Options for my_hdr:
! my_hdr show all headers
! my_hdr header show value of header
! my_hdr header: string set header to string
! un_hdr header unset header
Note that there is no space between the header name and the
colon in the third form of the command.
***************
*** 526,532 ****
If you want to reference history commands within a cmd,
escape the ! with a backslash. For example:
! cmd r 'replysender \!* ; delete -t'
will cmd "r" to reply using whatever parameters you have given on
the command line and then delete that message and print the next
--- 616,622 ----
If you want to reference history commands within a cmd,
escape the ! with a backslash. For example:
! cmd r 'replysender \!* ; delete -t'
will cmd "r" to reply using whatever parameters you have given on
the command line and then delete that message and print the next
***************
*** 535,546 ****
%headers%
headers [+|-|N] [[-H]:c]
! + print the next screenful (or use the 'z' command).
! - print the previous screenful (or use 'z-' ).
! N print a screenful starting at message number N.
-H:c where `c' is one of
a all messages (mostly for the mush startup option -H:c)
d deleted messages
n new messages
o old messages
p preserved messages
--- 625,637 ----
%headers%
headers [+|-|N] [[-H]:c]
! + print the next screenful (or use the 'z' command).
! - print the previous screenful (or use 'z-' ).
! N print a screenful starting at message number N.
-H:c where `c' is one of
a all messages (mostly for the mush startup option -H:c)
d deleted messages
+ m marked messages
n new messages
o old messages
p preserved messages
***************
*** 625,631 ****
equivalent to your tty job-control stop character (often ^Z).
Since the mush shell never needs to be exited, the command 'q'
may be "cmd"ed to "stop;await" and csh users may have
! alias mail %mush
to bring mush into the foreground rather than having to invoke
it again. New mail will be read into the shell automatically
and much time and energy is saved.
--- 716,722 ----
equivalent to your tty job-control stop character (often ^Z).
Since the mush shell never needs to be exited, the command 'q'
may be "cmd"ed to "stop;await" and csh users may have
! alias mail %mush
to bring mush into the foreground rather than having to invoke
it again. New mail will be read into the shell automatically
and much time and energy is saved.
*** /tmp/,RCSt1009438 Sun Nov 4 20:01:24 1990
--- execute.c Sun Oct 21 19:24:46 1990
***************
*** 18,24 ****
#ifdef SUNTOOL
/*ARGSUSED*/
- static
Notify_value
my_wait3(tty, pid, status, rusage)
Tty tty;
--- 18,23 ----
*** /tmp/,RCSt1009424 Sun Nov 4 20:01:15 1990
--- init.c Sun Oct 21 19:24:49 1990
***************
*** 87,93 ****
#ifdef BSD
(void) gethostname(ourhost, sizeof ourhost);
if (!(hp = gethostbyname(ourhost))) {
- error("gethostbyname: %s", ourhost);
if (ourname = (char **)calloc((unsigned)2, sizeof (char *)))
strdup(ourname[0], ourhost);
} else {
--- 87,92 ----
*** /tmp/,RCSt1009600 Sun Nov 4 20:02:57 1990
--- makefile.sun Sun Oct 21 19:24:53 1990
***************
*** 16,22 ****
IMAGES= mail.icon.1 mail.icon.2
! HELP_FILES= README README-7.0 README-7.1 mush.1 cmd_help tool_help \
Mushrc Mailrc Gnurc advanced.mushrc sample.mushrc digestify
MAKES= makefile.sun makefile.bsd makefile.sys.v makefile.xenix makefile.hpux
--- 16,22 ----
IMAGES= mail.icon.1 mail.icon.2
! HELP_FILES= README README-7.0 README-7.1 README-7.2 mush.1 cmd_help tool_help \
Mushrc Mailrc Gnurc advanced.mushrc sample.mushrc digestify
MAKES= makefile.sun makefile.bsd makefile.sys.v makefile.xenix makefile.hpux
*** /tmp/,RCSt1009535 Sun Nov 4 20:02:34 1990
--- sample.mushrc Sun Oct 21 19:25:01 1990
***************
*** 143,147 ****
# aliases -- just like Mail's, but you can specify "names"
alias argv Dan Heller <argv@sun.com>
! alias bart Bart Schaefer <schaefer@ogicse.ogi.edu>
! alias mush-users Mush Users <mush-users-request@garp.mit.edu>
--- 143,147 ----
# aliases -- just like Mail's, but you can specify "names"
alias argv Dan Heller <argv@sun.com>
! alias bart Bart Schaefer <schaefer@cse.ogi.edu>
! alias mush-users Mush Users <mush-users-request@apple.com>
*** /tmp/,RCSt1009477 Sun Nov 4 20:01:46 1990
--- viewopts.c Tue Oct 30 13:29:27 1990
***************
*** 57,62 ****
--- 57,64 ----
"Location of the general help file for line and curses modes." },
{ "complete", "Character:",
"The character typed to cause a word completion to occur." },
+ { "compose_icon", "Filename:",
+ "Alternate pixmap to use when compose window is closed to an icon." },
{ "crt", "Lines:",
"The number of lines a message must have for 'pager' to be invoked." },
{ "crt_win", "Lines:",