home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume15
/
mush6.3kit
/
part04
/
Diffs.6.3.c
Wrap
Text File
|
1988-07-06
|
52KB
|
1,651 lines
.sp
When constructing a return mail address to the author of a message,
.B reply
! searches for special mail headers in the author's message which
indicate the most efficient mail path for return mail.
.I Mush
will search for the \*QFrom:\*U, \*QReply-To:\*U,
--- 2285,2291 ----
.sp
When constructing a return mail address to the author of a message,
.B reply
! searches for special mail headers in the author's message that
indicate the most efficient mail path for return mail.
.I Mush
will search for the \*QFrom:\*U, \*QReply-To:\*U,
***************
*** 2338,2344 ****
.BR saveopts " [file]"
The complement of
.BR source ,
! .B saveopts
will save all settable variables, aliases
and cmd's in the initialization file.
(See the
--- 2371,2377 ----
.BR saveopts " [file]"
The complement of
.BR source ,
! .B saveopts ,
will save all settable variables, aliases
and cmd's in the initialization file.
(See the
***************
*** 2410,2416 ****
.in +2
.ta 1i
- reverse sort order
! d sort by date received
a sort by author (alphabetical)
s sort by subject ignoring \*QRe:\*U
R sort by subject (alphabetical)
--- 2443,2449 ----
.in +2
.ta 1i
- reverse sort order
! d sort by date
a sort by author (alphabetical)
s sort by subject ignoring \*QRe:\*U
R sort by subject (alphabetical)
***************
*** 2426,2431 ****
--- 2459,2469 ----
New, unread messages are first, followed by preserved messages,
and finally deleted messages are placed at the end of the list.
.sp
+ When sorting by date, the boolean variable
+ .B date_received
+ is checked. If it is set, then sorting goes by date received.
+ Otherwise (default), sorting is by date sent by the original author.
+ .sp
If the variable
.I sort
is set, messages are sorted each time the user's system mailbox is
***************
*** 2504,2514 ****
Options may be either boolean, in which case it is only
significant to see whether or not they are set;
string, in which case the actual value is of interest;
! or numerical, in which the numerical value is important.
Some variables may have attributes
of boolean and string at the same time.
.sp
! If you or the program references a variable which is not explicitly set,
then the environment variables are checked and a pointer to that data
is returned.
Following is a list of all predefined variables.
--- 2542,2552 ----
Options may be either boolean, in which case it is only
significant to see whether or not they are set;
string, in which case the actual value is of interest;
! or numerical, in which case the numerical value is important.
Some variables may have attributes
of boolean and string at the same time.
.sp
! If you or the program references a variable that is not explicitly set,
then the environment variables are checked and a pointer to that data
is returned.
Following is a list of all predefined variables.
***************
*** 2531,2537 ****
will ignore those headers even in the situations mentioned here.
No headers can be ignored during updates and when using the
.B save
! command since the user may ignore headers which are required by
.I Mush
or any other mail system to read those folders.
.sp
--- 2569,2575 ----
will ignore those headers even in the situations mentioned here.
No headers can be ignored during updates and when using the
.B save
! command since the user may ignore headers that are required by
.I Mush
or any other mail system to read those folders.
.sp
***************
*** 2559,2569 ****
.TP
.B autodelete
(Boolean)
! When exiting mail, all messages which have been read
.I "regardless of whether they have been marked for deletion"
are removed.
Only messages that haven't been read or marked as
! .BR preserved ,
are not removed.
.TP
.B autoedit
--- 2597,2607 ----
.TP
.B autodelete
(Boolean)
! When exiting mail, all messages that have been read
.I "regardless of whether they have been marked for deletion"
are removed.
Only messages that haven't been read or marked as
! .BR preserved
are not removed.
.TP
.B autoedit
***************
*** 2584,2590 ****
.TP
.B auto_route
(Boolean)
! This variable has two functions, both of which only concern the command,
.BR replyall ,
and is only important to users who use UUCP to mail to remote sites.
The first function is to cause replyall to modify the return addresses
--- 2622,2628 ----
.TP
.B auto_route
(Boolean)
! This variable has two functions, both of which only concern the command
.BR replyall ,
and is only important to users who use UUCP to mail to remote sites.
The first function is to cause replyall to modify the return addresses
***************
*** 2594,2609 ****
destination.
If the original sender of the message was on a remote
machine which your machine does not exchange UUCP mail with, then a UUCP
! path containing hosts which you do talk to will have to be
created to respond to the author.
However, if he mailed to other people
! on machines which are also multi-hops away, the addresses he used for
those recipients may differ from what you should specify if you were to
try to reply to everyone on the listed in the original message.
.sp
! For example, if the original sender came from remote host,
.B pixar
! and the list of recipients looked like,
.sp
.nf
.in +2
--- 2632,2647 ----
destination.
If the original sender of the message was on a remote
machine which your machine does not exchange UUCP mail with, then a UUCP
! path containing hosts that you do talk to will have to be
created to respond to the author.
However, if he mailed to other people
! on machines that are also multi-hops away, the addresses he used for
those recipients may differ from what you should specify if you were to
try to reply to everyone on the listed in the original message.
.sp
! For example, if the original sender came from remote host
.B pixar
! and the list of recipients looked like
.sp
.nf
.in +2
***************
*** 2625,2631 ****
An attempt will be made to compensate by reconstructing the addresses
for \*Quser2\*U and \*Quser3\*U according to the address of the original
sender, \*Quser1\*U.
! The new addresses for \*Quser2\*U and \*Quser3\*U should therefore become,
.sp
.ti +2
pixar!r2d2!user2, pixar!r2d2!user3.
--- 2663,2669 ----
An attempt will be made to compensate by reconstructing the addresses
for \*Quser2\*U and \*Quser3\*U according to the address of the original
sender, \*Quser1\*U.
! The new addresses for \*Quser2\*U and \*Quser3\*U should therefore become
.sp
.ti +2
pixar!r2d2!user2, pixar!r2d2!user3.
***************
*** 2639,2645 ****
UUCP mail connections with.
This list is checked when constructing
mail addresses and the shortest path is made by removing from the
! UUCP path those hosts which do not need to be called.
See the entry for
.B known_hosts
for more information.
--- 2677,2683 ----
UUCP mail connections with.
This list is checked when constructing
mail addresses and the shortest path is made by removing from the
! UUCP path those hosts that do not need to be called.
See the entry for
.B known_hosts
for more information.
***************
*** 2676,2682 ****
.B autosign
(Boolean/string)
Append a signature to outgoing mail.
! If this variable is set, but not to a string (e.g., boolean-true),
then the file ~/.signature is used.
.sp
Otherwise, the variable is interpreted in one of three ways.
--- 2714,2720 ----
.B autosign
(Boolean/string)
Append a signature to outgoing mail.
! If this variable is set, but not to a string (e.g., boolean-true)
then the file ~/.signature is used.
.sp
Otherwise, the variable is interpreted in one of three ways.
***************
*** 2692,2698 ****
is interpreted as a user-definable variable and is expanded and appended
to the letter.
.sp
! Finally, if the variable is set to a string that begins with a backslash (\\),
then the string itself (minus the `\\' character) is used; no expansion
is done and no files are read.
.sp
--- 2730,2736 ----
is interpreted as a user-definable variable and is expanded and appended
to the letter.
.sp
! Finally, if the variable is set to a string that begins with a backslash (\\)
then the string itself (minus the `\\' character) is used; no expansion
is done and no files are read.
.sp
***************
*** 2699,2705 ****
In the latter two cases, it is advisable to set the variable using single
quotes to avoid expanding the variable beforehand or eliminating the
backslash.
! Examples,
.sp
.ti +2
set autosign = '$foo'
--- 2737,2743 ----
In the latter two cases, it is advisable to set the variable using single
quotes to avoid expanding the variable beforehand or eliminating the
backslash.
! Examples:
.sp
.ti +2
set autosign = '$foo'
***************
*** 2707,2713 ****
set autosign = '\\ Dan Heller island!argv@ucbcad.berkeley.edu'
.sp
Warning: if redirection from the calling shell is used, there will be
! no signature or forutne added to outgoing mail. For example,
.sp
.ti +2
% mush -s report manager < report_file
--- 2745,2751 ----
set autosign = '\\ Dan Heller island!argv@ucbcad.berkeley.edu'
.sp
Warning: if redirection from the calling shell is used, there will be
! no signature or fortune added to outgoing mail. For example,
.sp
.ti +2
% mush -s report manager < report_file
***************
*** 2720,2727 ****
.B autosign2
(String)
This alternate signature is available for special cases where the default
! signature is not desired or if no signture is desired for special addresses
! or if special addresses only require a signature.
The format for this variable is:
.sp
.ti +2
--- 2758,2765 ----
.B autosign2
(String)
This alternate signature is available for special cases where the default
! signature is not desired or if no signature is desired for special addresses
! or if only special addresses require a signature.
The format for this variable is:
.sp
.ti +2
***************
*** 2780,2786 ****
.TP
.B crt
(Numeric)
! Set to a value which describes the number of lines a message
must have before invoking the
.B pager
to view a message.
--- 2818,2824 ----
.TP
.B crt
(Numeric)
! Set to a value that describes the number of lines a message
must have before invoking the
.B pager
to view a message.
***************
*** 2792,2807 ****
string is automatically set upon startup of
.I Mush
and is reset each time the command
! .BR cd ,
is called.
It is referenced each time
.B pwd
is called and may be used as any other shell variable.
.TP
.B dead
(String)
File to use instead of dead.letter when interrupted mail is saved.
! For more information, see the variable,
.B nosave.
.TP
.B dot
--- 2830,2857 ----
string is automatically set upon startup of
.I Mush
and is reset each time the command
! .BR cd
is called.
It is referenced each time
.B pwd
is called and may be used as any other shell variable.
.TP
+ .B date_received
+ (Boolean)
+ When message headers are printed, the date is normally shown is
+ the time and date the sender sent the message. If this variable
+ is set, then the date displayed is the date received.
+ .sp
+ When sorting messages by date, this variable is queried to determine
+ whether the messages should be sorted by date sent or date received.
+ .sp
+ \fBWarning:\fR For mailers that store messages \fIwithout\fR a line
+ that starts with \*QFrom \*U, this option does nothing.
+ .TP
.B dead
(String)
File to use instead of dead.letter when interrupted mail is saved.
! For more information, see the variable
.B nosave.
.TP
.B dot
***************
*** 2818,2824 ****
(Character)
When typing in a letter (not in an editor), when the
.B escape
! character is the first character on the line, the following character
is examined and a corresponding function associated with that
.B "escape command"
is executed.
--- 2868,2874 ----
(Character)
When typing in a letter (not in an editor), when the
.B escape
! character is the first character on the line, the next character
is examined and a corresponding function associated with that
.B "escape command"
is executed.
***************
*** 2855,2869 ****
make sure that only a selected group of people get a fortune since
certain people may not understand the messages at the end of your
mail. Therefore, you can set a list of addresses (either pure addresses
! or aliases which are expanded to addresses) to be the only people who
receive fortunes if one is to be appended. Therefore,
if the To: and Cc: lines contain only address listed in this string
variable, then a fortune is appended to the message.
! If those lists contain names which are not on the fortunates
list, then no fortune is added.
This cannot be overriden; using the
tilde command \*Q~F\*U does not force a fortune to be added unless the
! list of individuals on the recipient list are all included in the fortunates
list. The list is made up of addresses or aliases separated by spaces or
commas.
.I "NOTE: fortune must be set in order for fortunates to work."
--- 2905,2919 ----
make sure that only a selected group of people get a fortune since
certain people may not understand the messages at the end of your
mail. Therefore, you can set a list of addresses (either pure addresses
! or aliases that are expanded to addresses) to be the only people who
receive fortunes if one is to be appended. Therefore,
if the To: and Cc: lines contain only address listed in this string
variable, then a fortune is appended to the message.
! If those lists contain names that are not on the fortunates
list, then no fortune is added.
This cannot be overriden; using the
tilde command \*Q~F\*U does not force a fortune to be added unless the
! individuals on the recipient list are all included in the fortunates
list. The list is made up of addresses or aliases separated by spaces or
commas.
.I "NOTE: fortune must be set in order for fortunates to work."
***************
*** 2915,2920 ****
--- 2965,2977 ----
in which case the name and address are the same.
.sp
.TP
+ .B history
+ (Numeric)
+ This variable is set to the number of commands the shell interface
+ will remember. It is just like the history variable used in
+ .I csh.
+ If unset, the last command can always be referenced, but none other.
+ .TP
.B hold
(Boolean)
Normally, on termination of mail, read messages are saved in
***************
*** 2937,2942 ****
--- 2994,3011 ----
If the home directory cannot be found or read/write access is denied, an
alternate directory, typically /tmp, is used.
.TP
+ .B hostname
+ (String)
+ This is the name of your computer. Currently, its sole usage is to
+ compose a correct \*QFrom:\*U line for use with Mail Transport Agents
+ that do not create this header automatically. This will aid the
+ recipients of your mail in replying to your messages.
+ .sp
+ Note: the user should not have to set
+ this variable since it should be set automatically by the system. However,
+ it may happen that the system's hostname cannot be queried and the user may
+ have to set this variable manually.
+ .TP
.B ignore_bang
(Boolean)
If set,
***************
*** 2955,2969 ****
.B reply
commands.
.TP
.B in_reply_to
(String)
! This variable may be set to a string which will complete the
header \*QIn-Reply-To:\*U.
The format of this string is identical to the options for the variable
.BR hdr_format .
.sp
For example, if the user were to respond to a message
! from Dan Heller that was sent on October 21, 1987 at 10:39pm, with
.B in_reply_to
set to the string
.in +2
--- 3024,3049 ----
.B reply
commands.
.TP
+ .B indent_str
+ (String)
+ When including messages into the text of a letter you are editing,
+ each line of the messages is preceded by the value of
+ .BR indent_str .
+ If it is unset, the message body is indented by the string \*Q> \*U.
+ See also the variables
+ .B pre_indent_str
+ and
+ .BR post_indent_str .
+ .TP
.B in_reply_to
(String)
! This variable may be set to a string that will complete the
header \*QIn-Reply-To:\*U.
The format of this string is identical to the options for the variable
.BR hdr_format .
.sp
For example, if the user were to respond to a message
! from Dan Heller that was sent on October 21, 1987, at 10:39pm, with
.B in_reply_to
set to the string
.in +2
***************
*** 2973,2994 ****
.ti -2
the header line
.sp
! In-Reply-To: Dan Heller's message as of Oct 21, 1987 10:39pm.
.in-2
.sp
would be added to the message.
.TP
- .B indent_str
- (String)
- When including messages into the text of a letter you are editing,
- each line of the messages is preceded by the value of
- .BR indent_str .
- If it is unset, the message body is indented by the string \*Q> \*U.
- See also the variables
- .B pre_indent_str
- and
- .BR post_indent_str .
- .TP
.B keepsave
(Boolean)
If set, the commands
--- 3053,3063 ----
.ti -2
the header line
.sp
! In-Reply-To: Dan Heller's message as of Oct 21, 1987, 10:39pm.
.in-2
.sp
would be added to the message.
.TP
.B keepsave
(Boolean)
If set, the commands
***************
*** 3007,3016 ****
and/or commas, and describes
the hosts with whom you know your machine shares UUCP connections.
When replying to mail, many times you will see that the return path
! constructed will have hostnames which your site could call, but instead
the mail has been routed through a number of different machines first.
.sp
! For example, if you respond to mail which would mail to the path,
.sp
.ti +2
unicom!pixar!root
--- 3076,3085 ----
and/or commas, and describes
the hosts with whom you know your machine shares UUCP connections.
When replying to mail, many times you will see that the return path
! constructed will have hostnames that your site could call, but instead
the mail has been routed through a number of different machines first.
.sp
! For example, if you respond to mail that would mail to the path
.sp
.ti +2
unicom!pixar!root
***************
*** 3018,3024 ****
but your know your machine already calls pixar, then sending the mail
to unicom first is unnecessary.
If you have set your known_hosts string to include pixar in its list,
! the resulting address would look like,
.sp
.ti +2
pixar!root
--- 3087,3093 ----
but your know your machine already calls pixar, then sending the mail
to unicom first is unnecessary.
If you have set your known_hosts string to include pixar in its list,
! the resulting address would look like
.sp
.ti +2
pixar!root
***************
*** 3073,3079 ****
When no_expand is set, aliases are not expanded and the headers
reflect the same information as typed by the user.
.TP
! .B no_hdr
(Boolean)
If set, this variable tells
.I Mush
--- 3142,3148 ----
When no_expand is set, aliases are not expanded and the headers
reflect the same information as typed by the user.
.TP
! .B no_hdrs
(Boolean)
If set, this variable tells
.I Mush
***************
*** 3095,3103 ****
signals.
When the message is terminated, a copy of it is saved to the
file \*Qdead.letter\*U in the user's home directory or to the file described
! by the variable,
.BR dead .
! If the variable,
.B nosave
is set, then a backup copy of the message will not be saved.
.TP
--- 3164,3172 ----
signals.
When the message is terminated, a copy of it is saved to the
file \*Qdead.letter\*U in the user's home directory or to the file described
! by the variable
.BR dead .
! If the variable
.B nosave
is set, then a backup copy of the message will not be saved.
.TP
***************
*** 3133,3139 ****
as follows:
.sp
.ti +2
! set pre_indent_str = '[In the message entitled "%s", on %7d\n %n writes:]'
.sp
You can then include a message body using \*Q~i\*U, and you might
get something like this:
--- 3202,3208 ----
as follows:
.sp
.ti +2
! set pre_indent_str = '[In the message entitled "%s", on %7d\\n %n writes:]'
.sp
You can then include a message body using \*Q~i\*U, and you might
get something like this:
***************
*** 3215,3221 ****
.B prompt
(String)
You can set your prompt to tell you many different pieces of information.
! By default, the prompt is set to the string,
.sp
.ti +2
\*QMsg %m of %t: \*U
--- 3284,3290 ----
.B prompt
(String)
You can set your prompt to tell you many different pieces of information.
! By default, the prompt is set to the string
.sp
.ti +2
\*QMsg %m of %t: \*U
***************
*** 3238,3243 ****
--- 3307,3313 ----
%D today's day (Sun, Mon, Tue, ...)
%f filename of the current folder
%m \*Qcurrent message\*U number
+ %M current month
%n number of \*Qnew\*U messages
%N today's date (Number of the day in the month)
%T current time (hours and seconds)
***************
*** 3255,3260 ****
--- 3325,3343 ----
.I Mush
is not printed on startup.
.TP
+ .B realname
+ (String)
+ Set to the name of the user. The name is initialized to the value of
+ the environment variable
+ .B NAME
+ upon invocation of the program.
+ If that isn't set, then the name is gotten from the password file if
+ available. If this variable wants to be reset or changed after the
+ program has started, the user should issue the command:
+ .sp
+ .ti +2
+ set realname = "Your name here"
+ .TP
.B record
(String)
Set to the name of a file to record all outgoing mail.
***************
*** 3277,3283 ****
given there is used.
If the variable
.B reply_to_hdr
! is set to a of headers (delimited by spaces or commas), then that list
is searched.
If none of the headers listed in the variable exist
in the message, then a warning message is printed and the default
--- 3360,3366 ----
given there is used.
If the variable
.B reply_to_hdr
! is set to a list of headers (delimited by spaces or commas), then that list
is searched.
If none of the headers listed in the variable exist
in the message, then a warning message is printed and the default
***************
*** 3286,3296 ****
.B reply
command for more details.
.TP
! .B sendmail
! (String)
! If set, the program and arguments described by this variable will
! be executed to actually deliver mail sent by
! .I Mush.
.TP
.B screen
(Numeric)
--- 3369,3381 ----
.B reply
command for more details.
.TP
! .B save_empty
! (Boolean)
! Normally, when all messages in a folder are deleted and the user updates
! the folder or changes to a new folder, the empty folder is deleted.
! .B save_empty
! prevents the folder from being deleted and it is left zero length.
! Note: the main system mailbox is never deleted when empty anyway.
.TP
.B screen
(Numeric)
***************
*** 3299,3308 ****
.TP
.B screen_win
(Numeric)
! Man be set to the number of message headers to display in the tool mode.
A subwindow is created for message headers, and its size is large
enough to hold $screen_win headers.
.TP
.B show_deleted
(Boolean)
If true, deleted message headers are displayed along with
--- 3384,3399 ----
.TP
.B screen_win
(Numeric)
! May be set to the number of message headers to display in the tool mode.
A subwindow is created for message headers, and its size is large
enough to hold $screen_win headers.
.TP
+ .B sendmail
+ (String)
+ If set, the program and arguments described by this variable will
+ be executed to actually deliver mail sent by
+ .I Mush.
+ .TP
.B show_deleted
(Boolean)
If true, deleted message headers are displayed along with
***************
*** 3312,3320 ****
.TP
.B 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 variable disables the headers supressed by the
.B ignore
command.
For example,
--- 3403,3411 ----
.TP
.B show_hdrs
(String)
! Set to a list (space and/or comma separated) of headers that are to be the
only headers displayed when viewing a message.
! This variable disables the headers suppressed by the
.B ignore
command.
For example,
***************
*** 3322,3328 ****
.ti +2
set show_hdrs = "from date subject to cc"
.sp
! will only display the headers,
.B From: Date: Subject: To: Cc:
in their entirety.
.TP
--- 3413,3419 ----
.ti +2
set show_hdrs = "from date subject to cc"
.sp
! will only display the headers
.B From: Date: Subject: To: Cc:
in their entirety.
.TP
***************
*** 3342,3348 ****
.TP
.B tmpdir
(String)
! This variable describes the path to use as the directory to use
for all tempfiles that
.I Mush
uses. By default, the user's home directory is used. If that
--- 3433,3439 ----
.TP
.B tmpdir
(String)
! This variable describes the path to use as the directory
for all tempfiles that
.I Mush
uses. By default, the user's home directory is used. If that
***************
*** 3351,3363 ****
.TP
.B toplines
(Numeric)
! The number of lines of a message to print when the "top" command
! is issued.
! If unset, $crt lines are printed.
.TP
.B unix
(Boolean)
! If set, commands which are not
.I Mush
commands are considered to be
.I UNIX
--- 3442,3457 ----
.TP
.B toplines
(Numeric)
! The number of lines of a message to print when the
! .B top
! command is issued. If unset, $crt lines are printed.
! Note that the message body only is printed when using the
! .B top
! command; message headers are not counted as lines since they are not displayed.
.TP
.B unix
(Boolean)
! If set, commands that are not
.I Mush
commands are considered to be
.I UNIX
***************
*** 3393,3399 ****
When through editing messages, just before sending,
.B verify
will ask you if you want to send, continue editing, or abort the
! whole message all together.
.TP
.B visual
(String)
--- 3487,3493 ----
When through editing messages, just before sending,
.B verify
will ask you if you want to send, continue editing, or abort the
! whole message altogether.
.TP
.B visual
(String)
***************
*** 3436,3442 ****
will be aware of changes in other environments should they be forced
to use them.
There may also be warning messages of failed routines
! or assertions which are not fatal enough to interrupt normal running
of the program.
.TP
.B wrap
--- 3530,3536 ----
will be aware of changes in other environments should they be forced
to use them.
There may also be warning messages of failed routines
! or assertions that are not fatal enough to interrupt normal running
of the program.
.TP
.B wrap
***************
*** 3452,3463 ****
.B next
command.
.SH "MAIL ADDRESSES"
! Whenever a command which requires a user address or set of addresses
is specified
.RB ( mail ,
.BR reply ,
.BR alias ,
! .BR etc ),
the addresses given must be separated by commas.
Most casual users specify addresses that contain no comments or whitespace.
The simplest addresses are just the login names of the users you wish to send
--- 3546,3557 ----
.B next
command.
.SH "MAIL ADDRESSES"
! Whenever a command that requires a user address or set of addresses
is specified
.RB ( mail ,
.BR reply ,
.BR alias ,
! .BR etc )
the addresses given must be separated by commas.
Most casual users specify addresses that contain no comments or whitespace.
The simplest addresses are just the login names of the users you wish to send
***************
*** 3565,3571 ****
.nf
.in +2
.ta 1.5i
! alias george George Jetson <george@spacely.space.sprokets>
alias jane Jane Jetson <jane@sky-high.appts>
alias group george, jane
.in -2
--- 3659,3665 ----
.nf
.in +2
.ta 1.5i
! alias george George Jetson <george@spacely.space.sprockets>
alias jane Jane Jetson <jane@sky-high.appts>
alias group george, jane
.in -2
***************
*** 3573,3579 ****
.sp
You can mail using the alias as an address and it will be expanded
accordingly.
! You can not, however, reference an alias and specify a
comment or another address at the same time.
.sp
.ti +2
--- 3667,3673 ----
.sp
You can mail using the alias as an address and it will be expanded
accordingly.
! You cannot, however, reference an alias and specify a
comment or another address at the same time.
.sp
.ti +2
***************
*** 3593,3599 ****
~/.mushXXXXXX Temporary mail file (copy of current folder)
.fi
.PP
! Temporary files which are created by the program are always
created with read/write access to the owner only; group and other
permissions are never set.
This is also true for the /usr/spool/mail/* files.
--- 3687,3693 ----
~/.mushXXXXXX Temporary mail file (copy of current folder)
.fi
.PP
! Temporary files that are created by the program are always
created with read/write access to the owner only; group and other
permissions are never set.
This is also true for the /usr/spool/mail/* files.
***************
*** 3634,3641 ****
argv@spam.istc.sri.com sun!island!argv
.SH BUGS
The curses interface uses the curses library.
! The routines from the library that are used are the most basic and simple to
! avoid possible bugginess that different versions of UNIX might have.
However, one unavoidable problem is the reverse video mode.
Depending on your terminal,
the termcap entry for it, and the version of curses you are running,
--- 3728,3735 ----
argv@spam.istc.sri.com sun!island!argv
.SH BUGS
The curses interface uses the curses library.
! The routines from the library that are used are the most basic and simple
! so as to avoid possible bugginess that different versions of UNIX might have.
However, one unavoidable problem is the reverse video mode.
Depending on your terminal,
the termcap entry for it, and the version of curses you are running,
***************
*** 3650,3656 ****
and there is no swap space left, there may be problems.
One such problem is sending mail.
If this happens, then sending mail
! will fail and a segmentation fault from the spawned forked child will occur
unless the -v flag was given to mail.
The unsent letter will not be removed from the editing file ($home/.edXXXXXX)
and may be recovered.
--- 3744,3750 ----
and there is no swap space left, there may be problems.
One such problem is sending mail.
If this happens, then sending mail
! will fail and a segmentation fault from the spawned/forked child will occur
unless the -v flag was given to mail.
The unsent letter will not be removed from the editing file ($home/.edXXXXXX)
and may be recovered.
***************
*** 3671,3677 ****
.I window
to run commands from.
It is impossible to determine whether or not the user wants to run an
! interactive program or not so it is best to disallow its usage all together.
The experienced window user
can figure out how to really do shell layers from within the tool mode.
.PP
--- 3765,3771 ----
.I window
to run commands from.
It is impossible to determine whether or not the user wants to run an
! interactive program or not, so it is best to disallow its usage all together.
The experienced window user
can figure out how to really do shell layers from within the tool mode.
.PP
***************
*** 3684,3691 ****
The function keys and their ability to
.I work
has been variable depending on the version of SunWindows/SunView
! your Sun Workstation has.
! From time to time, it works, but when it
doesn't, it seems to be related to other user or system definable
dot-files or whatever.
I hardly use them, so I haven't had a chance
--- 3778,3784 ----
The function keys and their ability to
.I work
has been variable depending on the version of SunWindows/SunView
! your Sun Workstation has. From time to time, it works, but when it
doesn't, it seems to be related to other user or system definable
dot-files or whatever.
I hardly use them, so I haven't had a chance
***************
*** 3706,3717 ****
.I Mush
may complain or not even run since it needs temporary space with which
to work.
! Instead of finding new filesystems on it's own,
.I Mush
leaves this task up to the user.
The workaround is to set the variable
.B home
! in the initialization file to be a writable place in a filesystem which
has enough disk space.
This will set the user's home directory to be
set incorrectly, but resetting the home manually once in the shell
--- 3799,3810 ----
.I Mush
may complain or not even run since it needs temporary space with which
to work.
! Instead of finding new filesystems on its own,
.I Mush
leaves this task up to the user.
The workaround is to set the variable
.B home
! in the initialization file to be a writable place in a filesystem that
has enough disk space.
This will set the user's home directory to be
set incorrectly, but resetting the home manually once in the shell
*** OLD/mush.h Thu May 12 21:14:46 1988
--- mush.h Wed Jul 6 12:06:20 1988
***************
*** 1,19 ****
/* @(#)mush.h (c) copyright 1986 (Dan Heller) */
! #define VERSION "Mail User's Shell (6.2 5/11/88)"
#include "config.h"
#ifdef CURSES
#ifdef USG
# define _USG
# undef USG
#endif /* USG */
#include <curses.h>
#if !defined(USG) && defined(_USG)
# define USG
! # undef _USG
! #endif /* USG && _USG */
#else /* CURSES */
#include <stdio.h>
#if defined(SYSV) && defined(USG)
--- 1,27 ----
/* @(#)mush.h (c) copyright 1986 (Dan Heller) */
! #define VERSION "Mail User's Shell (6.3 6/25/88)"
#include "config.h"
#ifdef CURSES
+
#ifdef USG
# define _USG
# undef USG
#endif /* USG */
+ #ifdef SYSV
+ # define _SYSV
+ # undef SYSV
+ #endif /* SYSV */
#include <curses.h>
#if !defined(USG) && defined(_USG)
# define USG
! #endif /* USG */
! #if !defined(SYSV) && defined(_SYSV)
! # define SYSV
! #endif /* SYSV */
!
#else /* CURSES */
#include <stdio.h>
#if defined(SYSV) && defined(USG)
***************
*** 87,94 ****
* on_intr() and off_intr() macros, initialize WAS_INTR to false.
*/
#define on_intr() \
! turnoff(glob_flags, WAS_INTR), oldint = signal(SIGINT, interrupt), \
! oldquit = signal(SIGQUIT, interrupt)
#define off_intr() \
turnoff(glob_flags, WAS_INTR), (void) signal(SIGINT, oldint), \
--- 95,102 ----
* on_intr() and off_intr() macros, initialize WAS_INTR to false.
*/
#define on_intr() \
! turnoff(glob_flags, WAS_INTR), oldint = signal(SIGINT, intr), \
! oldquit = signal(SIGQUIT, intr)
#define off_intr() \
turnoff(glob_flags, WAS_INTR), (void) signal(SIGINT, oldint), \
***************
*** 104,110 ****
/* for system-V machines that run termio */
#if defined(SYSV) && defined(USG)
! unsigned char vmin;
#define sg_erase c_cc[2]
#define sg_flags c_lflag
#define sg_kill c_cc[3]
--- 112,118 ----
/* for system-V machines that run termio */
#if defined(SYSV) && defined(USG)
! unsigned char vmin, vtime;
#define sg_erase c_cc[2]
#define sg_flags c_lflag
#define sg_kill c_cc[3]
***************
*** 117,124 ****
#define cbrkon() \
(_tty.sg_flags &= ~ICANON, _tty.c_cc[VMIN] = 1, stty(0, &_tty))
#define cbrkoff() \
! (_tty.sg_flags |= ICANON, _tty.c_cc[VMIN] = vmin, stty(0, &_tty))
! #define savetty() (void) gtty(0, &_tty), vmin = _tty.c_cc[VMIN]
#define cbreak() cbrkon()
#define nocbreak() cbrkoff()
--- 125,134 ----
#define cbrkon() \
(_tty.sg_flags &= ~ICANON, _tty.c_cc[VMIN] = 1, stty(0, &_tty))
#define cbrkoff() \
! (_tty.sg_flags |= ICANON, _tty.c_cc[VMIN] = vmin, \
! _tty.c_cc[VTIME] = vtime, stty(0, &_tty))
! #define savetty() \
! (void) gtty(0, &_tty), vtime = _tty.c_cc[VTIME], vmin = _tty.c_cc[VMIN]
#define cbreak() cbrkon()
#define nocbreak() cbrkoff()
***************
*** 296,301 ****
--- 306,312 ----
#define CNTD_CMD 18 /* curses.c -- "...continue..." prompt in curses */
#define IS_SENDING 19 /* was started to send mail, not to be run as a shell */
#define MIL_TIME 20 /* if $mil_time is set, use 24hr military time fmt */
+ #define DATE_RECV 21 /* if $date_received, show date received on msgs */
#define VERBOSE 1 /* verbose flag for sendmail */
#define INCLUDE 2 /* include msg in response */
***************
*** 314,323 ****
#define INDENT 13 /* indent included msg with string */
#define NO_IGNORE 14 /* don't ignore headers */
#define PRESERVE 15 /* preserve in mailbox unless deleted */
! #define TOP 15 /* just print the top of msg (same as pre) */
#define FORWARD 16 /* Forward messages into the message buffer */
#define REPLIED 17 /* Messages that have been replied to */
#define NEW_SUBJECT 18 /* new subject regardless of $ask (mail -s) */
#define MAXMSGS_BITS MAXMSGS/sizeof(char) /* number of bits for bitmap */
--- 325,335 ----
#define INDENT 13 /* indent included msg with string */
#define NO_IGNORE 14 /* don't ignore headers */
#define PRESERVE 15 /* preserve in mailbox unless deleted */
! #define M_TOP 15 /* just print the top of msg (same as pre) */
#define FORWARD 16 /* Forward messages into the message buffer */
#define REPLIED 17 /* Messages that have been replied to */
#define NEW_SUBJECT 18 /* new subject regardless of $ask (mail -s) */
+ #define SAVED 19 /* when message has been saved */
#define MAXMSGS_BITS MAXMSGS/sizeof(char) /* number of bits for bitmap */
***************
*** 415,428 ****
n_array[128], /* array of message numbers in the header window */
screen, /* number of headers window can handle */
! quit(), cleanup(), catch(), do_alias(), respond(), cd(), sh(), stop(),
folder(), save_msg(), delete(), do_mail(), lpr(), alts(), set(), do_hdrs(),
! rm_edfile(), pick(), save_opts(), preserve(), sort(), readmsg(),
do_pick(), print_help(), folders(), question_mark(), do_from(), my_stty(),
! do_version(), disp_hist(), source(), do_echo(), sigchldcatcher(), ls(),
! nopenfiles(), Setenv(), Unsetenv(), Printenv(), bus_n_seg(), msg_flags(),
! toggle_debug(), stop_start(), interrupt();
long
still_more, /* there is still more message to display */
spool_size, /* size of sppol mail regardless of current folder */
--- 427,445 ----
n_array[128], /* array of message numbers in the header window */
screen, /* number of headers window can handle */
! quit(), do_alias(), respond(), cd(), sh(), stop(),
folder(), save_msg(), delete(), do_mail(), lpr(), alts(), set(), do_hdrs(),
! pick(), save_opts(), preserve(), sort(), readmsg(),
do_pick(), print_help(), folders(), question_mark(), do_from(), my_stty(),
! do_version(), disp_hist(), source(), do_echo(), ls(),
! nopenfiles(), Setenv(), Unsetenv(), Printenv(), msg_flags(), toggle_debug();
+ #ifndef SIGRET
+ #define SIGRET int
+ #endif /* SIGRET */
+ SIGRET
+ rm_edfile(), stop_start(), bus_n_seg(), sigchldcatcher(), catch(), intr();
+
long
still_more, /* there is still more message to display */
spool_size, /* size of sppol mail regardless of current folder */
***************
*** 430,437 ****
time(); /* satisfy lint */
void
! xfree(), free_vec(), error(), getmail(), mail_status(),
! file_to_fp(), init(), display_msg();
/* printf(), fclose(), fflush(), fputs(), fputc() */
#ifdef TIOCGLTC
struct ltchars ltchars; /* tty character settings */
--- 447,454 ----
time(); /* satisfy lint */
void
! xfree(), free_vec(), error(), getmail(), mail_status(), close_lock(),
! file_to_fp(), init(), display_msg(), putstring(), cleanup(), fs_error();
/* printf(), fclose(), fflush(), fputs(), fputc() */
#ifdef TIOCGLTC
struct ltchars ltchars; /* tty character settings */
*** OLD/pick.c Thu May 12 21:14:48 1988
--- pick.c Tue Jun 28 21:38:28 1988
***************
*** 38,43 ****
--- 38,44 ----
register char **argv, list[];
{
register char c;
+ char pattern[256];
int o_before = before, o_after = after, o_search_from = search_from,
o_search_subj = search_subj, o_search_to = search_to, o_xflg = xflg,
o_mdy[3], n;
***************
*** 113,123 ****
clear_msg_list(list);
return -1;
}
if (verbose) {
print_more("Searching for messages");
if (mdy[1] == 0) {
print(" that %s \"%s\"", (xflg)? "doesn't contain": "contains",
! (*argv)? *argv: "<previous expression>");
if (search_subj)
print_more(" in subject line");
else if (search_from)
--- 114,126 ----
clear_msg_list(list);
return -1;
}
+ pattern[0] = 0;
+ (void) argv_to_string(pattern, argv);
if (verbose) {
print_more("Searching for messages");
if (mdy[1] == 0) {
print(" that %s \"%s\"", (xflg)? "doesn't contain": "contains",
! (*pattern)? pattern: "<previous expression>");
if (search_subj)
print_more(" in subject line");
else if (search_from)
***************
*** 138,144 ****
}
if (mdy[1] > 0 && icase)
print("using date: -i flag ignored.\n");
! ret = find_pattern(*argv, list);
bad:
before = o_before, after = o_after, search_from = o_search_from;
search_subj = o_search_subj, search_to = o_search_to, xflg = o_xflg;
--- 141,147 ----
}
if (mdy[1] > 0 && icase)
print("using date: -i flag ignored.\n");
! ret = find_pattern(pattern, list);
bad:
before = o_before, after = o_after, search_from = o_search_from;
search_subj = o_search_subj, search_to = o_search_to, xflg = o_xflg;
***************
*** 302,308 ****
char pattern[128];
register int this_msg = current_msg, val = 0;
static char *err = (char *)-1, direction;
! int (*oldint)(), (*oldquit)();
#ifdef REGCMP
char *regcmp();
#else /* REGCMP */
--- 305,311 ----
char pattern[128];
register int this_msg = current_msg, val = 0;
static char *err = (char *)-1, direction;
! SIGRET (*oldint)(), (*oldquit)();
#ifdef REGCMP
char *regcmp();
#else /* REGCMP */
*** OLD/setopts.c Thu Apr 7 22:47:56 1988
--- setopts.c Tue Jun 28 21:38:29 1988
***************
*** 66,71 ****
--- 66,75 ----
prompt = (tmp->value)? tmp->value : DEF_PROMPT;
else if (!strcmp(tmp->option, "mil_time"))
turnon(glob_flags, MIL_TIME);
+ #ifndef MSG_SEPARATOR
+ else if (!strcmp(tmp->option, "date_received"))
+ turnon(glob_flags, DATE_RECV);
+ #endif /* MSG_SEPARATOR */
else if (!strcmp(tmp->option, "escape"))
escape = (tmp->value)? tmp->value : DEF_ESCAPE;
else if (!strcmp(tmp->option, "hdr_format"))
***************
*** 189,194 ****
--- 193,202 ----
prompt = DEF_PROMPT;
else if (!strcmp(p, "mil_time"))
turnoff(glob_flags, MIL_TIME);
+ #ifndef MSG_SEPARATOR
+ else if (!strcmp(p, "date_received"))
+ turnoff(glob_flags, DATE_RECV);
+ #endif /* MSG_SEPARATOR */
else if (!strcmp(p, "escape"))
escape = DEF_ESCAPE;
else if (!strcmp(p, "hdr_format"))
*** OLD/signals.c Fri Jun 10 12:38:25 1988
--- signals.c Tue Jul 5 12:08:37 1988
***************
*** 90,96 ****
}
#endif /* SUNTOOL */
! interrupt(sig)
{
Debug("interrupt() caught: %d\n", sig);
turnon(glob_flags, WAS_INTR);
--- 90,97 ----
}
#endif /* SUNTOOL */
! SIGRET
! intr(sig)
{
Debug("interrupt() caught: %d\n", sig);
turnon(glob_flags, WAS_INTR);
***************
*** 101,106 ****
--- 102,108 ----
* If signals are ignored, return. If we're running the shell, longjmp back.
*/
/*ARGSUSED*/
+ SIGRET
catch(sig)
{
Debug("Caught signal: %d\n", sig);
***************
*** 125,130 ****
--- 127,133 ----
}
#ifdef SIGCONT
+ SIGRET
stop_start(sig)
{
extern FILE *ed_fp;
***************
*** 194,199 ****
--- 197,203 ----
#endif /* SIGCONT */
/*ARGSUSED*/
+ void
cleanup(sig)
{
char buf[128], c = ison(glob_flags, IGN_SIGS)? 'n' : 'y';
***************
*** 215,224 ****
}
if (c != 'n' && *tempfile && unlink(tempfile) && !sig && errno != ENOENT)
error(tempfile);
- #ifdef SUNTOOL
- if (istool && tool)
- tool_destroy(tool);
- #endif /* SUNTOOL */
if (sig == SIGSEGV || sig == SIGBUS) {
if (isoff(glob_flags, IGN_SIGS)) {
fprintf(stderr, "coredump [n]? "), fflush(stderr);
--- 219,224 ----
***************
*** 320,325 ****
--- 320,326 ----
}
/*ARGSUSED*/ /* we ignore the sigstack, cpu-usage, etc... */
+ SIGRET
bus_n_seg(sig)
{
fprintf(stderr, "%s: %s\n", prog_name,
*** OLD/sort.c Fri Feb 19 20:30:57 1988
--- sort.c Tue Jun 28 21:38:31 1988
***************
*** 11,17 ****
register char *argv[], list[];
{
int status_cmp(), author_cmp(), date_cmp(), subject_cmp(), subj_with_re();
! int (*oldint)(), (*oldquit)();
int (*how)() = status_cmp;
int n, offset = -1, range = 0;
--- 11,17 ----
register char *argv[], list[];
{
int status_cmp(), author_cmp(), date_cmp(), subject_cmp(), subj_with_re();
! SIGRET (*oldint)(), (*oldquit)();
int (*how)() = status_cmp;
int n, offset = -1, range = 0;
***************
*** 35,40 ****
--- 35,41 ----
print("Not enough messages to sort.\n");
return -1;
}
+ turnon(glob_flags, IGN_SIGS);
on_intr();
if (list && ison(glob_flags, IS_PIPE)) {
***************
*** 59,64 ****
--- 60,66 ----
print("WARNING: Sorting interrupted: unpredictable order.\n");
turnon(glob_flags, DO_UPDATE);
}
+ turnoff(glob_flags, IGN_SIGS);
off_intr();
return -1;
}
***************
*** 115,120 ****
--- 117,126 ----
if (ison(msg1->m_flags,REPLIED) && isoff(msg2->m_flags,REPLIED))
return -order;
if (isoff(msg1->m_flags,REPLIED) && ison(msg2->m_flags,REPLIED))
+ return order;
+ if (ison(msg1->m_flags,SAVED) && isoff(msg2->m_flags,SAVED))
+ return -order;
+ if (isoff(msg1->m_flags,SAVED) && ison(msg2->m_flags,SAVED))
return order;
return order;
*** OLD/strings.c Thu May 12 21:14:49 1988
--- strings.c Tue Jun 28 21:38:31 1988
***************
*** 221,235 ****
#ifdef SYSV
#include <varargs.h>
char *
! Sprintf(buf, fmt, va_alist)
! register char *buf, *fmt;
va_dcl
{
va_list ap;
! #ifdef VPRINTF
va_start(ap);
(void) vsprintf(buf, fmt, ap);
- va_end(ap);
#else
{
FILE foo;
--- 221,237 ----
#ifdef SYSV
#include <varargs.h>
char *
! Sprintf(va_alist)
va_dcl
{
+ char *buf, *fmt;
va_list ap;
!
va_start(ap);
+ buf = va_arg(ap, char *);
+ fmt = va_arg(ap, char *);
+ #ifdef VPRINTF
(void) vsprintf(buf, fmt, ap);
#else
{
FILE foo;
***************
*** 236,247 ****
foo._cnt = BUFSIZ;
foo._base = foo._ptr = buf; /* may have to be cast (unsigned char *) */
foo._flag = _IOWRT+_IOSTRG;
- va_start(ap);
(void) _doprnt(fmt, ap, &foo);
- va_end(ap);
*foo._ptr = '\0'; /* plant terminating null character */
}
#endif /* VPRINTF */
return buf;
}
#endif /* SYSV */
--- 238,248 ----
foo._cnt = BUFSIZ;
foo._base = foo._ptr = buf; /* may have to be cast (unsigned char *) */
foo._flag = _IOWRT+_IOSTRG;
(void) _doprnt(fmt, ap, &foo);
*foo._ptr = '\0'; /* plant terminating null character */
}
#endif /* VPRINTF */
+ va_end(ap);
return buf;
}
#endif /* SYSV */
***************
*** 259,262 ****
--- 260,285 ----
fflush(stdout);
} else
wprint("\n");
+ }
+
+ /*
+ * putstring -- put a string into a file. Expand \t's into tabs and \n's
+ * into newlines. Append a \n and fflush(fp);
+ */
+ void
+ putstring(p, fp)
+ register char *p;
+ register FILE *fp;
+ {
+ for ( ; *p; ++p)
+ if (*p != '\\')
+ fputc(*p, fp);
+ else
+ switch(*++p) {
+ case 'n': fputc('\n', fp);
+ when 't': fputc('\t', fp);
+ otherwise: fputc(*p, fp);
+ }
+ fputc('\n', fp);
+ fflush(fp);
}
*** OLD/viewopts.c Thu May 12 21:14:50 1988
--- viewopts.c Tue Jun 28 21:38:32 1988
***************
*** 45,50 ****
--- 45,52 ----
"Path to search for directories when the \"cd\" command is issued." },
{ "crt", "Lines", TEXT,
"The number of lines a message must have for 'pager' to be invoked." },
+ { "date_received", NULL, TOOL | TEXT,
+ "Time displayed for message headers shows date received (or sent)." },
{ "dead", "Filename", TOOL | TEXT,
"The name of the file to store dead mail. ~/dead.letter by default." },
{ "dot", NULL, TOOL | TEXT,
***************
*** 65,70 ****
--- 67,76 ----
"How many commands to remember (like csh)." },
{ "hold", NULL, TOOL | TEXT,
"Read but not deleted messages are saved in spool -- not mbox." },
+ { "home", "Directory", TOOL | TEXT,
+ "The user's home directory." },
+ { "hostname", "Hostname", TOOL | TEXT,
+ "user definable name for the name of your machine." },
{ "ignore_bang", NULL, TEXT,
"Ignore '!' as a history reference. Otherwise, escape by: \\!" },
{ "ignoreeof", "-Command", TEXT,
***************
*** 89,95 ****
"Ignore RETURN. If set to a string, execute \"command\"" },
{ "no_expand", NULL, TEXT | TOOL,
"Prevents expansion of Mush aliases in outgoing mail." },
! { "no_hdr", NULL, TOOL | TEXT,
"If set, personalized headers are NOT inserted to outgoing mail." },
{ "no_reverse", NULL, TOOL | TEXT,
"disables reverse video in curses mode -- uses \"bold\" in tool mode." },
--- 95,101 ----
"Ignore RETURN. If set to a string, execute \"command\"" },
{ "no_expand", NULL, TEXT | TOOL,
"Prevents expansion of Mush aliases in outgoing mail." },
! { "no_hdrs", NULL, TOOL | TEXT,
"If set, personalized headers are NOT inserted to outgoing mail." },
{ "no_reverse", NULL, TOOL | TEXT,
"disables reverse video in curses mode -- uses \"bold\" in tool mode." },
***************
*** 109,118 ****
"Your prompt. \"help prompt\" for more information." },
{ "quiet", NULL, TEXT,
"Don't print the version number of Mush on startup." },
{ "record", "Filename", TOOL | TEXT,
"Save all outgoing mail in specified filename" },
{ "reply_to_hdr", "Headers", TOOL | TEXT,
! "List of headers use to construct reply adresses from a message.", },
{ "screen", "Number of Headers", TEXT,
"Number of headers to print in non-suntools (text) mode" },
{ "screen_win", "Number of Headers", TOOL,
--- 115,128 ----
"Your prompt. \"help prompt\" for more information." },
{ "quiet", NULL, TEXT,
"Don't print the version number of Mush on startup." },
+ { "realname", "Name:", TOOL | TEXT,
+ "Your real name." },
{ "record", "Filename", TOOL | TEXT,
"Save all outgoing mail in specified filename" },
{ "reply_to_hdr", "Headers", TOOL | TEXT,
! "List of headers use to construct reply adresses from a message." },
! { "save_empty", NULL, TOOL | TEXT,
! "Folders which have all messages deleted are NOT removed on updates." },
{ "screen", "Number of Headers", TEXT,
"Number of headers to print in non-suntools (text) mode" },
{ "screen_win", "Number of Headers", TOOL,
***************
*** 127,133 ****
"Pre-sorting of messages on program startup (set to valid sort option)" },
{ "squeeze", NULL, TOOL | TEXT,
"When reading messages, squeeze all blank lines into one." },
! { "top", "Lines", TOOL | TEXT,
"Number of lines to print of a message for the 'top' command." },
{ "tmpdir", "Directory", TOOL | TEXT,
"Directory to use for temporary files used by Mush." },
--- 137,143 ----
"Pre-sorting of messages on program startup (set to valid sort option)" },
{ "squeeze", NULL, TOOL | TEXT,
"When reading messages, squeeze all blank lines into one." },
! { "toplines", "Lines", TOOL | TEXT,
"Number of lines to print of a message for the 'top' command." },
{ "tmpdir", "Directory", TOOL | TEXT,
"Directory to use for temporary files used by Mush." },