This is release 7.1.0 of the SunView implementation of mush. Version 7.1.0 differs from 7.0.4 mostly in the appearance of the screen and the additional functionality that is allowed to show through to the tool from the underlying interpreter. This is a significant enough change in "look and feel" that the revision number was increased from 0 to 1. Thanks to Bill Randle for extensive SunOS 3.5 testing, and to Bill and also Don Lewis for their contributions to the new toolmode composition features and function key handling. Tool mode changes include: * Compilation now keys on definitions of SUN_4_1, SUN_4_0 or SUN_3_5 in makefile.sun, rather than assuming SunOS4.0 when SIGRET=void. You still have to define SUNTOOL to get the tool mode capability. If you define SUNTOOL but not the others, SUN_4_0 is assumed. * The header summary display window has a scrollbar; the and buttons for scrolling are gone. * The placement of buttons and items has changed a lot. Buttons and items dealing with folders and general setup have moved to the top of the frame, and items dealing with individual messages and with composition have been placed in a single row between the headers and messsage display subwindows. * The and buttons each have a text entry item. Furthermore, file completion with the ESC key works in those items. * The menu has been unscrambled, so you actually get the sort criteria that you select. (Don't ask.) * The and buttons have moved into a menu under the button. This clears up some confusion about exactly what it was that meant, and provides a hook for future addition of a window for defining your own outgoing message headers. * The button is gone; its operations are now handled by opening the frame and toggling show_deleted or no_reverse. * The small one-line print window is gone; messages previously shown there now go to the scrollable status window. There may be some remaining bugs with missing newlines here. This frees up some more file descriptors in SunOS 3.5, to keep other things working longer. * Function keys are recognized in most parts of the main frame. In anticipation of the day when window manager function keys can be redefined, the messages about "L7 not defined" etc. are still shown unless suppressed through $quiet (see below). * The composition frame has more control buttons, providing more of the functions of line and curses mode message composition. Some of the "chattiness" of message composition has gone away. In fact, the whole chatty subwindow in the compose frame has gone away, possibly to return in a later patch when a better way to decide what frame a message should go to has been worked out. In the meantime, all messages go to the main frame. * Tilde escapes are supported in the tool mode composition textsw, with a few minor exceptions accessible from the control buttons. * Typing a while entering header field text in tool mode will move automatically to the next header when this is sensible. The cursor becomes a bent arrow to indicate that this will happen. * User-definable icons can be installed through the $mail_icon and $newmail_icon variables, and $quiet has a field to suppress the message-number label so your pretty pictures won't be trashed. * Files that are not readable as folders are left out of the menus for the and items. General changes include: * There is a new defined constant, DIRECTORY, which indicates whether your system has BSD-compatible directory-access routines. It turns out to be much too hard to figure this out on an OS-by-OS basis. DIRECTORY is automatically defined when BSD is defined, and is in the default CFLAGS in makefile.hpux; you others are on your own. * Some compilers were confused by "/*" appearing in the META string defined in glob.h. The characters in META have been rearranged. * Using "exit" in a nested "if" in a source/init file no longer causes error messages about "missing endif". * Redefining "folder" via a "cmd" in .mushrc no longer causes the initial folder load to bomb. Similarly with "sort". * Date parsing and sorting now understand timezones. There may still be some rough edges in date parsing on some of the less common date formats, but RFC-822 and ctime (From_ line) dates are handled correctly. If the dates mush displays are really off the wall, the order of the sscanf's in parse_date() may need to be changed, or we may need to add some cases rather than using partial matches to skip missing timezone fields. There are also some strange nonstandard abbreviations out there (what, for example, is ECT?) which will all be treated as GMT unless you hack them into the tables in dates.c. Missing timezones are treated as the local zone to get the date-received right (the From_ line ctime-date almost never has a timezone). * Mush now warns you if a file you attempt to load does not "look like" a folder (i.e. no messages can be read). If you are already in the shell, this leaves you in an empty folder as it did before. If you are just starting up (e.g. with "mush -f"), mush will exit. * Additional checking is now done when collecting new mail and when updating folders to detect corruptions, warn the user, and allow a chance to recover. Mush still reinitializes the spool folder if it shrinks, but if this is detected at update time (as opposed to new-mail-check time), the user is allowed to abort the update and salvage the current folder contents. * Curses mode now respects the user's presetting of $crt, unless the user's value is larger than the actual screen size. This allows "set crt=2" to be used to force use of $pager. Changes in commands: mush -h - The -h (-draft) option will now accept "-" as a filename indicating standard input. Note that this causes the input message to be sent immediately; interactive use cannot be combined with redirected input. The internal "mail -h" command will NOT interpret "-" as standard in. alts *user This syntax, analogous to the $autosign2 syntax, allows you to specify any user name anywhere as "you" for purposes of $metoo, etc. folder -n This command changes folders without updating; it replaces the old "folder !" notation, though the old form is still supported. See also the general notes above for behavior on attempts to load files that are not folders. from pattern Given an argument that is not parseable as a message list, "from" will automatically invoke "pick -f pattern". Mixing message lists and patterns is slightly counter-intuitive; if the message list precedes the pattern, it will restrict the pattern search to that list, e.g. "from 3-7 johnsmith" will show those messages in the range 3-7 that are from johnsmith. If the message list follows the pattern, it will not be detected at all, but will be considered part of the pattern. Also, "from jim bob sally" will treat the entire "jim bob sally" list as a single pattern, as "pick" would; this may change in the future. pipe -p /pat1/,/pat2/ The pattern supplied may now have the form /pat1/,/pat2/ to indicate that extraction should begin at pat1 and end at pat2, inclusive. Patterns are still matched literally at beginning-of-line (no regex matching), and there is not currently any way to imbed a slash in patterns of this form. To allow searching for file paths, slashes are significant only if the second slash is followed by a comma. save/copy Unless told to clobber the file (-f), these commands now check that the file to which they are appending "looks like" a folder. If the file seems to be something else, the user is prompted to confirm the save or copy. set Several minor fixes. Piping to "set" now clears the variable if the input message list is empty, rather than leaving the old value. For backwards compatibility, however, an unset variable does not become set when an empty message list is piped to it. Also, some of the more esoteric abuses of the variable=value syntax have either been made legal (`set var=' is the same as `set var') or made illegal (`set var=value = value' won't create a variable named "var=value"). sort Sorting by multiple criteria at once is now supported. The flags to sort have changed; "-" to reverse sorting is now obsolete, replaced by "-r", and all the sort criteria should now be prefixed with a "-" (-a,-d,-l,-R,-s,-S) like options to any other command. A significant subset of the old syntax is still recognized as a special case. New/changed variables: $cmd_help (Also $tool_help) The path given for this variable may contain the usual filename metacharacters (~+). $hangup When set, mush updates the folder on SIGHUP instead of saving the tempfile. This is a bit dangerous -- in rare circumstances (mainly when two or more MUAs are modifying the same folder) some new mail could be lost. Old mail should never be lost. $hdr_format The format spec %Z returns the time zone part of the date. $mail_icon Names an icon file to be used in the normal case, when no new mail is present. This icon will replace the mailbox with the flag down. $newmail_icon Names an icon file to be used when new mail is present, replacing the mailbox with the flag up. $output The message-list output of the last successful command is stored in this variable. This allows easy recovery from broken pipes etc. Note that any successful command that does not produce a message list will clear $output (e.g. "echo"). $quiet If the field "newmail" is present in the multi-value, the usual "New mail (#X): ..." messages are not displayed. The new mail is still automatically incorporated into the mailbox. In tool mode, this shuts off the new mail bell (the "tool" field still silences ALL tool mode bells). If the field "fkey" is present in tool mode, warning messages about unbound keys are not printed. If the field "iconlabel" is present in tool mode, the current number of messages is not displayed in the mush icon. $status This is set to the success (0) or failure (-1) status of the previously executed command. Note that some curses-mode commands return a failure status to indicate that the display has been corrupted even if the command itself succeeded, so this variable is mostly useful in scripts.