annotate doc/mh-format.me @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 .\" This file is automatically generated. Do not edit!
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 .\" @(#)$Id$
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 .SC MH-FORMAT 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 .NA
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5 mh-format \- format file for MH message system
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 .SY
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 some \fIMH\fR commands
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 .DE
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 Several \fIMH\fR commands utilize either a \fIformat\fR string or a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 \fIformat\fR file during their execution.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 For example,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 \fIscan\fR\0(1) uses a format string which directs it how to generate the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 scan listing for each message;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 \fIrepl\fR\0(1) uses a format file which directs it how to generate the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 reply to a message, and so on.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 Format strings are designed to be efficiently parsed by \fIMH\fR which
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 means they are not necessarily simple to write and understand.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 This means that novice, casual, or even advanced users of \fIMH\fR should
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 not have to deal with them.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 Some canned scan listing formats are in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 /usr/local/mh/lib/scan.time, /usr/local/mh/lib/scan.size, and /usr/local/mh/lib/scan.timely.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 Look in /usr/local/mh/lib for other \fIscan\fR and \fIrepl\fR format files
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 which may have been written at your site.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 It suffices to have your local \fIMH\fR expert actually write new format
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 commands or modify existing ones.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 This manual section explains how to do that.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 Note: familiarity with the C \fIprintf\fR routine is assumed.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 A format string consists of ordinary text, and special
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 multi-character \fIescape\fR sequences which begin with `%'.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33 When specifying a format string,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 the usual C backslash characters are honored:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 `\\b', `\\f', `\\n', `\\r', and `\\t'.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 Continuation lines in format files end with `\\' followed
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37 by the newline character.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 To put a literal `%' or `\\' in a format string, use two of them:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 `%%' and `\\\\'.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 .\" talk about syntax first, then semantics
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 There are three types of \fIescape\fR sequences:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 header \fIcomponents\fR, built-in \fIfunctions\fR, and flow \fIcontrol\fR.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 A \fIcomponent\fR escape is specified as `%{\fIcomponent\fR\^}',
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 and exists for each header found in the message being processed.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46 For example `%{date}' refers to the \*(lqDate:\*(rq field of the appropriate
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 message.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 All component escapes have a string value.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 Normally, component values are compressed by
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 converting any control characters (tab and newline included) to spaces,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 then eliding any leading or multiple spaces.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 However,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 commands may give different interpretations to some component escapes;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 be sure to refer to each command's manual entry for complete details.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56 A \fIfunction\fR escape is specified as `%(\fIfunction\fR\^)'.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57 All functions are built-in, and most have a string or numeric value.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 .ne 12
bce86c4163a3 Initial revision
kono
parents:
diff changeset
60 .Uh "Control-flow escapes"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
61 A \fIcontrol\fR escape is one of: `%<', `%?', `%|', or `%>'.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
62 .\" `%[', or `%]'.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
63 These are combined into the conditional execution construct:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
64 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
65 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
66 %<condition
bce86c4163a3 Initial revision
kono
parents:
diff changeset
67 \fIformat text 1\fP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
68 %?condition2
bce86c4163a3 Initial revision
kono
parents:
diff changeset
69 \fIformat text 2\fP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
70 %?condition3
bce86c4163a3 Initial revision
kono
parents:
diff changeset
71 \fIformat text 3\fP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
72 \.\.\.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
73 %|
bce86c4163a3 Initial revision
kono
parents:
diff changeset
74 \fIformat text N\fP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
75 %>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
76 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
77 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
78 Extra white space is shown here only for clarity.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
79 These constructs may be nested without ambiguity.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
80 They form a general \fBif\-elseif\-else\-endif\fP block where
bce86c4163a3 Initial revision
kono
parents:
diff changeset
81 only one of the \fIformat text\fP segments is interpreted.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
82
bce86c4163a3 Initial revision
kono
parents:
diff changeset
83 The `%<' and `%?' control escapes causes a condition to be evaluated.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
84 This condition
bce86c4163a3 Initial revision
kono
parents:
diff changeset
85 may be either a \fIcomponent\fP or a \fIfunction\fP.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
86 The four constructs have the following syntax:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
87 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
88 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
89 %<{component}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
90 %<(function)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
91 %?{component}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
92 %?(function)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
93 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
94 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
95 These control escapes test whether
bce86c4163a3 Initial revision
kono
parents:
diff changeset
96 the function or component value is non-zero (for integer-valued escapes),
bce86c4163a3 Initial revision
kono
parents:
diff changeset
97 or non-empty (for string-valued escapes).
bce86c4163a3 Initial revision
kono
parents:
diff changeset
98
bce86c4163a3 Initial revision
kono
parents:
diff changeset
99 If this test evaulates true,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
100 then the format text
bce86c4163a3 Initial revision
kono
parents:
diff changeset
101 up to the next corresponding control escape
bce86c4163a3 Initial revision
kono
parents:
diff changeset
102 (one of `%|', `%?', or `%>')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
103 is interpreted normally.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
104 Next,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
105 all format text (if any) up to the corresponding `%>' control
bce86c4163a3 Initial revision
kono
parents:
diff changeset
106 escape is skipped.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
107 The `%>' control escape is not interpreted;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
108 normal
bce86c4163a3 Initial revision
kono
parents:
diff changeset
109 interpretation resumes after the `%>' escape.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
110
bce86c4163a3 Initial revision
kono
parents:
diff changeset
111 If the test evaluates false, however,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
112 then the format text
bce86c4163a3 Initial revision
kono
parents:
diff changeset
113 up to the next corresponding control escape
bce86c4163a3 Initial revision
kono
parents:
diff changeset
114 (again, one of `%|', `%?', or `%>')
bce86c4163a3 Initial revision
kono
parents:
diff changeset
115 is skipped, instead of being interpreted.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
116 If the control escape encountered was `%?',
bce86c4163a3 Initial revision
kono
parents:
diff changeset
117 then the condition associated with that control escape is
bce86c4163a3 Initial revision
kono
parents:
diff changeset
118 evaluated, and interpretation
bce86c4163a3 Initial revision
kono
parents:
diff changeset
119 proceeds after that test
bce86c4163a3 Initial revision
kono
parents:
diff changeset
120 as described in the previous paragraph.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
121 If the control escape encountered was `%|',
bce86c4163a3 Initial revision
kono
parents:
diff changeset
122 then the format text
bce86c4163a3 Initial revision
kono
parents:
diff changeset
123 up to the corresponding `%>' escape
bce86c4163a3 Initial revision
kono
parents:
diff changeset
124 is interpreted normally.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
125 As above,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
126 the `%>' escape is not interpreted and normal
bce86c4163a3 Initial revision
kono
parents:
diff changeset
127 interpretation resumes after the `%>' escape.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
128
bce86c4163a3 Initial revision
kono
parents:
diff changeset
129 The `%?' control escape and its following format text
bce86c4163a3 Initial revision
kono
parents:
diff changeset
130 is optional, and may be included zero or more times.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
131 The `%|' control escape and its following format text
bce86c4163a3 Initial revision
kono
parents:
diff changeset
132 is also optional, and may be included zero or one times.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
133
bce86c4163a3 Initial revision
kono
parents:
diff changeset
134 .\" The '%[' and '%]' escapes form a loop construct.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
135 .\" For format strings which are executed repeatedly
bce86c4163a3 Initial revision
kono
parents:
diff changeset
136 .\" (as with \fIscan\fP), these escapes delimit the main
bce86c4163a3 Initial revision
kono
parents:
diff changeset
137 .\" body of execution. Format text which occurs
bce86c4163a3 Initial revision
kono
parents:
diff changeset
138 .\" before the '%[' escape is executed once only, prior
bce86c4163a3 Initial revision
kono
parents:
diff changeset
139 .\" to processing the first message; format text occuring
bce86c4163a3 Initial revision
kono
parents:
diff changeset
140 .\" after the '%]' escape is ignored.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
141 .\" (These escapes may not be nested).
bce86c4163a3 Initial revision
kono
parents:
diff changeset
142 .\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
143 .Uh "Function escapes"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
144 .ne 10
bce86c4163a3 Initial revision
kono
parents:
diff changeset
145 Most functions expect an argument of a particular type:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
146 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
147 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
148 .ta +\w'Argument 'u +\w'An optional component, 'u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
149 \fIArgument\fR \fIDescription\fR \fIExample Syntax\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
150 literal A literal number, %(\fIfunc\fR 1234)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
151 or string %(\fIfunc\fR text string)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
152 comp Any header component %(\fIfunc\fR\^{\fIin-reply-to\fR\^})
bce86c4163a3 Initial revision
kono
parents:
diff changeset
153 date A date component %(\fIfunc\fR\^{\fIdate\fR\^})
bce86c4163a3 Initial revision
kono
parents:
diff changeset
154 addr An address component %(\fIfunc\fR\^{\fIfrom\fR\^})
bce86c4163a3 Initial revision
kono
parents:
diff changeset
155 expr An optional component, %(\fIfunc\fR\^(\fIfunc2\fR\^))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
156 function or control, %(\fIfunc\fR %<{\fIreply-to\fR\^}%|%{\fIfrom\fR\^}%>)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
157 perhaps nested %(\fIfunc\fR\^(\fIfunc2\fR\^{\fIcomp\fR\^}))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
158 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
159 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
160
bce86c4163a3 Initial revision
kono
parents:
diff changeset
161 The types \fIdate\fR and \fIaddr\fR have the same syntax
bce86c4163a3 Initial revision
kono
parents:
diff changeset
162 as \fIcomp\fR, but require that the header
bce86c4163a3 Initial revision
kono
parents:
diff changeset
163 component be a date string, or address string, respectively.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
164
bce86c4163a3 Initial revision
kono
parents:
diff changeset
165 All arguments except those of type \fIexpr\fR are required.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
166 For the \fIexpr\fR argument type,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
167 the leading `%' must be omitted for component and function escape arguments,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
168 and must be present (with a leading space) for control escape arguments.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
169
bce86c4163a3 Initial revision
kono
parents:
diff changeset
170 The evaluation of format strings
bce86c4163a3 Initial revision
kono
parents:
diff changeset
171 is based on a simple machine with an
bce86c4163a3 Initial revision
kono
parents:
diff changeset
172 integer register \fInum\fR, and a text string register \fIstr\fR.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
173 When a function escape is processed,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
174 if it accepts an optional \fIexpr\fR argument which is not present,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
175 it reads the current value of either \fInum\fR or \fIstr\fR as appropriate.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
176
bce86c4163a3 Initial revision
kono
parents:
diff changeset
177 .\" return values
bce86c4163a3 Initial revision
kono
parents:
diff changeset
178 .Uh "Return values"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
179 Component escapes write the value of their message header in \fIstr\fR.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
180 Function escapes write their return value in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
181 \fInum\fR for functions returning \fIinteger\fR or \fIboolean\fR values,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
182 and in \fIstr\fR for functions returning string values.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
183 (The \fIboolean\fR type is a subset of integers with usual
bce86c4163a3 Initial revision
kono
parents:
diff changeset
184 values 0=false and 1=true.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
185 Control escapes return a \fIboolean\fP value, and set \fInum\fP.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
186
bce86c4163a3 Initial revision
kono
parents:
diff changeset
187 All component escapes, and those
bce86c4163a3 Initial revision
kono
parents:
diff changeset
188 function escapes which return an \fIinteger\fR or \fIstring\fR value,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
189 pass this value back to their caller
bce86c4163a3 Initial revision
kono
parents:
diff changeset
190 in addition to setting \fIstr\fR or \fInum\fR.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
191 These escapes will print out this value
bce86c4163a3 Initial revision
kono
parents:
diff changeset
192 unless called as part of an argument to another escape sequence.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
193 Escapes which return a \fIboolean\fR value do pass this value
bce86c4163a3 Initial revision
kono
parents:
diff changeset
194 back to their caller in \fInum\fP, but will never print out the value.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
195
bce86c4163a3 Initial revision
kono
parents:
diff changeset
196 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
197 .ta \w'Formataddr 'u +\w'Argument 'u +\w'Rboolean 'u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
198 \fIFunction\fR \fIArgument\fR \fIReturn\fR \fIDescription\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
199 msg integer message number
bce86c4163a3 Initial revision
kono
parents:
diff changeset
200 cur integer message is current
bce86c4163a3 Initial revision
kono
parents:
diff changeset
201 .\" unseen integer message is unseen
bce86c4163a3 Initial revision
kono
parents:
diff changeset
202 size integer size of message
bce86c4163a3 Initial revision
kono
parents:
diff changeset
203 strlen integer length of \fIstr\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
204 width integer output buffer size in bytes
bce86c4163a3 Initial revision
kono
parents:
diff changeset
205 charleft integer bytes left in output buffer
bce86c4163a3 Initial revision
kono
parents:
diff changeset
206 timenow integer seconds since the UNIX epoch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
207 me string the user's mailbox
bce86c4163a3 Initial revision
kono
parents:
diff changeset
208 eq literal boolean \fInum\fR == \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
209 ne literal boolean \fInum\fR != \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
210 gt literal boolean \fInum\fR > \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
211 match literal boolean \fIstr\fR contains \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
212 amatch literal boolean \fIstr\fR starts with \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
213 plus literal integer \fIarg\fR plus \fInum\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
214 minus literal integer \fIarg\fR minus \fInum\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
215 divide literal integer \fInum\fR divided by \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
216 modulo literal integer \fInum\fR modulo \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
217 num literal integer Set \fInum\fR to \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
218 lit literal string Set \fIstr\fR to \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
219 getenv literal string Set \fIstr\fR to environment value of \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
220 profile literal string Set \fIstr\fR to profile component \fIarg\fR value
bce86c4163a3 Initial revision
kono
parents:
diff changeset
221 .\" dat literal int return value of dat[arg]
bce86c4163a3 Initial revision
kono
parents:
diff changeset
222 nonzero expr boolean \fInum\fR is non-zero
bce86c4163a3 Initial revision
kono
parents:
diff changeset
223 zero expr boolean \fInum\fR is zero
bce86c4163a3 Initial revision
kono
parents:
diff changeset
224 null expr boolean \fIstr\fR is empty
bce86c4163a3 Initial revision
kono
parents:
diff changeset
225 nonnull expr boolean \fIstr\fR is non-empty
bce86c4163a3 Initial revision
kono
parents:
diff changeset
226 void expr Set \fIstr\fR or \fInum\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
227 comp comp string Set \fIstr\fR to component text
bce86c4163a3 Initial revision
kono
parents:
diff changeset
228 compval comp integer \fInum\fR set to \*(lq\fBatoi\fR(\fIcomp\fR\^)\*(rq
bce86c4163a3 Initial revision
kono
parents:
diff changeset
229 .\" compflag comp integer Set \fInum\fR to component flags bits (internal)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
230 trim expr trim trailing white-space from \fIstr\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
231 putstr expr print \fIstr\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
232 putstrf expr print \fIstr\fR in a fixed width
bce86c4163a3 Initial revision
kono
parents:
diff changeset
233 putnum expr print \fInum\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
234 putnumf expr print \fInum\fR in a fixed width
bce86c4163a3 Initial revision
kono
parents:
diff changeset
235 .\" addtoseq literal add msg to sequence (LBL option)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
236 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
237 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
238
bce86c4163a3 Initial revision
kono
parents:
diff changeset
239 These functions require a date component as an argument:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
240 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
241 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
242 .ta \w'Formataddr 'u +\w'Argument 'u +\w'Rboolean 'u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
243 \fIFunction\fR \fIArgument\fR \fIReturn\fR \fIDescription\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
244 sec date integer seconds of the minute
bce86c4163a3 Initial revision
kono
parents:
diff changeset
245 min date integer minutes of the hour
bce86c4163a3 Initial revision
kono
parents:
diff changeset
246 hour date integer hours of the day (0-23)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
247 wday date integer day of the week (Sun=0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
248 day date string day of the week (abbrev.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
249 weekday date string day of the week
bce86c4163a3 Initial revision
kono
parents:
diff changeset
250 sday date integer day of the week known?
bce86c4163a3 Initial revision
kono
parents:
diff changeset
251 (0=implicit,\-1=unknown)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
252 mday date integer day of the month
bce86c4163a3 Initial revision
kono
parents:
diff changeset
253 yday date integer day of the year
bce86c4163a3 Initial revision
kono
parents:
diff changeset
254 mon date integer month of the year
bce86c4163a3 Initial revision
kono
parents:
diff changeset
255 month date string month of the year (abbrev.)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
256 lmonth date string month of the year
bce86c4163a3 Initial revision
kono
parents:
diff changeset
257 year date integer year (may be > 100)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
258 zone date integer timezone in hours
bce86c4163a3 Initial revision
kono
parents:
diff changeset
259 tzone date string timezone string
bce86c4163a3 Initial revision
kono
parents:
diff changeset
260 szone date integer timezone explicit?
bce86c4163a3 Initial revision
kono
parents:
diff changeset
261 (0=implicit,\-1=unknown)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
262 date2local date coerce date to local timezone
bce86c4163a3 Initial revision
kono
parents:
diff changeset
263 date2gmt date coerce date to GMT
bce86c4163a3 Initial revision
kono
parents:
diff changeset
264 dst date integer daylight savings in effect?
bce86c4163a3 Initial revision
kono
parents:
diff changeset
265 clock date integer seconds since the UNIX epoch
bce86c4163a3 Initial revision
kono
parents:
diff changeset
266 rclock date integer seconds prior to current time
bce86c4163a3 Initial revision
kono
parents:
diff changeset
267 tws date string official 822 rendering
bce86c4163a3 Initial revision
kono
parents:
diff changeset
268 pretty date string user-friendly rendering
bce86c4163a3 Initial revision
kono
parents:
diff changeset
269 nodate date integer \fIstr\fR not a date string
bce86c4163a3 Initial revision
kono
parents:
diff changeset
270 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
271 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
272
bce86c4163a3 Initial revision
kono
parents:
diff changeset
273 .ne 12
bce86c4163a3 Initial revision
kono
parents:
diff changeset
274 These functions require an address component as an argument.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
275 The return value of functions noted with `*' pertain only to
bce86c4163a3 Initial revision
kono
parents:
diff changeset
276 the first address present in the header component.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
277 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
278 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
279 .ta \w'Formataddr 'u +\w'Argument 'u +\w'Rboolean 'u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
280 \fIFunction\fR \fIArgument\fR \fIReturn\fR \fIDescription\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
281 proper addr string official 822 rendering
bce86c4163a3 Initial revision
kono
parents:
diff changeset
282 friendly addr string user-friendly rendering
bce86c4163a3 Initial revision
kono
parents:
diff changeset
283 addr addr string mbox@host or host!mbox rendering*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
284 pers addr string the personal name*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
285 note addr string commentary text*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
286 mbox addr string the local mailbox*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
287 mymbox addr integer the user's addresses? (0=no,1=yes)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
288 host addr string the host domain*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
289 nohost addr integer no host was present*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
290 type addr integer host type* (0=local,1=network,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
291 \-1=uucp,2=unknown)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
292 path addr string any leading host route*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
293 ingrp addr integer address was inside a group*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
294 gname addr string name of group*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
295 formataddr expr append \fIarg\fR to \fIstr\fR as a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
296 (comma separated) address list
bce86c4163a3 Initial revision
kono
parents:
diff changeset
297 putaddr literal print \fIstr\fR address list with
bce86c4163a3 Initial revision
kono
parents:
diff changeset
298 \fIarg\fR as optional label;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
299 get line width from \fInum\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
300 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
301 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
302
bce86c4163a3 Initial revision
kono
parents:
diff changeset
303 When escapes are nested, evaluation is done from inner-most to outer-most.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
304 The outer-most escape must begin with `%'; the inner escapes must not.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
305 For example,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
306
bce86c4163a3 Initial revision
kono
parents:
diff changeset
307 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
308 %<(mymbox{from}) To: %{to}%>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
309
bce86c4163a3 Initial revision
kono
parents:
diff changeset
310 writes the value of the header component \*(lqFrom:\*(rq to \fIstr\fR\^;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
311 then (\fImymbox\fR\^) reads \fIstr\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
312 and writes its result to \fInum\fR;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
313 then the control escape evaluates \fInum\fR. If \fInum\fR is
bce86c4163a3 Initial revision
kono
parents:
diff changeset
314 non-zero, the string \*(lqTo: \*(rq is printed followed by
bce86c4163a3 Initial revision
kono
parents:
diff changeset
315 the value of the header component \*(lqTo:\*(rq.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
316
bce86c4163a3 Initial revision
kono
parents:
diff changeset
317 A minor explanation of (\fImymbox\fR\^{\fIcomp\fR\^}) is in order.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
318 In general, it checks each of the addresses in the header component
bce86c4163a3 Initial revision
kono
parents:
diff changeset
319 \*(lq\fIcomp\fR\*(rq
bce86c4163a3 Initial revision
kono
parents:
diff changeset
320 against the user's mailbox name and any \fIAlternate-Mailboxes\fR.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
321 It returns true if any address matches, however, it
bce86c4163a3 Initial revision
kono
parents:
diff changeset
322 also returns true if the \*(lq\fIcomp\fR\*(rq header is not present
bce86c4163a3 Initial revision
kono
parents:
diff changeset
323 in the message. If needed, the (\fInull\fR\^) function can be
bce86c4163a3 Initial revision
kono
parents:
diff changeset
324 used to explicitly test for this condition.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
325
bce86c4163a3 Initial revision
kono
parents:
diff changeset
326 When a function or component escape is interpreted and the result
bce86c4163a3 Initial revision
kono
parents:
diff changeset
327 will be immediately printed,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
328 an optional field width can be
bce86c4163a3 Initial revision
kono
parents:
diff changeset
329 specified to print the field in exactly a given number of characters.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
330 For example, a numeric escape like %4(\fIsize\fR\^) will print at most 4
bce86c4163a3 Initial revision
kono
parents:
diff changeset
331 digits of the message size; overflow will be indicated by a `?' in the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
332 first position (like `?234').
bce86c4163a3 Initial revision
kono
parents:
diff changeset
333 A string escape like %4(\fIme\fR\^) will print the first 4 characters and
bce86c4163a3 Initial revision
kono
parents:
diff changeset
334 truncate at the end.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
335 Short fields are padded at the right with the fill character (normally,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
336 a blank). If the field width argument begins with a leading zero,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
337 then the fill character is set to a zero.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
338
bce86c4163a3 Initial revision
kono
parents:
diff changeset
339 As above,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
340 the functions (\fIputnumf\fR\^) and (\fIputstrf\fR\^) print their result in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
341 exactly the number of characters specified by their leading field width
bce86c4163a3 Initial revision
kono
parents:
diff changeset
342 argument.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
343 For example,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
344 %06(\fIputnumf\fR\^(\fIsize\fR\^)) will print the message size
bce86c4163a3 Initial revision
kono
parents:
diff changeset
345 in a field six characters wide filled with leading zeros;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
346 %14(\fIputstrf\^\fR{\fIfrom\^\fR}) will print
bce86c4163a3 Initial revision
kono
parents:
diff changeset
347 the \*(lqFrom:\*(rq header component in fourteen characters with
bce86c4163a3 Initial revision
kono
parents:
diff changeset
348 trailing spaces added as needed.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
349 For \fIputstrf\fR,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
350 using a negative value for the field width causes right-justification
bce86c4163a3 Initial revision
kono
parents:
diff changeset
351 of the string within the field,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
352 with padding on the left up to the field width.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
353 The functions (\fIputnum\fR\^) and (\fIputstr\fR\^) print their result in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
354 the minimum number of characters required, and ignore any leading
bce86c4163a3 Initial revision
kono
parents:
diff changeset
355 field width argument.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
356
bce86c4163a3 Initial revision
kono
parents:
diff changeset
357 The available output width is kept in an internal register; any output past
bce86c4163a3 Initial revision
kono
parents:
diff changeset
358 this width will be truncated.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
359
bce86c4163a3 Initial revision
kono
parents:
diff changeset
360 Comments may be inserted in most places where a function argument
bce86c4163a3 Initial revision
kono
parents:
diff changeset
361 is not expected. A comment begins with `%;' and ends with
bce86c4163a3 Initial revision
kono
parents:
diff changeset
362 a (non-escaped) newline.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
363
bce86c4163a3 Initial revision
kono
parents:
diff changeset
364 With all this in mind,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
365 here's the default format string for \fIscan\fR.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
366 It's been divided into several pieces for readability.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
367 The first part is:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
368
bce86c4163a3 Initial revision
kono
parents:
diff changeset
369 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
370 %4(msg)%<(cur)+%| %>%<{replied}\-%?{encrypted}E%| %>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
371
bce86c4163a3 Initial revision
kono
parents:
diff changeset
372 which says that the message number should be printed in four digits,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
373 if the message is the current message then a `+' else a space should be
bce86c4163a3 Initial revision
kono
parents:
diff changeset
374 printed,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
375 and if a \*(lqReplied:\*(rq field is present then a `\-' else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
376 if an \*(lqEncrypted:\*(rq field is present then an `E' otherwise
bce86c4163a3 Initial revision
kono
parents:
diff changeset
377 a space should be printed.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
378 Next:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
379
bce86c4163a3 Initial revision
kono
parents:
diff changeset
380 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
381 %02(mon{date})/%02(mday{date})
bce86c4163a3 Initial revision
kono
parents:
diff changeset
382
bce86c4163a3 Initial revision
kono
parents:
diff changeset
383 the month and date are printed in two digits (zero filled) separated by
bce86c4163a3 Initial revision
kono
parents:
diff changeset
384 a slash.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
385 Next,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
386
bce86c4163a3 Initial revision
kono
parents:
diff changeset
387 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
388 %<{date} %|*>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
389
bce86c4163a3 Initial revision
kono
parents:
diff changeset
390 If a \*(lqDate:\*(rq field was present,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
391 then a space is printed, otherwise a `*'.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
392 Next,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
393
bce86c4163a3 Initial revision
kono
parents:
diff changeset
394 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
395 %<(mymbox{from})%<{to}To:%14(friendly{to})%>%>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
396
bce86c4163a3 Initial revision
kono
parents:
diff changeset
397 if the message is from me,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
398 and there is a \*(lqTo:\*(rq header,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
399 print `To:' followed by a \*(lquser-friendly\*(rq rendering of the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
400 first address in the \*(lqTo:\*(rq field.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
401 Continuing,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
402
bce86c4163a3 Initial revision
kono
parents:
diff changeset
403 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
404 %<(zero)%17(friendly{from})%>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
405
bce86c4163a3 Initial revision
kono
parents:
diff changeset
406 if either of the above two tests failed,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
407 then the \*(lqFrom:\*(rq address is printed
bce86c4163a3 Initial revision
kono
parents:
diff changeset
408 in a \*(lquser-friendly\*(rq format.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
409 And finally,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
410
bce86c4163a3 Initial revision
kono
parents:
diff changeset
411 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
412 %{subject}%<{body}<<%{body}%>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
413
bce86c4163a3 Initial revision
kono
parents:
diff changeset
414 the subject and initial body (if any) are printed.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
415
bce86c4163a3 Initial revision
kono
parents:
diff changeset
416 For a more complicated example, next consider
bce86c4163a3 Initial revision
kono
parents:
diff changeset
417 the default \fIreplcomps\fR format file.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
418
bce86c4163a3 Initial revision
kono
parents:
diff changeset
419 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
420 %(lit)%(formataddr %<{reply-to}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
421
bce86c4163a3 Initial revision
kono
parents:
diff changeset
422 This clears \fIstr\fR and formats the \*(lqReply-To:\*(rq header
bce86c4163a3 Initial revision
kono
parents:
diff changeset
423 if present. If not present, the else-if clause is executed.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
424
bce86c4163a3 Initial revision
kono
parents:
diff changeset
425 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
426 %?{from}%?{sender}%?{return-path}%>)\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
427
bce86c4163a3 Initial revision
kono
parents:
diff changeset
428 This formats the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
429 \*(lqFrom:\*(rq, \*(lqSender:\*(rq and \*(lqReturn-Path:\*(rq
bce86c4163a3 Initial revision
kono
parents:
diff changeset
430 headers, stopping as soon as one of them is present. Next:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
431
bce86c4163a3 Initial revision
kono
parents:
diff changeset
432 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
433 %<(nonnull)%(void(width))%(putaddr To: )\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
434
bce86c4163a3 Initial revision
kono
parents:
diff changeset
435 If the \fIformataddr\fR result is non-null, it is printed as
bce86c4163a3 Initial revision
kono
parents:
diff changeset
436 an address (with line folding if needed) in a field \fIwidth\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
437 wide with a leading label of \*(lqTo: \*(rq.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
438
bce86c4163a3 Initial revision
kono
parents:
diff changeset
439 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
440 %(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
441
bce86c4163a3 Initial revision
kono
parents:
diff changeset
442 \fIstr\fR is cleared, and the
bce86c4163a3 Initial revision
kono
parents:
diff changeset
443 \*(lqTo:\*(rq and \*(lqCc:\*(rq headers, along with the user's
bce86c4163a3 Initial revision
kono
parents:
diff changeset
444 address
bce86c4163a3 Initial revision
kono
parents:
diff changeset
445 (depending on what was specified with
bce86c4163a3 Initial revision
kono
parents:
diff changeset
446 the \*(lq\-cc\*(rq switch to \fIrepl\fR\^) are formatted.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
447
bce86c4163a3 Initial revision
kono
parents:
diff changeset
448 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
449 %<(nonnull)%(void(width))%(putaddr cc: )\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
450
bce86c4163a3 Initial revision
kono
parents:
diff changeset
451 If the result is non-null, it is printed as above with a
bce86c4163a3 Initial revision
kono
parents:
diff changeset
452 leading label of \*(lqcc: \*(rq.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
453
bce86c4163a3 Initial revision
kono
parents:
diff changeset
454 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
455 %<{fcc}Fcc: %{fcc}\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
456
bce86c4163a3 Initial revision
kono
parents:
diff changeset
457 If a \*(lq\-fcc\ folder\*(rq switch was given to \fIrepl\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
458 (see \fIrepl\fR\0(1) for more details about %{\fIfcc\fR\^}),
bce86c4163a3 Initial revision
kono
parents:
diff changeset
459 an \*(lqFcc:\*(rq header is output.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
460
bce86c4163a3 Initial revision
kono
parents:
diff changeset
461 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
462 %<{subject}Subject: Re: %{subject}\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
463
bce86c4163a3 Initial revision
kono
parents:
diff changeset
464 If a subject component was present,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
465 a suitable reply subject is output.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
466
bce86c4163a3 Initial revision
kono
parents:
diff changeset
467 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
468 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
469 %<{date}In-reply-to: Your message of "\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
470 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
471 %<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
472 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
473 %{message-id}%>\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
474 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
475 \-\-\-\-\-\-\-\-
bce86c4163a3 Initial revision
kono
parents:
diff changeset
476 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
477
bce86c4163a3 Initial revision
kono
parents:
diff changeset
478 If a date component was present,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
479 an \*(lqIn-Reply-To:\*(rq header is output with the preface
bce86c4163a3 Initial revision
kono
parents:
diff changeset
480 \*(lqYour message of \*(rq. If the date was parseable, it is
bce86c4163a3 Initial revision
kono
parents:
diff changeset
481 output in a user-friendly format, otherwise it is output as-is.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
482 The message-id is included if present.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
483 As with all plain-text,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
484 the row of dashes are output as-is.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
485
bce86c4163a3 Initial revision
kono
parents:
diff changeset
486 This last part is a good example for a little more elaboration.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
487 Here's that part again in pseudo-code:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
488 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
489 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
490 .in +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
491 .ta .5i 1i 1.5i 2i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
492 if (comp_exists(date)) then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
493 print (\*(lqIn-reply-to: Your message of \\\*(lq\*(rq)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
494 if (not_date_string(date.value) then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
495 print (date.value)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
496 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
497 print (pretty(date.value))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
498 endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
499 print (\*(lq\\\*(rq\*(rq)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
500 if (comp_exists(message-id)) then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
501 print (\*(lq\\n\\t\*(rq)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
502 print (message-id.value)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
503 endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
504 print (\*(lq\\n\*(rq)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
505 endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
506 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
507 .in -.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
508 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
509 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
510 Although this seems complicated,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
511 in point of fact,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
512 this method is flexible enough to extract individual fields and print them in
bce86c4163a3 Initial revision
kono
parents:
diff changeset
513 any format the user desires.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
514 .Fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
515 None
bce86c4163a3 Initial revision
kono
parents:
diff changeset
516 .Pr
bce86c4163a3 Initial revision
kono
parents:
diff changeset
517 None
bce86c4163a3 Initial revision
kono
parents:
diff changeset
518 .Sa
bce86c4163a3 Initial revision
kono
parents:
diff changeset
519 scan(1), repl(1), ap(8), dp(8)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
520 .De
bce86c4163a3 Initial revision
kono
parents:
diff changeset
521 None
bce86c4163a3 Initial revision
kono
parents:
diff changeset
522 .Co
bce86c4163a3 Initial revision
kono
parents:
diff changeset
523 None
bce86c4163a3 Initial revision
kono
parents:
diff changeset
524 .Hi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
525 This software was contributed for MH 6.3. Prior to this, output
bce86c4163a3 Initial revision
kono
parents:
diff changeset
526 format specifications were much easier to write, but considerably
bce86c4163a3 Initial revision
kono
parents:
diff changeset
527 less flexible.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
528 .Bu
bce86c4163a3 Initial revision
kono
parents:
diff changeset
529 On hosts where \fIMH\fR was configured with the BERK option,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
530 address parsing is not enabled.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
531 .En