+.P
+Output is not generated when running as a daemon; otherwise, standard
+out and standard error are fairly noisy. All traffic between htsn and
+the feed server is displayed on stdout. Status messages are
+interspersed when they are generated with warnings and errors going to
+stderr. The following can be expected:
+.IP \[bu] 2
+The only data we send to the feed are the username and password. These
+will be highlighted in green on stdout.
+.IP \[bu]
+All data received from the feed will be echoed in the default color to
+stdout.
+.IP \[bu]
+Informational messages will be highlighted in cyan and sent to stdout.
+.IP \[bu]
+Warnings will be highlighted in yellow and sent to stderr.
+.IP \[bu]
+Errors will be highlighted in red and sent to stderr.
+
+.SH LOGGING
+.P
+Logging is done either to syslog or a file. The destination and
+verbosity are controlled by the \fI\-\-log\-file\fR,
+\fI\-\-log\-level\fR, and \fI\-\-syslog\fR parameters which may be
+specified either on the command line or in the configuration file.
+
+.SH OPTIONS
+
+.IP \fB\-\-daemonize\fR,\ \fB\-d\fR
+Run as a daemon, in the background. When running as a daemon the
+\fI\-\-pidfile\fR, \fI\-\-run\-as\-group\fR, and
+\fI\-\-run\-as\-user\fR flags become relevant.
+
+Default: disabled
+
+.IP \fB\-\-log-file\fR
+If you specify a file here, logs will be written to it (possibly in
+addition to syslog). Can be either a relative or absolute path. It
+will not be auto-rotated; use something log logrotate for that.
+
+Default: none
+
+.IP \fB\-\-log-level\fR
+How verbose should the logs be? We log notifications at three levels:
+INFO, WARN, and ERROR. Specify the \(dqmost boring\(dq level of
+notifications you would like to receive (in all-caps); more
+interesting notifications will be logged as well.
+
+Default: INFO
+
+.IP \fB\-\-output\-directory\fR,\ \fB\-o\fR
+To which directory should we write the XML files?
+
+Default: .
+
+.IP \fB\-\-password\fR
+The password associated with your TSN username. A password is
+required, so you must supply one either on the command line or in a
+configuration file.
+
+Default: none
+
+.IP \fB\-\-pidfile\fR
+(Daemon mode only) Create a PID file in the given location. This is
+used by the init system on Unix to keep track of the running daemon.
+
+Default: /run/htsn.pid
+
+.IP \fB\-\-run\-as\-group\fR
+(Daemon mode only) Run as the given system group. The PID file is
+written before privileges are dropped, so the only privileges needed
+by htsn are those necessary to write the XML files and (optionally)
+the log file.
+
+Default: the current group
+
+.IP \fB\-\-run\-as\-user\fR
+(Daemon mode only) Run as the given system user. The PID file is
+written before privileges are dropped, so the only privileges needed
+by htsn are those necessary to write the XML files and (optionally)
+the log file.
+
+Default: the current user
+
+.IP \fB\-\-syslog\fR,\ \fB\-s\fR
+Enable logging to syslog. On Windows this will attempt to communicate
+(over UDP) with a syslog daemon on localhost, which will most likely
+not work.
+
+Default: disabled
+
+.IP \fB\-\-username\fR,\ \fB\-u\fR
+Your TSN username. A username is required, so you must supply one
+either on the command line or in a configuration file.
+
+Default: none
+
+.SH FEED HOSTS
+.P
+It is possible to pass a list of feed hostnames on the command-line
+(see [HOSTNAMES] in the synopsis). By default \fBhtsn\fR will attempt
+to connect to every known TSN XML feed host in a round-robin fashion,
+so there is rarely a need to do this.
+
+.SH CONFIGURATION FILE
+.P
+Any of the command-line options mentioned above can be specified in a
+configuration file instead. We look for a file named \(dq.htsnrc\(dq
+in the user's home directory; its syntax is given by examples in the
+htsnrc.example file (included with \fBhtsn\fR).
+.P
+If you are using the \fI\-\-run\-as\-user\fR option, that means that
+the configuration file will need to go in that user's home directory
+(and not, for example, root's).
+.P
+Options specified on the command-line override those in the
+configuration file.
+
+.SH BUGS