[comp.mail.mush] Official 7.2.0 Patch Kit, Part04/04

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:",