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

  1. From: argv@zipcode.com (Dan Heller)
  2. Newsgroups: comp.sources.misc
  3. Subject: v18i074:  mush - Mail User's Shell, Part17/22
  4. Message-ID: <1991Apr22.153352.29504@sparky.IMD.Sterling.COM>
  5. Date: 22 Apr 91 15:33:52 GMT
  6. Approved: kent@sparky.imd.sterling.com
  7. X-Checksum-Snefru: a63000e5 b49b1ec7 b1396970 25963bd6
  8.  
  9. Submitted-by: Dan Heller <argv@zipcode.com>
  10. Posting-number: Volume 18, Issue 74
  11. Archive-name: mush/part17
  12. Supersedes: mush: Volume 12, Issue 28-47
  13.  
  14. #!/bin/sh
  15. # this is Part.17 (part 17 of a multipart archive)
  16. # do not concatenate these parts, unpack them in order with /bin/sh
  17. # file mush.1 continued
  18. #
  19. if test ! -r _shar_seq_.tmp; then
  20.     echo 'Please unpack part 1 first!'
  21.     exit 1
  22. fi
  23. (read Scheck
  24.  if test "$Scheck" != 17; then
  25.     echo Please unpack part "$Scheck" next!
  26.     exit 1
  27.  else
  28.     exit 0
  29.  fi
  30. ) < _shar_seq_.tmp || exit 1
  31. if test ! -f _shar_wnt_.tmp; then
  32.     echo 'x - still skipping mush.1'
  33. else
  34. echo 'x - continuing file mush.1'
  35. sed 's/^X//' << 'SHAR_EOF' >> 'mush.1' &&
  36. .\" Need a pipe example?
  37. .fi
  38. .sp
  39. .BR Warning :
  40. if redirection from the calling shell is used,
  41. no signature or fortune is added to outgoing mail.
  42. For example,
  43. .sp
  44. .ti +2
  45. % mush \-s report manager < report_file
  46. .sp
  47. In this command, mail is being sent to the user \*Qmanager\*U and the
  48. subject is set to \*Qreport\*U and the file \*Qreport_file\*U is being
  49. redirected as input.
  50. In this case, \fIno\fR signature is appended.
  51. .sp
  52. .IR Note :
  53. The `|' syntax for calling a program to sign the letter is a little
  54. counterintuitive and may change in future releases.
  55. .TP
  56. .B autosign2
  57. (String)
  58. This alternate signature is available for special cases where the default
  59. signature is not desired or if no signature is desired for special addresses
  60. or if only special addresses require a signature.
  61. The format for this variable is:
  62. .sp
  63. .ti +2
  64. autosign2 = \*Qaddress1, address2, ... : <signature>\*U
  65. .sp
  66. Each address can be one of these types:
  67. .RS
  68. .TP
  69. 1)  address
  70. Legal mailing addresses that do not contain comment
  71. fields (see the sections MAIL ADDRESSES for more information on legitimate
  72. mail addresses) match literally.
  73. .TP
  74. 2)  *username
  75. If the username is present on the recipient list, regardless of what
  76. remote site the user may reside on (including locally), the pattern matches.
  77. .TP
  78. 3)  !hostname !host1!host2...
  79. Any user who appears as a recipient matches the pattern provided he
  80. resides on the specified hostname.
  81. If a path of hosts is specified, then the user must reside on the last
  82. host of the specified path.
  83. .\" Nroff note: there is a problem with the @sub.domain line,
  84. .\" because .TP uses @ as a delimiter for width computations.
  85. .\" The .br manages to deal with this in this special case.
  86. .TP
  87. 4)  @sub.domain
  88. .br
  89. The user must reside on any host within the domain specified.
  90. Neither the user or the hostname needs to match; only the domain name must
  91. be required to match.
  92. .RE
  93. .\" Nroff note: RE takes us all the way out of TP, so step back in again.
  94. .RS
  95. .sp
  96. Example:
  97. .sp
  98. .nf
  99. .ti +2
  100. set autosign2 = \*Q!zipcode @sun.com @mit.edu *schaefer root: \--dan\*U
  101. .fi
  102. .sp
  103. This means that any mail sent to 1) anyone at zipcode, 2) anyone within
  104. the sun domain, 3) anyone within the mit domain, 4) Bart Schaefer
  105. (at any host anywhere -- even locally),
  106. and 4) root on the local machine only (or, root@local-machine-name)
  107. is signed with the \*Qalternate\*U signature.
  108. If any address on the
  109. recipient list fails to satisfy these four matches, the mail is
  110. signed by my regular signature.
  111. .sp
  112. One can have a local signature and a remote signature by specifying
  113. the autosign2 to include the hostname of the home machine the user
  114. is logged into.  Note the \*Qzipcode\*U example above.
  115. .sp
  116. The list of recipients, after alias expansion and comment removal, is
  117. then scanned and the following patterns are matched against those addresses
  118. specified in the autosign2 or fortunates variable according to these rules.
  119. .sp
  120. The signature description is the same as described by
  121. .B autosign
  122. variable.  The colon (:) separates the list of addresses from the signature
  123. description.  If there is no colon or the address list is missing, the
  124. entire string is considered the signature (except for the colon).
  125. .sp
  126. If
  127. .B autosign
  128. is not set, then autosign2 works ONLY if the tilde command \*Q~S\*U
  129. is specified.  In this way, a user may never have autosign set and just
  130. set autosign2 to be some signature value.  The user may then issue the
  131. tilde command to automatically sign the letter.
  132. If a list of addresses is given (terminated by a colon), then all
  133. recipients of the message must be in the list of addresses in autosign2;
  134. otherwise, the signature in \fBautosign\fR (if set) is used instead.
  135. A null signature in autosign2 does not sign the letter.
  136. .sp
  137. Example:
  138. .sp
  139. .nf
  140. .ti +2
  141. set autosign2 = "fred, barney, wilma, betty: ~/flintstone.sig"
  142. .fi
  143. .sp
  144. If a message is sent to:
  145. .sp
  146. .ti +2
  147. To: fred, wilma
  148. .sp
  149. Then the file ~/flintstone.sig is used.
  150. However, if the address are:
  151. .sp
  152. .ti +2
  153. To: barney, betty, bambam
  154. .sp
  155. Then autosign2 is not used because bambam is not in the list.
  156. .sp
  157. Note that mail sent via redirection from the calling shell does not
  158. sign letters or append fortunes.
  159. .RE
  160. .TP
  161. .B cdpath
  162. (String)
  163. Set to a string of pathnames separated by spaces to use when searching
  164. for a directory when the
  165. .B cd
  166. command is issued.
  167. The current directory is always checked before any directory in 
  168. .BR cdpath .
  169. .TP
  170. .B cmd_help
  171. (String)
  172. This variable gives the path name of the general help file, which is read
  173. by the
  174. .B help
  175. command.
  176. This variable is normally reset only in the system initialization files,
  177. when the default location of the help file has changed.
  178. .TP
  179. .B complete
  180. (String)
  181. Setting this variable enables word completion.
  182. The first character of the value of
  183. .B complete
  184. is used as the
  185. .IR "completion character" ;
  186. if
  187. .B complete
  188. is set, but not to a value, the escape character is used as the default.
  189. When the completion character is typed at the end of a word prefix,
  190. .I Mush
  191. interactively completes that word.
  192. If the prefix is not unique, the word is completed as far as possible
  193. and a bell sounds (see, however, the variable
  194. .BR quiet ).
  195. If the word contains filename metacharacters,
  196. .IR "all possible matches are completed" .
  197. If the list overflows the command line buffer, it gets truncated, so
  198. this feature should be used with care.
  199. Metacharacters recognized are the same as in
  200. .IR csh .
  201. .sp
  202. The second character of the value of
  203. .B complete
  204. is used as the completion listing character.
  205. When this character is typed, the possible completions are printed, and
  206. .I Mush
  207. prompts again with the original prefix.
  208. If
  209. .B complete
  210. is set to only a single character, completion listing is disabled;
  211. if it is set with no value, control-D (^D) is used as the default
  212. listing character.
  213. .sp
  214. If the first and second characters of
  215. .B complete
  216. are the same character, then
  217. .I Mush
  218. completes unique matches as usual
  219. However, partial matches produce a listing
  220. of the possible completions before completing as far as possible.
  221. This can become rather verbose.
  222. See the description of the variable
  223. .B fignore
  224. for ways to exclude filenames from completions.
  225. .sp
  226. Word completion is currently supported only for file names.
  227. Command name and alias completion may be added in a future version.
  228. Completion is not possible if the \-e (\-echo) flag was given.
  229. Tool mode does not check the value of
  230. .BR complete ,
  231. but instead provides simple completion only, using the ESC key.
  232. .TP
  233. .B compose_icon
  234. (Boolean/String)
  235. Set to a pathname for an alternate icon pixmap to use when the
  236. .I Mush
  237. message composition window is closed.
  238. If this variable is set but does not have a value, a default icon is used.
  239. If this variable is not set, the composition window is hidden when it
  240. is not open, and no icon appears.
  241. The \*QCompose\*U button is used to re-open the window in this case.
  242. .TP
  243. .B crt
  244. (Numeric)
  245. Set to a value that describes the number of lines a message
  246. must have before invoking the
  247. .B pager
  248. to view a message.
  249. .TP
  250. .B crt_win
  251. (Numeric)
  252. Set to the height (in lines) of the message display window in tool mode.
  253. Resetting this variable after the program is running will not change
  254. the height of the display, and may confuse other operations.
  255. .TP
  256. .B curses_help
  257. (String)
  258. This variable may be set to a space-separated list of curses mode command
  259. names (see the CURSES section for the possible choices).
  260. If set but without a value, a default list established by your
  261. .I Mush
  262. maintainer is used.
  263. When it is set, a display of the current bindings for the listed commands
  264. appears at the bottom of the screen in curses mode.
  265. This help display normally shortens the display of headers, but the
  266. user may explicitly scroll over the help display if he wishes to see
  267. more headers.
  268. .TP
  269. .B cwd
  270. (String)
  271. The
  272. .B "current working directory"
  273. string is automatically set upon startup of
  274. .I Mush
  275. and is reset each time the commands
  276. .B cd
  277. and
  278. .B pwd
  279. are called.
  280. It may be changed like any other shell variable, but this is not recommended.
  281. .TP
  282. .B date_received
  283. (Boolean)
  284. When message headers are printed, the date normally shown is
  285. the time and date the sender sent the message.  If this variable
  286. is set, then the date displayed is the date received.
  287. .sp
  288. When sorting messages by date, this variable is queried to determine
  289. whether the messages should be sorted by date sent or date received.
  290. .sp
  291. \fBWarning:\fR For mailers that store messages \fIwithout\fR a line
  292. that starts with \*QFrom \*U, this option does nothing.
  293. .TP
  294. .B dead\ \ 
  295. (String)
  296. File to use instead of dead.letter when interrupted mail is saved.
  297. May be set to a \fIunix\fR command by prefixing the value with `|'.
  298. For more information, see the variable
  299. .B nosave.
  300. .TP
  301. .B domain_route
  302. (Boolean/String)
  303. In combination with
  304. .BR auto_route ,
  305. this variable specifies that addresses containing a fully-qualified domain
  306. should be short-circuited to mail directly to the rightmost fully-qualified
  307. domain.
  308. If set boolean (not to a string), only short-circuiting is done.
  309. If set to a string, the address is rewritten to UUCP form and the value
  310. of the variable is prepended.
  311. Domain short-circuiting applies \fIonly\fR to addresses containing a
  312. fully-qualified domain, but short-circuits in spite of any path specified
  313. with the \-r flag of
  314. .B reply
  315. or through the string value of
  316. .B auto_route
  317. (thus possibly omitting the auto_route or \-r paths altogether).
  318. See
  319. .B auto_route
  320. for more information.
  321. .TP
  322. .B dot
  323. (Boolean)
  324. Causes
  325. .I Mush
  326. to accept a `.' on a line by itself,
  327. in addition to `^D', to terminate messages.
  328. .TP
  329. .B editor
  330. (String)
  331. Specifies the editor to use when the \*Q~e\*U escape or the
  332. .B edit
  333. command is used.
  334. Default is the value of the environment string EDITOR or the variable
  335. .BR visual .
  336. .TP
  337. .B edit_hdrs
  338. (Boolean)
  339. When in letter-composition mode (via \fBmail\fR or \fBreply\fR, etc),
  340. the headers of the outgoing message are stored in the same buffer as
  341. the text of the letter.
  342. So, if the editor is called to edit the message
  343. buffer, the headers of the message can be edited as well.
  344. However, there are some restrictions.
  345. .sp
  346. There must be a To: header.
  347. Without this, 
  348. .I Mush
  349. does not deliver the letter.
  350. Instead, the editor must be reentered and a To: header with
  351. a valid recipient must be inserted.
  352. A valid Cc: header does not remove this restriction.
  353. You may have as many To: and Cc: headers as you like.
  354. .sp
  355. The From: header normally should not be changed.
  356. If you change this header to an address that
  357. .I Mush
  358. is unable to identify as
  359. authentic, the original From: header is silently put back.
  360. .sp
  361. The Date: header is always replaced by one with a more accurate
  362. time and date stamp.
  363. Therefore, changing or removing this header has no effect.
  364. .sp
  365. You cannot add a Status: header, and blank headers are dropped.
  366. For example, if an empty Cc: header exists, the header does
  367. not show up in the outgoing message.
  368. Therefore, leaving empty headers has no effect.
  369. .sp
  370. Aliases specified on the command line are expanded and put into the
  371. message buffer in their expanded form regardless of the value of
  372. .B no_expand.
  373. However, if the user changes the headers using the editor and specifies
  374. aliases, those aliases are not expanded if
  375. .B no_expand
  376. is set.
  377. Otherwise, they are expanded as usual.
  378. .sp
  379. The headers Bcc: and Fcc: are removed as expected.
  380. .sp
  381. One added side effect of
  382. .B edit_hdrs
  383. is that you can add an Fcc: header to specify a \*QFile Carbon Copy\*U.
  384. This must be a pathname to a file or program.
  385. For programs, the pathname must be preceded by a pipe character (|).
  386. Note that \fIall\fR addresses on the Fcc: line that do not begin with `|'
  387. are interpreted as file names; don't put other kinds of addresses there.
  388. .sp
  389. When using
  390. .B edit_hdrs,
  391. certain tilde escapes don't work.
  392. Specifically, any tilde escape that allows you to add or set headers or to
  393. empty the file are inactive.
  394. These functions are to be done in the editor only.
  395. .sp
  396. Once a letter is being edited,
  397. .B edit_hdrs
  398. cannot be set or unset; the user must end the letter (either
  399. by sending it or forcefully terminating it) first.
  400. .sp
  401. Header editing is required (and happens automatically) when using the
  402. \*QCompose\*U tool mode item.
  403. .TP
  404. .B escape
  405. (Character)
  406. When composing a mail message (not in an editor), and the
  407. .B escape
  408. character is the first character on the line, the next character
  409. is examined and a corresponding function associated with that
  410. .I "escape command"
  411. is executed.
  412. See
  413. .B "tilde escapes"
  414. for more information.
  415. .TP
  416. .B fignore
  417. (String)
  418. This variable is tested when filename completion is used (see the variable
  419. .B complete
  420. for details).
  421. The value of
  422. .B fignore
  423. may be a list of filename extensions (\*Q.c\*U, \*Q.o\*Q, etc.), a list
  424. of filename patterns containing metacharacters (*?{}[]), or a mixture of
  425. the two.
  426. Each element in the list must be separated from the others by a space.
  427. When a filename completion occurs, any filenames with the extensions
  428. listed in
  429. .BR fignore ,
  430. or matching the patterns given there, are omitted from the completion.
  431. .sp
  432. For example,
  433. .sp
  434. .ti +4
  435. set fignore = ".o .s [Mm]ake*"
  436. .sp
  437. causes any filename ending in \*Q.o\*U or \*Q.s\*U, and any filename
  438. beginning with \*QMake\*U or \*Qmake\*U, to be excluded from completions.
  439. .sp
  440. If all files in the current directory match the extensions or patterns,
  441. .B fignore
  442. is disabled and completion occurs.
  443. For this reason, it is usually not a good idea to include \*Q*\*U in the list.
  444. .TP
  445. .B folder
  446. (String)
  447. The folder variable is set to the path of a directory where folders are kept.
  448. This path is used by various commands to expand the `+' metacharacter (see
  449. the
  450. .B folder
  451. command for details).
  452. \*Q~/Mail\*U is the default expansion of `+'.
  453. .TP
  454. .B fortune
  455. (Boolean/string)
  456. If fortune is set, a random fortune is appended to the end of
  457. all outgoing mail using the
  458. .IR UNIX (TM)
  459. command
  460. .B /usr/games/fortune
  461. (may vary from system to system).
  462. If fortune is set to something that starts with
  463. a `\-', then it is interpreted as a flag to fortune (e.g., \*Q\-o\*U).
  464. If
  465. .B fortune
  466. starts with a `/', then the program described by
  467. the string is executed (thus not doing fortune at all, if you want).
  468. By default,
  469. .I "fortune \-s"
  470. (short fortunes) is used.
  471. .TP
  472. .B fortunates
  473. (String)
  474. When fortunes are added to messages, sometimes it is desirable to
  475. make sure that only a selected group of people get a fortune since
  476. certain people may not understand the messages at the end of your
  477. mail.  Therefore, you can set a list of addresses (either pure addresses
  478. or aliases that are expanded to addresses) to be the only people who
  479. receive fortunes if one is to be appended.  Therefore,
  480. if the To: and Cc: lines contain only address listed in this string
  481. variable, then a fortune is appended to the message.
  482. If those lists contain names that are not on the fortunates
  483. list, then no fortune is added.
  484. This cannot be overridden; using the
  485. tilde command \*Q~F\*U does not force a fortune to be added unless the
  486. individuals on the recipient list are all included in the fortunates
  487. list.  The list is made up of addresses or aliases separated by spaces or
  488. commas.
  489. .I "NOTE: fortune must be set in order for fortunates to work."
  490. .TP
  491. .B hangup
  492. (Boolean)
  493. If this variable is set,
  494. .I Mush
  495. updates your folder before exiting when it receives a SIGHUP signal.
  496. This is useful if you frequently read mail when dialed in over a noisy phone
  497. line that often drops carrier.
  498. .sp
  499. .IR WARNING \|:
  500. Certain errors are ignored during this update, because it is presumed to be
  501. impossible to query the user for instructions.
  502. Except in the event of a write error, the folder is forced to contain
  503. exactly those messages that were not deleted at the time of the hangup.
  504. In particular, this means that if an error occurs when loading new mail before
  505. the update, the new mail is lost.
  506. Write errors still cause both the working tempfile and as much of the
  507. folder as possible to be preserved.
  508. .TP
  509. .B hdr_format
  510. (String)
  511. This variable controls the format of the headers displayed by the
  512. .B headers
  513. command and in the curses and tool modes.
  514. The format style of this variable string is similar to printf in C.
  515. When printing the information, the variable is evaluated and each
  516. character in the string is echoed unless a `%' character is
  517. encountered.
  518. If one is found, the following string substitutions are made:
  519. .sp
  520. .in +2
  521. .nf
  522. .ta 0.5i
  523. %a    address of the author
  524. %c    number of characters (bytes) in the message
  525. %f    entire \*QFrom:\*U field (author)
  526. %l    number of lines in the message
  527. %i    the message-id (may not be present)
  528. %n    name of the author
  529. %s    subject of the message
  530. %t    \*QTo:\*U field (recipients)
  531. %u    user name (login) of the author
  532. %d    date and time of the message
  533. %T    time only of the message
  534. %N    day number of the month of the message
  535. %W    day of the week (Sun, Mon, etc.)
  536. %M    month name of the message
  537. %Y    year of the message
  538. %y    last two digits of %Y
  539. %Z    time zone of the message
  540. \\n    a newline
  541. \\t    a tab
  542. .fi
  543. .in -2
  544. .sp
  545. A field width specifier may be used in all options.
  546. Thus, \*Q%20f\*U prints the first 20 characters of the from line.
  547. No matter what the formatting string, the message number is printed,
  548. possibly preceded by a `>' (for current message).
  549. .sp
  550. The \*Qaddress\*U and \*Qname\*U of the author
  551. are extracted from the \*QFrom:\*U field of the message.
  552. The name may be given in parentheses and
  553. the rest of the line is the address, or the address is given in angle
  554. brackets (`<' and `>') and the rest of the line is the name.
  555. Sometimes the address is the only thing on the line,
  556. in which case the name and address are the same.
  557. .sp
  558. A special format is also provided to obtain the contents of any header
  559. not listed above.
  560. If a format of the form \*Q%?header-name?\*U (both leading and following `?'
  561. characters are required) appears in the value of 
  562. .BR hdr_format ,
  563. the named header is looked up.
  564. For example,
  565. .sp
  566. .ti +4
  567. set hdr_format = "%a %n %?phone?"
  568. .sp
  569. causes the electronic address, name, and (if a \*QPhone:\*U header is present)
  570. phone number of the sender to be displayed.
  571. .TP
  572. .B history
  573. (Numeric)
  574. This variable is set to the number of commands the shell interface
  575. remembers.  It is just like the history variable used in
  576. .I csh.
  577. If unset, the last command can always be referenced, but none other.
  578. .TP
  579. .B hold\ \ 
  580. (Boolean)
  581. Normally, when updating the system folder, read messages are saved in
  582. your mbox (except those marked as preserved).
  583. Setting
  584. .B hold
  585. prevents this from happening, and messages remain in the sytem folder
  586. (usually /usr/spool/mail/username or /usr/mail/username).
  587. This does not apply to folders other than the system folder, obviously.
  588. .TP
  589. .B home\ \ 
  590. (String)
  591. This variable describes the user's home directory.
  592. The variable is initialized to the value of the environment variable HOME,
  593. but can be modified at any time during the
  594. .I Mush
  595. session.
  596. The home directory is the same directory where temporary
  597. files are kept for editing and so forth.
  598. If the home directory cannot be found or read/write access is denied, an
  599. alternate directory, typically /tmp, is used.
  600. .TP
  601. .B hostname
  602. (String)
  603. This is the name of your computer.
  604. It is used to compose a correct \*QFrom:\*U line for use with Mail Transport
  605. Agents that do not create this header automatically.
  606. This aids the recipients of your mail in replying to your messages.
  607. The hostname is also used in auto-routing.
  608. .sp
  609. Note: the user should not have to set
  610. this variable since it should be set automatically by the system.  However,
  611. it may happen that the system's hostname cannot be queried and the user may
  612. have to set this variable manually.
  613. .TP
  614. .B ignore_bang
  615. (Boolean)
  616. If set,
  617. .I Mush
  618. ignores the `!' character as a history reference.
  619. Note that this severely limits use of the
  620. .B cmd
  621. facility, which depends upon history references for argument substitutions.
  622. .TP
  623. .B ignoreeof
  624. (Boolean/string)
  625. If set, `^D' does not cause an exit from
  626. .IR Mush .
  627. If set to a string, that string is executed as a command
  628. when `^D' is typed.
  629. This does not effect termination of messages under the
  630. .B mail
  631. and
  632. .B reply
  633. commands.
  634. .TP
  635. .B indent_str
  636. (String)
  637. When including messages into the text of a letter you are editing,
  638. each line of the messages is preceded by the value of
  639. .BR indent_str .
  640. The value may contain formatting characters as described for
  641. .BR hdr_format ,
  642. which are expanded from the headers of the message that is being indented.
  643. If it is unset, the message body is indented by the string \*Q> \*U.
  644. See also the variables
  645. .B pre_indent_str
  646. and
  647. .BR post_indent_str .
  648. .TP
  649. .B in_reply_to
  650. (String)
  651. This variable may be set to a string that completes the
  652. header \*QIn-Reply-To:\*U.
  653. The format of this string is identical to the options for the variable
  654. .BR hdr_format .
  655. .sp
  656. For example, if the user responds to a message
  657. from Dan Heller that was sent on October 21, 1987, at 10:39pm, with
  658. .B in_reply_to
  659. set to the string
  660. .nf
  661. .in +2
  662. .sp
  663. %n's message as of %d.
  664. .sp
  665. .ti -2
  666. the header line
  667. .sp
  668. In-Reply-To: Dan Heller's message as of Oct 21, 1987, 10:39pm.
  669. .in-2
  670. .fi
  671. .sp
  672. is added to the message.
  673. .TP
  674. .B keepsave
  675. (Boolean)
  676. If set, the commands
  677. .B save
  678. and
  679. .B write
  680. do
  681. .I not
  682. mark messages for deletion.
  683. .TP
  684. .B known_hosts
  685. (String)
  686. Used in conjunction with the variable
  687. .BR auto_route ,
  688. this variable is set to a list of hosts, separated by spaces, tabs,
  689. and/or commas, and describes
  690. the hosts with whom you know your machine shares UUCP connections.
  691. When replying to mail, the return path constructed will often have hostnames
  692. that your site could contact directly, but instead
  693. the mail is routed through a number of different machines first.
  694. .sp
  695. For example, if you respond to mail that contains the path
  696. .sp
  697. .ti +2
  698. unicom!pixar!root
  699. .sp
  700. but your know your machine already calls pixar, then sending the mail
  701. to unicom first is unnecessary.
  702. If you have set your known_hosts string to include pixar in its list,
  703. the resulting address looks like
  704. .sp
  705. .ti +2
  706. pixar!root
  707. .sp
  708. Also see the command
  709. .B replyall
  710. for more information on constructing correct return addresses.
  711. .TP
  712. .B logfile
  713. (String)
  714. Set to a filename which logs the headers of outgoing messages.  The message
  715. body of the message is not logged, unlike the copy stored in the
  716. .B record
  717. filename.
  718. The logfile can be read as a folder to scan for the fact that
  719. messages have been sent.
  720. If \fBlogfile\fR and \fBrecord\fR are both set,
  721. then the logfile and the record files match closely.
  722. In this case, the record file can be quickly scanned by scanning the log
  723. file instead.
  724. .sp
  725. If set, but not to a string, the log file defaults to ~/mail.log.
  726. .TP
  727. .B mail_icon
  728. (String)
  729. Set to a pathname for an alternate icon pixmap to use when the
  730. .I Mush
  731. tool is closed.
  732. The number of messages in the mailbox is displayed as an icon label unless
  733. the string
  734. .I iconlabel
  735. appears as one of the values of the variable
  736. .BR quiet .
  737. See also the variable
  738. .B newmail_icon
  739. for the icon displayed when new mail arrives or is present.
  740. .TP
  741. .B mbox\ \ 
  742. (String)
  743. Set to the pathname of a file
  744. .I Mush
  745. should use as the default folder for read mail.
  746. When
  747. .B mbox
  748. is not set, \*Q~/mbox\*U is used.
  749. .TP
  750. .B metoo
  751. (Boolean)
  752. When replying to mail, you are normally deleted from the list of
  753. recipients.
  754. If metoo is set, you remain on the list.
  755. See the 
  756. .B alternates
  757. command for information on how
  758. .I Mush
  759. determines whether you are on the list.
  760. .TP
  761. .B mil_time
  762. (Boolean)
  763. Whenever the time is displayed in a message header or in the prompt,
  764. it can be displayed in either 12-hour am/pm format, or in 24 hour
  765. military time format.
  766. The default is the 12 hour format, but can be
  767. reset to use the 24 hour format by setting this variable.
  768. .TP
  769. .B msg_win
  770. (Numeric)
  771. Set to the height (in lines) of the message composition (editing) window in
  772. tool mode.
  773. .TP
  774. .B newline
  775. (Boolean/string)
  776. When set, an empty command (carriage return with no text) typed at the
  777. line-mode prompt is ignored.
  778. If set to a string, that string is executed as a command when a
  779. carriage return is typed.
  780. Otherwise, carriage return acts as an implicit
  781. .B next
  782. command, and prints the next undeleted message.
  783. .TP
  784. .B newmail_icon
  785. (String)
  786. Set to a pathname for an alternate icon pixmap to use
  787. when new mail is available.
  788. .TP
  789. .B no_expand
  790. (Boolean)
  791. When a
  792. .I Mush
  793. alias is used to reference a list of addresses, the list is expanded on
  794. the To: and Cc: lines to indicate the complete list of all the recipients of
  795. the message.
  796. When no_expand is set, aliases are not expanded and the headers
  797. reflect the same information as typed by the user.
  798. .TP
  799. .B no_hdrs
  800. (Boolean)
  801. If set, this variable tells 
  802. .I Mush
  803. not to include your personalized mail headers in messages.
  804. This does not unset your headers, it just disables them.
  805. .TP
  806. .B no_reverse
  807. (Boolean)
  808. In curses mode and in the tool mode, reverse video is not used to indicate the 
  809. .I "current message"
  810. if this variable is set.
  811. In the tool mode, if reverse video is not in use,
  812. text is displayed in \*Qbold\*U.
  813. .TP
  814. .B nonobang
  815. (Boolean)
  816. If this variable is set, history references that don't match anything
  817. are left unexpanded, rather than generating error messages.
  818. This is useful if you want argument referencing in
  819. .B cmd
  820. expansions, but do
  821. not want to remember to escape every `!' you type in UUCP addresses.
  822. It is also recommended for use with curses mode, because history is not
  823. kept for line mode escapes from that interface.
  824. .TP
  825. .B nosave
  826. (Boolean)
  827. When composing a letter, the user can terminate the letter without sending
  828. it by using the tilde escape \*Q~q\*U or by sending two \*Qinterrupt\*U
  829. signals.
  830. When the message is terminated, a copy of it is saved to the
  831. file \*Qdead.letter\*U in the user's home directory or to the file described
  832. by the variable
  833. .BR dead .
  834. If the variable
  835. .B nosave
  836. is set, then a backup copy of the message is not saved.
  837. .TP
  838. .B output
  839. (Read-only string)
  840. This variable holds a message list representing the output of the last
  841. successful command.
  842. This is useful for recovering from broken pipes or to capture the output
  843. of a command without affecting the information it displays (some commands
  844. limit or suppress output when used in a pipeline).
  845. Commands which return an error status (see the variable
  846. .BR status )
  847. do not affect the value of
  848. .BR output ,
  849. but successful commands that return no message list clear it.
  850. Also, many curses mode commands return an error status to indicate that
  851. the display has been altered, even if no actual error occurred.
  852. This variable is thus most useful in line mode and in scripts.
  853. .TP
  854. .B pager
  855. (String)
  856. If a message is longer than the number of lines that the variable
  857. .B crt
  858. is set to, then this program is executed to view a message.
  859. If the user does not have this variable set, the user's environment PAGER
  860. is checked.
  861. If this isn't set, then the default value for pager (set up
  862. by the system manager) is used.
  863. This may or may not be the internal pager.
  864. To use the internal pager, you may set the variable pager to
  865. .RI \*Q internal \*U
  866. or to a null string.
  867. .TP
  868. .B pre_indent_str
  869. (String)
  870. If this variable is set, when including the body of a message into an outgoing
  871. mail message (using the \-i option to
  872. .I reply
  873. or
  874. .IR mail ,
  875. or when using the \*Q~i\*U escape),
  876. a line preceding the first line of
  877. included text is printed using the string value of the variable.
  878. This string uses the same printf style formatting characters as the
  879. .B hdr_format
  880. variable.
  881. For example, you could set
  882. .B pre_indent_str
  883. as follows:
  884. .sp
  885. .ti +2
  886. set pre_indent_str = '[In the message entitled "%s", on %7d\\n %n writes:]'
  887. .sp
  888. You can then include a message body using \*Q~i\*U, and you might
  889. get something like this:
  890. .sp
  891. .in +2
  892. .nf
  893. [In the message entitled "This is a test.", on Jan 19,
  894. X Dan Heller writes:]
  895. > This is a test message to show how
  896. > pre_indent_str might be used.
  897. .ti -2
  898. .sp
  899. .fi
  900. This example assumes that the string value of
  901. .B indent_str
  902. is not set.
  903. .TP
  904. .B post_indent_str
  905. (String)
  906. This variable has the same function as
  907. .B pre_indent_str
  908. except that the string is inserted into the message body
  909. .I after
  910. the text of the included message rather than before.
  911. The purpose of this variable is to complement the string described by
  912. the variables
  913. .B pre_indent_str
  914. and
  915. .BR indent_str .
  916. For example,
  917. .sp
  918. .in +2
  919. .nf
  920. set pre_indent_str = "/*"
  921. set indent_str = " * "
  922. set post_indent_str = " */"
  923. .sp
  924. .ti -2
  925. An included message might look something like this:
  926. .sp
  927. /*
  928. X * This is a test message to show how
  929. X * post_indent_str and pre_indent_str
  930. X * can work together with indent_str.
  931. X */
  932. .fi
  933. .in -2
  934. .TP
  935. .B printer
  936. (String)
  937. Used to set the default printer for the lpr command.
  938. .TP
  939. .B print_cmd
  940. (String)
  941. This string should describe a
  942. .IR UNIX (TM)
  943. command other than "lpr" for sending
  944. messages to the line printer.
  945. Some people may choose to use a device independent
  946. troff style program, but virtually any UNIX command suffices.
  947. Common usage might include:
  948. .sp
  949. .ti +2
  950. set print_cmd = 'ptroff \-ms \-Plp'
  951. .ti +2
  952. lpr .\-$
  953. .sp
  954. This command sends all messages from the current message to the last
  955. message through the ptroff command, supplying the appropriate arguments.
  956. .TP
  957. .B prompt
  958. (String)
  959. You can set your prompt to tell you many different pieces of information.
  960. By default, the prompt is set to the string
  961. .sp
  962. .ti +2
  963. \*QMsg %m of %t: \*U
  964. .sp
  965. If you have 10 messages and your current message is 5, then your prompt
  966. looks like:
  967. .sp
  968. .ti +2
  969. Msg 5 of 10:
  970. .sp
  971. The string value that prompt is set to is printed as your prompt.
  972. If the string contains a `%', then that character is
  973. ignored, the next character is evaluated and an appropriate
  974. value is printed in its place:
  975. .sp
  976. .nf
  977. .in +2
  978. .ta 0.5i
  979. %F    full path name of the current folder
  980. %f    name of the current folder (tail of %F)
  981. %m    \*Qcurrent message\*U number
  982. %t    total number of messages
  983. %n    number of \*Qnew\*U messages
  984. %u    number of unread messages
  985. %d    number of deleted messages
  986. %T    current time (hours and seconds)
  987. %N    today's date (Number of the day in the month)
  988. %W    weekday name (Sun, Mon, Tue, ...)
  989. %M    current month
  990. %Y    this year
  991. %y    last two digits of %Y
  992. \\n    a newline
  993. \\t    a tab
  994. .fi
  995. .in -2
  996. .sp
  997. To include the values of variables in the prompt string, the format
  998. \*Q%$variable\*U can be used, where
  999. .I variable
  1000. is the name of any variable.
  1001. If the `$' character is
  1002. .I not
  1003. preceded by a `%', it is included literally,
  1004. rather than introducing a variable name.
  1005. Thus, two equivalent ways of including the name of the current folder
  1006. in your prompt are:
  1007. .nf
  1008. .in +4
  1009. set prompt = '%F> '
  1010. set prompt = '%$thisfolder> '
  1011. .in -4
  1012. .fi
  1013. .sp
  1014. Note the use of single quotes to prevent the value of
  1015. .B thisfolder
  1016. from being expanded at the time the prompt is set.
  1017. The only difference between these settings is that \*Q%F\*U adds the
  1018. string \*Q[read-only]\*U if the folder was loaded in read-only mode.
  1019. .TP
  1020. .B quiet
  1021. (Boolean/Multivalued)
  1022. This variable tells
  1023. .I Mush
  1024. to be quiet in various circumstances.
  1025. If set, but not to any values, the currently running version of
  1026. .I Mush
  1027. is not printed on startup.
  1028. Otherwise,
  1029. .B quiet
  1030. may be set to one or more words separated by spaces or commas.
  1031. Currently recognized words are:
  1032. .sp
  1033. .nf
  1034. .ta 1.5i
  1035. .in +4
  1036. .\" \& escapes are to make obvious the tab after each word
  1037. autosign    Suppress messages when appending signature.
  1038. await\&\&    Suppress \fBawait\fR's bell for new mail.
  1039. complete    Suppress word completion error bells.
  1040. fkey\&\&    Suppress warnings about unset function keys.
  1041. fortune\&    Suppress messages when appending fortune.
  1042. iconlabel    Suppress showing message count as icon label.
  1043. newmail\&    Suppress new mail notification messages.
  1044. pick\&\&    Suppress descriptions of pick searches.
  1045. startup\&    Suppress the startup message.
  1046. tool\&\&    Suppress tool mode bell for new mail.
  1047. .in -4
  1048. .fi
  1049. .sp
  1050. Error conditions for signatures and fortunes are still reported.
  1051. See the variables
  1052. .BR autosign ,
  1053. .BR complete ,
  1054. and
  1055. .B fortune
  1056. for more details.
  1057. The
  1058. .I newmail
  1059. setting does not prevent automatic inclusion of new mail, it only
  1060. suppresses the announcement of its arrival, including tool mode bells.
  1061. The
  1062. .I fkey
  1063. setting applies only to tool mode.
  1064. .TP
  1065. .B realname
  1066. (String)
  1067. Set to the name of the user.
  1068. The name is initialized to the value of the environment variable
  1069. .B NAME
  1070. upon invocation of the program.
  1071. If that isn't set, then the name is obtained from the password file if
  1072. available.
  1073. If this variable wants to be reset or changed after the
  1074. program has started, the user should issue the command:
  1075. .sp
  1076. .ti +2
  1077. set realname = "Your name here"
  1078. .TP
  1079. .B record
  1080. (String)
  1081. Set to the name of a file to record all outgoing mail.
  1082. This should be a full pathname or the current directory is searched.
  1083. The pathname may begin with `+' (indicating the user's ~/Mail directory
  1084. or the value of the 
  1085. .B folder
  1086. variable) or with a `~' (or \*Q~user\*U)
  1087. indicating the user's home directory.
  1088. .TP
  1089. .B reply_to_hdr
  1090. (String)
  1091. When replying to mail,
  1092. .I Mush
  1093. searches for return paths from the message by searching for
  1094. the message headings \*QReply-to\*U, \*QFrom:\*U, and \*QReturn-path\*U,
  1095. in that order.
  1096. If none are found, then the first line of the
  1097. message created by the delivery system is parsed and the address
  1098. given there is used.  This special message header is created by most
  1099. mail delivery programs, but not all of them (MMDF, for one).  This line
  1100. is called the
  1101. .B From_
  1102. header because it is a colon-less header, but contains the return address
  1103. of the author of the message.
  1104. If the variable
  1105. .B reply_to_hdr
  1106. is set to a list of headers (delimited by spaces or commas), then that list
  1107. is searched.  If none of the headers listed in the variable exist
  1108. in the message, then a warning message is printed and the default
  1109. headers are used.  The special case From_ header can be specified
  1110. as one of the headers to search for.
  1111. .sp
  1112. .nf
  1113. .ti +2
  1114. set reply_to_hdr = "sender reply-to return-path from_"
  1115. .fi
  1116. .sp
  1117. This example shows that 
  1118. .I Mush
  1119. searches (in order) the headers listed in the reply_to_hdr variable.
  1120. If one header isn't found, then
  1121. .I Mush
  1122. looks for the next in the list.
  1123. If none of the headers in the list are found, the default headers (mentioned
  1124. above) are searched.
  1125. The last header listed in the example is the special \*QFrom \*U header.
  1126. Also see the
  1127. .B reply
  1128. command.
  1129. .TP
  1130. .B save_empty
  1131. (Boolean)
  1132. Normally, when all messages in a folder are deleted and the user updates
  1133. the folder or changes to a new folder, the empty folder is deleted.
  1134. .B save_empty
  1135. prevents the folder from being deleted and it is left zero length.
  1136. Note: the main system mailbox is never deleted, even when empty.
  1137. .TP
  1138. .B screen
  1139. (Numeric)
  1140. May be set to the number of message headers to display at a time in the
  1141. line and curses modes.
  1142. .TP
  1143. .B screen_win
  1144. (Numeric)
  1145. May be set to the number of message headers to display in the tool mode.
  1146. A subwindow is created for message headers, and its size is large
  1147. enough to hold $screen_win headers.
  1148. Resetting this variable after the program is running will not change
  1149. the height of the display, and may confuse other operations.
  1150. .TP
  1151. .B sendmail
  1152. (String)
  1153. If set, the program and arguments described by this variable
  1154. are executed to actually deliver mail sent by
  1155. .I Mush.
  1156. .TP
  1157. .B show_deleted
  1158. (Boolean)
  1159. If true, deleted message headers are displayed along with
  1160. other messages (`*' indicates a deleted message) for the \fBheaders\fR
  1161. command.  Also, deleted messages can be displayed using any command which
  1162. displays a message.
  1163. In curses mode, this variable is ignored and deleted messages are always
  1164. displayed with other messages to facilitate undeleting messages.
  1165. .TP
  1166. .B show_hdrs
  1167. (Multivalued)
  1168. Set to a list (space and/or comma separated) of headers that are to be the
  1169. only headers displayed when viewing a message.
  1170. This variable disables the headers suppressed by the
  1171. .B ignore
  1172. command.
  1173. For example,
  1174. .sp
  1175. .ti +2
  1176. set show_hdrs = \*Qfrom date subject to cc\*U
  1177. .sp
  1178. only displays the headers
  1179. .B From: Date: Subject: To: Cc:
  1180. in their entirety.
  1181. .TP
  1182. .B sort\ \ 
  1183. (Boolean/string)
  1184. The value of this variable is the same as the arguments to the
  1185. .B sort
  1186. command.
  1187. This variable is used for the initialization file to presort
  1188. mail in the system mailbox upon entering
  1189. .IR Mush .
  1190. See the COMMANDS section for more information.
  1191. .TP
  1192. .B squeeze
  1193. (Boolean)
  1194. Whenever messages are read, piped, or saved, if this variable is set,
  1195. all consecutive blank lines are squeezed into one blank line.
  1196. .TP
  1197. .B status
  1198. (Read-only numeric)
  1199. This variable records the success or failure status of the most recently
  1200. executed command.
  1201. All line-mode commands return 0 (zero) for success and a negative value for
  1202. error.
  1203. Some curses mode commands return an error status to indicate that the
  1204. display has been corrupted, even when no actual error has occurred.
  1205. This variable is most useful in scripts to test the success of an operation
  1206. before proceeding.
  1207. .TP
  1208. .B tmpdir
  1209. (String)
  1210. This variable describes the path to use as the directory
  1211. for all tempfiles that
  1212. .I Mush
  1213. uses.  By default, the user's home directory is used.  If that
  1214. cannot be accessed, a directory writable by all is used (typically, /tmp).
  1215. If \fBtmpdir\fR is set, then it is used first.
  1216. .TP
  1217. .B thisfolder
  1218. (Read-only string)
  1219. The full path name of the current mailbox.
  1220. This variable cannot be modified or displayed by the
  1221. .B set
  1222. command; its value changes whenever a new folder is entered with the
  1223. .B folder
  1224. command.
  1225. During sourcing of the initialization files,
  1226. .B thisfolder
  1227. is not set, because the current folder has not yet been read.
  1228. If you refer to \*Q$thisfolder\*U in an initialization file
  1229. .RI ( e.g. ,
  1230. .IR .mushrc ),
  1231. be sure to do so inside an \*Qif $?thisfolder\*U test.
  1232. .TP
  1233. .B toplines
  1234. (Numeric)
  1235. The number of lines of a message to print when the
  1236. .B top
  1237. command is issued.  If unset, the value of
  1238. .B crt
  1239. determines the number of lines printed.
  1240. Note that the message body only is printed when using the
  1241. .B top
  1242. command; message headers are not counted as lines since they are not displayed.
  1243. .TP
  1244. .B unix\ \ 
  1245. (Boolean)
  1246. If set, commands that are not
  1247. .I Mush
  1248. commands are considered to be
  1249. .IR UNIX (TM)
  1250. commands.
  1251. This removes the inconvenience of requiring the user to do
  1252. shell escapes to do quick
  1253. .I UNIX
  1254. commands.
  1255. For systems that support job control, SIGTSTP stops the entire
  1256. .I Mush
  1257. shell as well as the process being executed.
  1258. When SIGCONT is delivered, both receive the
  1259. signal and
  1260. .I Mush
  1261. continues to wait for the job to finish.
  1262. .sp
  1263. Due to the lack of real job control, input/output redirection and UNIX command
  1264. piping, this mode of
  1265. .I Mush
  1266. is not intended to be used as a login shell.
  1267. .sp
  1268. If a
  1269. .I Mush
  1270. command name conflicts with a
  1271. .I UNIX
  1272. command, use the command
  1273. .B sh
  1274. to force execution as a shell command or use the full pathname of the command
  1275. (e.g. starting with a '/').
  1276. .sp
  1277. .BR Warning :
  1278. .I "Be aware that Mush pipes transmit message lists, NOT TEXT."
  1279. You cannot pipe the output of
  1280. .I UNIX
  1281. commands to or from
  1282. .I Mush
  1283. commands or other
  1284. .I UNIX
  1285. commands with the
  1286. .I Mush
  1287. pipe mechanism.  You can, however, pipe
  1288. .I Mush
  1289. commands to a final UNIX
  1290. command (see the \fBpipe\fR command for more information).
  1291. UNIX commands should be simple commands without pipes or metacharacters.
  1292. .sp
  1293. This feature is not available for the tool mode.
  1294. .TP
  1295. .B verbose
  1296. (Boolean)
  1297. Passes verbose flag to mail delivery systems when sending mail, and
  1298. causes
  1299. .I Mush
  1300. to print additional information about the sending process.
  1301. .TP
  1302. .B verify
  1303. (Boolean/Multivalued)
  1304. This variable causes mush to request confirmation of certain actions.
  1305. If set only as a boolean (no string value), 
  1306. .B verify
  1307. asks just before sending mail whether you want to send, continue
  1308. editing, or abort the message altogether.
  1309. Otherwise,
  1310. .B verify
  1311. can be set to one or more of these words:
  1312. .sp
  1313. .nf
  1314. .ta 1.25i
  1315. .in +4
  1316. .\" \& escapes are to make obvious the tab after each word
  1317. mail\&\&    Confirm sending of mail (as above).
  1318. save\&\&    Confirm save-item selections (tool only).
  1319. .in -4
  1320. .fi
  1321. .sp
  1322. Appending of messages to files that are not folders is verified regardless
  1323. of the setting of this variable.
  1324. .TP
  1325. .B version
  1326. (Read-only String)
  1327. The value of this variable is the version string, printed by
  1328. .I Mush
  1329. at startup (unless
  1330. .B quiet
  1331. is set) and included in the \*QX-Mailer:\*U header in messages.
  1332. .TP
  1333. .B visual
  1334. (String)
  1335. May be set to the visual editor to use when ~v is specified.
  1336. Default is vi or the environment string VISUAL.
  1337. The visual editor is invoked by the \-e arguments to the
  1338. commands, 
  1339. .B respond
  1340. and
  1341. .BR mail .
  1342. .TP
  1343. .B warning
  1344. (Boolean)
  1345. If set, warning messages are printed when:
  1346. .in +4
  1347. .ti -2
  1348. \(bu A command line alias (\*Qcmd\*U) looks like a command.
  1349. .br
  1350. For example,
  1351. .ti +2
  1352. cmd mail 'set fortune; \\mail'
  1353. .ti +2
  1354. cmd respond 'unset fortune; \\respond;'
  1355. .ti -2
  1356. \(bu The date format of a message is unknown.
  1357. .br
  1358. The date of a message is taken from the \*QDate:\*U header.
  1359. If the date on that header is unknown, other headers are searched for a
  1360. valid date format until a legal one is found.
  1361. This date may not be
  1362. correct in that it was the date the message was received, not sent.
  1363. .ti -2
  1364. \(bu A variable is unset without first being set.
  1365. .br
  1366. For example, if you give the command
  1367. .ti +2
  1368. unset metoo
  1369. and the variable
  1370. .B metoo
  1371. is not set, you are notified that the variable is not defined.
  1372. .ti -2
  1373. \(bu No header can be found for a digest article.
  1374. .br
  1375. This occurs when the
  1376. .B undigest
  1377. command encounters what appears to be an article separator but cannot
  1378. find a \*QFrom:\*U or \*QDate:\*U header in the following text.
  1379. .in -4
  1380. .sp
  1381. The intent is so that users who are used to their own environments
  1382. become aware of changes in other environments should they be forced
  1383. to use them.
  1384. There may also be warning messages of failed routines
  1385. or assertions that are not fatal enough to interrupt normal running
  1386. of the program.
  1387. .TP
  1388. .B wrap\ \ 
  1389. (Boolean)
  1390. Normally, when the last message is deleted, the current message
  1391. pointer remains pointing to the last message and the user is done
  1392. reviewing his mail.
  1393. If the
  1394. .B wrap
  1395. variable is set, the current message pointer wraps around to the
  1396. beginning of the user's messages again to the next undeleted message.
  1397. This also applies to the
  1398. .B next
  1399. command.
  1400. .TP
  1401. .B wrapcolumn
  1402. (Numeric)
  1403. May be set to a column number at which line wrap occurs when
  1404. composing messages.
  1405. If set, but given no value, column 78 is assumed.
  1406. When
  1407. .I Mush
  1408. is able to determine the number of columns on your screen, it
  1409. enforces a maximum value for
  1410. .B wrapcolumn
  1411. of two less than that number of columns.
  1412. Line wrapping can be disabled either by unsetting
  1413. .B wrapcolumn
  1414. or by setting it with the explicit value of 0 (zero).
  1415. .sp
  1416. Line wrapping occurs only at whitespace (spaces or tabs).
  1417. Lines containing no whitespace to the left of the specified column
  1418. are not wrapped.
  1419. If \fIMush\fR was started with the \-e (echo mode) option, or is in tool mode,
  1420. line wrapping cannot be done due to I/O incompatibilities.
  1421. .PP
  1422. In addition to the named variables described above, three special
  1423. variable forms are recognized.
  1424. .TP
  1425. .B $$
  1426. This string returns the process id (PID) of the current
  1427. .I mush
  1428. process.
  1429. Colon modifiers are not recognized for this special variable.
  1430. .TP
  1431. .BI $[ %fmt ]
  1432. The string \fI%fmt\fR is interpreted as a header formatting string
  1433. (as in the
  1434. .B hdr_format
  1435. variable) and is expanded using the headers from the current message.
  1436. Colon modifiers are allowed to follow the format.
  1437. For example,
  1438. .sp
  1439. .ti +4
  1440. save $[%4n]:l
  1441. .sp
  1442. saves the current message in a file whose name is the first four
  1443. characters of the name of the author, converted to lower case.
  1444. .TP
  1445. .BI $( %c )
  1446. The string `\fI%c\fR' is interpreted as a prompt format
  1447. (as in the
  1448. .B prompt
  1449. variable) and is expanded.
  1450. Colon modifiers are allowed.
  1451. For example,
  1452. .sp
  1453. .ti +4
  1454. echo $(%T)
  1455. .sp
  1456. prints the current time.
  1457. Note that \*Q$(%F)\*U is equivalent to \*Q$thisfolder\*U.
  1458. .PP
  1459. NOTE:  Evaluation of many \*Q$[%...]\*U or \*Q$(%...)\*U values in a single
  1460. command is inefficient.
  1461. If expansion of several formats is desired, it is better to use the \-h
  1462. and \-p options of
  1463. .B echo
  1464. or
  1465. .BR eval ,
  1466. which also provide better quoting of the interpolated strings.
  1467. .SH "MUSH SCRIPTS"
  1468. One of the most useful features of
  1469. .I Mush
  1470. is the ability to write scripts of
  1471. commands, which can be read by the
  1472. .B source
  1473. command from within
  1474. .IR Mush ,
  1475. or by redirecting input from the script and using the \-i option.
  1476. If your operating system supports the \*Q#!\*U interpreter mechanism,
  1477. a script can be even be executed as a program.
  1478. Script files can use all the usual
  1479. .I Mush
  1480. commands; the only restriction is
  1481. that the `!' history notation for referencing arguments of
  1482. .B cmd
  1483. aliases is disabled in scripts, so only very simple
  1484. .BR cmd s
  1485. work.
  1486. .PP
  1487. For example, a filtering file, \*Qfilter\*U, might contain:
  1488. .sp
  1489. .nf
  1490. .in +2
  1491. set newfolder = /usr/spool/mail/$USER
  1492. if is_shell
  1493. .in +4
  1494. if -z $newfolder
  1495. .ti +4
  1496. set newfolder = $mbox    # mbox must be set!
  1497. endif
  1498. if -e $newfolder
  1499. .ti +4
  1500. folder $newfolder
  1501. else
  1502. .ti +4
  1503. quit
  1504. endif
  1505. .in -4
  1506. endif
  1507. .sp
  1508. pick -f Mailer-Daemon | save mail_errors
  1509. pick -f yukko | delete
  1510. pick -s -i thesis | save +thesis_mail
  1511. pick -t unix-wizards | +wizmail
  1512. update
  1513. sort d
  1514. .in -2
  1515. .fi
  1516. .sp
  1517. Then the first command the user types when beginning a
  1518. .I Mush
  1519. session might be \*Qsource filter\*U, and the following happens:
  1520. .sp
  1521. .in +2
  1522. First, a new variable called \fBnewfolder\fR is set to the user's spool
  1523. mailbox (the system mailbox).
  1524. A test is made to see if the shell is running, because the \fBfolder\fR
  1525. command can only be used from the shell.
  1526. Then a test is done to see if the spool mailbox is zero length, and if it is,
  1527. the variable is reset to the value of the user's \fBmbox\fR variable
  1528. (mbox must already be set by this time or this fails).
  1529. A final test assures that the new folder exists.
  1530. If it does, \fIMush\fR changes folders to the new folder.
  1531. If it doesn't exist, the program exits (via \fBquit\fR).
  1532. .sp
  1533. Once the correct folder has been loaded, all messages that have
  1534. \*QMailer-Daemon\*U in the From header are saved in the file mail_errors.
  1535. Then, all mail from the user \*Qyukko\*U is simply deleted.
  1536. Next, all mail that has in the Subject field, \*Qthesis\*U
  1537. (case ignored, so \*QThesis\*U would also match) are
  1538. saved in the file $folder/thesis.
  1539. The next command finds all messages that are addressed to
  1540. the group \*Qunix-wizards\*U (of which the user is an elite
  1541. member) and saves them in the file $folder/wizmail.
  1542. Last, the folder is updated, removing all deleted mail
  1543. (saved mail may be marked as deleted)
  1544. and the folder is reread and sorted according to the date of the messages.
  1545. .in -2
  1546. .PP
  1547. If the \*Q#!\*U mechanism is supported, the \*Qfilter\*U script can be
  1548. made into a program by adding as the first line:
  1549. .sp
  1550. .ti +4
  1551. #! /usr/local/bin/mush -F
  1552. .sp
  1553. (The actual location of
  1554. .I mush
  1555. may vary from system to system; /usr/local/bin is used as an example.)  Then
  1556. make the file executable:
  1557. .sp
  1558. .ti +4
  1559. chmod +x filter
  1560. .sp
  1561. Now, when the command \*Qfilter\*U is typed at the user's regular shell
  1562. prompt, the
  1563. .I mush 
  1564. program is invoked by the operating system.
  1565. .I Mush
  1566. first reads the commands from the \*Qfilter\*U file and performs them,
  1567. exactly as described above, and then continues into the usual interface.
  1568. If it is preferable for
  1569. .I mush
  1570. to exit after reading the script, the first line can be changed to:
  1571. .sp
  1572. .ti +4
  1573. #! /usr/local/bin/mush -F!
  1574. .sp
  1575. The \-F! option should also be used when running
  1576. scripts in the background or in other circumstances where the standard
  1577. input cannot be a terminal, and the only commands to be executed are those
  1578. in the script itself.
  1579. .PP
  1580. Note that any additional arguments passed to a \*Q#!\*U script are
  1581. interpreted by
  1582. .IR mush ;
  1583. they are not passed along in any way that makes them accessible to the script.
  1584. Thus,
  1585. .sp
  1586. .ti +4
  1587. % filter \-f mbox
  1588. .sp
  1589. applies the commands in the \*Qfilter\*U script to the \*Qmbox\*U folder.
  1590. .SH MACROS
  1591. Macros are available in several different modes in
  1592. .IR Mush .
  1593. .I "Curses mode macros"
  1594. are created by using the
  1595. .B bind
  1596. command with the special function
  1597. .B macro
  1598. (or by using
  1599. .BR bind-macro ,
  1600. which is synonymous).
  1601. These macros are effective only when the curses interface is active.
  1602. .I "Line mode macros"
  1603. are created with the
  1604. .B map
  1605. command, and are effective only in the line-oriented command interface.
  1606. Finally,
  1607. .I "composition mode macros"
  1608. are created with the
  1609. .B map!
  1610. command, and are effective only when composing mail messages.
  1611. Macros are not available in the
  1612. .I tool
  1613. mode, nor when composing messages from the tool mode.
  1614. Line and composition mode macros are also nonfunctional when
  1615. .I Mush
  1616. is started with the \-e (echo) option.
  1617. .PP
  1618. In general, macros consist of two parts:  a
  1619. .I "key sequence"
  1620. and an
  1621. .IR expansion .
  1622. The
  1623. .B "key sequence"
  1624. is the character or string of characters which, when typed in the
  1625. appropriate mode, is recognized by
  1626. .I Mush
  1627. as a reference to a macro.
  1628. The
  1629. .B expansion
  1630. part of a macro is the string that is actually \*Qseen\*U by
  1631. .I Mush
  1632. when the key sequence is recognized.
  1633. Macros are like an interactive search-and-replace function;
  1634. if a key sequence appears in the input, the associated expansion is
  1635. substituted in its place.
  1636. Thus, if you create a macro whose key sequence is \*Q^X^W\*U (control-X
  1637. control-W) and whose expansion is \*Qsave\*U, then when you hold down the
  1638. control key and type the two characters `x' and `w', the effect is
  1639. as if you had actually typed the four characters `s', `a', `v' and `e'.
  1640. This is called \*Qexpanding\*U the macro.
  1641. More detailed examples of macros are presented in the subsections
  1642. for each mode in which macros can be used.
  1643. .PP
  1644. Key sequences are usually made up of control characters or special
  1645. strings of characters generated by \*Qfunction keys,\*U
  1646. but may in fact be almost any string the user desires.
  1647. Keys that generate a signal or an end-of-file from the keyboard
  1648. (for example, on BSD systems, control-Z generates a TSTP signal and
  1649. control-D generates an end-of-file) can never appear
  1650. in key sequences, and macros in line or composition modes cannot
  1651. .I begin
  1652. with a newline, control-D, or any of the editing keys
  1653. (erase, word-erase, line-erase, etc.).
  1654. Otherwise, there are no restrictions.
  1655. It should be kept in mind, however, that for the line and composition
  1656. modes, key sequences should be unusual characters or combinations of
  1657. characters, not individual lower-case letters.
  1658. If common characters or strings are used for key sequences, much
  1659. confusion can result when typing commands or messages.
  1660. This is not important in the curses mode.
  1661. .PP
  1662. In the line and composition modes, a
  1663. .I timeout
  1664. is used for key recognition; that is, once the first character of the
  1665. key sequence has been typed, the succeeding characters must be typed
  1666. after it relatively quickly, or
  1667. .I Mush
  1668. fails to recognize them as a continuous sequence.
  1669. It is for this reason that key sequences are usually either very short,
  1670. SHAR_EOF
  1671. true || echo 'restore of mush.1 failed'
  1672. fi
  1673. echo 'End of  part 17'
  1674. echo 'File mush.1 is continued in part 18'
  1675. echo 18 > _shar_seq_.tmp
  1676. exit 0
  1677. exit 0 # Just in case...
  1678. -- 
  1679. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1680. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1681. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1682. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1683.