home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume15 / mush6.3kit / part04 / Diffs.6.3.c
Text File  |  1988-07-06  |  52KB  |  1,651 lines

  1.   .sp
  2.   When constructing a return mail address to the author of a message,
  3.   .B reply
  4. ! searches for special mail headers in the author's message which
  5.   indicate the most efficient mail path for return mail.
  6.   .I Mush
  7.   will search for the \*QFrom:\*U, \*QReply-To:\*U,
  8. --- 2285,2291 ----
  9.   .sp
  10.   When constructing a return mail address to the author of a message,
  11.   .B reply
  12. ! searches for special mail headers in the author's message that
  13.   indicate the most efficient mail path for return mail.
  14.   .I Mush
  15.   will search for the \*QFrom:\*U, \*QReply-To:\*U,
  16. ***************
  17. *** 2338,2344 ****
  18.   .BR saveopts " [file]"
  19.   The complement of
  20.   .BR source ,
  21. ! .B saveopts
  22.   will save all settable variables, aliases
  23.   and cmd's in the initialization file.
  24.   (See the
  25. --- 2371,2377 ----
  26.   .BR saveopts " [file]"
  27.   The complement of
  28.   .BR source ,
  29. ! .B saveopts ,
  30.   will save all settable variables, aliases
  31.   and cmd's in the initialization file.
  32.   (See the
  33. ***************
  34. *** 2410,2416 ****
  35.   .in +2
  36.   .ta 1i
  37.   -    reverse sort order
  38. ! d    sort by date received
  39.   a    sort by author (alphabetical)
  40.   s    sort by subject ignoring \*QRe:\*U
  41.   R    sort by subject (alphabetical)
  42. --- 2443,2449 ----
  43.   .in +2
  44.   .ta 1i
  45.   -    reverse sort order
  46. ! d    sort by date
  47.   a    sort by author (alphabetical)
  48.   s    sort by subject ignoring \*QRe:\*U
  49.   R    sort by subject (alphabetical)
  50. ***************
  51. *** 2426,2431 ****
  52. --- 2459,2469 ----
  53.   New, unread messages are first, followed by preserved messages,
  54.   and finally deleted messages are placed at the end of the list.
  55.   .sp
  56. + When sorting by date, the boolean variable
  57. + .B date_received
  58. + is checked.  If it is set, then sorting goes by date received.
  59. + Otherwise (default), sorting is by date sent by the original author.
  60. + .sp
  61.   If the variable
  62.   .I sort
  63.   is set, messages are sorted each time the user's system mailbox is
  64. ***************
  65. *** 2504,2514 ****
  66.   Options may be either boolean, in which case it is only
  67.   significant to see whether or not they are set;
  68.   string, in which case the actual value is of interest;
  69. ! or numerical, in which the numerical value is important.
  70.   Some variables may have attributes
  71.   of boolean and string at the same time.
  72.   .sp
  73. ! If you or the program references a variable which is not explicitly set,
  74.   then the environment variables are checked and a pointer to that data
  75.   is returned.
  76.   Following is a list of all predefined variables.
  77. --- 2542,2552 ----
  78.   Options may be either boolean, in which case it is only
  79.   significant to see whether or not they are set;
  80.   string, in which case the actual value is of interest;
  81. ! or numerical, in which case the numerical value is important.
  82.   Some variables may have attributes
  83.   of boolean and string at the same time.
  84.   .sp
  85. ! If you or the program references a variable that is not explicitly set,
  86.   then the environment variables are checked and a pointer to that data
  87.   is returned.
  88.   Following is a list of all predefined variables.
  89. ***************
  90. *** 2531,2537 ****
  91.   will ignore those headers even in the situations mentioned here.
  92.   No headers can be ignored during updates and when using the
  93.   .B save
  94. ! command since the user may ignore headers which are required by
  95.   .I Mush
  96.   or any other mail system to read those folders.
  97.   .sp
  98. --- 2569,2575 ----
  99.   will ignore those headers even in the situations mentioned here.
  100.   No headers can be ignored during updates and when using the
  101.   .B save
  102. ! command since the user may ignore headers that are required by
  103.   .I Mush
  104.   or any other mail system to read those folders.
  105.   .sp
  106. ***************
  107. *** 2559,2569 ****
  108.   .TP
  109.   .B autodelete
  110.   (Boolean)
  111. ! When exiting mail, all messages which have been read
  112.   .I "regardless of whether they have been marked for deletion"
  113.   are removed.
  114.   Only messages that haven't been read or marked as
  115. ! .BR preserved ,
  116.   are not removed.
  117.   .TP
  118.   .B autoedit
  119. --- 2597,2607 ----
  120.   .TP
  121.   .B autodelete
  122.   (Boolean)
  123. ! When exiting mail, all messages that have been read
  124.   .I "regardless of whether they have been marked for deletion"
  125.   are removed.
  126.   Only messages that haven't been read or marked as
  127. ! .BR preserved 
  128.   are not removed.
  129.   .TP
  130.   .B autoedit
  131. ***************
  132. *** 2584,2590 ****
  133.   .TP
  134.   .B auto_route
  135.   (Boolean)
  136. ! This variable has two functions, both of which only concern the command,
  137.   .BR replyall ,
  138.   and is only important to users who use UUCP to mail to remote sites.
  139.   The first function is to cause replyall to modify the return addresses
  140. --- 2622,2628 ----
  141.   .TP
  142.   .B auto_route
  143.   (Boolean)
  144. ! This variable has two functions, both of which only concern the command
  145.   .BR replyall ,
  146.   and is only important to users who use UUCP to mail to remote sites.
  147.   The first function is to cause replyall to modify the return addresses
  148. ***************
  149. *** 2594,2609 ****
  150.   destination.
  151.   If the original sender of the message was on a remote
  152.   machine which your machine does not exchange UUCP mail with, then a UUCP
  153. ! path containing hosts which you do talk to will have to be
  154.   created to respond to the author.
  155.   However, if he mailed to other people
  156. ! on machines which are also multi-hops away, the addresses he used for
  157.   those recipients may differ from what you should specify if you were to
  158.   try to reply to everyone on the listed in the original message.
  159.   .sp
  160. ! For example, if the original sender came from remote host,
  161.   .B pixar
  162. ! and the list of recipients looked like,
  163.   .sp
  164.   .nf
  165.   .in +2
  166. --- 2632,2647 ----
  167.   destination.
  168.   If the original sender of the message was on a remote
  169.   machine which your machine does not exchange UUCP mail with, then a UUCP
  170. ! path containing hosts that you do talk to will have to be
  171.   created to respond to the author.
  172.   However, if he mailed to other people
  173. ! on machines that are also multi-hops away, the addresses he used for
  174.   those recipients may differ from what you should specify if you were to
  175.   try to reply to everyone on the listed in the original message.
  176.   .sp
  177. ! For example, if the original sender came from remote host
  178.   .B pixar
  179. ! and the list of recipients looked like
  180.   .sp
  181.   .nf
  182.   .in +2
  183. ***************
  184. *** 2625,2631 ****
  185.   An attempt will be made to compensate by reconstructing the addresses
  186.   for \*Quser2\*U and \*Quser3\*U according to the address of the original
  187.   sender, \*Quser1\*U.
  188. ! The new addresses for \*Quser2\*U and \*Quser3\*U should therefore become,
  189.   .sp
  190.   .ti +2
  191.   pixar!r2d2!user2, pixar!r2d2!user3.
  192. --- 2663,2669 ----
  193.   An attempt will be made to compensate by reconstructing the addresses
  194.   for \*Quser2\*U and \*Quser3\*U according to the address of the original
  195.   sender, \*Quser1\*U.
  196. ! The new addresses for \*Quser2\*U and \*Quser3\*U should therefore become
  197.   .sp
  198.   .ti +2
  199.   pixar!r2d2!user2, pixar!r2d2!user3.
  200. ***************
  201. *** 2639,2645 ****
  202.   UUCP mail connections with.
  203.   This list is checked when constructing
  204.   mail addresses and the shortest path is made by removing from the
  205. ! UUCP path those hosts which do not need to be called.
  206.   See the entry for
  207.   .B known_hosts
  208.   for more information.
  209. --- 2677,2683 ----
  210.   UUCP mail connections with.
  211.   This list is checked when constructing
  212.   mail addresses and the shortest path is made by removing from the
  213. ! UUCP path those hosts that do not need to be called.
  214.   See the entry for
  215.   .B known_hosts
  216.   for more information.
  217. ***************
  218. *** 2676,2682 ****
  219.   .B autosign
  220.   (Boolean/string)
  221.   Append a signature to outgoing mail.
  222. ! If this variable is set, but not to a string (e.g., boolean-true),
  223.   then the file ~/.signature is used.
  224.   .sp
  225.   Otherwise, the variable is interpreted in one of three ways.
  226. --- 2714,2720 ----
  227.   .B autosign
  228.   (Boolean/string)
  229.   Append a signature to outgoing mail.
  230. ! If this variable is set, but not to a string (e.g., boolean-true)
  231.   then the file ~/.signature is used.
  232.   .sp
  233.   Otherwise, the variable is interpreted in one of three ways.
  234. ***************
  235. *** 2692,2698 ****
  236.   is interpreted as a user-definable variable and is expanded and appended
  237.   to the letter.
  238.   .sp
  239. ! Finally, if the variable is set to a string that begins with a backslash (\\),
  240.   then the string itself (minus the `\\' character) is used; no expansion
  241.   is done and no files are read.
  242.   .sp
  243. --- 2730,2736 ----
  244.   is interpreted as a user-definable variable and is expanded and appended
  245.   to the letter.
  246.   .sp
  247. ! Finally, if the variable is set to a string that begins with a backslash (\\)
  248.   then the string itself (minus the `\\' character) is used; no expansion
  249.   is done and no files are read.
  250.   .sp
  251. ***************
  252. *** 2699,2705 ****
  253.   In the latter two cases, it is advisable to set the variable using single
  254.   quotes to avoid expanding the variable beforehand or eliminating the
  255.   backslash.
  256. ! Examples,
  257.   .sp
  258.   .ti +2
  259.   set autosign = '$foo'
  260. --- 2737,2743 ----
  261.   In the latter two cases, it is advisable to set the variable using single
  262.   quotes to avoid expanding the variable beforehand or eliminating the
  263.   backslash.
  264. ! Examples:
  265.   .sp
  266.   .ti +2
  267.   set autosign = '$foo'
  268. ***************
  269. *** 2707,2713 ****
  270.   set autosign = '\\  Dan Heller island!argv@ucbcad.berkeley.edu'
  271.   .sp
  272.   Warning: if redirection from the calling shell is used, there will be
  273. ! no signature or forutne added to outgoing mail.  For example,
  274.   .sp
  275.   .ti +2
  276.   % mush -s report manager < report_file
  277. --- 2745,2751 ----
  278.   set autosign = '\\  Dan Heller island!argv@ucbcad.berkeley.edu'
  279.   .sp
  280.   Warning: if redirection from the calling shell is used, there will be
  281. ! no signature or fortune added to outgoing mail.  For example,
  282.   .sp
  283.   .ti +2
  284.   % mush -s report manager < report_file
  285. ***************
  286. *** 2720,2727 ****
  287.   .B autosign2
  288.   (String)
  289.   This alternate signature is available for special cases where the default
  290. ! signature is not desired or if no signture is desired for special addresses
  291. ! or if special addresses only require a signature.
  292.   The format for this variable is:
  293.   .sp
  294.   .ti +2
  295. --- 2758,2765 ----
  296.   .B autosign2
  297.   (String)
  298.   This alternate signature is available for special cases where the default
  299. ! signature is not desired or if no signature is desired for special addresses
  300. ! or if only special addresses require a signature.
  301.   The format for this variable is:
  302.   .sp
  303.   .ti +2
  304. ***************
  305. *** 2780,2786 ****
  306.   .TP
  307.   .B crt
  308.   (Numeric)
  309. ! Set to a value which describes the number of lines a message
  310.   must have before invoking the
  311.   .B pager
  312.   to view a message.
  313. --- 2818,2824 ----
  314.   .TP
  315.   .B crt
  316.   (Numeric)
  317. ! Set to a value that describes the number of lines a message
  318.   must have before invoking the
  319.   .B pager
  320.   to view a message.
  321. ***************
  322. *** 2792,2807 ****
  323.   string is automatically set upon startup of
  324.   .I Mush
  325.   and is reset each time the command
  326. ! .BR cd ,
  327.   is called.
  328.   It is referenced each time
  329.   .B pwd
  330.   is called and may be used as any other shell variable.
  331.   .TP
  332.   .B dead
  333.   (String)
  334.   File to use instead of dead.letter when interrupted mail is saved.
  335. ! For more information, see the variable,
  336.   .B nosave.
  337.   .TP
  338.   .B dot
  339. --- 2830,2857 ----
  340.   string is automatically set upon startup of
  341.   .I Mush
  342.   and is reset each time the command
  343. ! .BR cd 
  344.   is called.
  345.   It is referenced each time
  346.   .B pwd
  347.   is called and may be used as any other shell variable.
  348.   .TP
  349. + .B date_received
  350. + (Boolean)
  351. + When message headers are printed, the date is normally shown is
  352. + the time and date the sender sent the message.  If this variable
  353. + is set, then the date displayed is the date received.
  354. + .sp
  355. + When sorting messages by date, this variable is queried to determine
  356. + whether the messages should be sorted by date sent or date received.
  357. + .sp
  358. + \fBWarning:\fR For mailers that store messages \fIwithout\fR a line
  359. + that starts with \*QFrom \*U, this option does nothing.
  360. + .TP
  361.   .B dead
  362.   (String)
  363.   File to use instead of dead.letter when interrupted mail is saved.
  364. ! For more information, see the variable
  365.   .B nosave.
  366.   .TP
  367.   .B dot
  368. ***************
  369. *** 2818,2824 ****
  370.   (Character)
  371.   When typing in a letter (not in an editor), when the
  372.   .B escape
  373. ! character is the first character on the line, the following character
  374.   is examined and a corresponding function associated with that
  375.   .B "escape command"
  376.   is executed.
  377. --- 2868,2874 ----
  378.   (Character)
  379.   When typing in a letter (not in an editor), when the
  380.   .B escape
  381. ! character is the first character on the line, the next character
  382.   is examined and a corresponding function associated with that
  383.   .B "escape command"
  384.   is executed.
  385. ***************
  386. *** 2855,2869 ****
  387.   make sure that only a selected group of people get a fortune since
  388.   certain people may not understand the messages at the end of your
  389.   mail.  Therefore, you can set a list of addresses (either pure addresses
  390. ! or aliases which are expanded to addresses) to be the only people who
  391.   receive fortunes if one is to be appended.  Therefore,
  392.   if the To: and Cc: lines contain only address listed in this string
  393.   variable, then a fortune is appended to the message.
  394. ! If those lists contain names which are not on the fortunates
  395.   list, then no fortune is added.
  396.   This cannot be overriden; using the
  397.   tilde command \*Q~F\*U does not force a fortune to be added unless the
  398. ! list of individuals on the recipient list are all included in the fortunates
  399.   list.  The list is made up of addresses or aliases separated by spaces or
  400.   commas.
  401.   .I "NOTE: fortune must be set in order for fortunates to work."
  402. --- 2905,2919 ----
  403.   make sure that only a selected group of people get a fortune since
  404.   certain people may not understand the messages at the end of your
  405.   mail.  Therefore, you can set a list of addresses (either pure addresses
  406. ! or aliases that are expanded to addresses) to be the only people who
  407.   receive fortunes if one is to be appended.  Therefore,
  408.   if the To: and Cc: lines contain only address listed in this string
  409.   variable, then a fortune is appended to the message.
  410. ! If those lists contain names that are not on the fortunates
  411.   list, then no fortune is added.
  412.   This cannot be overriden; using the
  413.   tilde command \*Q~F\*U does not force a fortune to be added unless the
  414. ! individuals on the recipient list are all included in the fortunates
  415.   list.  The list is made up of addresses or aliases separated by spaces or
  416.   commas.
  417.   .I "NOTE: fortune must be set in order for fortunates to work."
  418. ***************
  419. *** 2915,2920 ****
  420. --- 2965,2977 ----
  421.   in which case the name and address are the same.
  422.   .sp
  423.   .TP
  424. + .B history
  425. + (Numeric)
  426. + This variable is set to the number of commands the shell interface
  427. + will remember.  It is just like the history variable used in
  428. + .I csh.
  429. + If unset, the last command can always be referenced, but none other.
  430. + .TP
  431.   .B hold
  432.   (Boolean)
  433.   Normally, on termination of mail, read messages are saved in
  434. ***************
  435. *** 2937,2942 ****
  436. --- 2994,3011 ----
  437.   If the home directory cannot be found or read/write access is denied, an
  438.   alternate directory, typically /tmp, is used.
  439.   .TP
  440. + .B hostname
  441. + (String)
  442. + This is the name of your computer.  Currently, its sole usage is to
  443. + compose a correct \*QFrom:\*U line for use with Mail Transport Agents
  444. + that do not create this header automatically.  This will aid the
  445. + recipients of your mail in replying to your messages.
  446. + .sp
  447. + Note: the user should not have to set
  448. + this variable since it should be set automatically by the system.  However,
  449. + it may happen that the system's hostname cannot be queried and the user may
  450. + have to set this variable manually.
  451. + .TP
  452.   .B ignore_bang
  453.   (Boolean)
  454.   If set,
  455. ***************
  456. *** 2955,2969 ****
  457.   .B reply
  458.   commands.
  459.   .TP
  460.   .B in_reply_to
  461.   (String)
  462. ! This variable may be set to a string which will complete the
  463.   header \*QIn-Reply-To:\*U.
  464.   The format of this string is identical to the options for the variable
  465.   .BR hdr_format .
  466.   .sp
  467.   For example, if the user were to respond to a message
  468. ! from Dan Heller that was sent on October 21, 1987 at 10:39pm, with
  469.   .B in_reply_to
  470.   set to the string
  471.   .in +2
  472. --- 3024,3049 ----
  473.   .B reply
  474.   commands.
  475.   .TP
  476. + .B indent_str
  477. + (String)
  478. + When including messages into the text of a letter you are editing,
  479. + each line of the messages is preceded by the value of
  480. + .BR indent_str .
  481. + If it is unset, the message body is indented by the string \*Q> \*U.
  482. + See also the variables
  483. + .B pre_indent_str
  484. + and
  485. + .BR post_indent_str .
  486. + .TP
  487.   .B in_reply_to
  488.   (String)
  489. ! This variable may be set to a string that will complete the
  490.   header \*QIn-Reply-To:\*U.
  491.   The format of this string is identical to the options for the variable
  492.   .BR hdr_format .
  493.   .sp
  494.   For example, if the user were to respond to a message
  495. ! from Dan Heller that was sent on October 21, 1987, at 10:39pm, with
  496.   .B in_reply_to
  497.   set to the string
  498.   .in +2
  499. ***************
  500. *** 2973,2994 ****
  501.   .ti -2
  502.   the header line
  503.   .sp
  504. ! In-Reply-To: Dan Heller's message as of Oct 21, 1987 10:39pm.
  505.   .in-2
  506.   .sp
  507.   would be added to the message.
  508.   .TP
  509. - .B indent_str
  510. - (String)
  511. - When including messages into the text of a letter you are editing,
  512. - each line of the messages is preceded by the value of
  513. - .BR indent_str .
  514. - If it is unset, the message body is indented by the string \*Q> \*U.
  515. - See also the variables
  516. - .B pre_indent_str
  517. - and
  518. - .BR post_indent_str .
  519. - .TP
  520.   .B keepsave
  521.   (Boolean)
  522.   If set, the commands
  523. --- 3053,3063 ----
  524.   .ti -2
  525.   the header line
  526.   .sp
  527. ! In-Reply-To: Dan Heller's message as of Oct 21, 1987, 10:39pm.
  528.   .in-2
  529.   .sp
  530.   would be added to the message.
  531.   .TP
  532.   .B keepsave
  533.   (Boolean)
  534.   If set, the commands
  535. ***************
  536. *** 3007,3016 ****
  537.   and/or commas, and describes
  538.   the hosts with whom you know your machine shares UUCP connections.
  539.   When replying to mail, many times you will see that the return path
  540. ! constructed will have hostnames which your site could call, but instead
  541.   the mail has been routed through a number of different machines first.
  542.   .sp
  543. ! For example, if you respond to mail which would mail to the path,
  544.   .sp
  545.   .ti +2
  546.   unicom!pixar!root
  547. --- 3076,3085 ----
  548.   and/or commas, and describes
  549.   the hosts with whom you know your machine shares UUCP connections.
  550.   When replying to mail, many times you will see that the return path
  551. ! constructed will have hostnames that your site could call, but instead
  552.   the mail has been routed through a number of different machines first.
  553.   .sp
  554. ! For example, if you respond to mail that would mail to the path
  555.   .sp
  556.   .ti +2
  557.   unicom!pixar!root
  558. ***************
  559. *** 3018,3024 ****
  560.   but your know your machine already calls pixar, then sending the mail
  561.   to unicom first is unnecessary.
  562.   If you have set your known_hosts string to include pixar in its list,
  563. ! the resulting address would look like,
  564.   .sp
  565.   .ti +2
  566.   pixar!root
  567. --- 3087,3093 ----
  568.   but your know your machine already calls pixar, then sending the mail
  569.   to unicom first is unnecessary.
  570.   If you have set your known_hosts string to include pixar in its list,
  571. ! the resulting address would look like
  572.   .sp
  573.   .ti +2
  574.   pixar!root
  575. ***************
  576. *** 3073,3079 ****
  577.   When no_expand is set, aliases are not expanded and the headers
  578.   reflect the same information as typed by the user.
  579.   .TP
  580. ! .B no_hdr
  581.   (Boolean)
  582.   If set, this variable tells 
  583.   .I Mush
  584. --- 3142,3148 ----
  585.   When no_expand is set, aliases are not expanded and the headers
  586.   reflect the same information as typed by the user.
  587.   .TP
  588. ! .B no_hdrs
  589.   (Boolean)
  590.   If set, this variable tells 
  591.   .I Mush
  592. ***************
  593. *** 3095,3103 ****
  594.   signals.
  595.   When the message is terminated, a copy of it is saved to the
  596.   file \*Qdead.letter\*U in the user's home directory or to the file described
  597. ! by the variable,
  598.   .BR dead .
  599. ! If the variable,
  600.   .B nosave
  601.   is set, then a backup copy of the message will not be saved.
  602.   .TP
  603. --- 3164,3172 ----
  604.   signals.
  605.   When the message is terminated, a copy of it is saved to the
  606.   file \*Qdead.letter\*U in the user's home directory or to the file described
  607. ! by the variable
  608.   .BR dead .
  609. ! If the variable
  610.   .B nosave
  611.   is set, then a backup copy of the message will not be saved.
  612.   .TP
  613. ***************
  614. *** 3133,3139 ****
  615.   as follows:
  616.   .sp
  617.   .ti +2
  618. ! set pre_indent_str = '[In the message entitled "%s", on %7d\n %n writes:]'
  619.   .sp
  620.   You can then include a message body using \*Q~i\*U, and you might
  621.   get something like this:
  622. --- 3202,3208 ----
  623.   as follows:
  624.   .sp
  625.   .ti +2
  626. ! set pre_indent_str = '[In the message entitled "%s", on %7d\\n %n writes:]'
  627.   .sp
  628.   You can then include a message body using \*Q~i\*U, and you might
  629.   get something like this:
  630. ***************
  631. *** 3215,3221 ****
  632.   .B prompt
  633.   (String)
  634.   You can set your prompt to tell you many different pieces of information.
  635. ! By default, the prompt is set to the string,
  636.   .sp
  637.   .ti +2
  638.   \*QMsg %m of %t: \*U
  639. --- 3284,3290 ----
  640.   .B prompt
  641.   (String)
  642.   You can set your prompt to tell you many different pieces of information.
  643. ! By default, the prompt is set to the string
  644.   .sp
  645.   .ti +2
  646.   \*QMsg %m of %t: \*U
  647. ***************
  648. *** 3238,3243 ****
  649. --- 3307,3313 ----
  650.   %D    today's day (Sun, Mon, Tue, ...)
  651.   %f    filename of the current folder
  652.   %m    \*Qcurrent message\*U number
  653. + %M    current month
  654.   %n    number of \*Qnew\*U messages
  655.   %N    today's date (Number of the day in the month)
  656.   %T    current time (hours and seconds)
  657. ***************
  658. *** 3255,3260 ****
  659. --- 3325,3343 ----
  660.   .I Mush
  661.   is not printed on startup.
  662.   .TP
  663. + .B realname
  664. + (String)
  665. + Set to the name of the user.  The name is initialized to the value of
  666. + the environment variable
  667. + .B NAME
  668. + upon invocation of the program.
  669. + If that isn't set, then the name is gotten from the password file if
  670. + available.  If this variable wants to be reset or changed after the
  671. + program has started, the user should issue the command:
  672. + .sp
  673. + .ti +2
  674. + set realname = "Your name here"
  675. + .TP
  676.   .B record
  677.   (String)
  678.   Set to the name of a file to record all outgoing mail.
  679. ***************
  680. *** 3277,3283 ****
  681.   given there is used.
  682.   If the variable
  683.   .B reply_to_hdr
  684. ! is set to a of headers (delimited by spaces or commas), then that list
  685.   is searched.
  686.   If none of the headers listed in the variable exist
  687.   in the message, then a warning message is printed and the default
  688. --- 3360,3366 ----
  689.   given there is used.
  690.   If the variable
  691.   .B reply_to_hdr
  692. ! is set to a list of headers (delimited by spaces or commas), then that list
  693.   is searched.
  694.   If none of the headers listed in the variable exist
  695.   in the message, then a warning message is printed and the default
  696. ***************
  697. *** 3286,3296 ****
  698.   .B reply
  699.   command for more details.
  700.   .TP
  701. ! .B sendmail
  702. ! (String)
  703. ! If set, the program and arguments described by this variable will
  704. ! be executed to actually deliver mail sent by
  705. ! .I Mush.
  706.   .TP
  707.   .B screen
  708.   (Numeric)
  709. --- 3369,3381 ----
  710.   .B reply
  711.   command for more details.
  712.   .TP
  713. ! .B save_empty
  714. ! (Boolean)
  715. ! Normally, when all messages in a folder are deleted and the user updates
  716. ! the folder or changes to a new folder, the empty folder is deleted.
  717. ! .B save_empty
  718. ! prevents the folder from being deleted and it is left zero length.
  719. ! Note: the main system mailbox is never deleted when empty anyway.
  720.   .TP
  721.   .B screen
  722.   (Numeric)
  723. ***************
  724. *** 3299,3308 ****
  725.   .TP
  726.   .B screen_win
  727.   (Numeric)
  728. ! Man be set to the number of message headers to display in the tool mode.
  729.   A subwindow is created for message headers, and its size is large
  730.   enough to hold $screen_win headers.
  731.   .TP
  732.   .B show_deleted
  733.   (Boolean)
  734.   If true, deleted message headers are displayed along with
  735. --- 3384,3399 ----
  736.   .TP
  737.   .B screen_win
  738.   (Numeric)
  739. ! May be set to the number of message headers to display in the tool mode.
  740.   A subwindow is created for message headers, and its size is large
  741.   enough to hold $screen_win headers.
  742.   .TP
  743. + .B sendmail
  744. + (String)
  745. + If set, the program and arguments described by this variable will
  746. + be executed to actually deliver mail sent by
  747. + .I Mush.
  748. + .TP
  749.   .B show_deleted
  750.   (Boolean)
  751.   If true, deleted message headers are displayed along with
  752. ***************
  753. *** 3312,3320 ****
  754.   .TP
  755.   .B show_hdrs
  756.   (String)
  757. ! Set to a list (space and/or comma separated) of headers which are to be the
  758.   only headers displayed when viewing a message.
  759. ! This variable disables the headers supressed by the
  760.   .B ignore
  761.   command.
  762.   For example,
  763. --- 3403,3411 ----
  764.   .TP
  765.   .B show_hdrs
  766.   (String)
  767. ! Set to a list (space and/or comma separated) of headers that are to be the
  768.   only headers displayed when viewing a message.
  769. ! This variable disables the headers suppressed by the
  770.   .B ignore
  771.   command.
  772.   For example,
  773. ***************
  774. *** 3322,3328 ****
  775.   .ti +2
  776.   set show_hdrs = "from date subject to cc"
  777.   .sp
  778. ! will only display the headers,
  779.   .B From: Date: Subject: To: Cc:
  780.   in their entirety.
  781.   .TP
  782. --- 3413,3419 ----
  783.   .ti +2
  784.   set show_hdrs = "from date subject to cc"
  785.   .sp
  786. ! will only display the headers
  787.   .B From: Date: Subject: To: Cc:
  788.   in their entirety.
  789.   .TP
  790. ***************
  791. *** 3342,3348 ****
  792.   .TP
  793.   .B tmpdir
  794.   (String)
  795. ! This variable describes the path to use as the directory to use
  796.   for all tempfiles that
  797.   .I Mush
  798.   uses.  By default, the user's home directory is used.  If that
  799. --- 3433,3439 ----
  800.   .TP
  801.   .B tmpdir
  802.   (String)
  803. ! This variable describes the path to use as the directory
  804.   for all tempfiles that
  805.   .I Mush
  806.   uses.  By default, the user's home directory is used.  If that
  807. ***************
  808. *** 3351,3363 ****
  809.   .TP
  810.   .B toplines
  811.   (Numeric)
  812. ! The number of lines of a message to print when the "top" command
  813. ! is issued.
  814. ! If unset, $crt lines are printed.
  815.   .TP
  816.   .B unix
  817.   (Boolean)
  818. ! If set, commands which are not
  819.   .I Mush
  820.   commands are considered to be
  821.   .I UNIX
  822. --- 3442,3457 ----
  823.   .TP
  824.   .B toplines
  825.   (Numeric)
  826. ! The number of lines of a message to print when the
  827. ! .B top
  828. ! command is issued.  If unset, $crt lines are printed.
  829. ! Note that the message body only is printed when using the
  830. ! .B top
  831. ! command; message headers are not counted as lines since they are not displayed.
  832.   .TP
  833.   .B unix
  834.   (Boolean)
  835. ! If set, commands that are not
  836.   .I Mush
  837.   commands are considered to be
  838.   .I UNIX
  839. ***************
  840. *** 3393,3399 ****
  841.   When through editing messages, just before sending,
  842.   .B verify
  843.   will ask you if you want to send, continue editing, or abort the
  844. ! whole message all together.
  845.   .TP
  846.   .B visual
  847.   (String)
  848. --- 3487,3493 ----
  849.   When through editing messages, just before sending,
  850.   .B verify
  851.   will ask you if you want to send, continue editing, or abort the
  852. ! whole message altogether.
  853.   .TP
  854.   .B visual
  855.   (String)
  856. ***************
  857. *** 3436,3442 ****
  858.   will be aware of changes in other environments should they be forced
  859.   to use them.
  860.   There may also be warning messages of failed routines
  861. ! or assertions which are not fatal enough to interrupt normal running
  862.   of the program.
  863.   .TP
  864.   .B wrap
  865. --- 3530,3536 ----
  866.   will be aware of changes in other environments should they be forced
  867.   to use them.
  868.   There may also be warning messages of failed routines
  869. ! or assertions that are not fatal enough to interrupt normal running
  870.   of the program.
  871.   .TP
  872.   .B wrap
  873. ***************
  874. *** 3452,3463 ****
  875.   .B next
  876.   command.
  877.   .SH "MAIL ADDRESSES"
  878. ! Whenever a command which requires a user address or set of addresses
  879.   is specified
  880.   .RB ( mail ,
  881.   .BR reply ,
  882.   .BR alias ,
  883. ! .BR etc ),
  884.   the addresses given must be separated by commas.
  885.   Most casual users specify addresses that contain no comments or whitespace.
  886.   The simplest addresses are just the login names of the users you wish to send
  887. --- 3546,3557 ----
  888.   .B next
  889.   command.
  890.   .SH "MAIL ADDRESSES"
  891. ! Whenever a command that requires a user address or set of addresses
  892.   is specified
  893.   .RB ( mail ,
  894.   .BR reply ,
  895.   .BR alias ,
  896. ! .BR etc )
  897.   the addresses given must be separated by commas.
  898.   Most casual users specify addresses that contain no comments or whitespace.
  899.   The simplest addresses are just the login names of the users you wish to send
  900. ***************
  901. *** 3565,3571 ****
  902.   .nf
  903.   .in +2
  904.   .ta 1.5i
  905. ! alias george    George Jetson <george@spacely.space.sprokets>
  906.   alias jane    Jane Jetson <jane@sky-high.appts>
  907.   alias group    george, jane
  908.   .in -2
  909. --- 3659,3665 ----
  910.   .nf
  911.   .in +2
  912.   .ta 1.5i
  913. ! alias george    George Jetson <george@spacely.space.sprockets>
  914.   alias jane    Jane Jetson <jane@sky-high.appts>
  915.   alias group    george, jane
  916.   .in -2
  917. ***************
  918. *** 3573,3579 ****
  919.   .sp
  920.   You can mail using the alias as an address and it will be expanded
  921.   accordingly.
  922. ! You can not, however, reference an alias and specify a
  923.   comment or another address at the same time.
  924.   .sp
  925.   .ti +2
  926. --- 3667,3673 ----
  927.   .sp
  928.   You can mail using the alias as an address and it will be expanded
  929.   accordingly.
  930. ! You cannot, however, reference an alias and specify a
  931.   comment or another address at the same time.
  932.   .sp
  933.   .ti +2
  934. ***************
  935. *** 3593,3599 ****
  936.   ~/.mushXXXXXX    Temporary mail file (copy of current folder)
  937.   .fi
  938.   .PP
  939. ! Temporary files which are created by the program are always
  940.   created with read/write access to the owner only; group and other
  941.   permissions are never set.
  942.   This is also true for the /usr/spool/mail/* files.
  943. --- 3687,3693 ----
  944.   ~/.mushXXXXXX    Temporary mail file (copy of current folder)
  945.   .fi
  946.   .PP
  947. ! Temporary files that are created by the program are always
  948.   created with read/write access to the owner only; group and other
  949.   permissions are never set.
  950.   This is also true for the /usr/spool/mail/* files.
  951. ***************
  952. *** 3634,3641 ****
  953.   argv@spam.istc.sri.com    sun!island!argv
  954.   .SH BUGS
  955.   The curses interface uses the curses library.
  956. ! The routines from the library that are used are the most basic and simple to
  957. ! avoid possible bugginess that different versions of UNIX might have.
  958.   However, one unavoidable problem is the reverse video mode.
  959.   Depending on your terminal,
  960.   the termcap entry for it, and the version of curses you are running,
  961. --- 3728,3735 ----
  962.   argv@spam.istc.sri.com    sun!island!argv
  963.   .SH BUGS
  964.   The curses interface uses the curses library.
  965. ! The routines from the library that are used are the most basic and simple
  966. ! so as to avoid possible bugginess that different versions of UNIX might have.
  967.   However, one unavoidable problem is the reverse video mode.
  968.   Depending on your terminal,
  969.   the termcap entry for it, and the version of curses you are running,
  970. ***************
  971. *** 3650,3656 ****
  972.   and there is no swap space left, there may be problems.
  973.   One such problem is sending mail.
  974.   If this happens, then sending mail
  975. ! will fail and a segmentation fault from the spawned forked child will occur
  976.   unless the -v flag was given to mail.
  977.   The unsent letter will not be removed from the editing file ($home/.edXXXXXX)
  978.   and may be recovered.
  979. --- 3744,3750 ----
  980.   and there is no swap space left, there may be problems.
  981.   One such problem is sending mail.
  982.   If this happens, then sending mail
  983. ! will fail and a segmentation fault from the spawned/forked child will occur
  984.   unless the -v flag was given to mail.
  985.   The unsent letter will not be removed from the editing file ($home/.edXXXXXX)
  986.   and may be recovered.
  987. ***************
  988. *** 3671,3677 ****
  989.   .I window
  990.   to run commands from.
  991.   It is impossible to determine whether or not the user wants to run an
  992. ! interactive program or not so it is best to disallow its usage all together.
  993.   The experienced window user
  994.   can figure out how to really do shell layers from within the tool mode.
  995.   .PP
  996. --- 3765,3771 ----
  997.   .I window
  998.   to run commands from.
  999.   It is impossible to determine whether or not the user wants to run an
  1000. ! interactive program or not, so it is best to disallow its usage all together.
  1001.   The experienced window user
  1002.   can figure out how to really do shell layers from within the tool mode.
  1003.   .PP
  1004. ***************
  1005. *** 3684,3691 ****
  1006.   The function keys and their ability to
  1007.   .I work
  1008.   has been variable depending on the version of SunWindows/SunView
  1009. ! your Sun Workstation has.
  1010. ! From time to time, it works, but when it
  1011.   doesn't, it seems to be related to other user or system definable
  1012.   dot-files or whatever.
  1013.   I hardly use them, so I haven't had a chance
  1014. --- 3778,3784 ----
  1015.   The function keys and their ability to
  1016.   .I work
  1017.   has been variable depending on the version of SunWindows/SunView
  1018. ! your Sun Workstation has.  From time to time, it works, but when it
  1019.   doesn't, it seems to be related to other user or system definable
  1020.   dot-files or whatever.
  1021.   I hardly use them, so I haven't had a chance
  1022. ***************
  1023. *** 3706,3717 ****
  1024.   .I Mush
  1025.   may complain or not even run since it needs temporary space with which
  1026.   to work.
  1027. ! Instead of finding new filesystems on it's own,
  1028.   .I Mush
  1029.   leaves this task up to the user.
  1030.   The workaround is to set the variable
  1031.   .B home
  1032. ! in the initialization file to be a writable place in a filesystem which
  1033.   has enough disk space.
  1034.   This will set the user's home directory to be
  1035.   set incorrectly, but resetting the home manually once in the shell
  1036. --- 3799,3810 ----
  1037.   .I Mush
  1038.   may complain or not even run since it needs temporary space with which
  1039.   to work.
  1040. ! Instead of finding new filesystems on its own,
  1041.   .I Mush
  1042.   leaves this task up to the user.
  1043.   The workaround is to set the variable
  1044.   .B home
  1045. ! in the initialization file to be a writable place in a filesystem that
  1046.   has enough disk space.
  1047.   This will set the user's home directory to be
  1048.   set incorrectly, but resetting the home manually once in the shell
  1049. *** OLD/mush.h    Thu May 12 21:14:46 1988
  1050. --- mush.h    Wed Jul  6 12:06:20 1988
  1051. ***************
  1052. *** 1,19 ****
  1053.   /* @(#)mush.h    (c) copyright 1986 (Dan Heller) */
  1054.   
  1055. ! #define VERSION "Mail User's Shell (6.2 5/11/88)"
  1056.   
  1057.   #include "config.h"
  1058.   
  1059.   #ifdef CURSES
  1060.   #ifdef USG
  1061.   #    define _USG
  1062.   #    undef USG
  1063.   #endif /* USG */
  1064.   #include <curses.h>
  1065.   #if !defined(USG) && defined(_USG)
  1066.   #    define USG
  1067. ! #    undef _USG
  1068. ! #endif /* USG && _USG */
  1069.   #else /* CURSES */
  1070.   #include <stdio.h>
  1071.   #if defined(SYSV) && defined(USG)
  1072. --- 1,27 ----
  1073.   /* @(#)mush.h    (c) copyright 1986 (Dan Heller) */
  1074.   
  1075. ! #define VERSION "Mail User's Shell (6.3 6/25/88)"
  1076.   
  1077.   #include "config.h"
  1078.   
  1079.   #ifdef CURSES
  1080.   #ifdef USG
  1081.   #    define _USG
  1082.   #    undef USG
  1083.   #endif /* USG */
  1084. + #ifdef SYSV
  1085. + #    define _SYSV
  1086. + #    undef SYSV
  1087. + #endif /* SYSV */
  1088.   #include <curses.h>
  1089.   #if !defined(USG) && defined(_USG)
  1090.   #    define USG
  1091. ! #endif /* USG */
  1092. ! #if !defined(SYSV) && defined(_SYSV)
  1093. ! #    define SYSV
  1094. ! #endif /* SYSV */
  1095.   #else /* CURSES */
  1096.   #include <stdio.h>
  1097.   #if defined(SYSV) && defined(USG)
  1098. ***************
  1099. *** 87,94 ****
  1100.    * on_intr() and off_intr() macros, initialize WAS_INTR to false.
  1101.    */
  1102.   #define on_intr() \
  1103. !     turnoff(glob_flags, WAS_INTR), oldint = signal(SIGINT, interrupt), \
  1104. !     oldquit = signal(SIGQUIT, interrupt)
  1105.   
  1106.   #define off_intr() \
  1107.       turnoff(glob_flags, WAS_INTR), (void) signal(SIGINT, oldint), \
  1108. --- 95,102 ----
  1109.    * on_intr() and off_intr() macros, initialize WAS_INTR to false.
  1110.    */
  1111.   #define on_intr() \
  1112. !     turnoff(glob_flags, WAS_INTR), oldint = signal(SIGINT, intr), \
  1113. !     oldquit = signal(SIGQUIT, intr)
  1114.   
  1115.   #define off_intr() \
  1116.       turnoff(glob_flags, WAS_INTR), (void) signal(SIGINT, oldint), \
  1117. ***************
  1118. *** 104,110 ****
  1119.   
  1120.   /* for system-V machines that run termio */
  1121.   #if defined(SYSV) && defined(USG)
  1122. ! unsigned char vmin;
  1123.   #define sg_erase  c_cc[2]
  1124.   #define sg_flags  c_lflag
  1125.   #define sg_kill   c_cc[3]
  1126. --- 112,118 ----
  1127.   
  1128.   /* for system-V machines that run termio */
  1129.   #if defined(SYSV) && defined(USG)
  1130. ! unsigned char vmin, vtime;
  1131.   #define sg_erase  c_cc[2]
  1132.   #define sg_flags  c_lflag
  1133.   #define sg_kill   c_cc[3]
  1134. ***************
  1135. *** 117,124 ****
  1136.   #define cbrkon()   \
  1137.       (_tty.sg_flags &= ~ICANON, _tty.c_cc[VMIN] = 1, stty(0, &_tty))
  1138.   #define cbrkoff()  \
  1139. !     (_tty.sg_flags |= ICANON, _tty.c_cc[VMIN] = vmin, stty(0, &_tty))
  1140. ! #define savetty()  (void) gtty(0, &_tty), vmin = _tty.c_cc[VMIN]
  1141.   #define cbreak()   cbrkon()
  1142.   #define nocbreak() cbrkoff()
  1143.   
  1144. --- 125,134 ----
  1145.   #define cbrkon()   \
  1146.       (_tty.sg_flags &= ~ICANON, _tty.c_cc[VMIN] = 1, stty(0, &_tty))
  1147.   #define cbrkoff()  \
  1148. !     (_tty.sg_flags |= ICANON, _tty.c_cc[VMIN] = vmin, \
  1149. !     _tty.c_cc[VTIME] = vtime, stty(0, &_tty))
  1150. ! #define savetty()  \
  1151. !     (void) gtty(0, &_tty), vtime = _tty.c_cc[VTIME], vmin = _tty.c_cc[VMIN]
  1152.   #define cbreak()   cbrkon()
  1153.   #define nocbreak() cbrkoff()
  1154.   
  1155. ***************
  1156. *** 296,301 ****
  1157. --- 306,312 ----
  1158.   #define CNTD_CMD   18   /* curses.c -- "...continue..." prompt in curses */
  1159.   #define IS_SENDING 19   /* was started to send mail, not to be run as a shell */
  1160.   #define MIL_TIME   20    /* if $mil_time is set, use 24hr military time fmt */
  1161. + #define DATE_RECV  21   /* if $date_received, show date received on msgs */
  1162.   
  1163.   #define VERBOSE        1       /* verbose flag for sendmail */
  1164.   #define INCLUDE        2       /* include msg in response */
  1165. ***************
  1166. *** 314,323 ****
  1167.   #define INDENT        13    /* indent included msg with string */
  1168.   #define NO_IGNORE    14    /* don't ignore headers */
  1169.   #define PRESERVE    15      /* preserve in mailbox unless deleted */
  1170. ! #define TOP        15    /* just print the top of msg (same as pre) */
  1171.   #define FORWARD        16    /* Forward messages into the message buffer */
  1172.   #define REPLIED        17    /* Messages that have been replied to */
  1173.   #define NEW_SUBJECT    18    /* new subject regardless of $ask (mail -s) */
  1174.   
  1175.   #define    MAXMSGS_BITS    MAXMSGS/sizeof(char)    /* number of bits for bitmap */
  1176.   
  1177. --- 325,335 ----
  1178.   #define INDENT        13    /* indent included msg with string */
  1179.   #define NO_IGNORE    14    /* don't ignore headers */
  1180.   #define PRESERVE    15      /* preserve in mailbox unless deleted */
  1181. ! #define M_TOP        15    /* just print the top of msg (same as pre) */
  1182.   #define FORWARD        16    /* Forward messages into the message buffer */
  1183.   #define REPLIED        17    /* Messages that have been replied to */
  1184.   #define NEW_SUBJECT    18    /* new subject regardless of $ask (mail -s) */
  1185. + #define SAVED        19    /* when message has been saved */
  1186.   
  1187.   #define    MAXMSGS_BITS    MAXMSGS/sizeof(char)    /* number of bits for bitmap */
  1188.   
  1189. ***************
  1190. *** 415,428 ****
  1191.       n_array[128],    /* array of message numbers in the header window */
  1192.       screen,        /* number of headers window can handle */
  1193.   
  1194. !     quit(), cleanup(), catch(), do_alias(), respond(), cd(), sh(), stop(),
  1195.       folder(), save_msg(), delete(), do_mail(), lpr(), alts(), set(), do_hdrs(),
  1196. !     rm_edfile(), pick(), save_opts(), preserve(), sort(), readmsg(),
  1197.       do_pick(), print_help(), folders(), question_mark(), do_from(), my_stty(),
  1198. !     do_version(), disp_hist(), source(), do_echo(), sigchldcatcher(), ls(),
  1199. !     nopenfiles(), Setenv(), Unsetenv(), Printenv(), bus_n_seg(), msg_flags(),
  1200. !     toggle_debug(), stop_start(), interrupt();
  1201.   
  1202.   long
  1203.       still_more,        /* there is still more message to display */
  1204.       spool_size,        /* size of sppol mail regardless of current folder */
  1205. --- 427,445 ----
  1206.       n_array[128],    /* array of message numbers in the header window */
  1207.       screen,        /* number of headers window can handle */
  1208.   
  1209. !     quit(), do_alias(), respond(), cd(), sh(), stop(),
  1210.       folder(), save_msg(), delete(), do_mail(), lpr(), alts(), set(), do_hdrs(),
  1211. !     pick(), save_opts(), preserve(), sort(), readmsg(),
  1212.       do_pick(), print_help(), folders(), question_mark(), do_from(), my_stty(),
  1213. !     do_version(), disp_hist(), source(), do_echo(), ls(),
  1214. !     nopenfiles(), Setenv(), Unsetenv(), Printenv(), msg_flags(), toggle_debug();
  1215.   
  1216. + #ifndef SIGRET
  1217. + #define SIGRET int
  1218. + #endif /* SIGRET */
  1219. + SIGRET
  1220. +     rm_edfile(), stop_start(), bus_n_seg(), sigchldcatcher(), catch(), intr();
  1221.   long
  1222.       still_more,        /* there is still more message to display */
  1223.       spool_size,        /* size of sppol mail regardless of current folder */
  1224. ***************
  1225. *** 430,437 ****
  1226.       time();        /* satisfy lint */
  1227.   
  1228.   void
  1229. !     xfree(), free_vec(), error(), getmail(), mail_status(),
  1230. !     file_to_fp(), init(), display_msg();
  1231.       /* printf(), fclose(), fflush(), fputs(), fputc() */
  1232.   #ifdef TIOCGLTC
  1233.   struct ltchars ltchars;            /* tty character settings */
  1234. --- 447,454 ----
  1235.       time();        /* satisfy lint */
  1236.   
  1237.   void
  1238. !     xfree(), free_vec(), error(), getmail(), mail_status(), close_lock(),
  1239. !     file_to_fp(), init(), display_msg(), putstring(), cleanup(), fs_error();
  1240.       /* printf(), fclose(), fflush(), fputs(), fputc() */
  1241.   #ifdef TIOCGLTC
  1242.   struct ltchars ltchars;            /* tty character settings */
  1243. *** OLD/pick.c    Thu May 12 21:14:48 1988
  1244. --- pick.c    Tue Jun 28 21:38:28 1988
  1245. ***************
  1246. *** 38,43 ****
  1247. --- 38,44 ----
  1248.   register char **argv, list[];
  1249.   {
  1250.       register char c;
  1251. +     char pattern[256];
  1252.       int o_before = before, o_after = after, o_search_from = search_from,
  1253.       o_search_subj = search_subj, o_search_to = search_to, o_xflg = xflg,
  1254.       o_mdy[3], n;
  1255. ***************
  1256. *** 113,123 ****
  1257.           clear_msg_list(list);
  1258.           return -1;
  1259.       }
  1260.       if (verbose) {
  1261.       print_more("Searching for messages");
  1262.       if (mdy[1] == 0) {
  1263.           print(" that %s \"%s\"", (xflg)? "doesn't contain": "contains",
  1264. !                 (*argv)? *argv: "<previous expression>");
  1265.           if (search_subj)
  1266.           print_more(" in subject line");
  1267.           else if (search_from)
  1268. --- 114,126 ----
  1269.           clear_msg_list(list);
  1270.           return -1;
  1271.       }
  1272. +     pattern[0] = 0;
  1273. +     (void) argv_to_string(pattern, argv);
  1274.       if (verbose) {
  1275.       print_more("Searching for messages");
  1276.       if (mdy[1] == 0) {
  1277.           print(" that %s \"%s\"", (xflg)? "doesn't contain": "contains",
  1278. !                 (*pattern)? pattern: "<previous expression>");
  1279.           if (search_subj)
  1280.           print_more(" in subject line");
  1281.           else if (search_from)
  1282. ***************
  1283. *** 138,144 ****
  1284.       }
  1285.       if (mdy[1] > 0 && icase)
  1286.       print("using date: -i flag ignored.\n");
  1287. !     ret = find_pattern(*argv, list);
  1288.   bad:
  1289.       before = o_before, after = o_after, search_from = o_search_from;
  1290.       search_subj = o_search_subj, search_to = o_search_to, xflg = o_xflg;
  1291. --- 141,147 ----
  1292.       }
  1293.       if (mdy[1] > 0 && icase)
  1294.       print("using date: -i flag ignored.\n");
  1295. !     ret = find_pattern(pattern, list);
  1296.   bad:
  1297.       before = o_before, after = o_after, search_from = o_search_from;
  1298.       search_subj = o_search_subj, search_to = o_search_to, xflg = o_xflg;
  1299. ***************
  1300. *** 302,308 ****
  1301.       char           pattern[128];
  1302.       register int    this_msg = current_msg, val = 0;
  1303.       static char     *err = (char *)-1, direction;
  1304. !     int            (*oldint)(), (*oldquit)();
  1305.   #ifdef REGCMP
  1306.       char *regcmp();
  1307.   #else /* REGCMP */
  1308. --- 305,311 ----
  1309.       char           pattern[128];
  1310.       register int    this_msg = current_msg, val = 0;
  1311.       static char     *err = (char *)-1, direction;
  1312. !     SIGRET        (*oldint)(), (*oldquit)();
  1313.   #ifdef REGCMP
  1314.       char *regcmp();
  1315.   #else /* REGCMP */
  1316. *** OLD/setopts.c    Thu Apr  7 22:47:56 1988
  1317. --- setopts.c    Tue Jun 28 21:38:29 1988
  1318. ***************
  1319. *** 66,71 ****
  1320. --- 66,75 ----
  1321.           prompt = (tmp->value)? tmp->value : DEF_PROMPT;
  1322.       else if (!strcmp(tmp->option, "mil_time"))
  1323.           turnon(glob_flags, MIL_TIME);
  1324. + #ifndef MSG_SEPARATOR
  1325. +     else if (!strcmp(tmp->option, "date_received"))
  1326. +         turnon(glob_flags, DATE_RECV);
  1327. + #endif /* MSG_SEPARATOR */
  1328.       else if (!strcmp(tmp->option, "escape"))
  1329.           escape = (tmp->value)? tmp->value : DEF_ESCAPE;
  1330.       else if (!strcmp(tmp->option, "hdr_format"))
  1331. ***************
  1332. *** 189,194 ****
  1333. --- 193,202 ----
  1334.           prompt = DEF_PROMPT;
  1335.       else if (!strcmp(p, "mil_time"))
  1336.           turnoff(glob_flags, MIL_TIME);
  1337. + #ifndef MSG_SEPARATOR
  1338. +     else if (!strcmp(p, "date_received"))
  1339. +         turnoff(glob_flags, DATE_RECV);
  1340. + #endif /* MSG_SEPARATOR */
  1341.       else if (!strcmp(p, "escape"))
  1342.           escape = DEF_ESCAPE;
  1343.       else if (!strcmp(p, "hdr_format"))
  1344. *** OLD/signals.c    Fri Jun 10 12:38:25 1988
  1345. --- signals.c    Tue Jul  5 12:08:37 1988
  1346. ***************
  1347. *** 90,96 ****
  1348.   }
  1349.   #endif /* SUNTOOL */
  1350.   
  1351. ! interrupt(sig)
  1352.   {
  1353.       Debug("interrupt() caught: %d\n", sig);
  1354.       turnon(glob_flags, WAS_INTR);
  1355. --- 90,97 ----
  1356.   }
  1357.   #endif /* SUNTOOL */
  1358.   
  1359. ! SIGRET
  1360. ! intr(sig)
  1361.   {
  1362.       Debug("interrupt() caught: %d\n", sig);
  1363.       turnon(glob_flags, WAS_INTR);
  1364. ***************
  1365. *** 101,106 ****
  1366. --- 102,108 ----
  1367.    * If signals are ignored, return.  If we're running the shell, longjmp back.
  1368.    */
  1369.   /*ARGSUSED*/
  1370. + SIGRET
  1371.   catch(sig)
  1372.   {
  1373.       Debug("Caught signal: %d\n", sig);
  1374. ***************
  1375. *** 125,130 ****
  1376. --- 127,133 ----
  1377.   }
  1378.   
  1379.   #ifdef SIGCONT
  1380. + SIGRET
  1381.   stop_start(sig)
  1382.   {
  1383.       extern FILE *ed_fp;
  1384. ***************
  1385. *** 194,199 ****
  1386. --- 197,203 ----
  1387.   #endif /* SIGCONT */
  1388.   
  1389.   /*ARGSUSED*/
  1390. + void
  1391.   cleanup(sig)
  1392.   {
  1393.       char buf[128], c = ison(glob_flags, IGN_SIGS)? 'n' : 'y';
  1394. ***************
  1395. *** 215,224 ****
  1396.       }
  1397.       if (c != 'n' && *tempfile && unlink(tempfile) && !sig && errno != ENOENT)
  1398.       error(tempfile);
  1399. - #ifdef SUNTOOL
  1400. -     if (istool && tool)
  1401. -     tool_destroy(tool);
  1402. - #endif /* SUNTOOL */
  1403.       if (sig == SIGSEGV || sig == SIGBUS) {
  1404.       if (isoff(glob_flags, IGN_SIGS)) {
  1405.           fprintf(stderr, "coredump [n]? "), fflush(stderr);
  1406. --- 219,224 ----
  1407. ***************
  1408. *** 320,325 ****
  1409. --- 320,326 ----
  1410.   }
  1411.   
  1412.   /*ARGSUSED*/   /* we ignore the sigstack, cpu-usage, etc... */
  1413. + SIGRET
  1414.   bus_n_seg(sig)
  1415.   {
  1416.       fprintf(stderr, "%s: %s\n", prog_name,
  1417. *** OLD/sort.c    Fri Feb 19 20:30:57 1988
  1418. --- sort.c    Tue Jun 28 21:38:31 1988
  1419. ***************
  1420. *** 11,17 ****
  1421.   register char *argv[], list[];
  1422.   {
  1423.       int status_cmp(), author_cmp(), date_cmp(), subject_cmp(), subj_with_re();
  1424. !     int (*oldint)(), (*oldquit)();
  1425.       int (*how)() = status_cmp;
  1426.       int n, offset = -1, range = 0;
  1427.   
  1428. --- 11,17 ----
  1429.   register char *argv[], list[];
  1430.   {
  1431.       int status_cmp(), author_cmp(), date_cmp(), subject_cmp(), subj_with_re();
  1432. !     SIGRET (*oldint)(), (*oldquit)();
  1433.       int (*how)() = status_cmp;
  1434.       int n, offset = -1, range = 0;
  1435.   
  1436. ***************
  1437. *** 35,40 ****
  1438. --- 35,41 ----
  1439.       print("Not enough messages to sort.\n");
  1440.       return -1;
  1441.       }
  1442. +     turnon(glob_flags, IGN_SIGS);
  1443.       on_intr();
  1444.   
  1445.       if (list && ison(glob_flags, IS_PIPE)) {
  1446. ***************
  1447. *** 59,64 ****
  1448. --- 60,66 ----
  1449.           print("WARNING: Sorting interrupted: unpredictable order.\n");
  1450.       turnon(glob_flags, DO_UPDATE);
  1451.       }
  1452. +     turnoff(glob_flags, IGN_SIGS);
  1453.       off_intr();
  1454.       return -1;
  1455.   }
  1456. ***************
  1457. *** 115,120 ****
  1458. --- 117,126 ----
  1459.       if (ison(msg1->m_flags,REPLIED) && isoff(msg2->m_flags,REPLIED))
  1460.       return -order;
  1461.       if (isoff(msg1->m_flags,REPLIED) && ison(msg2->m_flags,REPLIED))
  1462. +     return order;
  1463. +     if (ison(msg1->m_flags,SAVED) && isoff(msg2->m_flags,SAVED))
  1464. +     return -order;
  1465. +     if (isoff(msg1->m_flags,SAVED) && ison(msg2->m_flags,SAVED))
  1466.       return order;
  1467.   
  1468.       return order;
  1469. *** OLD/strings.c    Thu May 12 21:14:49 1988
  1470. --- strings.c    Tue Jun 28 21:38:31 1988
  1471. ***************
  1472. *** 221,235 ****
  1473.   #ifdef SYSV
  1474.   #include <varargs.h>
  1475.   char *
  1476. ! Sprintf(buf, fmt, va_alist)
  1477. ! register char *buf, *fmt;
  1478.   va_dcl
  1479.   {
  1480.       va_list ap;
  1481. ! #ifdef VPRINTF
  1482.       va_start(ap);
  1483.       (void) vsprintf(buf, fmt, ap);
  1484. -     va_end(ap);
  1485.   #else
  1486.       {
  1487.       FILE foo;
  1488. --- 221,237 ----
  1489.   #ifdef SYSV
  1490.   #include <varargs.h>
  1491.   char *
  1492. ! Sprintf(va_alist)
  1493.   va_dcl
  1494.   {
  1495. +     char *buf, *fmt;
  1496.       va_list ap;
  1497.       va_start(ap);
  1498. +     buf = va_arg(ap, char *);
  1499. +     fmt = va_arg(ap, char *);
  1500. + #ifdef VPRINTF
  1501.       (void) vsprintf(buf, fmt, ap);
  1502.   #else
  1503.       {
  1504.       FILE foo;
  1505. ***************
  1506. *** 236,247 ****
  1507.       foo._cnt = BUFSIZ;
  1508.       foo._base = foo._ptr = buf; /* may have to be cast (unsigned char *) */
  1509.       foo._flag = _IOWRT+_IOSTRG;
  1510. -     va_start(ap);
  1511.       (void) _doprnt(fmt, ap, &foo);
  1512. -     va_end(ap);
  1513.       *foo._ptr = '\0'; /* plant terminating null character */
  1514.       }
  1515.   #endif /* VPRINTF */
  1516.       return buf;
  1517.   }
  1518.   #endif /* SYSV */
  1519. --- 238,248 ----
  1520.       foo._cnt = BUFSIZ;
  1521.       foo._base = foo._ptr = buf; /* may have to be cast (unsigned char *) */
  1522.       foo._flag = _IOWRT+_IOSTRG;
  1523.       (void) _doprnt(fmt, ap, &foo);
  1524.       *foo._ptr = '\0'; /* plant terminating null character */
  1525.       }
  1526.   #endif /* VPRINTF */
  1527. +     va_end(ap);
  1528.       return buf;
  1529.   }
  1530.   #endif /* SYSV */
  1531. ***************
  1532. *** 259,262 ****
  1533. --- 260,285 ----
  1534.       fflush(stdout);
  1535.       } else
  1536.       wprint("\n");
  1537. + }
  1538. + /*
  1539. +  * putstring -- put a string into a file.  Expand \t's into tabs and \n's
  1540. +  * into newlines.  Append a \n and fflush(fp);
  1541. +  */
  1542. + void
  1543. + putstring(p, fp)
  1544. + register char *p;
  1545. + register FILE *fp;
  1546. + {
  1547. +     for ( ; *p; ++p)
  1548. +     if (*p != '\\')
  1549. +         fputc(*p, fp);
  1550. +     else
  1551. +         switch(*++p) {
  1552. +         case 'n': fputc('\n', fp);
  1553. +         when 't': fputc('\t', fp);
  1554. +         otherwise: fputc(*p, fp);
  1555. +         }
  1556. +     fputc('\n', fp);
  1557. +     fflush(fp);
  1558.   }
  1559. *** OLD/viewopts.c    Thu May 12 21:14:50 1988
  1560. --- viewopts.c    Tue Jun 28 21:38:32 1988
  1561. ***************
  1562. *** 45,50 ****
  1563. --- 45,52 ----
  1564.         "Path to search for directories when the \"cd\" command is issued." },
  1565.       { "crt", "Lines", TEXT,
  1566.         "The number of lines a message must have for 'pager' to be invoked." },
  1567. +     { "date_received", NULL, TOOL | TEXT,
  1568. +       "Time displayed for message headers shows date received (or sent)." },
  1569.       { "dead", "Filename", TOOL | TEXT,
  1570.         "The name of the file to store dead mail. ~/dead.letter by default." },
  1571.       { "dot", NULL, TOOL | TEXT,
  1572. ***************
  1573. *** 65,70 ****
  1574. --- 67,76 ----
  1575.         "How many commands to remember (like csh)." },
  1576.       { "hold", NULL, TOOL | TEXT,
  1577.         "Read but not deleted messages are saved in spool -- not mbox." },
  1578. +     { "home", "Directory", TOOL | TEXT,
  1579. +       "The user's home directory." },
  1580. +     { "hostname", "Hostname", TOOL | TEXT,
  1581. +       "user definable name for the name of your machine." },
  1582.       { "ignore_bang", NULL, TEXT,
  1583.         "Ignore '!' as a history reference. Otherwise, escape by: \\!" },
  1584.       { "ignoreeof", "-Command", TEXT,
  1585. ***************
  1586. *** 89,95 ****
  1587.         "Ignore RETURN. If set to a string, execute \"command\"" },
  1588.       { "no_expand", NULL, TEXT | TOOL,
  1589.         "Prevents expansion of Mush aliases in outgoing mail." },
  1590. !     { "no_hdr", NULL, TOOL | TEXT,
  1591.         "If set, personalized headers are NOT inserted to outgoing mail." },
  1592.       { "no_reverse", NULL, TOOL | TEXT,
  1593.         "disables reverse video in curses mode -- uses \"bold\" in tool mode." },
  1594. --- 95,101 ----
  1595.         "Ignore RETURN. If set to a string, execute \"command\"" },
  1596.       { "no_expand", NULL, TEXT | TOOL,
  1597.         "Prevents expansion of Mush aliases in outgoing mail." },
  1598. !     { "no_hdrs", NULL, TOOL | TEXT,
  1599.         "If set, personalized headers are NOT inserted to outgoing mail." },
  1600.       { "no_reverse", NULL, TOOL | TEXT,
  1601.         "disables reverse video in curses mode -- uses \"bold\" in tool mode." },
  1602. ***************
  1603. *** 109,118 ****
  1604.         "Your prompt.  \"help prompt\" for more information." },
  1605.       { "quiet", NULL, TEXT,
  1606.         "Don't print the version number of Mush on startup." },
  1607.       { "record", "Filename", TOOL | TEXT,
  1608.         "Save all outgoing mail in specified filename" },
  1609.       { "reply_to_hdr", "Headers", TOOL | TEXT,
  1610. !       "List of headers use to construct reply adresses from a message.", },
  1611.       { "screen", "Number of Headers", TEXT,
  1612.         "Number of headers to print in non-suntools (text) mode" },
  1613.       { "screen_win", "Number of Headers", TOOL,
  1614. --- 115,128 ----
  1615.         "Your prompt.  \"help prompt\" for more information." },
  1616.       { "quiet", NULL, TEXT,
  1617.         "Don't print the version number of Mush on startup." },
  1618. +     { "realname", "Name:", TOOL | TEXT,
  1619. +       "Your real name." },
  1620.       { "record", "Filename", TOOL | TEXT,
  1621.         "Save all outgoing mail in specified filename" },
  1622.       { "reply_to_hdr", "Headers", TOOL | TEXT,
  1623. !       "List of headers use to construct reply adresses from a message." },
  1624. !     { "save_empty", NULL, TOOL | TEXT,
  1625. !       "Folders which have all messages deleted are NOT removed on updates." },
  1626.       { "screen", "Number of Headers", TEXT,
  1627.         "Number of headers to print in non-suntools (text) mode" },
  1628.       { "screen_win", "Number of Headers", TOOL,
  1629. ***************
  1630. *** 127,133 ****
  1631.         "Pre-sorting of messages on program startup (set to valid sort option)" },
  1632.       { "squeeze", NULL, TOOL | TEXT,
  1633.         "When reading messages, squeeze all blank lines into one." },
  1634. !     { "top", "Lines", TOOL | TEXT,
  1635.         "Number of lines to print of a message for the 'top' command."  },
  1636.       { "tmpdir", "Directory", TOOL | TEXT,
  1637.         "Directory to use for temporary files used by Mush." },
  1638. --- 137,143 ----
  1639.         "Pre-sorting of messages on program startup (set to valid sort option)" },
  1640.       { "squeeze", NULL, TOOL | TEXT,
  1641.         "When reading messages, squeeze all blank lines into one." },
  1642. !     { "toplines", "Lines", TOOL | TEXT,
  1643.         "Number of lines to print of a message for the 'top' command."  },
  1644.       { "tmpdir", "Directory", TOOL | TEXT,
  1645.         "Directory to use for temporary files used by Mush." },
  1646.