Reworked the man page system and some man page contents (mmh-intro).
[mmh] / man / mhbuild.man
diff --git a/man/mhbuild.man b/man/mhbuild.man
deleted file mode 100644 (file)
index 9a78e02..0000000
+++ /dev/null
@@ -1,688 +0,0 @@
-.\"
-.\" %nmhwarning%
-.\"
-.TH MHBUILD %manext1% "%nmhdate%" MH.6.8 [%nmhversion%]
-.SH NAME
-mhbuild \- translate MIME composition draft
-.SH SYNOPSIS
-.na
-.HP 5
-.B mhbuild
-.I file
-.RB [ \-list " | " \-nolist ]
-.RB [ \-realsize " | " \-norealsize ]
-.RB [ \-headers " | " \-noheaders ]
-.RB [ \-ebcdicsafe " | " \-noebcdicsafe ]
-.RB [ \-rfc934mode " | " \-norfc934mode ]
-.RB [ \-contentid " | " \-nocontentid ]
-.RB [ \-verbose " | " \-noverbose ]
-.RB [ \-check " | " \-nocheck ]
-.RB [ \-version ]
-.RB [ \-help ]
-.ad
-.SH DESCRIPTION
-The
-.B mhbuild
-command will translate a MIME composition draft into
-a valid MIME message.
-.PP
-.B mhbuild
-creates multi-media messages as specified in RFC\-2045
-thru RFC\-2049.  Currently
-.B mhbuild
-only supports encodings in
-message bodies, and does not support the encoding of message headers as
-specified in RFC\-2047.
-.PP
-If you specify the name of the composition file as \*(lq-\*(rq,
-then
-.B mhbuild
-will accept the composition draft on the standard
-input.  If the translation of this input is successful,
-.B mhbuild
-will output the new MIME message to the standard output.  This argument
-must be the last argument on the command line.
-.PP
-Otherwise if the file argument to
-.B mhbuild
-is the name of a valid
-composition file, and the translation is successful,
-.B mhbuild
-will replace the original file with the new MIME message.  It will rename
-the original file to start with the \*(lq,\*(rq character and end with the
-string \*(lq.orig\*(rq, e.g., if you are editing the file \*(lqdraft\*(rq,
-it will be renamed to \*(lq,draft.orig\*(rq.  This allows you to easily
-recover the
-.B mhbuild
-input file.
-.SS "Listing the Contents"
-The
-.B \-list
-switch tells
-.B mhbuild
-to list the table of contents associated with the MIME message that is created.
-.PP
-The
-.B \-headers
-switch indicates
-that a one-line banner should be displayed above the listing.  The
-.B \-realsize
-switch tells
-.B mhbuild
-to evaluate the \*(lqnative\*(rq
-(decoded) format of each content prior to listing.  This provides an
-accurate count at the expense of a small delay.  If the
-.B \-verbose
-switch
-is present, then the listing will show any \*(lqextra\*(rq information
-that is present in the message, such as comments in the
-\*(lqContent-Type\*(rq header.
-.SS "Translating the Composition File"
-.B mhbuild
-is essentially a filter to aid in the composition of MIME
-messages.
-.B mhbuild
-will convert an
-.B mhbuild
-\*(lqcomposition file\*(rq
-into a valid MIME message.  A
-.B mhbuild
-\*(lqcomposition file\*(rq
-is just a file containing plain text that is interspersed
-with various
-.B mhbuild
-directives.  When this file is processed
-by
-.BR mhbuild ,
-the various directives will be expanded to the
-appropriate content, and will be encoded according to the MIME standards.
-The resulting MIME message can then be sent by electronic mail.
-.PP
-The formal syntax for a
-.B mhbuild
-composition file is defined at the
-end of this document, but the ideas behind this format are not complex.
-Basically, the body contains one or more contents.  A content consists of
-either a directive, indicated with a \*(lq#\*(rq as the first character
-of a line; or, plaintext (one or more lines of text).  The continuation
-character, \*(lq\\\*(lq, may be used to enter a single directive on more
-than one line, e.g.,
-.PP
-.RS 5
-.nf
-#image/png \\
-    /home/foobar/junk/picture.png
-.fi
-.RE
-.PP
-There are four kinds of directives: \*(lqtype\*(rq directives, which
-name the type and subtype of the content; \*(lqexternal-type\*(rq
-directives, which also name the type and subtype of the content; the
-\*(lqmessage\*(rq directive (#forw), which is used to forward one or
-more messages; and, the \*(lqbegin\*(rq directive (#begin), which is
-used to create a multipart content.
-.PP
-The \*(lqtype\*(rq directive is used to directly specify the type and
-subtype of a content.  You may only specify discrete types in this manner
-(can't specify the types multipart or message with this directive).
-You may optionally specify the name of a file containing the contents
-in \*(lqnative\*(rq (decoded) format.  If this filename starts with the
-\*(lq|\*(rq character, then it represents a command to execute whose
-output is captured accordingly.
-For example,
-.PP
-.RS 5
-.nf
-#audio/basic |raw2audio -F < /usr/lib/sound/giggle.au
-.fi
-.RE
-.PP
-If a filename is not given,
-.B mhbuild
-will look for information in the
-user's profile to determine how the different contents should be composed.
-This is accomplished by consulting a composition string, and executing
-it under
-.BR /bin/sh ,
-with the standard output set to the content.
-If the
-.B \-verbose
-switch is given,
-.B mhbuild
-will echo any commands that are used to create contents in this way.
-.PP
-The composition string may contain the following escapes:
-.PP
-.RS 5
-.nf
-.ta \w'%P  'u
-%a     Insert parameters from directive
-%f     Insert filename containing content
-%F     %f, and stdout is not re-directed
-%s     Insert content subtype
-%%     Insert character %
-.fi
-.RE
-.PP
-First,
-.B mhbuild
-will look for an entry of the form:
-.PP
-.RS 5
-mhbuild-compose-<type>/<subtype>
-.RE
-.PP
-to determine the command to use to compose the content.  If this isn't
-found,
-.B mhbuild
-will look for an entry of the form:
-.PP
-.RS 5
-mhbuild-compose-<type>
-.RE
-.PP
-to determine the composition command. If this isn't found,
-.B mhbuild
-will complain.
-.PP
-An example entry might be:
-.PP
-.RS 5
-mhbuild-compose-audio/basic: record | raw2audio -F
-.RE
-.PP
-Because commands like these will vary, depending on the display
-environment used for login, composition strings for different
-contents should probably be put in the file specified by the
-.B $MHBUILD
-environment variable, instead of directly in your
-user profile.
-.PP
-The \*(lqexternal-type\*(rq directives are used to provide a MIME
-reference to a content, rather than enclosing the contents itself
-(for instance, by specifying an ftp site).  Hence, instead of
-providing a filename as with the type directives, external-parameters
-are supplied.  These look like regular parameters, so they must be
-separated accordingly.  For example,
-.PP
-.RS 5
-.nf
-#@application/octet-stream; \\
-    type=tar; \\
-    conversions=compress \\
-    [this is the nmh distribution] \\
-    {application; filename="nmh.tar.gz"} \\
-    name="nmh.tar.gz"; \\
-    directory="/pub/nmh"; \\
-    site="ftp.math.gatech.edu"; \\
-    access-type=anon-ftp; \\
-    mode="image"
-.fi
-.RE
-.PP
-You must give a description string to separate the content parameters
-from the external-parameters (although this string may be empty).
-This description string is specified by enclosing it within
-\*(lq[]\*(rq.  A disposition string, to appear in a
-\*(lqContent-Disposition\*(rq header, may appear in the optional
-\*(lq{}\*(rq.
-.PP
-These parameters are of the form:
-.PP
-.RS 5
-.nf
-.ta \w'access-type=  'u
-access-type=   usually \fIanon-ftp\fR or \fImail-server\fR
-name=  filename
-permission=    read-only or read-write
-site=  hostname
-directory=     directoryname (optional)
-mode=  usually \fIascii\fR or \fIimage\fR (optional)
-size=  number of octets
-server=        mailbox
-subject=       subject to send
-body=  command to send for retrieval
-.fi
-.RE
-.PP
-The \*(lqmessage\*(rq directive (#forw) is used to specify a message or
-group of messages to include.  You may optionally specify the name of
-the folder and which messages are to be forwarded.  If a folder is not
-given, it defaults to the current folder.  Similarly, if a message is not
-given, it defaults to the current message.  Hence, the message directive
-is similar to the
-.B forw
-command, except that the former uses
-the MIME rules for encapsulation rather than those specified in RFC\-934.
-For example,
-.PP
-.RS 5
-.nf
-#forw +inbox 42 43 99
-.fi
-.RE
-.PP
-If you include a single message, it will be included directly as a content
-of type \*(lqmessage/rfc822\*(rq.  If you include more than one message,
-then
-.B mhbuild
-will add a content of type \*(lqmultipart/digest\*(rq
-and include each message as a subpart of this content.
-.PP
-If you are using this directive to include more than one message, you
-may use the
-.B \-rfc934mode
-switch.  This switch will indicate that
-.B mhbuild
-should attempt to utilize the MIME encapsulation rules
-in such a way that the \*(lqmultipart/digest\*(rq that is created
-is (mostly) compatible with the encapsulation specified in RFC\-934.
-If given, then RFC\-934 compliant user-agents should be able to burst the
-message on reception\0--\0providing that the messages being encapsulated
-do not contain encapsulated messages themselves.  The drawback of this
-approach is that the encapsulations are generated by placing an extra
-newline at the end of the body of each message.
-.PP
-The \*(lqbegin\*(rq directive is used to create a multipart content.
-When using the \*(lqbegin\*(rq directive, you must specify at least one
-content between the begin and end pairs.
-.PP
-.RS 5
-.nf
-#begin
-This will be a multipart with only one part.
-#end
-.fi
-.RE
-.PP
-If you use multiple directives in a composition draft,
-.B mhbuild
-will
-automatically encapsulate them inside a multipart content.  Therefore the
-\*(lqbegin\*(rq directive is only necessary if you wish to use nested
-multiparts, or create a multipart message containing only one part.
-.PP
-For all of these directives, the user may include a brief description
-of the content between the \*(lq[\*(rq character and the \*(lq]\*(rq
-character.  This description will be copied into the
-\*(lqContent-Description\*(rq header when the directive is processed.
-.PP
-.RS 5
-.nf
-#forw [important mail from Bob] +bob 1 2 3 4 5
-.fi
-.RE
-.PP
-Similarly, a disposition string may optionally be provided between
-\*(lq{\*(rq and \*(lq}\*(rq characters; it will be copied into the
-\*(lqContent-Disposition\*(rq header when the directive is processed.
-If a disposition string is provided that does not contain a filename
-parameter, and a filename is provided in the directive, it will be
-added to the \*(lqContent-Disposition\*(rq header.  For example, the
-following directive:
-.PP
-.RS 5
-.nf
-#text/plain; charset=iso-8859-1 <>{attachment} /tmp/summary.txt
-.fi
-.RE
-.PP
-creates these message part headers:
-.PP
-.RS 5
-.nf
-Content-Type: text/plain; charset="iso-8859-1"
-Content-Disposition: attachment; filename="summary.txt"
-.fi
-.RE
-.PP
-By default,
-.B mhbuild
-will generate a unique \*(lqContent-ID:\*(rq for each directive,
-corresponding to each message part; however, the user may override
-this by defining the ID using the \*(lq<\*(rq and \*(lq>\*(rq
-characters.  The
-.B \-nocontentid
-switch suppresses creation of all \*(lqContent-ID:\*(rq headers,
-even in the top level of the message.
-.PP
-In addition to the various directives, plaintext can be present.
-Plaintext is gathered, until a directive is found or the draft is
-exhausted, and this is made to form a text content.  If the plaintext
-must contain a \*(lq#\*(rq at the beginning of a line, simply double it,
-e.g.,
-.PP
-.RS 5
-##when sent, this line will start with only one #
-.RE
-.PP
-If you want to end the plaintext prior to a directive, e.g., to have two
-plaintext contents adjacent, simply insert a line containing a single
-\*(lq#\*(rq character, e.g.,
-.PP
-.RS 5
-.nf
-this is the first content
-#
-and this is the second
-.fi
-.RE
-.PP
-Finally, if the plaintext starts with a line of the form:
-.PP
-.RS 5
-Content-Description: text
-.RE
-.PP
-then this will be used to describe the plaintext content.
-You MUST follow this line with a blank line before starting
-your text.
-.PP
-By default, plaintext is captured as a text/plain content.  You can
-override this by starting the plaintext with \*(lq#<\*(rq followed by
-a content-type specification.  For example, e.g.,
-.PP
-.RS 5
-.nf
-#<text/enriched
-this content will be tagged as text/enriched
-#
-and this content will be tagged as text/plain
-#
-#<application/x-patch [this is a patch]
-and this content will be tagged as application/x-patch
-.fi
-.RE
-.PP
-Note that if you use the \*(lq#<\*(rq plaintext-form, then the
-content-description must be on the same line which identifies the content
-type of the plaintext.
-.PP
-When composing a text content, you may indicate the relevant character
-set by adding the \*(lqcharset\*(rq parameter to the directive.
-.PP
-.RS 5
-#<text/plain; charset=iso-8859-5
-.RE
-.PP
-If a text content contains any 8\-bit characters (characters with the
-high bit set) and the character set is not specified as above, then
-.B mhbuild
-will assume the character set is of the type given by the
-environment variable MM_CHARSET.  If this environment variable is not
-set, then the character set will be labeled as \*(lqx-unknown\*(rq.
-.PP
-If a text content contains only 7\-bit characters and the character set
-is not specified as above, then the character set will be labeled as
-\*(lqus-ascii\*(rq.
-.PP
-Putting this all together,
-here is an example of a more complicated message draft.  The
-following draft will expand into a multipart/mixed message
-containing five parts:
-.PP
-.RS 5
-.nf
-To: nobody@nowhere.org
-cc:
-Subject: Look and listen to me!
---------
-The first part will be text/plain
-#<text/enriched
-The second part will be text/enriched
-#
-This third part will be text/plain
-#audio/basic [silly giggle]  \\
-    |raw2audio -F < /usr/lib/sounds/giggle.au
-#image/gif   [photo of foobar] \\
-                    /home/foobar/lib/picture.gif
-.fi
-.RE
-.SS "Integrity Check"
-If
-.B mhbuild
-is given the
-.B \-check
-switch, then it will also associate
-an integrity check with each \*(lqleaf\*(rq content.  This will add a
-Content-MD5 header field to the content, along with the md5 sum of the
-unencoded contents.  This may be used by the receiver of the message to
-verify that the contents of the message were not changed in transport.
-
-.SS "Transfer Encodings"
-After
-.B mhbuild
-constructs the new MIME message by parsing directives,
-including files, etc., it scans the contents of the message to determine
-which transfer encoding to use.  It will check for 8bit data, long lines,
-spaces at the end of lines, and clashes with multipart boundaries.  It will
-then choose a transfer encoding appropriate for each content type.
-.PP
-If an integrity check is being associated with each content by using
-the
-.B \-check
-switch, then
-.B mhbuild
-will encode each content with
-a transfer encoding, even it the content contains only 7\-bit data.  This
-is to increase the likelihood that the content is not changed while in
-transport.
-.PP
-The switch
-.B \-ebcdicsafe
-will cause
-.B mhbuild
-to slightly change
-the way in which it performs the \*(lqquoted-printable\*(rq transfer
-encoding.  Along with encoding 8\-bit characters, it will now also encode
-certain common punctuation characters as well.  This slightly reduces the
-readability of the message, but allows the message to pass more reliably
-through mail gateways which involve the EBCDIC character encoding.
-
-.SS "Invoking mhbuild"
-Typically,
-.B mhbuild
- is invoked by the
-.B whatnow
-program.  This
-command will expect the body of the draft to be formatted as an
-.B mhbuild
-composition file.  Once you have composed this input file
-using a command such as
-.BR comp ,
-.BR repl ,
-or
-.BR forw ,
-you invoke
-.B mhbuild
-at the \*(lqWhat now\*(rq prompt with
-.PP
-.RS 5
-What now? mime
-.RE
-.PP
-prior to sending the draft.  This will cause
-.B whatnow
-to execute
-.B mhbuild
-to translate the composition file into MIME format.
-.PP
-It is also possible to have the
-.B whatnow
-program invoke
-.B mhbuild
-automatically when a message is sent.  To do this, you must add the line
-.PP
-.RS 5
-automimeproc: 1
-.RE
-.PP
-to your
-.I .mmh/profile
-file.
-.PP
-Finally, you should consider adding this line to your profile:
-.PP
-.RS 5
-lproc: show
-.RE
-.PP
-This way, if you decide to
-.B list
-after invoking
-.BR mime ,
-the command
-.PP
-.RS 5
-What now? list
-.RE
-.PP
-will work as you expect.
-
-.SS "User Environment"
-Because the environment in which
-.B mhbuild
-operates may vary for a
-user,
-.B mhbuild
-will look for the environment variable
-.BR $MHBUILD .
-If present, this specifies the name of an additional user profile which
-should be read.  Hence, when a user logs in on a particular machine,
-this environment variable should be set to refer to a file containing
-definitions useful for that machine.
-.PP
-Finally,
-.B mhbuild
-will attempt to consult a global
-.B mhbuild
-user profile, e.g.,
-.PP
-.RS 5
-%etcdir%/mhn.defaults
-.RE
-.PP
-if it exists.
-
-.SS "Syntax of Composition Files"
-The following is the formal syntax of a
-.B mhbuild
-\*(lqcomposition file\*(rq.
-.PP
-.RS 5
-.nf
-body         ::=     1*(content | EOL)
-
-content      ::=     directive | plaintext
-
-directive    ::=     "#" type "/" subtype
-                         0*(";" attribute "=" value)
-                         [ "(" comment ")" ]
-                         [ "<" id ">" ]
-                         [ "[" description "]" ]
-                         [ "{" disposition "}" ]
-                         [ filename ]
-                         EOL
-
-                   | "#@" type "/" subtype
-                         0*(";" attribute "=" value)
-                         [ "(" comment ")" ]
-                         [ "<" id ">" ]
-                         [ "[" description "]" ]
-                         [ "{" disposition "}" ]
-                         external-parameters
-                         EOL
-
-                   | "#forw"
-                         [ "<" id ">" ]
-                         [ "[" description "]" ]
-                         [ "{" disposition "}" ]
-                         [ "+"folder ] [ 0*msg ]
-                         EOL
-
-                   | "#begin"
-                           [ "<" id ">" ]
-                           [ "[" description "]" ]
-                           [ "{" disposition "}" ]
-                           [   "alternative"
-                             | "parallel"
-                             | something-else    ]
-                           EOL
-                         1*body
-                     "#end" EOL
-
-plaintext    ::=     [ "Content-Description:"
-                           description EOL EOL ]
-                         1*line
-                     [ "#" EOL ]
-
-                   | "#<" type "/" subtype
-                         0*(";" attribute "=" value)
-                         [ "(" comment ")" ]
-                         [ "[" description "]" ]
-                         [ "{" disposition "}" ]
-                         EOL
-                         1*line
-                     [ "#" EOL ]
-
-line         ::=     "##" text EOL
-                     -- interpreted as "#"text EOL
-                   | text EOL
-.fi
-.RE
-.PP
-
-.SH FILES
-.fc ^ ~
-.nf
-.ta \w'%etcdir%/ExtraBigFileName  'u
-^$HOME/.mmh/profile~^The user profile
-^$MHBUILD~^Additional profile entries
-^%etcdir%/mhn.defaults~^System default MIME profile entries
-.fi
-
-.SH "PROFILE COMPONENTS"
-.fc ^ ~
-.nf
-.ta 2.4i
-.ta \w'ExtraBigProfileName  'u
-^Path:~^To determine the user's mail storage
-^Current\-Folder:~^To find the default current folder
-^mhbuild-compose-<type>*~^Template for composing contents
-.fi
-
-.SH "SEE ALSO"
-mhlist(1), mhshow(1), mhstore(1),
-.br
-.I "Proposed Standard for Message Encapsulation"
-(RFC\-934),
-.br
-.I "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies"
-(RFC\-2045),
-.br
-.I "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types"
-(RFC\-2046),
-.br
-.I "Multipurpose Internet Mail Extensions (MIME) Part Three: Message Header Extensions for Non-ASCII Text"
-(RFC\-2047),
-.br
-.I "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures"
-(RFC\-2048),
-.br
-.I "Multipurpose Internet Mail Extensions (MIME) Part Five: Conformance Criteria and Examples"
-(RFC\-2049)
-
-.SH DEFAULTS
-.nf
-.RB ` \-headers '
-.RB ` \-realsize '
-.RB ` \-norfc934mode '
-.RB ` \-contentid '
-.RB ` \-nocheck '
-.RB ` \-noebcdicsafe '
-.RB ` \-noverbose '
-.fi
-
-.SH CONTEXT
-If a folder is given, it will become the current folder.  The last
-message selected will become the current message.