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