Path: utzoo!utgpu!watserv1!watmath!att!att!rutgers!ucsd!ogicse!ogicse.cse.ogi.edu!schaefer From: schaefer@ogicse.cse.ogi.edu (Barton E. Schaefer) Newsgroups: comp.mail.mush Subject: Official 7.2.0 Patch Kit, Part04/04 Message-ID: <13580@ogicse.ogi.edu> Date: 5 Nov 90 07:48:46 GMT Sender: schaefer@ogicse.ogi.edu Organization: Oregon Graduate Institute (formerly OGC), Beaverton, OR Lines: 568 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 [+] [-] [-r msg_list] [-x] [-i] [-h hdr] [-f|s|t] ! [-d [-][date]] [-ago [+|-] [n days] [n weeks] [n months]] [[-e] ] Search for patterns within messages. Entire messages are searched for unless -f, -h, -s, or -t is specified. --- 463,470 ---- %pick% pick [+] [-] [-r msg_list] [-x] [-i] [-h hdr] [-f|s|t] ! [-d [-][date]] [-ago [+|-] [n days] [n weeks] [n months]] ! [-p priority] [[-e] ] Search for patterns within messages. Entire messages are searched for unless -f, -h, -s, or -t is specified. *************** *** 388,394 **** + return only the first ber messages matched - return only the last ber messages matched -x return all the messages which do NOT match ! -e remaining arguments are the (`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 ---- + return only the first ber messages matched - return only the last ber messages matched -x return all the messages which do NOT match ! -e remaining arguments are the (`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 ! alias bart Bart Schaefer ! alias mush-users Mush Users --- 143,147 ---- # aliases -- just like Mail's, but you can specify "names" alias argv Dan Heller ! alias bart Bart Schaefer ! alias mush-users Mush Users *** /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:",