home *** CD-ROM | disk | FTP | other *** search
- This is the README for release 6.0 of mush. Note that the orginal README
- has changed as well, so it should be read again. It contains important
- information for installing mush on your system.
-
- With this distribution, there is a file called Mailrc which can be
- used as the "default" mailrc (see config.h-dist). This file will set
- variables and command line aliases to make mush look as much like ucb Mail
- as it possibly can.
-
- New makefile && compiler flags:
- System V machines that aren't XENIX should use the makefile.sys.v makefile.
- The old makefile.sys.v has been removed. System-V machines
- that aren't xenix may note -DUSG in the makefile. USG is defined in
- curses.h but is required to be in the makefile if compiling without the
- curses libraries. It should be in the makefile anyway so you never have
- to worry about it. Xenix machines should use makefile.x286 or makefile.x386
- USG should probably be defined on your xenix system unless you are running
- a _very_ old version of xenix. I don't know how old it would be, but
- try compiling mush with USG first -- if that fails, then undefine it.
-
- Some systems have regcmp/regex as their regular expression matching
- routines while others have re_comp/re_exec -- If you have regcmp,
- then you must have -DREGCMP in the makefile you're using. If you have
- both sets of routines, take a pick. Note that some systems do not
- have either set of routines in the default libraries. You must find
- the library to use and add it to the list of libraries to use. If this
- is the case, your link will fail with the errors that regex and re_comp
- are undefined functions. Read your man page for regex(3) to find where
- to locate those libraries.
-
- Machines that use mail transfer agents that *do not* use a colon-less
- "From " line as a message separator should #define in config.h the string
- MSG_SEPARATOR. Since this string is usually control characters, you
- need to specify actual ascii values for those characters. Users of MMDF,
- for example, may use "\001\001\001\001" since some mmdf versions use four
- control-A's to separate messages. This message separator assumes that
- there is a carriage return at the end of the string. Systems that use
- sendmail need not concern themselves with this define.
-
- Some mailers (not RFC822 compatible, like execmail and older binmail's)
- do not accept commas between addresses on outgoing mail. Such mailers
- also tend not to add the From: field and Date: field, which are headers
- required to be compatible with RFC822. This does not apply to BSD systems
- or systems which run sendmail. If this applies to your system, you
- should define OLD_MAILER in config.h as "#define OLD_MAILER" or in the
- makefile in addition to the CFLAGS definition: -DOLD_MAILER. This does not
- affect the user interface at all; mush will still enforce commas between
- addresses. However, addresses given on the command line to the mailer
- will have commas stripped out if OLD_MAIL is defined in the makefile or
- config.h.
-
- System V:
- New functions:
- lock_file() /* returns -1 if can't lock */
- close_lock() /* unlocks and calls fclose */
- These functions also support BSD, xenix and sys-v. These are provided
- as locking mechanisms for all systems -- ifdef's decide how to lock.
-
- Support for termio functionality. Macros in mush.h have been modified
- to provide for echo/cbreak modes to depending on the compiler flags:
- CURSES and SYSV/BSD/USG. There are 6 different possible cases here.
-
- Problem with xenix/sys-v getting the "name" from a "From:" field since
- char pointer and char arrays are different sizes. (hdrs.c, compose_hdr())
-
- sendmail mail now forks off and returns you to a mush prompt so you
- don't have to wait for the mail to be delivered. This is true for
- both xenix and sys-v.
-
- terminfo is now supported.
-
- Command line arguments:
- -u [user]
- /usr/spool/mail/user is used as the current folder. If "user" isn't
- specified, /usr/spool/mail/root is used.
-
- -T timeout implies -t (for tooldmoe), so -t is not required if -T is given.
-
- If -r (readonly) flag is given on the command line or to the folder/update
- commands, the folder (or spoolfile) is opened readonly and the mail is
- *not* copied into a temporary buffer. This speeds up IO dramatically in
- systems with slow IO or disk drives (typically, xenix/sys-v).
-
- -H implies -r, so -r is not necessary. If mush is started just to read
- the headers of your mail, then forcing read only improves performance.
-
- a folder as well as an address can be given on the command line. Thus,
- % mush -f foldername address-list
- will first interactively mail to the address-list and upon return read
- in the folder "foldername".
-
- Misc:
- There is now an internal pager which is used if the user has no
- "pager" variable set and no environment PAGER variable. This pager
- is very simple and understands <space> for next $crt lines, \n does
- just the next line, ^D does the next half $crt lines, and q,Q quits.
- The user can "set pager" (to null, effectively) or to the string "internal"
- to always get the internal pager. The DEF_PAGER macro in config.h can
- be set to "internal" also. (do_pager() misc.c)
-
- Mush now understands 'well-formed' addresses. A well-formed address
- consists of tokens of the form:
-
- $path
- $path (Name or comment here)
- Name or comment <$path>
- "Name or comment" $path
-
- See the man page for Extensive examples and rules for what formats
- are legal, but may not be supported.
-
- To: lines which are too long from incoming mail are truncated. Previously,
- a segmentation fault would result -- replies to messages containing long
- To: lines will attempt to chop off the list between addresses.
-
- Add right justification in hdr_format format string field similar
- to printf style formatting. Example:
- set hdr_format = '%-25n %7d (%l) "%s"'
- will produce a header format such that the name of the author is
- right justified 25 positions, 7 chars of the date is printed, the
- number of lines in the message and the subject surrounded by quotes.
- Also subwidths are allowed using the same dot notation as provided by
- printf. (hdrs.c)
-
- The '%S' switch for message status has been removed and the status of
- a message is always at the beginning of the message header line
- by default along with the msg number and the '>' if it's the current msg.
- There is a new status flag for replied to messages. If a message has
- been replied to, then a 'r' is placed in the header string just after
- the first status flag.. Thus, the header:
- 4 >*r Dan Heller <island!argv@sun.com> ....
- means that message 4 is the current message, it has been deleted,
- and has been replied to...
-
- In the hdr_format string, the date of a message can be printed
- using the same formatting characters as the prompt uses. %T is
- the time, etc... Note that %d still prints the whole date, but
- the new formatting characters allow parts of the date to be printed.
-
- New option for mail:
- mail -s [subject]
- With no subject specified, -s forces a prompt for the subject
- header even if the variable "ask" is not set. If a subject is
- specified, then the subject is set to that string explicitly.
- This allows the reply command to change the subject or to prompt
- to change the subject.
-
- Saveopts now warns if file already exists; you must confirm overwrite.
-
- Control characters typed are now understood and can be entered into
- letters etc... To enter a special control character such as your backspace
- character or kill line character use the backslash. In the toolmode,
- use your literal next character (^V in most cases).
-
- "varargs" now used in print.c to provide support for machine that
- do not stack arguments compatible with vax/68000/etc... These machines
- are Pyramids, Sun4's and more... (print.c)
-
- The temporary file used to type in messages is now _closed_ before
- invoking an editor. This is for gnuemacs users or users of other
- editors which insist on no other references to that file be open.
-
- Using job control (^Z/fg) which in the headers portion of a message
- (e.g. "To: ") would cause mush to be confused about what state the program
- is in and would inadvertently show a prompt (user's $prompt) even
- tho it was executing the right code (prompting for the To: line). This
- has been fixed so that the prompt isn't given, but the To: line will
- not be reprompted.
-
- Mailing to users from the command line and ^C-ing while in the To: or
- Subject: prompt would just report an interrupt and not abort the message;
- it now exits.(hdrs.c, set_header())
-
- If the user's home dir isn't writeable, or permissions changed during
- runtime, mush changes to ALTERNATE_HOME and tries again rather than just
- returning an error message. If the alternate home also fails, an error
- is printed and the function aborted.
- (main.c, mail.c, start_file())
-
- When updating a folder, ignored headers are now copied back regardless
- of the variable, "alwaysignore". This is necessary because the user may
- ignore headers that are required to be read when reading in a folder.
- (msgs.c, copy_msg())
-
- pick has a new option to pick from an arbitrary header.
- pick -h return-path ucbvax
- searches for the string "ucbvax" in the Return-Path: header of all
- messages.
-
- New Variables:
- autosign2
- Use an alternate signature for specific users. Format for string:
- set autosign2 = "address, address, ... : <signature>"
- where "address" is a legal address (or alias) and signature is that
- described by "autosign". the colon separates the list from the signature.
- If the colon is missing or if the list is null, the signature is used
- and no checks are made against the recipient list. Otherwise, each
- address on the recipient list of outgoing mail must also exist in
- the autosign2 list. Otherwise, the signature in autosign is used.
- If autosign is not set, the autosigning isn't done unless ~S is used.
-
- show_hdrs (String)
- Set to a list (space and/or comma separated) of headers which are to
- be the only headers displayed when viewing a message. This disables
- the headers supressed by the ignore command. Example:
- set show_hdrs = "from date subject to cc"
- will only display the headers,
- From: Date: Subject: To: Cc:
- in their entirety.
-
- mil_time -- if set, 24 hour military time format is used in message
- dates or if the time is used in the prompt. Otherwise, 12-hour with
- an added "am/pm" is displayed.
-
- The variable "no_expand" prevents expansion of mush addresses in
- outgoing mail. The To: line will read the same as it was typed --
- this hides the complete list of addresses of everyone on the list.
-
- A new variable called "wrap" has been added. When the last message is
- deleted, the next "current" message is usually the next undeleted message.
- If wrap is not set, then the curent message remains at the end of the
- list of messages. Similarly, if "next" ('n', CR) is specified, wrapping
- to the beginning of the list only happens if the variable is set.
-
- The variable fixaddr has been removed and the variable auto_route has
- been modified to route uucp mail thru the host of the author of the
- message being replied to as well as removing redundant hostnames such as:
- host1!host2!host1!user -> host1!user
-
- "cdpath" added. This is like csh's but note you can't use ()'s to
- set the path -- use quotes: ("). When the cd command is issued,
- if there is no cdpath set, then the directory mentioned is cd'ed to.
- If there is a cdpath and the pathname given is not a full pathname,
- then each element in the cdpath is searched for the directory specified.
- Recommend putting "." first in cdpath if one is used.
-
- "sendmail" -- if set, this program is used instead of the default Mail
- Transfer Agent defined as MAIL_DELIVERY in config.h ... If used, the
- default flags -i and -m are not passed along to the MTA, so any flags
- which are necessary for the MTA should be included in the sendmail
- variable's string value.
-
- pre_indent_str, post_indent_str (string)
- These strings have the same properties as "hdr_format". The
- pre_indent_str string will precede the body of text interpolated into
- the message buffer and the post_indent_str will succeed the text. See
- the man page for extensive details.
-
- in_reply_to (string)
- set to a string interpreted the same as "hdr_format" -- when replying
- to mail, an additionaly outgoing message header In-Reply-To: is added.
- See man page for more extensive details.
-
- "ask" is a boolean which is for compatibility with ucb-Mail. If set,
- you will be prompted for a subject. otherwise, no subject prompting
- is done.
-
- Curses:
- In curses mode, line-mode-escape commands which contain pipes,
- :pick -s pattern | save folder
- would segmentation fault on the command that follows such commands.
- The next command to execute thinks that piping is on causing a segmentation
- fault trying to reference the non-existent message list. This was fixed by
- resetting the DO_PIPE/IS_PIPE flags to off in the cmd_line() routine.
- (misc.c, cmd_line())
-
- Quitting now goes to the bottom of the screen rather than moving
- down one line [as well as other quit-related update bugs]
- (curses.c, case C_QUIT:)
-
- Updating (^U) now redraws the screen right if you weren't on the
- first "screenful" of messages. (curses.c, case C_UPDATE)
-
- 's' (save) command wasn't saving to mbox on no input (CR). It tried
- to save to "" which maps to "." which is a directory. (curses.c)
-
- The bug causing the GOTO command to inifinite loop if there were 0
- or 1 messages in the folder if invoked by selecting a digit key has
- been fixed. The manual entry for how the goto command works has a
- more detailed description and gives an example for effective usage.
- Due to its versatility, there can be some screen updating problems
- if the user specifies a message list which contains a command that
- produces any "stdout" type output. Normally, this shouldn't happen,
- because most commands which are used to "search for messages" will
- not output anything if they are being "piped". If the user wishes
- to specify a command that produces output (like echo) then the screen
- will not be updated correctly (use ^L to redraw). See the updated
- man page entry for deatils on the above.
-
- The bind command doesn't require the use of \Cc to represent control
- characters anymore. The old interface is still supported -- in fact
- control characters that are typed are converted to this ascii format
- for purposes of displaying current bindings and to allow .mushrc files
- to specify bindings in ascii format. However, control characters may
- be typed as is. The spacebar may be bound to a command if it is given
- in the .mushrc file or on a Mush command line. See the manual.
-
- Tool mode:
- Trying to start tool in icon mode sometimes aborts with segementation
- fault. This is caused by the window size being 0 and the message
- trying to be written to the empty window. The routine which tries to
- output each line of the message to the window is recursive. If the line
- wraps because of the window's width being less than the length of the
- line, Addstr() finds the position in the line which wraps and calls
- itself recursively passing the remainder of the string. The size of
- 0 means that Addstr is calling itself at the the beginning of the string
- all the time. The fix is in copy_msg where it checks to see if the
- window is large enough to attempt printing the message (msgs.c, copy_msg())
-
- When changing folders, if there are no messages in the new folder,
- the last read message was still displayed leaving the user somewhat
- confused. If there are no messages, the window is cleared. (folders.c)
-
- To be consistent with the other two interfaces, both delete and
- backspace will backspace if in type-in mode. (rite.c)
-
- When returning from using the editor, the window displaying the letter
- being composed would contain what the letter looked like before the editor
- was invoked. This has been fixed by printing out the last part of the
- letter up to the size of the window available.
-