home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume18 / mush / part16 < prev    next >
Internet Message Format  |  1991-04-22  |  52KB

  1. From: argv@zipcode.com (Dan Heller)
  2. Newsgroups: comp.sources.misc
  3. Subject: v18i073:  mush - Mail User's Shell, Part16/22
  4. Message-ID: <1991Apr22.000521.19086@sparky.IMD.Sterling.COM>
  5. Date: 22 Apr 91 00:05:21 GMT
  6. Approved: kent@sparky.imd.sterling.com
  7. X-Checksum-Snefru: 6488f77c 9fcf7584 724aa23c 68e02c50
  8.  
  9. Submitted-by: Dan Heller <argv@zipcode.com>
  10. Posting-number: Volume 18, Issue 73
  11. Archive-name: mush/part16
  12. Supersedes: mush: Volume 12, Issue 28-47
  13.  
  14. #!/bin/sh
  15. # do not concatenate these parts, unpack them in order with /bin/sh
  16. # file mush.1 continued
  17. #
  18. if test ! -r _shar_seq_.tmp; then
  19.     echo 'Please unpack part 1 first!'
  20.     exit 1
  21. fi
  22. (read Scheck
  23.  if test "$Scheck" != 16; then
  24.     echo Please unpack part "$Scheck" next!
  25.     exit 1
  26.  else
  27.     exit 0
  28.  fi
  29. ) < _shar_seq_.tmp || exit 1
  30. if test ! -f _shar_wnt_.tmp; then
  31.     echo 'x - still skipping mush.1'
  32. else
  33. echo 'x - continuing file mush.1'
  34. sed 's/^X//' << 'SHAR_EOF' >> 'mush.1' &&
  35. It should not normally be needed, but is provided to allow users, through
  36. the
  37. .B cmd
  38. facility, to alter the ways that certain conditions are recorded.
  39. Multiple flag bits may be set or modified at once.
  40. The modifiable flag bits are:
  41. .sp
  42. .nf
  43. .ta 2i
  44. .in +4
  45. D    deleted
  46. f    forwarded
  47. N    new
  48. O    old
  49. P    preserved
  50. p    printed
  51. R    read
  52. r    replied-to
  53. S    saved
  54. U    unread
  55. .in -4
  56. .fi
  57. .sp
  58. If a `+' or `\-' is included in the list of bits, the specified bits are
  59. turned on or off respectively, without modifying other bits.
  60. If no `+' or `\-' is given, then the list of bits is set explicitly and
  61. all other bits are lost.
  62. The `\-' modifier can be escaped with a backslash (i.e., \*Q\\\-\*U) to
  63. prevent its interpretation as part of a message range, or it may be given
  64. \fIafter\fR the list of bits for the same reason.
  65. .sp
  66. Message lists can be piped to the
  67. .B flags
  68. command; for example, you may use
  69. .sp
  70. .nf
  71. .ti +4
  72. cmd r 'flags \\!* + r | reply'
  73. .fi
  74. .sp
  75. to mark as
  76. .I replied-to
  77. all messages included in a reply.
  78. .TP
  79. .BR folder " [\-N] [-n] [\-r] [ %[user] | # | & | file ]"
  80. .RB ( fo )
  81. Change current folder.
  82. With no arguments, prints the name of the current folder.
  83. The arguments are:
  84. .nf
  85. .ta 1i
  86. .in +2
  87. \-N    No headers are displayed upon entering new folder
  88. \-n    The current folder is not updated
  89. \-r    Set Read-Only mode (can't alter new folder)
  90. %[user]    Change to /usr/spool/mail/[user] (default is yours)
  91. #    Switch back to the previous folder
  92. &    Change folder to $mbox (default is ~/mbox)
  93. .in -2
  94. .fi
  95. .sp
  96. File names that do not begin with `/' are interpreted relative to the current
  97. directory unless they begin with one of the metacharacters `+' or `~'.
  98. As in
  99. .IR csh ,
  100. the character `~' expands to the user's home directory (or to some other
  101. user's home directory if used as \*Q~username\*U).
  102. The character `+' is expanded to the name of the user's
  103. .I folder
  104. directory (defaults to \*Q~/Mail\*U or the value of the variable
  105. .BR folder ).
  106. For compatibility with other mailers, no `/' character needs to appear
  107. between the `+' and the name of the folder (see \*QFilename metacharacters\*U
  108. in the LINE-MODE INTERFACE section).
  109. .sp
  110. This command can only appear in a pipeline if it is the first command;
  111. it returns a list of all the messages in the new folder.
  112. This command cannot be used in initialization files before the shell
  113. has started.
  114. .sp
  115. For compatibility with older versions, the argument `!' with
  116. no leading `\-' is interpreted as \-n.
  117. .TP
  118. .B folders
  119. List the names of the folders in your folder directory.
  120. Your folder directory is the directory
  121. .I Mail
  122. in your home directory.
  123. Or, you can set the variable
  124. .B folder
  125. to specify another folder directory.
  126. .br
  127. .TP
  128. .BR from " [ + | \- ] [msg-list] [pattern]"
  129. .RB ( f )
  130. With no arguments,
  131. .B from
  132. prints the current message's header summary (see the variable
  133. .BR hdr_format ).
  134. If given a pattern,
  135. .B from
  136. prints the headers of those messages whose \*QFrom:\ \*U lines
  137. match the pattern.
  138. When a message list precedes the pattern, or when a message list is
  139. supplied by a pipeline, the search is restricted to that list.
  140. If only a message list is given (or piped),
  141. .B from
  142. prints the headers of the listed messages.
  143. .sp
  144. The special arguments `\-' and `+' can be given to move the
  145. current message pointer to the previous or next message,
  146. respectively, while also printing that message's header.
  147. If a message list was given in addition to `\-' or `+', then
  148. the current message pointer is set to the first or last
  149. message, respectively, in the message list given.
  150. Examples:
  151. .sp
  152. .ti +2
  153. from + Dan
  154. .sp
  155. prints the headers of all messages that contain \*QDan\*U in
  156. in the author's name and set the current message pointer to
  157. the last one of that kind in the list.
  158. .sp
  159. .ti +2
  160. from \- 10-30 {16}
  161. .sp
  162. prints the headers of messages 10 through 30 except for
  163. message 16 and set the current message pointer to 10.
  164. .sp
  165. .ti +2
  166. from +
  167. .sp
  168. prints the header of the message after the current message
  169. and increments the current message pointer to the next message.
  170. .sp
  171. .ti +2
  172. from $
  173. .sp
  174. prints the last message's header but does not move the current
  175. message pointer.
  176. .TP
  177. .BR headers " [ [\-H][:c] ] [ + | \- ]"
  178. .RB ( h ,
  179. .BR z )
  180. Prints a screenful of message headers listed in the
  181. current folder.
  182. If a message number is given on the command line,
  183. the first message of the screenful of messages is
  184. that message number.
  185. The `z' command is identical to the \*Qh +\*U
  186. command and remains for compatibility reasons.
  187. The variable
  188. .B screen
  189. may be set to tell how many headers are in a screenful.
  190. In the graphics tool mode, the variable
  191. .B screen_win
  192. contains the number of headers used in the headers subwindow.
  193. .sp
  194. A typical header may look like:
  195. .sp
  196. .ti +2
  197. \&>  5  N  argv@spam.istc.sri.com Feb 19, (10/278) Test
  198. .sp
  199. This line indicates that it is message number 5 and the `>'
  200. indicates that the \*Qcurrent message pointer\*U is pointing to this
  201. message.
  202. The next two positions indicate the message status.
  203. The first
  204. may be one of, \*QN\*U (new and unread), \*QU\*U (old, but still
  205. unread), \*Q*\*U (deleted), \*QS\*U (saved), \*QP\*U (preserved),
  206. or \*Q \*U (read).
  207. The second position may have an \*Qr\*U if the message
  208. has been replied to, an \*Qf\*U if it has been forwarded,
  209. or a \*Qp\*U if it has been printed.
  210. .sp
  211. The author of the example message header is
  212. .IR argv@spam.istc.sri.com ,
  213. the date is
  214. .IR "Feb 19" ,
  215. the number of lines in the message is
  216. .IR 10 ,
  217. the number of characters is
  218. .I 278
  219. and the subject of the message is
  220. .IR Test .
  221. The format of the message header shown here is described by
  222. the string variable
  223. .BR hdr_format .
  224. The example given above has a hdr_format of
  225. .sp
  226. .ti +2
  227. set hdr_format = "%25f %7d (%l/%c) %25s"
  228. .sp
  229. See the description of
  230. .B hdr_format
  231. in the VARIABLES section for more information on header formats.
  232. .sp
  233. You can print a special subset of message headers by using the
  234. .I \-H:c
  235. option, where `c' is one of:
  236. .nf
  237. .in +2
  238. .ta 1i
  239. .if t .ta 1.5i
  240. a       all messages
  241. d       deleted messages
  242. f    forwarded messages
  243. m    marked messages
  244. n       new messages
  245. o       old messages
  246. p    preserved messages
  247. r       replied to messages
  248. s       saved messages
  249. u       unread messages
  250. .fi
  251. .in -2
  252. Note that the \-H is not required; \*Qheaders :c\*U is valid.
  253. .sp
  254. More options to the
  255. .B headers
  256. command include
  257. .RI ` + '
  258. and
  259. .RI ` \- '.
  260. Each prints the next or previous screenful of message headers.
  261. The
  262. .B z
  263. command can also be used; `z' alone prints the next
  264. screenful (thus, the `+' is optional)
  265. and \*Qz \-\*U is equivalent to \*Qh \-\*U.
  266. .sp
  267. Headers affects all the messages it displays, so piping may be done
  268. from the headers command.
  269. Piping to the headers command causes the
  270. message headers affected by the previous command to be printed.
  271. This action is identical to piping to the
  272. .B from
  273. command.
  274. .TP
  275. .BR help " [topic]"
  276. Help is provided on a per topic basis and on a general basis.
  277. For general help, just typing
  278. .I help
  279. provides some general information as to how to get further help
  280. and a list of topics suggested for more specific help.
  281. There is also help provided for each command by using the \-?
  282. option to most commands.
  283. This option provides command line usage information as well as a
  284. description of what the command does and how to use it.
  285. .sp
  286. If no help file is found, an error message is printed.
  287. The location of the help files may be reset by setting the variables
  288. .B cmd_help
  289. and
  290. .B tool_help
  291. to the paths of the new help files.
  292. .sp
  293. The
  294. .B tool_help
  295. variable is recognized only by versions capable of using suntool mode
  296. (tool mode need not be active).
  297. .TP
  298. .BR history " [\-h] [\-r] [N]"
  299. This command displays the command history in chronological order; early
  300. commands are printed first followed by more recent commands displayed last.
  301. Option
  302. .I \-h
  303. suppresses printing of history event numbers with each history command.
  304. Option
  305. .I \-r
  306. reverses the order of the history events displayed.
  307. .sp
  308. If a number
  309. .I N
  310. is given, then that number of previous commands is
  311. echoed rather than the number set by the variable
  312. .BR history .
  313. .sp
  314. See the LINE-MODE INTERFACE section for a description of referencing the
  315. history in commands.
  316. .TP
  317. .BR ignore " [header-list]"
  318. .ns
  319. .TP
  320. .BR unignore " [header-list]"
  321. .rs
  322. Display or set a list of headers to be ignored when displaying messages.
  323. When reading messages, all the message headers are displayed with the text
  324. body of the message.
  325. Since these message identifier fields are cumbersome and uninteresting
  326. in many cases, you can filter out unwanted headers by using this command.
  327. For example,
  328. .sp
  329. .ti +2
  330. ignore Received Date Message-Id
  331. .sp
  332. ignores the three specified fields.
  333. Additional
  334. .B ignore
  335. commands are cumulative.
  336. The command
  337. .B unignore
  338. is used to reverse the effects of
  339. .BR ignore .
  340. .sp
  341. For another way to control this, see the variable
  342. .BR show_hdrs .
  343. .TP
  344. .BR lpr " [-h] [-n] [\-Pname] [msg-list]"
  345. Takes a message list and sends those messages, one by one, to the printer,
  346. each separated by page feeds.
  347. The \-h option suppresses printing of ignored headers (see the
  348. .B ignore
  349. command and the variables
  350. .B show_hdrs
  351. and
  352. .BR alwaysignore ),
  353. and the \-n option suppresses all headers.
  354. A default printer name is supplied if one is not specified on the
  355. command line
  356. .RI (\-P printer-name ).
  357. If you have the variable
  358. .B printer
  359. set, that printer name is used.
  360. .sp
  361. If the variable
  362. .B print_cmd
  363. is set, the command described by that variable is used instead
  364. of the default system command.
  365. In such cases, the -P option and the
  366. .B printer
  367. variable are ignored and the command is simply executed as is.
  368. .sp
  369. The \*Qprinted\*U status bit is set for each message printed by this command.
  370. .sp
  371. .IR Note \|:
  372. If \*Qlpr \-Pprinter\*U produces an error message, your system administrator
  373. may have configured
  374. .I Mush
  375. to require \-d in place of \-P.
  376. .TP
  377. .BR ls " [flags]"
  378. This command duplicates the
  379. .IR UNIX (TM)
  380. command
  381. .I /bin/ls.
  382. By default,
  383. .I ls
  384. always uses the -C flag (columnate output).
  385. .TP
  386. .BR mail " [flags] [recipient ...]"
  387. .RB ( m )
  388. Send mail to a list of users.
  389. If no recipient list is specified on the
  390. .I Mush
  391. command line, then a \*QTo: \*U prompt requests one.
  392. A list of recipients must be supplied at some time before the message is
  393. sent, but is not required to begin composing a letter.
  394. This implementation of
  395. .I Mush
  396. supports mailing to files and programs as recipients.
  397. Filenames must be full pathnames; thus, they must start with a `/' or there
  398. is no way to know whether a recipient is a pathname or a user name.
  399. The special characters `+' and `~' may precede pathnames since they are
  400. expanded first to the user's folder directory (+), as described by the variable
  401. .BR folder ,
  402. and the user's home directory (~).
  403. Mailing to programs is indicated by the pipe `|' character preceding the
  404. program name.
  405. Since the user's path is searched, full pathnames are not required for
  406. programs that lie in the user's PATH environment variable.
  407. .sp
  408. Example:
  409. .sp
  410. .ti +2
  411. mail username, /path/to/filename, "|program_name", +folder_name, ~user/mbox
  412. .sp
  413. Options are:
  414. .nf
  415. .in +2
  416. .if n .ta 1.5i
  417. .if t .ta 1.8i
  418. \-b addr-list    set list of blind carbon recipients
  419. \-c addr-list    set list of carbon copy recipients
  420. \-E    edit outgoing message headers
  421. \-e    immediately enter editor (autoedit)
  422. \-F    add random fortune to the end of message
  423. \-f [msg-list]    forward messages (not indented)
  424. \-H file    read file as prepared text (no headers)
  425. \-h file    read file as a draft (text and headers)
  426. \-I [msg-list]    include messages with headers (indented)
  427. \-i [msg-list]    include messages in letter (indented)
  428. \-s [subject]    prompt for subject [set subject explicitly]
  429. \-U    send draft immediately (use only with \-h)
  430. \-u    unsigned: no signatures or fortunes added
  431. \-v    verbose (passed to mail delivery program)
  432. .in -2
  433. .fi
  434. .sp
  435. The verbose option may not be available depending on the mail transport
  436. agent on your system.
  437. .sp
  438. The \-e flag causes you to enter the editor described by the variable
  439. .BR visual .
  440. .sp
  441. The \-E flag causes
  442. .I Mush
  443. to place the headers of the outgoing message in
  444. the editor file so they can be changed.
  445. See the description of the variable
  446. .B edit_hdrs
  447. for details.
  448. .sp
  449. The \-i flag includes the current message into the body of the
  450. message you are about to send.
  451. The included message is indented by
  452. the string \*Q> \*U or by the string described by the variables
  453. .BR indent_str ,
  454. .BR pre_indent_str ,
  455. and
  456. .BR post_indent_str .
  457. See the VARIABLES section for more information on these string values.
  458. If a message list is given after the \-i option, then the messages
  459. described by that list are included.
  460. The \-I option is identical to the \-i option except that the headers of
  461. the message are also included.
  462. .sp
  463. The \-s flag looks at the next argument and sets the subject to that
  464. string.
  465. If the string is to contain spaces, enclose the entire subject
  466. in quotes.
  467. If there is no following argument, then the subject is prompted for.
  468. This flag is useful if the user:
  469. .sp
  470. .in +2
  471. .nf
  472. \(bu does not have the variable \fBask\fR set, or
  473. \(bu wishes to change the subject used with \fBreply\fR
  474. .in -2
  475. .fi
  476. .sp
  477. The subject is not prompted for and is ignored completely if the \-f flag
  478. is specified (see below).
  479. .sp
  480. The \-f flag is for message forwarding only.
  481. An optional message list can be given just as the -i option has.
  482. The forward option does not allow you to edit the message(s) being forwarded
  483. unless the -e flag is also specified.
  484. The subject of the message (if available) is the same as the
  485. .I current
  486. message; it is not necessarily the subject of the message being forwarded.
  487. The subject of forwarded mail cannot be changed.
  488. However, using the \-e flag
  489. allows the user to change the subject once in editing mode either by
  490. using the escape sequence, \*Q~s\*U, or by editing the \*QSubject:\*U header.
  491. .sp
  492. Forwarded mail that has not been edited by the user contains special
  493. headers such as
  494. .sp
  495. .ti +2
  496. Resent-To:
  497. .ti +2
  498. Resent-From:
  499. .sp
  500. and perhaps others, depending on your mail transport agent.
  501. Sendmail, for example, may add a number of other \*QResent-*\*U headers.
  502. .sp
  503. The \-u option, meaning \*Qunsigned\*U, prevents signatures and fortunes
  504. from being appended to the message.
  505. It overrides the variables
  506. .B autosign
  507. and 
  508. .BR fortune ,
  509. but affects the \-F option only if given after it on the command line.
  510. .sp
  511. The \-h option indicates that the given file is a previously prepared
  512. message, possibly a partial one saved with \*Q~w\*U.
  513. Such a file is called a \fIdraft\fR.
  514. The file argument must be given, and
  515. in the current implementation
  516. all message headers must either be
  517. present in the file or must be added manually by the user.
  518. At minimum, there must be a \*QTo:\*U header;
  519. .I Mush
  520. adds \*QFrom:\*U and \*QDate:\*U headers when sending, if necessary.
  521. To read a prepared text file that does not contain headers, use \-H.
  522. If the \-U option is also given, then the letter is sent immediately without
  523. further editing.
  524. .sp
  525. .TP
  526. .BR map [ ! "] [string [expansion]]"
  527. .ns
  528. .TP
  529. .BR unmap [ ! "] string"
  530. .rs
  531. The
  532. .B map
  533. command creates or lists macros for the line mode interface, and the
  534. .B map!
  535. command creates or lists macros for the message composition mode.
  536. In either mode, macros act in such a way that, when
  537. .I string
  538. is typed, the effect is the same as if
  539. .I expansion
  540. had been typed instead.
  541. The
  542. .I string
  543. is usually one or two control characters, or a sequence sent by
  544. one of the \*Qfunction keys\*U of a particular terminal.
  545. See the MACROS section for the syntax used to specify the
  546. .I string
  547. and the
  548. .IR expansion ,
  549. and for comments on the interactions of macros in the same and in
  550. different modes.
  551. .sp
  552. If no arguments are given, these commands display the list of
  553. macros and expansions for the appropriate mode.
  554. If only a
  555. .I string
  556. is given, they display the
  557. .I expansion
  558. associated with that string for the appropriate mode.
  559. Otherwise, they create a macro, associating the given
  560. .I expansion
  561. with the specified
  562. .IR string .
  563. .sp
  564. Line mode macros are unset with the
  565. .B unmap
  566. command, and composition mode macros are unset with the
  567. .B unmap!
  568. command.
  569. .TP
  570. .BR mark " [\-[A|B|C|D|E]]"
  571. .ns
  572. .TP
  573. .B unmark
  574. This command places a tag on messages that you wish to reference later.
  575. If a priority A through E is specified, that priority is assigned to the
  576. message.
  577. Message priorities are saved when the folder is updated.
  578. The
  579. .B sort
  580. and 
  581. .B pick
  582. commands can then be used to order or select messages based on their
  583. priorities.
  584. .sp
  585. If no pririty is specified, the message is given a temporary mark.
  586. Messages may have both a temporary mark and a priority,
  587. but may not have more than one priority.
  588. Priorities are shown by the appropriate letter code immediately following the
  589. message number in the header display.
  590. The presence of a temporary mark is shown by a `+' character.
  591. Temporary marks are considered to have the highest priority for sorting and
  592. are shown in place of the regular priority if both are set on a given message.
  593. However, temporary marks are not saved when the folder is updated.
  594. .sp
  595. The command
  596. .ti +4
  597. headers \-H:m
  598. (abbreviated as \*Q:m\*U) can be used to generate the list of messages
  599. with temprary marks.
  600. .sp
  601. For example:
  602. .sp
  603. .ti +4
  604. mark -C 7
  605. .sp
  606. assigns priority C to message 7.  You can clear the priority of a message
  607. by specifying a lone `\-' argument:
  608. .sp
  609. .ti +4
  610. mark -
  611. .sp
  612. This does not remove temporary marks, only priorities.
  613. The command
  614. .B unmark
  615. is used to remove temporary marks.
  616. .TP
  617. .BR merge " [\-N] folder-name"
  618. Messages from the named folder are read into the current folder.
  619. The header summaries of the merged messages are printed unless the \-N
  620. option is given (see the
  621. .B folder
  622. command, above).
  623. This command can only appear in a pipeline if it is the first command;
  624. it returns a list of all the messages from the merged-in folder.
  625. This command cannot be used in initialization files before the shell
  626. has started.
  627. .TP
  628. .BR my_hdr " [header[: text]]"
  629. .ns
  630. .TP
  631. .BR un_hdr " [header:]"
  632. .rs
  633. You can create personalized headers in your outgoing mail using this command.
  634. .sp
  635. .nf
  636. Command usage:
  637. .in +2
  638. .ta 2.5i
  639. my_hdr    print all your headers
  640. my_hdr header    print value of header
  641. my_hdr header: string    set header to string
  642. un_hdr header:    unset header
  643. .in -2
  644. .sp
  645. .fi
  646. To set a header, the first argument must be a string
  647. that contains no whitespace (spaces or tabs) and must end with
  648. a colon (:).
  649. The rest of the command line is taken to be the
  650. text associated with the mail header specified.
  651. If any quotes are used in the header and the header itself is not set in
  652. quotes, then quotes should be escaped (preceded) by a backslash.
  653. This holds true for semicolons, pipe characters
  654. or any other metacharacter that
  655. .I Mush
  656. might interpret as a command line modifier.
  657. .sp
  658. If the variable
  659. .B no_hdrs
  660. is set, then your headers are not added to outgoing messages,
  661. but no headers are unset.
  662. The
  663. .B un_hdr
  664. command may take `*' as an argument to un_hdr everything set.
  665. .sp
  666. Example:
  667. .sp
  668. .ti +2
  669. my_hdr Phone-Number: (415) 499-8649
  670. .sp
  671. .I Mush
  672. treats the the header \*QFrom:\*U as a special case.
  673. If you have set your own From:, a simple test is performed to determine
  674. whether the address given is valid.
  675. Any UUCP or domain address that directs mail to your login at the local
  676. machine should be acceptable, but certain configurations may prevent some
  677. combinations from being recognized.
  678. If the address is valid, your From: header is used; otherwise, an
  679. address known to be valid is generated and used instead.
  680. Some mail transport agents are \*Qpicky\*U and do not allow
  681. .I Mush
  682. to supply a From: header; in these cases, your From: header is silently
  683. removed at send time, and replaced with one generated by the MTA.
  684. .sp
  685. Note:  You cannot set the \*QDate:\*U.
  686. Attempting to do so does not result in any
  687. error messages; your date is simply overwritten
  688. by the system when your mail is sent.
  689. .TP
  690. .BR pick " [flags] [<pattern>]"
  691. Allows the user to select particular messages from a folder.
  692. The <pattern> is a \*Qregular expression\*U as described by
  693. .IR ed .
  694. You can search for messages from a user, for a particular subject line,
  695. between certain dates, and limit searches to a range of messages.
  696. You can also find all messages that do not
  697. match the same arguments mentioned above.
  698. .sp
  699. .nf
  700. Options:
  701. .ta 1.5i
  702. .in +2
  703. +<num>    keep only the first <num> messages matched (head).
  704. \-<num>    keep only the last <num> messages matched (tail).
  705. \-ago <format>    search for messages relative to today's date.
  706. \-d [+|\-]date    messages sent on or [+ after] [`\-' before] date.
  707. \-e    take all remaining arguments to be the pattern.
  708. \-f    search for pattern in \*QFrom\*U field only.
  709. \-h header    search for pattern in specified header only.
  710. \-i    ignore case of letters when searching.
  711. \-p priority    select messages with given priority (A,B,C,...)
  712. \-r msg-list    search only the listed messages.
  713. \-s    search for pattern in \*QSubject\*U field only.
  714. \-t    search for pattern in \*QTo\*U field only.
  715. \-x    select messages that do \fInot\fR match the pattern.
  716. .in -2
  717. .fi
  718. .sp
  719. The
  720. .I \-ago
  721. option can be abbreviated as
  722. .IR \-a .
  723. Only one of \-a, \-d, \-f, \-h, \-p, \-s and \-t can be specified at once,
  724. but multiple \-p options may be specified to select several priorities.
  725. Entire messages are scanned for the <pattern>
  726. unless \-a, \-d, \-f, \-h, \-p, \-s or \-t is specified.
  727. Messages marked for deletion are also searched.
  728. No patterns can be specified with the \-a or \-d options.
  729. The \-x option may not be used in conjunction with
  730. .IR + n
  731. (head) and
  732. .IR \- n
  733. (tail).
  734. .sp
  735. For the \-d option, \*Qdate\*U is of the form:
  736. .sp
  737. .ti +2
  738. month/day/year
  739. .sp
  740. with an optional `\-' to specify that the messages of interest are those
  741. older than that date.
  742. Omitted fields of the date default to today's values.
  743. Examples of selecting on date:
  744. .nf
  745. .in +2
  746. .ta 2.0i
  747. .sp
  748. pick \-d 4/20    on April 20, this year.
  749. pick \-d \-/2/85    on or before the 2nd, this month, 1985.
  750. pick \-d +5/4    on or after May 4 of this year.
  751. pick \-d /    today only.
  752. .fi
  753. .in -2
  754. .sp
  755. At least one `/' char must be used in a date.
  756. There is no strong date checking; 2/30 is considered a valid date.
  757. .sp
  758. For the \-ago option, the format is very simple.  Specify the number of
  759. days followed by the word \*Qdays\*U, or the number of weeks followed by
  760. the word \*Qweeks\*U, and so on with months and years.  Truncation is allowed,
  761. since only the first character is examined, so all of the following are
  762. equivalent:
  763. .sp
  764. .in +2
  765. .nf
  766. pick \-ago 1 day, 2 weeks
  767. pick \-ago 2Weeks 1Day
  768. pick \-ago 2w,1day
  769. pick \-a 2w1d
  770. .fi
  771. .in -2
  772. .sp
  773. These examples find all messages that are exactly 2 weeks and 1 day
  774. old.  All \*Qago\*U dates collapse into \*Qday\*U time segments.  This
  775. means that months are 30.5 days long.  If more precise date selection is
  776. required, use the \-d option and specify specific dates.
  777. .sp
  778. Also note that the \-ago option allows
  779. the \*Qbefore\*U (\-) and \*Qafter\*U (+)
  780. arguments.  Thus, you may pick all messages older than 1 week with:
  781. .sp
  782. .ti +2
  783. pick \-ago \-1 week
  784. .sp
  785. Other examples of
  786. .B pick:
  787. .sp
  788. .nf
  789. .ti +2
  790. pick \-d 2/5/86 | pick \-d \-2/5/87 | pick \-s "mail stuff" | lpr
  791. .fi
  792. .sp
  793. Will find all the messages between the dates February 5, 1986, and
  794. February 5, 1987, that contain the subject "mail stuff" and send them
  795. to the printer.
  796. .sp
  797. .ti +2
  798. pick -s Re: | delete
  799. .sp
  800. Deletes messages that have \*QRe:\*U in the Subject header.
  801. .sp
  802. .ti +2
  803. folder +project | pick \-f frank
  804. .sp
  805. Finds all messages from frank in the folder described by +project.
  806. .sp
  807. .ti +2
  808. pick \-h return-path ucbvax
  809. .sp
  810. Searches all messages that have the header "Return-Path:" and determines
  811. if the string \*Qucbvax\*U is in the header.
  812. Note that case sensitivity
  813. applies only to the pattern searched, not the header itself.
  814. .sp
  815. .ti +2
  816. pick \-ago +1w | save +current
  817. .sp
  818. This finds all messages that are a week or less old and saves them in the file
  819. called \fIcurrent\fR, which is found in the user's \fIfolder\fR variable.
  820. .sp
  821. .ti +2
  822. pick +3 mush-users
  823. .sp
  824. Finds the first three messages containing the string \*Qmush-users\*U.
  825. .sp
  826. .ti +2
  827. eval -h "pick +2 \-r .-$ \-s %s" | pick \-1
  828. .sp
  829. Finds the next message with the same subject as the current message.
  830. .TP
  831. .BR pipe " [\-p pattern] [msg-list] unix-command"
  832. Allows the user to send the texts of a list of messages to a
  833. .IR UNIX (TM)
  834. command.
  835. The list of messages may either be given explicitly or may come from a
  836. .I Mush
  837. pipeline (see \*QPiping commands\*U under the LINE-MODE INTERFACE section).
  838. If a list is neither given nor piped, the current message is used.
  839. All headers are considered part of the message text for purposes of this
  840. command unless the value of the variable
  841. .B alwaysignore
  842. includes the word \*Qpipe\*U (see
  843. .B alwaysignore
  844. in the VARIABLES section for more information).
  845. For example,
  846. .sp
  847. .in +4
  848. .nf
  849. pipe 3 5 7 patch
  850. .fi
  851. .in -4
  852. .sp
  853. sends the text and headers of messages 3, 5 and 7 to the
  854. .I patch
  855. utility.
  856. .sp
  857. If a
  858. .I pattern
  859. is specified with the \-p option, \fIMush\fR searches
  860. the message for a line beginning with that string.
  861. The matching line and all succeeding lines are sent to the
  862. .IR unix-command .
  863. If \-p is not given, and the
  864. .I unix-command
  865. is omitted, \fIMush\fR searches for a line beginning with \*Q#!\*U
  866. and feeds that line and all succeeding lines to \*Q/bin/sh\*U.
  867. Thus,
  868. .B pipe
  869. with no arguments treats the current message as a shell script.
  870. .sp
  871. The pattern may also be of the form
  872. .ti +4
  873. .I /pattern1/,/pattern2/
  874. in which case printing begins with the line containing
  875. .I pattern1
  876. and end with the line containing
  877. .I pattern2
  878. (inclusive).
  879. Patterns of this form must still match at beginning of line, and
  880. regular expressions are not currently allowed.
  881. .sp
  882. The
  883. .B pipe
  884. command can also be invoked as
  885. .B Pipe
  886. (note capitalization), in which case only the body of the messages,
  887. and none of the message headers, are sent to the unix command.
  888. .sp
  889. When the variable
  890. .B unix
  891. is set,
  892. .IR UNIX (TM)
  893. commands can appear anywhere
  894. .I except as the first command
  895. in a 
  896. .I Mush
  897. pipeline without explicitly using
  898. .BR pipe .
  899. However, it is still necessary to specify
  900. .B Pipe
  901. in order to exclude all headers.
  902. .sp
  903. .IR Note :
  904. All messages listed as arguments to
  905. .B pipe
  906. or
  907. .B Pipe
  908. are sent to the standard input of the
  909. .I same
  910. process as a continuous stream, in message number order!  This is probably
  911. not desirable when extracting shell scripts in particular, so take care.
  912. .TP
  913. .B preserve
  914. .RB ( pre )
  915. When the system folder is updated, preserved messages are saved in that
  916. folder rather than in your mbox folder.
  917. The
  918. .B preserve
  919. command sets this preserved status on the listed messages unless they have
  920. been explicitly deleted.
  921. The variable
  922. .B hold
  923. causes all messages (except those saved or deleted) to be held in your
  924. system folder automatically.
  925. .TP
  926. .B print
  927. .RB ( p ,
  928. .BR type ,
  929. .BR t )
  930. Takes a message list and displays each message on the user's terminal.
  931. If the first letter of the command is a capital letter (`P' or `T')
  932. then \*Qignored\*U headers are not ignored
  933. .I provided
  934. that the variable
  935. .B alwaysignore
  936. is either not set or is set to one of its possible values.
  937. If this variable is set with no value, the ignored headers are
  938. ignored regardless of the command used to display the message.
  939. See the
  940. .B ignore
  941. command for more information about ignored message headers.
  942. .sp
  943. The `+' and the `\-' keys can be used to display the \*Qnext\*U
  944. and \*Qprevious\*U messages respectively.
  945. The `+' key has the caveat that the
  946. message is not paged at all and none of the messages headers are displayed.
  947. .TP
  948. .B pwd
  949. Prints the current working directory.
  950. .TP
  951. .B quit\ \ 
  952. .RB ( q )
  953. Updates the current folder and exits from
  954. .IR Mush .
  955. If the current folder is your system folder and the variable \*Qhold\*U is
  956. set, all messages not marked for deletion are left in your system folder.
  957. Otherwise, messages that have been read are saved to
  958. .I ~/mbox
  959. or to the file described by the string variable
  960. .BR mbox .
  961. Messages marked for deletion are discarded.
  962. Unread messages are copied back to the current folder in all cases.
  963. .TP
  964. .BR reply / replyall " [msg-list] [-r path] [flags] [users]"
  965. .RB ( r / R )
  966. Messages are replied to by sending mail to the sender of each message
  967. in the given message list.
  968. The command
  969. .B replysender
  970. is equivalent to
  971. .BR reply .
  972. .B Replyall
  973. responds to all the recipients as well as the sender of the message.
  974. These commands understand all the same flags as the
  975. .B mail
  976. command.
  977. .sp
  978. When constructing a return mail address to the author of a message,
  979. .B reply
  980. searches for special mail headers in the author's message that
  981. indicate the most efficient mail path for return mail.
  982. .I Mush
  983. searches for the \*QReply-To:\*U,
  984. \*QFrom:\*U, and \*QReturn-Path:\*U headers, in that order, by default.
  985. .sp
  986. If none of these fields are found in the message, the first line of the
  987. message is parsed if possible;
  988. this \*QFrom\ \*U line is different from the \*QFrom:\ \*U line.
  989. If the user wishes to change the order or the actual fields to search for
  990. return paths, then the variable
  991. .B reply_to_hdr
  992. may be set to a list of headers to be used (in the order specified).
  993. If it is set, but has no value, the first \*QFrom\ \*U line is used
  994. regardless of what headers the author's message contains.
  995. The \*QFrom\ \*U line may be specified explicitly as an item in the
  996. list of reply-to headers by specifying the header
  997. .RB \*Q From_ \*U.
  998. See the VARIABLES section for more information about
  999. .B reply_to_hdr.
  1000. .sp
  1001. When replying to all recipients of the message using the
  1002. .B replyall
  1003. .RB ( R )
  1004. command, only the original author's address can be obtained from
  1005. the message headers.
  1006. There is no way to determine the best path to the
  1007. other recipients of the message from message headers aside from taking
  1008. their addresses directly from the \*QTo:\*U and \*QCc:\*U lines.
  1009. .sp
  1010. Example:
  1011. .sp
  1012. .ti +2
  1013. replyall 3,4,5 -i 4,5 7 -s response mail-group
  1014. .sp
  1015. Here, messages 3, 4 and 5 are replied to (all the authors are obtained
  1016. from each of those messages as well as the recipients from those messages)
  1017. and the text from messages 4, 5 and 7 are included in the body of the reply.
  1018. The subject is set to "response" and the alias mail-group is appended to
  1019. the list of recipients for this message.
  1020. .sp
  1021. The -r flag prefixes the address of each recipient in the address list
  1022. with the indicated path.  This overrides the value of \fBauto_route\fR,
  1023. but has the exact same functionality.  See the explanation of the variable
  1024. in the VARIABLES section.  Also see the MAIL ADDRESSES section for more
  1025. information concerning replying to messages.
  1026. .nf
  1027. .TP
  1028. .BR save / write / copy " [\-f] [\-s | \-a] [msg-list] [filename / directory]"
  1029. .fi
  1030. .RB ( s / w )
  1031. With no arguments,
  1032. .B save
  1033. and
  1034. .B write
  1035. saves the current message to the file
  1036. .I mbox
  1037. in the user's home directory (or the file specified by the
  1038. .B mbox
  1039. variable).
  1040. If a message list is given, then the messages specified by
  1041. the list are saved.
  1042. If a filename is given, then that filename is used instead of mbox.
  1043. The \-s option forces the filename used to be that of the subject of
  1044. the message.  Similarly, the \-a option causes the filename used to be
  1045. that of the author of the message being saved.  If more than one message
  1046. is being saved, the subject or author name used is that of the smallest
  1047. message number.  With these two options, a directory name may be given
  1048. to specify a directory other than the current directory where the files
  1049. are to be created.
  1050. .sp
  1051. If the file exists and is writable, the specified command
  1052. appends each message to the end of the file.
  1053. If \-f is given, then the file is overwritten causing whatever contents it
  1054. contains to be lost.
  1055. For compatibility with older versions, the character `!' may be substituted
  1056. for \-f (no `\-' is used with `!').
  1057. Note that \-f has no effect when used with \-a or \-s.
  1058. .sp
  1059. If the current folder is the system mailbox, then saved messages are
  1060. marked for deletion when the user exits using the
  1061. .B quit
  1062. command.
  1063. If the variable
  1064. .I keepsave
  1065. is set or the current folder is not the system mailbox, then messages are
  1066. not marked for deletion.
  1067. .sp
  1068. The
  1069. .B write
  1070. command differs from
  1071. .B save
  1072. and
  1073. .B copy
  1074. in that the message headers are
  1075. .I not
  1076. saved in the file along with the body of text.
  1077. The
  1078. .B copy
  1079. command is is like
  1080. .B save
  1081. except that messages are never marked for deletion, whether or not
  1082. .B keepsave
  1083. is set.
  1084. .TP
  1085. .BR saveopts " [file]"
  1086. The complement of
  1087. .BR source ,
  1088. .BR saveopts ,
  1089. saves all settable variables, aliases
  1090. and cmd's in the initialization file.
  1091. (See the INITIALIZATION
  1092. section for more information on initialization files.)
  1093. If an argument is given, that file is used.
  1094. Beware that this overwrites files, so any \*Qif\*U expressions
  1095. are lost, as are settings that have changed since entering
  1096. .IR Mush .
  1097. Using saveopts is highly discouraged
  1098. and is intended for the naive user only.
  1099. .TP
  1100. .BR set " [[?]variable [= value]]"
  1101. .ns
  1102. .TP
  1103. .BR unset " variable"
  1104. .rs
  1105. With no arguments,
  1106. .B set
  1107. prints all variable values.
  1108. Otherwise, it sets the named
  1109. .IR variable .
  1110. Arguments are of the form \*Qvariable=value\*U (whitespace is allowed).
  1111. Boolean options such as
  1112. .I autoedit
  1113. need not have \*Q=value\*U associated in the command.
  1114. Multivalued variables are set in the same way as other variables, and
  1115. the list of values should be enclosed in quotes if whitespace is used
  1116. to separate the items.
  1117. See the VARIABLES section for details of the format of each type of variable.
  1118. .sp
  1119. The special command
  1120. .sp
  1121. .ti +2
  1122. set ?all
  1123. .sp
  1124. prints all known variables utilized by the program and a brief
  1125. description of what they do.
  1126. The user may set and manipulate his own set of variables, but internal
  1127. variables that are utilized by the program are the only ones displayed.
  1128. .sp
  1129. The command
  1130. .sp
  1131. .ti +2
  1132. set ?variable_name
  1133. .sp
  1134. prints the same information for one variable instead of all variables.
  1135. You may unset everything by issuing the command \*Qunset *\*U.
  1136. Note that some variables are essential to the operation of the program
  1137. and are restored to a default value even when they are explicitly unset.
  1138. .sp
  1139. It is possible to set a variable to a list of messages returned by another
  1140. command by using the piping mechanism.  For example,
  1141. .sp
  1142. .ti +2
  1143. pick \-s Status Reports | set reports
  1144. .sp
  1145. The variable
  1146. .I reports
  1147. now contains a message list which can be used
  1148. as the message list argument to any command which accepts a list.
  1149. .sp
  1150. .ti +2
  1151. mail \-i $reports boss
  1152. .sp
  1153. This command sends mail to \*Qboss\*U and includes the text of all the
  1154. messages held in the \fIreports\fP variable.
  1155. .TP
  1156. .BR sh " [command]"
  1157. Invokes an interactive version of the shell.
  1158. The shell spawned is described by the variable
  1159. .BR shell .
  1160. If the optional argument
  1161. .I command
  1162. is given, then that command is executed under the Bourne Shell (/bin/sh).
  1163. If the special character `&' is at the end of any shell command,
  1164. then the command is executed in background.
  1165. .TP
  1166. .BR source " [file]"
  1167. Read
  1168. .I Mush
  1169. commands from a file.
  1170. If no filename is specified, the files searched
  1171. for are .mushrc or .mailrc in the user's home directory.
  1172. If the environment variable
  1173. .I MUSHRC
  1174. or
  1175. .I MAILRC
  1176. is set, then the file named by the variable is sourced instead.
  1177. If a filename is given on the command line, that file is sourced.
  1178. See the INITIALIZATION heading and the
  1179. .B home
  1180. variable descriptions for more information.
  1181. .TP
  1182. .BR sort " [\-i] [[\-r] \-a | \-d | \-l | \-p | \-R | \-s | \-S]"
  1183. This command sorts messages according to author, date, status or subject
  1184. (with or without considering the \*QRe:\ \*U, in replied messages).
  1185. In addition, the messages can be sorted in reverse order (same arguments).
  1186. .sp
  1187. .nf
  1188. Options:
  1189. .in +2
  1190. .ta 1i
  1191. \-i    ignore case in alphabetical sorts
  1192. \-r    reverse sort order of next option
  1193. \-a    sort by author (alphabetical)
  1194. \-d    sort by date
  1195. \-l    sort by length of message
  1196. \-p    sort by message priority
  1197. \-R    sort by subject including \*QRe:\*U
  1198. \-s    sort by subject (alphabetical)
  1199. \-S    sort by message status
  1200. .in -2
  1201. .fi
  1202. .sp
  1203. By default (no arguments),
  1204. .B sort
  1205. sorts messages by
  1206. .IR status .
  1207. New, unread messages are first, followed by preserved messages,
  1208. and finally deleted messages are placed at the end of the list.
  1209. If status is otherwise the same, priority is used to order the messages.
  1210. If \-r is the only option given, the status ordering is reversed.
  1211. .sp
  1212. Sorting by priority orders marked messages first, followed by messages
  1213. having a priority setting (A having higher precedence than B, and so on),
  1214. and finally messages having neither a mark nor a priority.
  1215. See the
  1216. .B mark
  1217. command for information on attaching marks and priorities to messages.
  1218. .sp
  1219. When sorting by date, the boolean variable
  1220. .B date_received
  1221. is checked.  If it is set, then sorting goes by date received.
  1222. Otherwise (default), sorting is by date sent by the original author.
  1223. .sp
  1224. If more than one sort option is specified, they are applied in
  1225. left-to-right sequence to each comparison.
  1226. Thus:
  1227. .sp
  1228. .ti +2
  1229. sort \-a \-d
  1230. .sp
  1231. sorts messages by author and, if the author of any set of messages
  1232. is the same, sorts within that set by date.
  1233. Note that the \-r option applies to only one other option at a time;
  1234. to reverse the sort of both author and date requires:
  1235. .sp
  1236. .ti +2
  1237. sort \-r \-a \-r \-d
  1238. .sp
  1239. The options can also be grouped:
  1240. .sp
  1241. .ti +2
  1242. sort \-ra \-rd
  1243. .ti +2
  1244. sort \-rard
  1245. .sp
  1246. Currently, only the line mode interface supports multiple sort criteria,
  1247. but the other interfaces allow subsorting indirectly
  1248. when appropriate actions are taken, as discussed below.
  1249. .sp
  1250. It is also possible to sort a consecutive sublist of messages by using pipes.
  1251. If the mailbox is already sorted by author,
  1252. .sp
  1253. .ti +2
  1254. pick \-f argv@zipcode.com | sort \-s
  1255. .sp
  1256. finds all messages from the user \*Qargv@zipcode.com\*U
  1257. and sort them by subject.
  1258. You may specify the exact message list by specifying
  1259. that message list on the command line and using a pipe:
  1260. .sp
  1261. .ti +2
  1262. 10\-. | sort d
  1263. .sp
  1264. This command means to sort the messages from 10 to the current message
  1265. according to the date.
  1266. .sp
  1267. To specify subsorting from with the curses interface, the temporary
  1268. curses escape key must be used (the colon `:') and the command issued
  1269. at the `:' prompt (as if giving an \*Qex\*U command to \*Qvi\*U).
  1270. When the command is finished, the \*Q...continue...\*U prompt is given and
  1271. the user may continue or return to the top level of the curses mode.
  1272. .sp
  1273. In the tool mode, subsorting can be specified only by typing message numbers
  1274. in the \*QRange:\*U item at the top of the main frame, before selecting the
  1275. \*QSort\*U item.
  1276. The sort range must consist of consecutive messages.
  1277. Reversed sorting is not currently available in tool mode.
  1278. .sp
  1279. If the variable
  1280. .I sort
  1281. is set, messages are sorted each time the user's system mailbox is
  1282. read as the current folder.
  1283. The
  1284. .I sort
  1285. variable can be set either to nothing or to legal "sort" arguments.
  1286. .sp
  1287. \fINote\fR:  For compatibility with older versions, sort options are
  1288. recognized even if they are not preceded by a `\-'.
  1289. Also, if a `\-' is given by itself (separated by spaces from any following
  1290. arguments) it is interpreted as \-r.
  1291. .TP
  1292. .B stop\ \ 
  1293. For systems with job control, stop causes
  1294. .I Mush
  1295. to send a SIGTSTP to itself.
  1296. The command was introduced to facilitate
  1297. the stop-job action from a complex command line alias rather than the user
  1298. having to type his stop character explicitly.
  1299. .TP
  1300. .B top
  1301. Takes a message list and prints the top few lines of each.
  1302. The number of lines printed is controlled by the variable
  1303. .B toplines
  1304. and defaults to the size of the value of the variable
  1305. .B crt.
  1306. This command is ignored in the tool mode.
  1307. .TP
  1308. .BR undigest " [-m] [-p pattern] [msg-list] [filename]"
  1309. A \*Qdigest\*U is a mail message which is a collection of other mail messages
  1310. mailed to a \*Qmoderator\*U by other users.  The moderator compiles all the
  1311. messages into a folder and sends the result to all the subscribers of the
  1312. mailing list.  The
  1313. .B undigest
  1314. command disassembles the entries into the set of messages which comprises
  1315. the digest.
  1316. .sp
  1317. The -m option merges these messages into the current folder.  Otherwise,
  1318. if a filename is specified, a new folder is created and the user can change
  1319. folders to read the messages separately.
  1320. .sp
  1321. The -p option specifies an alternate pattern to be used as the digest
  1322. article separator.
  1323. This pattern must match literally at the beginning of the line.
  1324. The default pattern is \*Q\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\*U (eight hyphens).
  1325. This is the defacto USENET standard digest article separator and should
  1326. work for most digests, but some use another separator.
  1327. The -p option is also useful for \*Qbursting\*U forwarded messages out
  1328. of a wrapper message; for example:
  1329. .sp
  1330. .ti +4
  1331. undigest -m -p "--- Forward"
  1332. .sp
  1333. bursts out messages forwarded by another user of
  1334. .I Mush
  1335. and merges them into the current folder.
  1336. .sp
  1337. If a message list is specified, each digest in the list is disassembled to
  1338. the same filename (if given).
  1339. If no filename is given and the user did not request
  1340. a merge, then a temporary file is made.
  1341. The name of the temporary file is generated from the subject of the digest.
  1342. .TP
  1343. .BR update " [-r]"
  1344. Updates your current folder, writing back changes just as if you had
  1345. .BR quit ,
  1346. except that the `N'ew status does not change to `U'nread.
  1347. Headers are not listed when the folder is read back in.
  1348. The \-r option puts the folder into read-only mode
  1349. .I after
  1350. updating it.
  1351. .sp
  1352. See the
  1353. .BR folder
  1354. command for complete information.
  1355. .sp
  1356. .SH VARIABLES
  1357. Shell variables are controlled via the
  1358. .B set
  1359. and
  1360. .B unset
  1361. commands.
  1362. Options may be either boolean, in which case it is only
  1363. significant to see whether or not they are set;
  1364. string, in which case the actual value is of interest;
  1365. numerical, in which case the numerical value is important;
  1366. or multivalued, in which case they may be set to a list of values.
  1367. Some variables may have attributes
  1368. of boolean and string or multivalued at the same time.
  1369. .PP
  1370. If you or the program references a variable that is not explicitly set,
  1371. then the environment variables are checked and that data is returned.
  1372. A few variables (notably
  1373. .BR prompt ,
  1374. .BR cmd_help ,
  1375. and
  1376. .BR tool_help )
  1377. do not check the environment.
  1378. .PP
  1379. Variable values can be modified by one of four variable modifiers, or by a
  1380. numeric string.
  1381. The modifiers `:h', `:t', `:l' and `:u' may be applied to the variable names.
  1382. The current implementation allows only one `:' modifier on each `$' expansion.
  1383. .TP
  1384. :t
  1385. The variable is treated as a file path name, and the name of the file
  1386. (the \*Qtail\*U of the path) is substituted for the variable.
  1387. That is, everything to the right of the last `/'
  1388. is returned.
  1389. .TP
  1390. :h
  1391. The variable is treated as a path name, and the \*Qhead\*U of the pathname
  1392. is substituted for the variable.
  1393. That is, everything up to, but not including, the last `/' is returned.
  1394. .TP
  1395. :l
  1396. All alphabetic characters in the variable's value are converted to lower case.
  1397. .TP
  1398. :u
  1399. All alphabetic characters in the variable's value are converted to upper case.
  1400. .TP
  1401. .RI : number
  1402. The value of the variable is converted to a list of space-separated words,
  1403. which are numbered from one (1), and the word described by
  1404. .I number
  1405. is selected and returned.
  1406. It is not an error for
  1407. .I number
  1408. to be greater than the actual number of words; an empty string is returned
  1409. in this case.
  1410. .PP
  1411. Following is a list of all variables with predefined meanings.
  1412. .TP
  1413. .B alwaysignore
  1414. (Boolean/Multivalued)
  1415. If set with no value, the mail headers set by the
  1416. .B ignore
  1417. command are always ignored.
  1418. Normally, ignored headers are not ignored when sending messages to
  1419. the printer, when interpolating messages into letters with ~f or ~I,
  1420. when the `P' or `T' command is given (see the \fBprint\f command),
  1421. or with the \-I flag to the
  1422. .B mail
  1423. or
  1424. .B reply
  1425. commands.
  1426. Setting
  1427. .B alwaysignore
  1428. ignores those headers even in the situations mentioned here.
  1429. No headers can be ignored during updates and when using the
  1430. .B save
  1431. command since the user may ignore headers that are required by
  1432. .I Mush
  1433. or any other mail system to read those folders.
  1434. .sp
  1435. This variable can also be set to a list of words
  1436. separated by commas or spaces.
  1437. Currently recognized words, and their meanings, are:
  1438. .nf
  1439. .ta 1.5i
  1440. .in +4
  1441. .\" \& escapes are to make obvious the tab after each word
  1442. forward\&    Ignore headers when forwarding messages (~f).
  1443. include\&    Ignore headers when including messages (~I).
  1444. pipe\&\&    The \fBpipe\fR command ignores headers.
  1445. printer\&    The \fBlpr\fR command ignores headers.
  1446. .in -4
  1447. .fi
  1448. .sp
  1449. Also see the
  1450. .B ignore
  1451. command and the
  1452. .B show_hdrs
  1453. variable for more information.
  1454. .TP
  1455. .B ask
  1456. (Boolean)
  1457. If set, you are prompted for a subject header for outgoing mail.
  1458. Use the tilde escape \*Q~s\*U to set the header once in the message
  1459. or specify the \-s option on the
  1460. .B mail
  1461. command line at the
  1462. .I Mush
  1463. prompt.
  1464. .TP
  1465. .B askcc
  1466. (Boolean)
  1467. If set, you are prompted for a Cc (carbon copy) list when you are
  1468. finished editing a letter to be sent.
  1469. If the variable
  1470. .B edit_hdrs
  1471. is set, prompting does not occur, but a Cc: line is added to the
  1472. edit file.
  1473. This also applies to the tool mode.
  1474. .TP
  1475. .B autodelete
  1476. (Boolean)
  1477. When exiting mail, all messages that have been read
  1478. .I "regardless of whether they have been marked for deletion"
  1479. are removed.
  1480. Only messages that haven't been read or that have been marked as
  1481. .B preserved
  1482. are not removed.
  1483. .TP
  1484. .B autoedit
  1485. (Boolean)
  1486. If set, you are automatically put into your editor whenever you
  1487. send or reply to mail.
  1488. .TP
  1489. .B autoinclude
  1490. (Boolean)
  1491. When replying to any mail, a copy of the message being replied to
  1492. is automatically inserted into your message body indented by
  1493. the string described by the variable
  1494. .BR indent_str .
  1495. .TP
  1496. .B autoprint
  1497. (Boolean)
  1498. After you delete a message, the next message is printed automatically.
  1499. .TP
  1500. .B auto_route
  1501. (Boolean/String)
  1502. If set boolean (not to a string), all the recipients in a message that
  1503. is being replied to (via \fBreplyall\fR), is routed through the path
  1504. back to the original author.
  1505. .sp
  1506. For example, if the original sender of a message came from the remote host
  1507. .B c3p0
  1508. and the list of recipients looked like
  1509. .sp
  1510. .nf
  1511. .in +2
  1512. XFrom: c3p0!user1
  1513. To: yourhost!you
  1514. Cc: r2d2!user2, r2d2!user3
  1515. .in -2
  1516. .fi
  1517. .sp
  1518. then clearly, \*Quser1\*U on the machine c3p0 can talk to your machine
  1519. and the machine named r2d2.
  1520. However, you would not be able to respond to those users if your machine
  1521. did not exchange UUCP mail with the host r2d2.
  1522. .sp
  1523. .I Mush
  1524. attempts to solve this problem by reconstructing the addresses
  1525. for \*Quser2\*U and \*Quser3\*U according to the address of the original
  1526. sender, \*Qc3p0\*U.
  1527. The new addresses for \*Quser2\*U and \*Quser3\*U should therefore become
  1528. .sp
  1529. .ti +2
  1530. c3p0!r2d2!user2, c3p0!r2d2!user3.
  1531. .sp
  1532. If your machine not only talks to c3p0,
  1533. but talks to r2d2 as well, it becomes unnecessary to route the mail
  1534. through both c3p0 and r2d2.
  1535. So, the variable
  1536. .B known_hosts
  1537. may be set to a list of hosts which you know your machine to have
  1538. UUCP mail connections with.
  1539. This list is checked when constructing mail addresses for replies only and
  1540. the shortest path is made by removing from the UUCP path those hosts
  1541. that do not need to be called or are redundant.
  1542. See the entry for
  1543. .B known_hosts
  1544. for more information.
  1545. .sp
  1546. If
  1547. .B auto_route
  1548. is set to a specific \fBpathname\fR (host names separated by !'s),
  1549. all addresses in the reply have this route prepended to their addresses.
  1550. This ignores the original path of the author.  This is quite useful for
  1551. hosts which talk uucp to a node which is connected to the internet or uunet
  1552. since both of those machines tend to be one-hop away from all other hosts
  1553. (or reroute accordingly).  For example, if a message was addressed like so:
  1554. .sp
  1555. .in +2
  1556. .nf
  1557. To: root@ucbvax.berkeley.edu, argv@zipcode.uucp
  1558. Cc: ucbcad!foo!bar
  1559. .sp
  1560. .fi
  1561. .in -2
  1562. If auto_route is set to "ucbcad", then replies to this address are
  1563. directed addressed like so:
  1564. .sp
  1565. .in +2
  1566. .nf
  1567. To: ucbcad!ucbvax.berkeley.edu!root, ucbcad!zipcode.uucp!argv
  1568. Cc: ucbcad!foo!bar
  1569. .sp
  1570. .fi
  1571. .in -2
  1572. .sp
  1573. This assumes that the host in question talks uucp with ucbcad.  This example
  1574. demonstrates several things.  First, notice that all addresses are converted
  1575. to uucp-style format.  Whenever routing is changed, the format is converted
  1576. like this.  Secondly, note that the Cc: line did not change.  This is because
  1577. all redundant hostnames from UUCP pathnames are removed
  1578. to avoid unnecessary UUCP connections and speed up mail delivery.
  1579. .sp
  1580. Another example of how auto_route truncates UUCP paths:
  1581. .sp
  1582. .ti +2
  1583. pixar!island!sun!island!argv
  1584. .sp
  1585. Here, mail was probably originally sent to users at pixar and sun from
  1586. somewhere undetermined now.
  1587. Since sun and pixar do not talk to each other, the users on those machines may
  1588. have responded to mail creating the type of addresses stated above.
  1589. Here, it can be seen that we can reduce the path to the host
  1590. .IR island :
  1591. .sp
  1592. .ti +2
  1593. pixar!island!argv
  1594. .sp
  1595. See the MAIL ADDRESSES section for more detailed information
  1596. about legal mail addresses.
  1597. .sp
  1598. Note that the -r flag to \fBreply\fR and \fRreplyall\fR overrides the
  1599. value of \fBauto_route\fR.
  1600. .TP
  1601. .B autosign
  1602. (Boolean/string)
  1603. Append a signature to outgoing mail.
  1604. If this variable is set, but not to a string (e.g., boolean-true)
  1605. then the file ~/.signature is used.
  1606. .sp
  1607. Otherwise, the variable is interpreted in one of four ways.
  1608. By default, the string is interpreted as a pathname relative to the
  1609. .I current
  1610. directory.
  1611. For this reason, it is advisable to use full pathnames here.
  1612. As usual, the special characters `~' and `+' are expanded.
  1613. If a file is found, it is opened and its contents are read into the
  1614. message buffer.
  1615. .sp
  1616. If the variable is set to a string that begins with `$', then that string
  1617. is interpreted as a user-definable variable and is expanded and appended
  1618. to the letter.
  1619. .sp
  1620. If the variable is set to a string that begins with a backslash (\\)
  1621. then the string itself (minus the `\\' character) is used; no expansion
  1622. is done and no files are read.
  1623. .sp
  1624. Finally, if the variable is set to a string that begins with a vertical
  1625. bar (or \*Qpipe\*U) character (|), the rest of the string is interpreted
  1626. as a command whose output is used as the signature.
  1627. The special characters `~' and `+' are NOT expanded in the command name,
  1628. but the command is run via /bin/sh so $PATH is searched and redirection
  1629. can be specified.
  1630. The list of addresses to which the letter is sent is passed to
  1631. the command as its arguments, in the same form that they are passed
  1632. to the Mail Transport Agent (MTA).
  1633. Depending on your MTA, each address may be followed by a comma.
  1634. .sp
  1635. In the latter three cases, it is advisable to set the variable using single
  1636. quotes to protect the `$', `\\' and `|' characters from being interpreted.
  1637. Examples:
  1638. .sp
  1639. .nf
  1640. .ti +2
  1641. set autosign = '$foo'
  1642. .ti +2
  1643. set autosign = '\\  Dan Heller zipcode!argv@ucbcad.berkeley.edu'
  1644. SHAR_EOF
  1645. true || echo 'restore of mush.1 failed'
  1646. fi
  1647. echo 'End of  part 16'
  1648. echo 'File mush.1 is continued in part 17'
  1649. echo 17 > _shar_seq_.tmp
  1650. exit 0
  1651. exit 0 # Just in case...
  1652. -- 
  1653. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1654. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1655. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1656. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1657.