Tidies to the test-suite infrastructure for compiling auxiliary
[exim.git] / doc / doc-docbook / x2man
CommitLineData
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
15open(IN, "spec.xml") || die "Can't open spec.xml\n";
16open(OUT, ">exim.8" ) || die "Can't open exim.8\n";
17
18print OUT <<End;
19.TH EXIM 8
20.SH NAME
21exim \\- 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
38Exim is a mail transfer agent (MTA) developed at the University of Cambridge.
39It is a large program with very many facilities. For a full specification, see
40the reference manual. This man page contains only a description of the command
41line options. It has been automatically generated from the reference manual
42source, hopefully without too much mangling.
3cb1b51e
PH
43.P
44Like 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
46delivery (some operating systems use \\fI/usr/lib/sendmail\\fP). This path is
47normally set up as a symbolic link to the Exim binary. It may also be used by
48boot scripts to start the Exim daemon. Many of Exim's command line options are
49compatible 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
54If no options are present that require a specific action (such as starting the
55daemon or a queue runner, testing an address, receiving a message in a specific
3cb1b51e
PH
56format, or listing the queue), and there are no arguments on the command line,
57Exim outputs a brief message about itself and exits.
58.sp
59However, if there is at least one command line argument, \\fB-bm\\fR (accept a
60local message on the standard input, with the arguments specifying the
61recipients) 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
68The \\fB-i\\fP option prevents a line containing just a dot from terminating
69the message. Only an end-of-file (generated by typing CTRL-D if the input is
70from a terminal) does so.
71.
72.SH "SETTING OPTIONS BY PROGRAM NAME"
168e428f 73.rs
3cb1b51e
PH
74.sp
75If 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
79Behave as if the option \\fB\\-bp\\fP were present before any other options.
80The \\fB\\-bp\\fP option requests a listing of the contents of the mail queue
81on the standard output.
82.TP
83\\fBrsmtp\\fR
84Behaves as if the option \\fB\\-bS\\fP were present before any other options,
85for compatibility with Smail. The \\fB\\-bS\\fP option is used for reading in a
86number of messages in batched SMTP format.
87.TP
88\\fBrmail\\fR
89Behave as if the \\fB\\-i\\fP and \\fB\\-oee\\fP options were present before
90any other options, for compatibility with Smail. The name \\fBrmail\\fR is used
91as an interface by some UUCP systems. The \\fB\\-i\\fP option specifies that a
92dot on a line by itself does not terminate a non\\-SMTP message; \\fB\\-oee\\fP
93requests that errors detected in non\\-SMTP messages be reported by emailing
94the sender.
95.TP
96\\fBrunq\\fR
97Behave as if the option \\fB\\-q\\fP were present before any other options, for
98compatibility with Smail. The \\fB\\-q\\fP option causes a single queue runner
99process to be started. It processes the queue once, then exits.
100.TP
101\\fBnewaliases\\fR
102Behave as if the option \\fB\\-bi\\fP were present before any other options,
103for compatibility with Sendmail. This option is used for rebuilding Sendmail's
104alias file. Exim does not have the concept of a single alias file, but can be
105configured to run a specified command if called with the \\fB\\-bi\\fP option.
3cb1b51e
PH
106.
107.SH "OPTIONS"
168e428f
PH
108.rs
109End
110
111while (<IN>) { last if /^<!-- === Start of command line options === -->\s*$/; }
112die "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
121while ($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/&lt;/</g;
219 s/&gt;/>/g;
220
9b371988
PH
221 s/&nbsp;/ /g;
222 s/&ndash;/-/g;
168e428f 223 s/&#x2019;/'/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
236print OUT <<End;
237.
238.SH "SEE ALSO"
239.rs
240.sp
241The full Exim specification, the Exim book, and the Exim wiki.
242End
243
244# End of x2man