home *** CD-ROM | disk | FTP | other *** search
/ ftp.freefriends.org / ftp.freefriends.org.tar / ftp.freefriends.org / arnold / Source / mush.rstevens.tar.gz / mush.tar / README-7.0 < prev    next >
Text File  |  1990-05-03  |  16KB  |  322 lines

  1.  
  2. This is the official release of the Mush port to SunView, referred to in
  3. alpha and beta versions as "mushview".  This file describes most of the
  4. changes from revision 6.5.6 of "mush" and "mushtool".  Sorry, IBM, we
  5. never managed to get the DOS code integrated.  Note that this is version
  6. 7.0.0, not to be confused (we hope) with alpha-test releases that had a
  7. third zero appended to the number.  Check the dates if you aren't sure.
  8.  
  9. Thanks up front to Rich Burridge of Sun Australia for his work on
  10. converting mush's SunWindows code to SunView, and for giving mush a really
  11. thorough linting, which it had needed for some time.  Thanks also to the
  12. many alpha and beta testers who sent valuable comments.
  13.  
  14. Version 7.0.0 differs from the several 6.5.6 Beta releases in that a
  15. large portion of the Sun code has changed to use text subwindows instead
  16. of pixrects.  This is a significant enough change in "look and feel" that
  17. the release number was increased from 6 to 7.  Addition of file completion
  18. to the line/curses modes is also considered a major improvement, as are
  19. changes to the "mail" command (described below).
  20.  
  21. Tool mode changes include:
  22.     * The message display window is a textsw, with scrollbars.
  23.     * The composition window is also a textsw, and opens in a separate
  24.       frame, so you can read messages in the main frame while composing.
  25.       You can still invoke an editor, and the default window size is
  26.       such that vi no longer gets confused (as far as we can tell).
  27.     * There are variables to control the sizes of most subwindows.
  28.     * Header-editing works in tool mode (in fact, you MUST use it).
  29.     * Help, options, and alias settings also pop up in their own frames.
  30.       The help descriptions have been improved (we believe).
  31.     * Interactive function-key binding is no longer supported; the clash
  32.       of mush function keys with SunView functions has been eliminated.
  33.     * The list of folders in your folder directory is made into a
  34.       walking menu.  (Handling of this may improve in future patches.)
  35.  
  36. In addition to the SunView conversions and linting, which make up the bulk
  37. of the changes, there have been a number of bug fixes and enhancements to
  38. the 6.5.6 baseline.  These include:
  39.  
  40. mush -h file
  41. mush -U -h file
  42. mush -U! -h file
  43.     The new -h (-draft) options allows mush to read in a prepared message
  44.     for sending, in the same manner as Rnmail.  The specified file must
  45.     contain the message headers (either when first read or after editing
  46.     by the user); mush will not add headers to it.  The intended use of
  47.     this option is to write a partially finished message to a file and
  48.     then return to it later.  (See commentary below on "mail -h".)  The
  49.     new -U (-send) option allows the draft file to be sent immediately
  50.     without editing (-U means "unedited").  Signatures and fortunes are
  51.     not appended when -U! is used ("unsigned" as well as unedited).
  52.  
  53. mush -I file
  54. mush -I! file
  55.     The new -I (-init) option allows the user to specify an init file that
  56.     is read before any of the other init files.  -I! causes the specified
  57.     file to replace the system Mushrc file; otherwise, the given file and
  58.     the system Mushrc are both read.  -I has no effect on reading of the
  59.     user's own $HOME/.mushrc file (except that the indicated file could
  60.     "setenv MAILRC", thus changing the location of the user's file).
  61.  
  62. mush -n
  63. mush -n!
  64.     The first form of this option now works like the ucbMail -n option,
  65.     that is, it prevents sourcing of the system Mushrc but the user's own
  66.     $HOME/.mushrc is still read.  The new -n! variation prevents either
  67.     file from being sourced, which was the old behavior of -n.  Using -n
  68.     does not change the effect of -I, so the following are equivalent:
  69.         mush -n -I file            mush -I! file
  70.  
  71. cd
  72.     The cdpath variable now works correctly when specified with either
  73.     colons or spaces separating the list of directories.
  74.  
  75. help
  76.     The help facility has been expanded; there is now a help file entry
  77.     consisting of a usage line and short explanation for every documented
  78.     line-mode command except "debug" and "version", all accessible via
  79.     "? command" or "command -?".  In addition, there are variables:
  80.     set cmd_help = path    Give new location for cmd_help file
  81.     set tool_help = path    Give new location for tool_help file
  82.     These variables, which can be set in the system or user init files,
  83.     have replaced the old -1 and -2 startup options, i.e. cmd_help and
  84.     tool_help can no longer be specified on the mush command line.
  85.  
  86. mail -E
  87. mail -h file
  88. mail -H file
  89. mail -I
  90. mail -u
  91. mail -U -h file
  92.     The new "-h file" option of the mail command corresponds to the -h
  93.     option of mush itself, and is intended for reading in previously
  94.     begun letters.  It implies -E (edit_hdrs).  The previous meaning of
  95.     -h (include and indent a message with its headers) is now supported
  96.     by the -I option, corresponding to the ~I escape (see below).  The
  97.     -H option is analogous to -h, except that the file need not contain
  98.     message headers (edit_hdrs is not implied).  (Some alpha versions
  99.     used -H for the function now supplied by -I.)
  100.     The -E option no longer implies autoedit.
  101.     The new -u option turns off autosign and fortune.  Most useful
  102.     with "-h file" when you want to continue editing the draft but a
  103.     signature or fortune has already been appended; but -h is not
  104.     required for -u.  The new -U option sends the file immediately; it
  105.     cannot be used without -h or -H, and will be ignored if no To:
  106.     address has been specified.
  107.     Also, the user is no longer required to provide a To: address in
  108.     order to begin composing a letter (one is still required before
  109.     sending it), and the To: address may be only files and/or pipes if
  110.     desired (in which case the MTA is not run).
  111.     Finally, the tilde-escape ~I has replaced ~H for purposes of
  112.     including a message and its headers in the letter being composed.
  113.     This is analagous to the -i and -I options and the ~i escape.
  114.  
  115. my_hdr From: address
  116.     This is now allowed (it is allowed but neither documented nor correctly
  117.     used in 6.5.6, and was not allowed previously).  The user's From: header
  118.     is verified as best mush can, and used if it appears valid.  It is up
  119.     to the MTA to assure authenticity and/or add a Sender: header.  Mush
  120.     provides a From: if the user does not or if it cannot verify the one
  121.     given.
  122.  
  123. pipe -p pattern unix-command
  124.     The pipe command has been modified to allow its use as a shell script
  125.     extractor.  See the man page and "pipe -?" for details.  KNOWN BUG:
  126.     given a list of messages, all are sent to the same unix process.
  127.     This can cause havoc e.g. when each of the messages is a shell script
  128.     intended to be run by a virgin shell.  Changes are being discussed.
  129.     Also, pipe is now affected by $alwaysignore (see below).
  130.  
  131. Pipe
  132.     See the comments under "write" below.
  133.  
  134. pwd
  135.     This now prints the actual current working directory rather than
  136.     simply echoing the value of $cwd.
  137.  
  138. reply
  139.     Assorted repairs have been made to to take_me_off() (implements the
  140.     inverse of $metoo) and reply_to().  These include doing a better
  141.     (though still not perfect) job of getting the name and address to
  142.     match when replying to forwarded mail.
  143.  
  144. sort
  145.     The current message now moves with the sort, that is, the same actual
  146.     message (not necessarily the same message *number*) will be the
  147.     current message after the sort as was current before the sort.
  148.  
  149. save/copy
  150.     The 'p' (printed) and 'f' (forwarded) Status flags are now properly
  151.     saved when messages are saved/copied, and restored when the folders
  152.     are read.  Also, a "-f" (force) flag has been added, which has the
  153.     same meaning as the old "!" flag, that is, overwrite the file rather
  154.     than appending to it.  "save !" is still supported.
  155.  
  156. undigest -p pattern
  157.     The specified pattern is used as the article separator for unpacking
  158.     digests.  The default is "--------".  A literal match (no regexps or
  159.     wildcards) is done at beginning-of-line.
  160.  
  161. write
  162.     The write command (and other commands such as Pipe that omit message
  163.     headers) no longer outputs the blank line that separates the message
  164.     body from the headers, and also does not output the trailing blank
  165.     line that separates messages from one another.  (This applies only
  166.     when MSG_SEPARATOR is not defined during compilation.)  This makes
  167.     the command more useful for saving multi-part uuencoded files, etc.
  168.  
  169. $$
  170. $name:l
  171. $name:u
  172. $name:<number>
  173.     Four new variable forms.  The first returns the PID of the running
  174.     mush; the second converts all alphabetics in the value of $name to
  175.     lower case; the third converts all alphabetics in the value of $name
  176.     to uppercase; the fourth splits the value into words and returns the
  177.     <number>th word.  Only one modifier can be used at a time.
  178.  
  179. $[%fmt]
  180.     This special variable form expands %fmt (a string with no spaces) as
  181.     a hdr_format format.  E.g., $h%a is the author of the current message.
  182.     Any colon-modifier may be applied, e.g.
  183.     $[%n]:1        First name of author of current message
  184.  
  185. $(%c)
  186.     This special variable form expands %c (c is a character) as a prompt
  187.     format.  E.g., $(%T) is the current time.  Colon-modifiers apply.
  188.  
  189. $alwaysignore
  190.     This variable now actually works as documented.  If you've gotten used
  191.     to the old behavior, you'll need to set this.  Note, however, that the
  192.     documented behavior has changed slightly.  The (erroneous) behavior of
  193.     Mush 6.5.6 when this variable was UNset is now achieved by:
  194.     set alwaysignore = "include,forward,pipe"
  195.     Setting this variable with no value has the same effect as in 6.5.6.
  196.  
  197. $autosign
  198.     You can now specify a program to be run, whose output will sign the
  199.     letter; the syntax is
  200.     set autosign = '|program-name'
  201.     This syntax has not been finalized and may change.  The argument list
  202.     passed to the program is the list of addresses that will go to the MTA,
  203.     in exactly the same form as that which will be used for the MTA (e.g.,
  204.     there may be a comma after each address).
  205.  
  206. $complete
  207.     Mush now supports filename completion and will eventually support
  208.     command completion as well.  This variable has a two-character "string"
  209.     value; the first character is used for name completion, the second for
  210.     listing, ala ESC and ^D in 4.3 BSD csh.
  211.  
  212. $domain_route
  213.     This variable allows the user to specify that domain short-circuiting
  214.     should be done in conjunction with auto_route.  Addresses that are
  215.     already in RFC822 domain form (user@domain) are not normally changed.
  216.     UUCP paths that contain fully-qualified domains are short-circuited
  217.     to the rightmost such domain.  Optionally, domain_route may be set
  218.     to a string, in which case all addresses are rewritten to UUCP form,
  219.     short-circuited, and the given string is then prepended as the first
  220.     host in the path.  This variable is intended for use at RFC976 Class 3
  221.     UUCP hosts, or UUCP sites with a connection to a Class 3 host.
  222.  
  223. $fignore
  224.     This variable modifies the behavior of file completion by specifying
  225.     file name forms that should NOT be completed.  See the man page for
  226.     more details.
  227.  
  228. $hdr_format
  229.     A new formatting string now allows access to *any* message header.
  230.     The format is:    %?header-name?
  231.     For example,
  232.     set hdr_format='%n "%?x-mailer?"'
  233.     might display
  234.     1 >   Barton E. Schaefer "Mail User's Shell (7.0.0 12/10/89)"
  235.     This can be used to avoid mush's TO: display for messages you
  236.     authored; just replace "%f" with "%?from?".
  237.  
  238. $lister
  239.     Has been removed.  The "folders" command now supplies its own set
  240.     of flags to ls, and "cmd ls 'ls ...'" suffices for other uses.
  241.  
  242. $quiet
  243.     This variable now has a value of one to six comma-delimited words.
  244.     For compatibility with previous versions, setting quiet without a
  245.     value has the original behavior of suppressing the startup message.
  246.     The recognized words are:
  247.     autosign    Don't tell me when a signature is appended
  248.     await        Await command doesn't ring for new mail
  249.     complete    Word completion doesn't ring on failure
  250.     fortune        Don't tell me when a fortune is appended
  251.     startup        Don't print the startup message
  252.     tool        Tool mode doesn't ring for new mail
  253.     Errors in autosigning or fortunes are still reported.  (Some beta
  254.     releases assigned three of these fields, with the on/off sense
  255.     reversed, to a variable named $bell; that variable is gone.)
  256.  
  257. $version
  258.     The version string, as printed on startup.
  259. ____________
  260.  
  261. MMDF Changes and File Locking Improvements
  262. ------------------------------------------
  263.  
  264. The MMDF support code has been modified to use the MMDF library calls for
  265. file locking.  The files makefile.* were modified to make the need to link
  266. in the MMDF library more obvious, and the comments in config.h-dist now
  267. reflect the current (simpler) installation instructions for MMDF sites.
  268.  
  269. In the course of these updates, the structure of the file locking calls
  270. was reworked to make open and lock a single (non-atomic) operation.  Many
  271. thanks to lmjm@doc.imperial.ac.uk (Lee McLoughlin) and marc@virginia.edu
  272. (Marc Rouleau) for instigation and help with implementation and testing of
  273. these changes.
  274.  
  275. In the course of making these changes, a number of errors were discovered
  276. and repaired:
  277.  
  278.     An "update" would remove empty files and then try to reload them,
  279.     generating error messages.  The copyback() function now returns -1 if
  280.     it removes a file; folder() recognizes this and does not attempt to
  281.     load_folder() on a removed file.
  282.  
  283.     There was a remote possibility of a race condition in in copyback()
  284.     because open-and-lock is non-atomic.  copyback() now checks for new
  285.     mail AFTER locking the spool file; this guarantees the MTA can't
  286.     slip a new message into the file just before it gets truncated.  The
  287.     check_new_mail() function has been broken into three specialized
  288.     parts to allow this:  get_new_mail() and show_new_mail() work as you
  289.     probably expect, and check_new_mail() now calls them.
  290.  
  291.     The mbox file ($HOME/mbox or whatever) is locked by copyback(), and
  292.     all folders are locked by save_msg().
  293.  
  294.     The dead.letter file is locked by dead_letter().
  295.  
  296.     "Reinitializing" of a folder that was modified behind mush's back
  297.     would do pretty strange things in curses mode.  It now behaves more
  298.     sensibly.  Also, if your spool folder shrinks while you are using a
  299.     non-spool folder, mush won't incorrectly re-initialize the current
  300.     folder (a bug no one ever saw, we hope).
  301.  
  302.     All mailboxes are locked for reading when they are first loaded or
  303.     when new mail comes in, whenever possible (DOT_LOCK and old Xenix
  304.     installations cannot read-lock).  If the MTA also uses a compatible
  305.     locking scheme (as one would hope), this should prevent "truncation"
  306.     of new messages without unduly restricting the reading of folders.
  307.  
  308.     NOTE:  All this precautionary locking has its drawbacks.  Sending
  309.     mail can deadlock if you mention the same file twice in the list
  310.     of addresses.  (Of course, before the advent of locking, this would
  311.     cause interleaved writes; which is the lesser evil?)  Be careful.
  312.  
  313. Additional changes apply to installations where SYSV is defined:
  314.  
  315.     Because lockf() requires a file open for writing, the locking code
  316.     has been rewritten to call fcntl(F_SETLK) directly.  Read and write
  317.     locks are used as appropriate.
  318.  
  319.     This locking code has been only minimally tested, because none of the
  320.     authors has direct access to a true SysV machine.  Bug reports with
  321.     suggestions for improvement are requested.
  322.