.\" @(#)$Id: scan.rf,v 1.11 1992/10/29 22:01:56 jromine Exp $
scan \- produce a one line per message scan listing
\%[+folder] \%[msgs]
\%[\-clear] \%[\-noclear]
\%[\-form\ formatfile]
\%[\-format\ string]
\%[\-header] \%[\-noheader]
\%[\-width\ columns]
\%[\-reverse] \%[\-noreverse]
\%[\-file filename]
\fIScan\fR produces a one\-line\-per\-message listing of the specified
Each \fIscan\fR line contains the message number (name),
the date, the \*(lqFrom:\*(rq field, the \*(lqSubject\*(rq field, and, if room
allows, some of the body of the message.
For example:

.in +.5i
.ta \w'15+- 'u +\w'7/\05  'u +\w'Dcrocker  'u
15+	7/\05	Dcrocker	nned\0\0\*(<<Last week I asked some of
16\0-	7/\05	dcrocker	message id format\0\0\*(<<I recommend
18	7/\06	Obrien	Re: Exit status from mkdir
19	7/\07	Obrien	\*(lqscan\*(rq listing format in MH
.in -.5i

The `+' on message 15 indicates that it is the current message.
The `\-' on message 16 indicates that it has been
replied to, as indicated by a \*(lqReplied:\*(rq component produced by
an `\-annotate' switch to the \fIrepl\fR command.

If there is sufficient room left on the \fIscan\fR line after the
subject, the line will be filled with text from the body,
preceded by <<, and terminated by >> if the body is sufficiently short.
\fIScan\fR actually reads each of the specified
messages and parses them to extract the desired fields.
During parsing, appropriate error messages will be produced if
there are format errors in any of the messages.

The `\-header' switch produces a header line prior to the \fIscan\fR
the name of the folder and the current date and time are output
(see the \fBHISTORY\fR section for more information).

If the `\-clear' switch is used and \fIscan's\fR output is directed to a
then \fIscan\fR will consult the \fB$TERM\fR and \fB$TERMCAP\fR
envariables to determine your
terminal type in order to find out how to clear the screen prior to exiting.
If the `\-clear' switch is used and \fIscan's\fR output is not directed to
a terminal (e.g., a pipe or a file),
then \fIscan\fR will send a formfeed prior to exiting.

For example, the command:

.ti +.5i
(scan \-clear \-header; show all \-show pr \-f) | lpr

produces a scan listing of the current folder, followed by a formfeed,
followed by a formatted listing of all messages in the folder, one per
page.  Omitting `\-show\ pr\ \-f' will cause the messages to be concatenated,
separated by a one\-line header and two blank lines.

If \fIscan\fR encounters a message without a \*(lqDate:\*(rq field,
rather than leaving that portion of the scan listing blank,
the date is filled\-in with the last write date of the message,
and post\-fixed with a `*'.
This is particularly handy for scanning a \fIdraft folder\fR,
as message drafts usually aren't allowed to have dates in them.

To override the output format used by \fIscan\fR,
the `\-format\ string' or `\-format\ file' switches are used.
This permits individual fields of the scan listing to be extracted with ease.
The string is simply a format string and the file is simply a format file.
See \fImh\-format\fR\0(5) for the details.

In addition to the standard \fImh\-format\fR\0(5) escapes,
\fIscan\fR also recognizes the following additional \fIcomponent\fR escapes:
.sp 1
.ta \w'Dtimenow  'u +\w'Returns  'u
\fIEscape\fR	\fIReturns\fR	\fIDescription\fR
body	string	the (compressed) first part of the body
dtimenow	date	the current date
folder	string	the name of the current folder

Also, if no date header was present in the message, the \fIfunction\fR
escapes which operate on {\fIdate\fP\|} will return values for the 
date of last modification of the message file itself.

\fIscan\fR will update the \fIMH\fR context prior to starting the listing,
so interrupting a long \fIscan\fR listing preserves the new context.
\fIMH\fR purists hate this idea.
^$HOME/\&.mh\(ruprofile~^The user profile
^Path:~^To determine the user's MH directory
^Alternate\-Mailboxes:~^To determine the user's mailboxes
^Current\-Folder:~^To find the default current folder
inc(1), pick(1), show(1), mh\-format(5)
`+folder' defaults to the folder current
`msgs' defaults to all
`\-format' defaulted as described above
`\-width' defaulted to the width of the terminal
If a folder is given, it will become the current folder.
Prior to using the format string mechanism,
`\-header' used to generate a heading saying what each column in the listing
Format strings prevent this from happening.
The argument to the `\-format' switch must be interpreted as a single token
by the shell that invokes \fIscan\fR.
one must usually place the argument to this switch inside double\-quotes.
The value of
each \fIcomponent\fR escape is set by \fIscan\fR to the contents
of the first message header \fIscan\fR encounters
with the corresponding component name;
any following headers with the same component name are ignored.
The switch `\-reverse', makes \fIscan\fR list the messages
in reverse order; this should be considered a bug.
The `\-file filename' switch allows the user to obtain a \fIscan\fP
listing of a maildrop file as produced by \fIpackf\fP.  This listing
includes every message in the file.  The user should use \fImsh\fP
for more selective processing of the file.  `\-reverse' is ignored
with this option.