Commit | Line | Data |
---|---|---|
168e428f PH |
1 | #! /usr/bin/perl -w |
2 | ||
3cb1b51e | 3 | # $Cambridge: exim/doc/doc-docbook/x2man,v 1.6 2006/12/19 12:28:35 ph10 Exp $ |
168e428f PH |
4 | |
5 | # Script to find the command line options in the DocBook source of the Exim | |
6 | # spec, and turn them into a man page, because people like that. | |
7 | ||
8 | ||
9 | ||
10 | ||
11 | ################################################## | |
12 | # Main Program # | |
13 | ################################################## | |
14 | ||
15 | open(IN, "spec.xml") || die "Can't open spec.xml\n"; | |
16 | open(OUT, ">exim.8" ) || die "Can't open exim.8\n"; | |
17 | ||
18 | print OUT <<End; | |
19 | .TH EXIM 8 | |
20 | .SH NAME | |
21 | exim \\- a Mail Transfer Agent | |
22 | .SH SYNOPSIS | |
23 | .B exim [options] arguments ... | |
24 | .br | |
25 | .B mailq [options] arguments ... | |
26 | .br | |
27 | .B rsmtp [options] arguments ... | |
28 | .br | |
29 | .B rmail [options] arguments ... | |
30 | .br | |
31 | .B runq [options] arguments ... | |
32 | .br | |
33 | .B newaliases [options] arguments ... | |
3cb1b51e | 34 | . |
168e428f PH |
35 | .SH DESCRIPTION |
36 | .rs | |
37 | .sp | |
38 | Exim is a mail transfer agent (MTA) developed at the University of Cambridge. | |
39 | It is a large program with very many facilities. For a full specification, see | |
40 | the reference manual. This man page contains only a description of the command | |
41 | line options. It has been automatically generated from the reference manual | |
42 | source, hopefully without too much mangling. | |
3cb1b51e PH |
43 | .P |
44 | Like other MTAs, Exim replaces Sendmail, and is normally called by user agents | |
45 | (MUAs) using the path \\fI/usr/sbin/sendmail\\fP when they submit messages for | |
46 | delivery (some operating systems use \\fI/usr/lib/sendmail\\fP). This path is | |
47 | normally set up as a symbolic link to the Exim binary. It may also be used by | |
48 | boot scripts to start the Exim daemon. Many of Exim's command line options are | |
49 | compatible with Sendmail so that it can act as a drop-in replacement. | |
50 | . | |
51 | .SH "DEFAULT ACTION" | |
db9452a9 PH |
52 | .rs |
53 | .sp | |
b4583215 PH |
54 | If no options are present that require a specific action (such as starting the |
55 | daemon or a queue runner, testing an address, receiving a message in a specific | |
3cb1b51e PH |
56 | format, or listing the queue), and there are no arguments on the command line, |
57 | Exim outputs a brief message about itself and exits. | |
58 | .sp | |
59 | However, if there is at least one command line argument, \\fB-bm\\fR (accept a | |
60 | local message on the standard input, with the arguments specifying the | |
61 | recipients) is assumed. Thus, for example, if Exim is installed in | |
62 | \\fI/usr/sbin\\fP, you can send a message from the command line like this: | |
63 | .sp | |
64 | /usr/sbin/exim -i <recipient-address(es)> | |
65 | <message content, including all the header lines> | |
66 | CTRL-D | |
67 | .sp | |
68 | The \\fB-i\\fP option prevents a line containing just a dot from terminating | |
69 | the message. Only an end-of-file (generated by typing CTRL-D if the input is | |
70 | from a terminal) does so. | |
71 | . | |
72 | .SH "SETTING OPTIONS BY PROGRAM NAME" | |
168e428f | 73 | .rs |
3cb1b51e PH |
74 | .sp |
75 | If an Exim binary is called using one of the names listed in this section | |
76 | (typically via a symbolic link), certain options are assumed. | |
77 | .TP | |
168e428f PH |
78 | \\fBmailq\\fR |
79 | Behave as if the option \\fB\\-bp\\fP were present before any other options. | |
80 | The \\fB\\-bp\\fP option requests a listing of the contents of the mail queue | |
81 | on the standard output. | |
82 | .TP | |
83 | \\fBrsmtp\\fR | |
84 | Behaves as if the option \\fB\\-bS\\fP were present before any other options, | |
85 | for compatibility with Smail. The \\fB\\-bS\\fP option is used for reading in a | |
86 | number of messages in batched SMTP format. | |
87 | .TP | |
88 | \\fBrmail\\fR | |
89 | Behave as if the \\fB\\-i\\fP and \\fB\\-oee\\fP options were present before | |
90 | any other options, for compatibility with Smail. The name \\fBrmail\\fR is used | |
91 | as an interface by some UUCP systems. The \\fB\\-i\\fP option specifies that a | |
92 | dot on a line by itself does not terminate a non\\-SMTP message; \\fB\\-oee\\fP | |
93 | requests that errors detected in non\\-SMTP messages be reported by emailing | |
94 | the sender. | |
95 | .TP | |
96 | \\fBrunq\\fR | |
97 | Behave as if the option \\fB\\-q\\fP were present before any other options, for | |
98 | compatibility with Smail. The \\fB\\-q\\fP option causes a single queue runner | |
99 | process to be started. It processes the queue once, then exits. | |
100 | .TP | |
101 | \\fBnewaliases\\fR | |
102 | Behave as if the option \\fB\\-bi\\fP were present before any other options, | |
103 | for compatibility with Sendmail. This option is used for rebuilding Sendmail's | |
104 | alias file. Exim does not have the concept of a single alias file, but can be | |
105 | configured to run a specified command if called with the \\fB\\-bi\\fP option. | |
3cb1b51e PH |
106 | . |
107 | .SH "OPTIONS" | |
168e428f PH |
108 | .rs |
109 | End | |
110 | ||
111 | while (<IN>) { last if /^<!-- === Start of command line options === -->\s*$/; } | |
112 | die "Can't find start of options\n" if ! defined $_; | |
113 | ||
114 | $optstart = 0; | |
115 | $indent = ""; | |
116 | ||
117 | # Loop for each individual option | |
118 | ||
119 | $next = <IN>; | |
120 | ||
121 | while ($next) | |
122 | { | |
123 | $_ = $next; | |
124 | $next = <IN>; | |
125 | ||
126 | last if /^<!-- === End of command line options === -->\s*$/; | |
127 | ||
128 | # Start of new option | |
129 | ||
4f578862 | 130 | if (/^<term>(?=<option>-)(.*?)<\/term>$/) |
168e428f PH |
131 | { |
132 | print OUT ".TP 10\n"; | |
9b371988 | 133 | $_ = "$1\n"; |
168e428f | 134 | $optstart = 1; |
168e428f PH |
135 | } |
136 | ||
137 | # If a line contains text that is not in <>, read subsequent lines of the | |
138 | # same form, so that we get whole sentences for matching on references. | |
139 | ||
140 | if (/^ (?> (<[^>]+>)* ) \s*\S/x) | |
141 | { | |
142 | while ($next =~ /^ (?> (<[^>]+>)* ) \s*\S/x) | |
143 | { | |
144 | $_ .= $next; | |
145 | $next = <IN>; | |
146 | } | |
147 | } | |
148 | ||
149 | # Remove sentences or parenthetical comments that refer to chapters or | |
150 | # sections. The order of these changes is very important: | |
151 | # | |
152 | # (1) Remove any parenthetical comments first. | |
153 | # (2) Then remove any sentences that start after a full stop. | |
154 | # (3) Then remove any sentences that start at the beginning or a newline. | |
155 | ||
156 | s/\s?\( [^()]+ <xref \s linkend="[^"]+" \/ > \)//xg; | |
157 | s/\s?\. [^.]+ <xref \s linkend="[^"]+" \/ > [^.]*? \././xg; | |
158 | s/(^|\n) [^.]+ <xref \s linkend="[^"]+" \/ > [^.]*? \./$1/xg; | |
159 | ||
160 | # Handle paragraph starts; skip the first one encountered for an option | |
161 | ||
162 | if ($optstart && /<(sim)?para>/) | |
163 | { | |
164 | s/<(sim)?para>//; | |
165 | $optstart = 0; | |
166 | } | |
167 | ||
3cb1b51e | 168 | # Literal layout needs to be wrapped with .sp, and indented. |
168e428f PH |
169 | |
170 | if (/<literallayout/) | |
171 | { | |
3cb1b51e | 172 | s/<literallayout[^>]*>/.sp/; |
168e428f PH |
173 | $indent = " "; |
174 | } | |
175 | ||
176 | $indent = "" if (/<\/literallayout>/); | |
177 | ||
178 | # Others get marked | |
179 | ||
3cb1b51e PH |
180 | s/<para>/.sp/; |
181 | s/<simpara>/.sp/; | |
168e428f PH |
182 | |
183 | # Skip index entries | |
184 | ||
185 | s/<primary>.*?<\/primary>//g; | |
186 | s/<secondary>.*?<\/secondary>//g; | |
187 | ||
188 | # Convert all occurrences of backslash into \e | |
189 | ||
190 | s/\\/\\e/g; | |
191 | ||
192 | # Handle bold and italic | |
193 | ||
194 | s/<emphasis>/\\fI/g; | |
195 | s/<emphasis role="bold">/\\fB/g; | |
196 | s/<\/emphasis>/\\fP/g; | |
197 | ||
198 | s/<option>/\\fB/g; | |
199 | s/<\/option>/\\fP/g; | |
200 | ||
201 | s/<varname>/\\fI/g; | |
202 | s/<\/varname>/\\fP/g; | |
203 | ||
204 | # Handle quotes | |
205 | ||
206 | s/<\/?quote>/"/g; | |
207 | ||
208 | # Remove any remaining XML markup | |
209 | ||
210 | s/<[^>]*>//g; | |
211 | ||
212 | # If nothing left in the line, ignore. | |
213 | ||
214 | next if /^\s*$/; | |
215 | ||
168e428f PH |
216 | # We are going to output some data; sort out special characters |
217 | ||
218 | s/</</g; | |
219 | s/>/>/g; | |
220 | ||
9b371988 PH |
221 | s/ / /g; |
222 | s/–/-/g; | |
168e428f | 223 | s/’/'/g; |
168e428f PH |
224 | |
225 | # Escape hyphens to prevent unwanted hyphenation | |
226 | ||
227 | s/-/\\-/g; | |
228 | ||
3cb1b51e | 229 | # Put in the indent unless the line starts .sp, and then write the line |
168e428f | 230 | |
3cb1b51e | 231 | s/^/$indent/mg unless /^\.sp/; |
168e428f PH |
232 | |
233 | print OUT; | |
234 | } | |
235 | ||
3cb1b51e PH |
236 | print OUT <<End; |
237 | . | |
238 | .SH "SEE ALSO" | |
239 | .rs | |
240 | .sp | |
241 | The full Exim specification, the Exim book, and the Exim wiki. | |
242 | End | |
243 | ||
244 | # End of x2man |