xref: /freebsd/contrib/mandoc/mandoc.1 (revision c1c95add8c80843ba15d784f95c361d795b1f593)
1*c1c95addSBrooks Davis.\" $Id: mandoc.1,v 1.267 2023/11/13 19:13:01 schwarze Exp $
261d06d6bSBaptiste Daroussin.\"
3*c1c95addSBrooks Davis.\" Copyright (c) 2012, 2014-2023 Ingo Schwarze <schwarze@openbsd.org>
461d06d6bSBaptiste Daroussin.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
561d06d6bSBaptiste Daroussin.\"
661d06d6bSBaptiste Daroussin.\" Permission to use, copy, modify, and distribute this software for any
761d06d6bSBaptiste Daroussin.\" purpose with or without fee is hereby granted, provided that the above
861d06d6bSBaptiste Daroussin.\" copyright notice and this permission notice appear in all copies.
961d06d6bSBaptiste Daroussin.\"
1061d06d6bSBaptiste Daroussin.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1161d06d6bSBaptiste Daroussin.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1261d06d6bSBaptiste Daroussin.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1361d06d6bSBaptiste Daroussin.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1461d06d6bSBaptiste Daroussin.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1561d06d6bSBaptiste Daroussin.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1661d06d6bSBaptiste Daroussin.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1761d06d6bSBaptiste Daroussin.\"
18*c1c95addSBrooks Davis.Dd $Mdocdate: November 13 2023 $
1961d06d6bSBaptiste Daroussin.Dt MANDOC 1
2061d06d6bSBaptiste Daroussin.Os
2161d06d6bSBaptiste Daroussin.Sh NAME
2261d06d6bSBaptiste Daroussin.Nm mandoc
2361d06d6bSBaptiste Daroussin.Nd format manual pages
2461d06d6bSBaptiste Daroussin.Sh SYNOPSIS
2561d06d6bSBaptiste Daroussin.Nm mandoc
2661d06d6bSBaptiste Daroussin.Op Fl ac
2761d06d6bSBaptiste Daroussin.Op Fl I Cm os Ns = Ns Ar name
2861d06d6bSBaptiste Daroussin.Op Fl K Ar encoding
2961d06d6bSBaptiste Daroussin.Op Fl mdoc | man
3061d06d6bSBaptiste Daroussin.Op Fl O Ar options
3161d06d6bSBaptiste Daroussin.Op Fl T Ar output
3261d06d6bSBaptiste Daroussin.Op Fl W Ar level
3361d06d6bSBaptiste Daroussin.Op Ar
3461d06d6bSBaptiste Daroussin.Sh DESCRIPTION
3561d06d6bSBaptiste DaroussinThe
3661d06d6bSBaptiste Daroussin.Nm
3761d06d6bSBaptiste Daroussinutility formats manual pages for display.
3861d06d6bSBaptiste Daroussin.Pp
3961d06d6bSBaptiste DaroussinBy default,
4061d06d6bSBaptiste Daroussin.Nm
4161d06d6bSBaptiste Daroussinreads
4261d06d6bSBaptiste Daroussin.Xr mdoc 7
4361d06d6bSBaptiste Daroussinor
4461d06d6bSBaptiste Daroussin.Xr man 7
4561d06d6bSBaptiste Daroussintext from stdin and produces
4661d06d6bSBaptiste Daroussin.Fl T Cm locale
4761d06d6bSBaptiste Daroussinoutput.
4861d06d6bSBaptiste Daroussin.Pp
4961d06d6bSBaptiste DaroussinThe options are as follows:
5061d06d6bSBaptiste Daroussin.Bl -tag -width Ds
5161d06d6bSBaptiste Daroussin.It Fl a
5261d06d6bSBaptiste DaroussinIf the standard output is a terminal device and
5361d06d6bSBaptiste Daroussin.Fl c
5461d06d6bSBaptiste Daroussinis not specified, use
556d38604fSBaptiste Daroussin.Xr less 1
5661d06d6bSBaptiste Daroussinto paginate the output, just like
5761d06d6bSBaptiste Daroussin.Xr man 1
5861d06d6bSBaptiste Daroussinwould.
5961d06d6bSBaptiste Daroussin.It Fl c
6061d06d6bSBaptiste DaroussinCopy the formatted manual pages to the standard output without using
616d38604fSBaptiste Daroussin.Xr less 1
6261d06d6bSBaptiste Daroussinto paginate them.
6361d06d6bSBaptiste DaroussinThis is the default.
6461d06d6bSBaptiste DaroussinIt can be specified to override
6561d06d6bSBaptiste Daroussin.Fl a .
6661d06d6bSBaptiste Daroussin.It Fl I Cm os Ns = Ns Ar name
6761d06d6bSBaptiste DaroussinOverride the default operating system
6861d06d6bSBaptiste Daroussin.Ar name
6961d06d6bSBaptiste Daroussinfor the
7061d06d6bSBaptiste Daroussin.Xr mdoc 7
7161d06d6bSBaptiste Daroussin.Ic \&Os
7261d06d6bSBaptiste Daroussinand for the
7361d06d6bSBaptiste Daroussin.Xr man 7
7461d06d6bSBaptiste Daroussin.Ic \&TH
7561d06d6bSBaptiste Daroussinmacro.
7661d06d6bSBaptiste Daroussin.It Fl K Ar encoding
7761d06d6bSBaptiste DaroussinSpecify the input encoding.
7861d06d6bSBaptiste DaroussinThe supported
7961d06d6bSBaptiste Daroussin.Ar encoding
8061d06d6bSBaptiste Daroussinarguments are
8161d06d6bSBaptiste Daroussin.Cm us-ascii ,
8261d06d6bSBaptiste Daroussin.Cm iso-8859-1 ,
8361d06d6bSBaptiste Daroussinand
8461d06d6bSBaptiste Daroussin.Cm utf-8 .
8561d06d6bSBaptiste DaroussinIf not specified, autodetection uses the first match in the following
8661d06d6bSBaptiste Daroussinlist:
8761d06d6bSBaptiste Daroussin.Bl -enum
8861d06d6bSBaptiste Daroussin.It
8961d06d6bSBaptiste DaroussinIf the first three bytes of the input file are the UTF-8 byte order
9061d06d6bSBaptiste Daroussinmark (BOM, 0xefbbbf), input is interpreted as
9161d06d6bSBaptiste Daroussin.Cm utf-8 .
9261d06d6bSBaptiste Daroussin.It
9361d06d6bSBaptiste DaroussinIf the first or second line of the input file matches the
9461d06d6bSBaptiste Daroussin.Sy emacs
9561d06d6bSBaptiste Daroussinmode line format
9661d06d6bSBaptiste Daroussin.Pp
9761d06d6bSBaptiste Daroussin.D1 .\e" -*- Oo ...; Oc coding: Ar encoding ; No -*-
9861d06d6bSBaptiste Daroussin.Pp
9961d06d6bSBaptiste Daroussinthen input is interpreted according to
10061d06d6bSBaptiste Daroussin.Ar encoding .
10161d06d6bSBaptiste Daroussin.It
10261d06d6bSBaptiste DaroussinIf the first non-ASCII byte in the file introduces a valid UTF-8
10361d06d6bSBaptiste Daroussinsequence, input is interpreted as
10461d06d6bSBaptiste Daroussin.Cm utf-8 .
10561d06d6bSBaptiste Daroussin.It
10661d06d6bSBaptiste DaroussinOtherwise, input is interpreted as
10761d06d6bSBaptiste Daroussin.Cm iso-8859-1 .
10861d06d6bSBaptiste Daroussin.El
10961d06d6bSBaptiste Daroussin.It Fl mdoc | man
11061d06d6bSBaptiste DaroussinWith
11161d06d6bSBaptiste Daroussin.Fl mdoc ,
11261d06d6bSBaptiste Daroussinall input files are interpreted as
11361d06d6bSBaptiste Daroussin.Xr mdoc 7 .
11461d06d6bSBaptiste DaroussinWith
11561d06d6bSBaptiste Daroussin.Fl man ,
11661d06d6bSBaptiste Daroussinall input files are interpreted as
11761d06d6bSBaptiste Daroussin.Xr man 7 .
11861d06d6bSBaptiste DaroussinBy default, the input language is automatically detected for each file:
11961d06d6bSBaptiste Daroussinif the first macro is
12061d06d6bSBaptiste Daroussin.Ic \&Dd
12161d06d6bSBaptiste Daroussinor
12261d06d6bSBaptiste Daroussin.Ic \&Dt ,
12361d06d6bSBaptiste Daroussinthe
12461d06d6bSBaptiste Daroussin.Xr mdoc 7
12561d06d6bSBaptiste Daroussinparser is used; otherwise, the
12661d06d6bSBaptiste Daroussin.Xr man 7
12761d06d6bSBaptiste Daroussinparser is used.
12861d06d6bSBaptiste DaroussinWith other arguments,
12961d06d6bSBaptiste Daroussin.Fl m
13061d06d6bSBaptiste Daroussinis silently ignored.
13161d06d6bSBaptiste Daroussin.It Fl O Ar options
13261d06d6bSBaptiste DaroussinComma-separated output options.
13361d06d6bSBaptiste DaroussinSee the descriptions of the individual output formats for supported
13461d06d6bSBaptiste Daroussin.Ar options .
13561d06d6bSBaptiste Daroussin.It Fl T Ar output
13661d06d6bSBaptiste DaroussinSelect the output format.
13761d06d6bSBaptiste DaroussinSupported values for the
13861d06d6bSBaptiste Daroussin.Ar output
13961d06d6bSBaptiste Daroussinargument are
14061d06d6bSBaptiste Daroussin.Cm ascii ,
14161d06d6bSBaptiste Daroussin.Cm html ,
14261d06d6bSBaptiste Daroussinthe default of
14361d06d6bSBaptiste Daroussin.Cm locale ,
14461d06d6bSBaptiste Daroussin.Cm man ,
14561d06d6bSBaptiste Daroussin.Cm markdown ,
14661d06d6bSBaptiste Daroussin.Cm pdf ,
14761d06d6bSBaptiste Daroussin.Cm ps ,
14861d06d6bSBaptiste Daroussin.Cm tree ,
14961d06d6bSBaptiste Daroussinand
15061d06d6bSBaptiste Daroussin.Cm utf8 .
15161d06d6bSBaptiste Daroussin.Pp
15261d06d6bSBaptiste DaroussinThe special
15361d06d6bSBaptiste Daroussin.Fl T Cm lint
15461d06d6bSBaptiste Daroussinmode only parses the input and produces no output.
15561d06d6bSBaptiste DaroussinIt implies
15661d06d6bSBaptiste Daroussin.Fl W Cm all
15761d06d6bSBaptiste Daroussinand redirects parser messages, which usually appear on standard
15861d06d6bSBaptiste Daroussinerror output, to standard output.
15961d06d6bSBaptiste Daroussin.It Fl W Ar level
16061d06d6bSBaptiste DaroussinSpecify the minimum message
16161d06d6bSBaptiste Daroussin.Ar level
16261d06d6bSBaptiste Daroussinto be reported on the standard error output and to affect the exit status.
16361d06d6bSBaptiste DaroussinThe
16461d06d6bSBaptiste Daroussin.Ar level
16561d06d6bSBaptiste Daroussincan be
16661d06d6bSBaptiste Daroussin.Cm base ,
16761d06d6bSBaptiste Daroussin.Cm style ,
16861d06d6bSBaptiste Daroussin.Cm warning ,
16961d06d6bSBaptiste Daroussin.Cm error ,
17061d06d6bSBaptiste Daroussinor
17161d06d6bSBaptiste Daroussin.Cm unsupp .
17261d06d6bSBaptiste DaroussinThe
17361d06d6bSBaptiste Daroussin.Cm base
17461d06d6bSBaptiste Daroussinlevel automatically derives the operating system from the contents of the
17561d06d6bSBaptiste Daroussin.Ic \&Os
17661d06d6bSBaptiste Daroussinmacro, from the
17761d06d6bSBaptiste Daroussin.Fl Ios
17861d06d6bSBaptiste Daroussincommand line option, or from the
17961d06d6bSBaptiste Daroussin.Xr uname 3
18061d06d6bSBaptiste Daroussinreturn value.
18161d06d6bSBaptiste DaroussinThe levels
18261d06d6bSBaptiste Daroussin.Cm openbsd
18361d06d6bSBaptiste Daroussinand
18461d06d6bSBaptiste Daroussin.Cm netbsd
18561d06d6bSBaptiste Daroussinare variants of
18661d06d6bSBaptiste Daroussin.Cm base
18761d06d6bSBaptiste Daroussinthat bypass autodetection and request validation of base system
18861d06d6bSBaptiste Daroussinconventions for a particular operating system.
18961d06d6bSBaptiste DaroussinThe level
19061d06d6bSBaptiste Daroussin.Cm all
19161d06d6bSBaptiste Daroussinis an alias for
19261d06d6bSBaptiste Daroussin.Cm base .
19361d06d6bSBaptiste DaroussinBy default,
19461d06d6bSBaptiste Daroussin.Nm
19561d06d6bSBaptiste Daroussinis silent.
19661d06d6bSBaptiste DaroussinSee
19761d06d6bSBaptiste Daroussin.Sx EXIT STATUS
19861d06d6bSBaptiste Daroussinand
19961d06d6bSBaptiste Daroussin.Sx DIAGNOSTICS
20061d06d6bSBaptiste Daroussinfor details.
20161d06d6bSBaptiste Daroussin.Pp
20261d06d6bSBaptiste DaroussinThe special option
20361d06d6bSBaptiste Daroussin.Fl W Cm stop
20461d06d6bSBaptiste Daroussintells
20561d06d6bSBaptiste Daroussin.Nm
20661d06d6bSBaptiste Daroussinto exit after parsing a file that causes warnings or errors of at least
20761d06d6bSBaptiste Daroussinthe requested level.
20861d06d6bSBaptiste DaroussinNo formatted output will be produced from that file.
20961d06d6bSBaptiste DaroussinIf both a
21061d06d6bSBaptiste Daroussin.Ar level
21161d06d6bSBaptiste Daroussinand
21261d06d6bSBaptiste Daroussin.Cm stop
21361d06d6bSBaptiste Daroussinare requested, they can be joined with a comma, for example
21461d06d6bSBaptiste Daroussin.Fl W Cm error , Ns Cm stop .
21561d06d6bSBaptiste Daroussin.It Ar file
21661d06d6bSBaptiste DaroussinRead from the given input file.
21761d06d6bSBaptiste DaroussinIf multiple files are specified, they are processed in the given order.
21861d06d6bSBaptiste DaroussinIf unspecified,
21961d06d6bSBaptiste Daroussin.Nm
22061d06d6bSBaptiste Daroussinreads from standard input.
22161d06d6bSBaptiste Daroussin.El
22261d06d6bSBaptiste Daroussin.Pp
22361d06d6bSBaptiste DaroussinThe options
22461d06d6bSBaptiste Daroussin.Fl fhklw
22545a5aec3SBaptiste Daroussinare also supported and are documented in
22645a5aec3SBaptiste Daroussin.Xr man 1 .
22761d06d6bSBaptiste DaroussinIn
22861d06d6bSBaptiste Daroussin.Fl f
22961d06d6bSBaptiste Daroussinand
23061d06d6bSBaptiste Daroussin.Fl k
23161d06d6bSBaptiste Daroussinmode,
23261d06d6bSBaptiste Daroussin.Nm
23361d06d6bSBaptiste Daroussinalso supports the options
23461d06d6bSBaptiste Daroussin.Fl CMmOSs
23561d06d6bSBaptiste Daroussindescribed in the
23661d06d6bSBaptiste Daroussin.Xr apropos 1
23761d06d6bSBaptiste Daroussinmanual.
23861d06d6bSBaptiste DaroussinThe options
23961d06d6bSBaptiste Daroussin.Fl fkl
24061d06d6bSBaptiste Daroussinare mutually exclusive and override each other.
24161d06d6bSBaptiste Daroussin.Ss ASCII Output
24261d06d6bSBaptiste DaroussinUse
24361d06d6bSBaptiste Daroussin.Fl T Cm ascii
24461d06d6bSBaptiste Daroussinto force text output in 7-bit ASCII character encoding documented in the
24561d06d6bSBaptiste Daroussin.Xr ascii 7
24661d06d6bSBaptiste Daroussinmanual page, ignoring the
24761d06d6bSBaptiste Daroussin.Xr locale 1
24861d06d6bSBaptiste Daroussinset in the environment.
24961d06d6bSBaptiste Daroussin.Pp
25061d06d6bSBaptiste DaroussinFont styles are applied by using back-spaced encoding such that an
25161d06d6bSBaptiste Daroussinunderlined character
25261d06d6bSBaptiste Daroussin.Sq c
25361d06d6bSBaptiste Daroussinis rendered as
25461d06d6bSBaptiste Daroussin.Sq _ Ns \e[bs] Ns c ,
25561d06d6bSBaptiste Daroussinwhere
25661d06d6bSBaptiste Daroussin.Sq \e[bs]
25761d06d6bSBaptiste Daroussinis the back-space character number 8.
25861d06d6bSBaptiste DaroussinEmboldened characters are rendered as
25961d06d6bSBaptiste Daroussin.Sq c Ns \e[bs] Ns c .
2607295610fSBaptiste DaroussinThis markup is typically converted to appropriate terminal sequences by
2617295610fSBaptiste Daroussinthe pager or
2627295610fSBaptiste Daroussin.Xr ul 1 .
2637295610fSBaptiste DaroussinTo remove the markup, pipe the output to
2647295610fSBaptiste Daroussin.Xr col 1
2657295610fSBaptiste Daroussin.Fl b
2667295610fSBaptiste Daroussininstead.
26761d06d6bSBaptiste Daroussin.Pp
26861d06d6bSBaptiste DaroussinThe special characters documented in
26961d06d6bSBaptiste Daroussin.Xr mandoc_char 7
27061d06d6bSBaptiste Daroussinare rendered best-effort in an ASCII equivalent.
2717295610fSBaptiste DaroussinIn particular, opening and closing
2727295610fSBaptiste Daroussin.Sq single quotes
2737295610fSBaptiste Daroussinare represented as characters number 0x60 and 0x27, respectively,
2747295610fSBaptiste Daroussinwhich agrees with all ASCII standards from 1965 to the latest
2757295610fSBaptiste Daroussinrevision (2012) and which matches the traditional way in which
2767295610fSBaptiste Daroussin.Xr roff 7
2777295610fSBaptiste Daroussinformatters represent single quotes in ASCII output.
2787295610fSBaptiste DaroussinThis correct ASCII rendering may look strange with modern
2797295610fSBaptiste DaroussinUnicode-compatible fonts because contrary to ASCII, Unicode uses
2807295610fSBaptiste Daroussinthe code point U+0060 for the grave accent only, never for an opening
2817295610fSBaptiste Daroussinquote.
28261d06d6bSBaptiste Daroussin.Pp
28361d06d6bSBaptiste DaroussinThe following
28461d06d6bSBaptiste Daroussin.Fl O
28561d06d6bSBaptiste Daroussinarguments are accepted:
28661d06d6bSBaptiste Daroussin.Bl -tag -width Ds
28761d06d6bSBaptiste Daroussin.It Cm indent Ns = Ns Ar indent
28861d06d6bSBaptiste DaroussinThe left margin for normal text is set to
28961d06d6bSBaptiste Daroussin.Ar indent
290*c1c95addSBrooks Davisblank characters instead of the default of five.
29161d06d6bSBaptiste DaroussinIncreasing this is not recommended; it may result in degraded formatting,
29261d06d6bSBaptiste Daroussinfor example overfull lines or ugly line breaks.
29361d06d6bSBaptiste DaroussinWhen output is to a pager on a terminal that is less than 66 columns
29461d06d6bSBaptiste Daroussinwide, the default is reduced to three columns.
29561d06d6bSBaptiste Daroussin.It Cm mdoc
29661d06d6bSBaptiste DaroussinFormat
29761d06d6bSBaptiste Daroussin.Xr man 7
29861d06d6bSBaptiste Daroussininput files in
29961d06d6bSBaptiste Daroussin.Xr mdoc 7
30061d06d6bSBaptiste Daroussinoutput style.
3016d38604fSBaptiste DaroussinThis prints the operating system name rather than the page title
302*c1c95addSBrooks Davison the right side of the footer line.
30361d06d6bSBaptiste DaroussinOne useful application is for checking that
30461d06d6bSBaptiste Daroussin.Fl T Cm man
30561d06d6bSBaptiste Daroussinoutput formats in the same way as the
30661d06d6bSBaptiste Daroussin.Xr mdoc 7
30761d06d6bSBaptiste Daroussinsource it was generated from.
3087295610fSBaptiste Daroussin.It Cm tag Ns Op = Ns Ar term
3097295610fSBaptiste DaroussinIf the formatted manual page is opened in a pager,
3107295610fSBaptiste Daroussingo to the definition of the
3117295610fSBaptiste Daroussin.Ar term
3127295610fSBaptiste Daroussinrather than showing the manual page from the beginning.
3137295610fSBaptiste DaroussinIf no
3147295610fSBaptiste Daroussin.Ar term
3157295610fSBaptiste Daroussinis specified, reuse the first command line argument that is not a
3167295610fSBaptiste Daroussin.Ar section
3177295610fSBaptiste Daroussinnumber.
3187295610fSBaptiste DaroussinIf that argument is in
3197295610fSBaptiste Daroussin.Xr apropos 1
3207295610fSBaptiste Daroussin.Ar key Ns = Ns Ar val
3217295610fSBaptiste Daroussinformat, only the
3227295610fSBaptiste Daroussin.Ar val
3237295610fSBaptiste Daroussinis used rather than the argument as a whole.
3247295610fSBaptiste DaroussinThis is useful for commands like
3257295610fSBaptiste Daroussin.Ql man -akO tag Ic=ulimit
3267295610fSBaptiste Daroussinto search for a keyword and jump right to its definition
3277295610fSBaptiste Daroussinin the matching manual pages.
32861d06d6bSBaptiste Daroussin.It Cm width Ns = Ns Ar width
32961d06d6bSBaptiste DaroussinThe output width is set to
33061d06d6bSBaptiste Daroussin.Ar width
33161d06d6bSBaptiste Daroussininstead of the default of 78.
33261d06d6bSBaptiste DaroussinWhen output is to a pager on a terminal that is less than 79 columns
33361d06d6bSBaptiste Daroussinwide, the default is reduced to one less than the terminal width.
33461d06d6bSBaptiste DaroussinIn any case, lines that are output in literal mode are never wrapped
33561d06d6bSBaptiste Daroussinand may exceed the output width.
33661d06d6bSBaptiste Daroussin.El
33761d06d6bSBaptiste Daroussin.Ss HTML Output
33861d06d6bSBaptiste DaroussinOutput produced by
33961d06d6bSBaptiste Daroussin.Fl T Cm html
34061d06d6bSBaptiste Daroussinconforms to HTML5 using optional self-closing tags.
34161d06d6bSBaptiste DaroussinEquations rendered from
34261d06d6bSBaptiste Daroussin.Xr eqn 7
34361d06d6bSBaptiste Daroussinblocks use MathML.
34461d06d6bSBaptiste DaroussinNon-ASCII characters are rendered
34561d06d6bSBaptiste Daroussinas hexadecimal Unicode character references.
34661d06d6bSBaptiste Daroussin.Pp
34761d06d6bSBaptiste DaroussinThe following
34861d06d6bSBaptiste Daroussin.Fl O
34961d06d6bSBaptiste Daroussinarguments are accepted:
35061d06d6bSBaptiste Daroussin.Bl -tag -width Ds
35161d06d6bSBaptiste Daroussin.It Cm fragment
35261d06d6bSBaptiste DaroussinOmit the <!DOCTYPE> declaration and the <html>, <head>, and <body>
35361d06d6bSBaptiste Daroussinelements and only emit the subtree below the <body> element.
35461d06d6bSBaptiste DaroussinThe
35561d06d6bSBaptiste Daroussin.Cm style
35661d06d6bSBaptiste Daroussinargument will be ignored.
35761d06d6bSBaptiste DaroussinThis is useful when embedding manual content within existing documents.
35861d06d6bSBaptiste Daroussin.It Cm includes Ns = Ns Ar fmt
35961d06d6bSBaptiste DaroussinThe string
36061d06d6bSBaptiste Daroussin.Ar fmt ,
36161d06d6bSBaptiste Daroussinfor example,
36261d06d6bSBaptiste Daroussin.Ar ../src/%I.html ,
36361d06d6bSBaptiste Daroussinis used as a template for linked header files (usually via the
36461d06d6bSBaptiste Daroussin.Ic \&In
36561d06d6bSBaptiste Daroussinmacro).
36661d06d6bSBaptiste DaroussinInstances of
36761d06d6bSBaptiste Daroussin.Sq \&%I
36861d06d6bSBaptiste Daroussinare replaced with the include filename.
36961d06d6bSBaptiste DaroussinThe default is not to present a
37061d06d6bSBaptiste Daroussinhyperlink.
3717295610fSBaptiste Daroussin.It Cm man Ns = Ns Ar fmt Ns Op ; Ns Ar fmt
37261d06d6bSBaptiste DaroussinThe string
37361d06d6bSBaptiste Daroussin.Ar fmt ,
37461d06d6bSBaptiste Daroussinfor example,
37561d06d6bSBaptiste Daroussin.Ar ../html%S/%N.%S.html ,
37661d06d6bSBaptiste Daroussinis used as a template for linked manuals (usually via the
37761d06d6bSBaptiste Daroussin.Ic \&Xr
37861d06d6bSBaptiste Daroussinmacro).
37961d06d6bSBaptiste DaroussinInstances of
38061d06d6bSBaptiste Daroussin.Sq \&%N
38161d06d6bSBaptiste Daroussinand
38261d06d6bSBaptiste Daroussin.Sq %S
38361d06d6bSBaptiste Daroussinare replaced with the linked manual's name and section, respectively.
38461d06d6bSBaptiste DaroussinIf no section is included, section 1 is assumed.
38561d06d6bSBaptiste DaroussinThe default is not to
38661d06d6bSBaptiste Daroussinpresent a hyperlink.
3877295610fSBaptiste DaroussinIf two formats are given and a file
3887295610fSBaptiste Daroussin.Ar %N.%S
3897295610fSBaptiste Daroussinexists in the current directory, the first format is used;
3907295610fSBaptiste Daroussinotherwise, the second format is used.
39161d06d6bSBaptiste Daroussin.It Cm style Ns = Ns Ar style.css
39261d06d6bSBaptiste DaroussinThe file
39361d06d6bSBaptiste Daroussin.Ar style.css
394*c1c95addSBrooks Davisis used as an external stylesheet.
39561d06d6bSBaptiste DaroussinThis must be a valid absolute or
39661d06d6bSBaptiste Daroussinrelative URI.
397*c1c95addSBrooks Davis.Pp
398*c1c95addSBrooks DavisUsing the file
399*c1c95addSBrooks Davis.Pa mandoc.css
400*c1c95addSBrooks Davisthat is distributed with
401*c1c95addSBrooks Davis.Nm
402*c1c95addSBrooks Davisis recommended.
403*c1c95addSBrooks DavisIt provides an appearance similar to terminal output with some additional
404*c1c95addSBrooks Davisfeatures specific to
405*c1c95addSBrooks Davis.Nm
406*c1c95addSBrooks DavisHTML output, in particular making anchor locations that support
407*c1c95addSBrooks Davisdeep linking stand out visually by putting a dotted line under them,
408*c1c95addSBrooks Davisproviding tooltips showing the semantic function of elements (macro
409*c1c95addSBrooks Davisnames), providing some simple aspects of responsive web design, and
410*c1c95addSBrooks Davisproviding simple support for users who prefer a dark color scheme.
411*c1c95addSBrooks Davis.Pp
412*c1c95addSBrooks DavisUsing a custom CSS file is possible, but writing it requires
413*c1c95addSBrooks Davisproficiency in all of the languages HTML 5, CSS 4, and
414*c1c95addSBrooks Davis.Xr mdoc 7
415*c1c95addSBrooks Davisand familiarity with the
416*c1c95addSBrooks Davis.Nm Ns -specific
417*c1c95addSBrooks Davisclasses used in
418*c1c95addSBrooks Davis.Pa mandoc.css .
419*c1c95addSBrooks DavisBesides, while the file
420*c1c95addSBrooks Davis.Pa mandoc.css
421*c1c95addSBrooks Davisis always adapted to the HTML output generated by the
422*c1c95addSBrooks Davis.Nm
423*c1c95addSBrooks Davisversion it is distributed with, maintaining a custom CSS file usually
424*c1c95addSBrooks Davisrequires adaptations each time
425*c1c95addSBrooks Davis.Nm
426*c1c95addSBrooks Davisis upgraded to a new version.
427*c1c95addSBrooks Davis.Pp
428*c1c95addSBrooks DavisIf a stylesheet is not specified with
429*c1c95addSBrooks Davis.Fl O Cm style ,
430*c1c95addSBrooks Davis.Fl T Cm html
431*c1c95addSBrooks Davisembeds a minimal stylesheet into the HTML output, mostly to select
432*c1c95addSBrooks Davisadequate font-style and font-weight attributes for various macros.
433*c1c95addSBrooks DavisThe result is readable in any graphical or text-based web browser,
434*c1c95addSBrooks Davisbut does not aim for looking similar to terminal output.
435*c1c95addSBrooks DavisInstead, formatting is mostly left to browser defaults
436*c1c95addSBrooks Davisand to user settings in the browser configuration.
4376d38604fSBaptiste Daroussin.It Cm tag Ns Op = Ns Ar term
4386d38604fSBaptiste DaroussinSame syntax and semantics as for
4396d38604fSBaptiste Daroussin.Sx ASCII Output .
4406d38604fSBaptiste DaroussinThis is implemented by passing a
4416d38604fSBaptiste Daroussin.Ic file://
4426d38604fSBaptiste DaroussinURI ending in a fragment identifier to the pager
4436d38604fSBaptiste Daroussinrather than passing merely a file name.
4446d38604fSBaptiste DaroussinWhen using this argument, use a pager supporting such URIs, for example
4456d38604fSBaptiste Daroussin.Bd -literal -offset 3n
4466d38604fSBaptiste DaroussinMANPAGER='lynx -force_html' man -T html -O tag=MANPAGER man
4476d38604fSBaptiste DaroussinMANPAGER='w3m -T text/html' man -T html -O tag=toc mandoc
4486d38604fSBaptiste Daroussin.Ed
4496d38604fSBaptiste Daroussin.Pp
4506d38604fSBaptiste DaroussinConsequently, for HTML output, this argument does not work with
4516d38604fSBaptiste Daroussin.Xr more 1
4526d38604fSBaptiste Daroussinor
4536d38604fSBaptiste Daroussin.Xr less 1 .
4546d38604fSBaptiste DaroussinFor example,
4556d38604fSBaptiste Daroussin.Ql MANPAGER=less man -T html -O tag=toc mandoc
4566d38604fSBaptiste Daroussindoes not work because
4576d38604fSBaptiste Daroussin.Xr less 1
4586d38604fSBaptiste Daroussindoes not support
4596d38604fSBaptiste Daroussin.Ic file://
4606d38604fSBaptiste DaroussinURIs.
4617295610fSBaptiste Daroussin.It Cm toc
4627295610fSBaptiste DaroussinIf an input file contains at least two non-standard sections,
4637295610fSBaptiste Daroussinprint a table of contents near the beginning of the output.
46461d06d6bSBaptiste Daroussin.El
46561d06d6bSBaptiste Daroussin.Ss Locale Output
46661d06d6bSBaptiste DaroussinBy default,
46761d06d6bSBaptiste Daroussin.Nm
46861d06d6bSBaptiste Daroussinautomatically selects UTF-8 or ASCII output according to the current
46961d06d6bSBaptiste Daroussin.Xr locale 1 .
47061d06d6bSBaptiste DaroussinIf any of the environment variables
47161d06d6bSBaptiste Daroussin.Ev LC_ALL ,
47261d06d6bSBaptiste Daroussin.Ev LC_CTYPE ,
47361d06d6bSBaptiste Daroussinor
47461d06d6bSBaptiste Daroussin.Ev LANG
47561d06d6bSBaptiste Daroussinare set and the first one that is set
47661d06d6bSBaptiste Daroussinselects the UTF-8 character encoding, it produces
47761d06d6bSBaptiste Daroussin.Sx UTF-8 Output ;
47861d06d6bSBaptiste Daroussinotherwise, it falls back to
47961d06d6bSBaptiste Daroussin.Sx ASCII Output .
48061d06d6bSBaptiste DaroussinThis output mode can also be selected explicitly with
48161d06d6bSBaptiste Daroussin.Fl T Cm locale .
48261d06d6bSBaptiste Daroussin.Ss Man Output
48361d06d6bSBaptiste DaroussinUse
48461d06d6bSBaptiste Daroussin.Fl T Cm man
48561d06d6bSBaptiste Daroussinto translate
48661d06d6bSBaptiste Daroussin.Xr mdoc 7
48761d06d6bSBaptiste Daroussininput into
48861d06d6bSBaptiste Daroussin.Xr man 7
48961d06d6bSBaptiste Daroussinoutput format.
49061d06d6bSBaptiste DaroussinThis is useful for distributing manual sources to legacy systems
49161d06d6bSBaptiste Daroussinlacking
49261d06d6bSBaptiste Daroussin.Xr mdoc 7
49361d06d6bSBaptiste Daroussinformatters.
4946d38604fSBaptiste DaroussinEmbedded
4956d38604fSBaptiste Daroussin.Xr eqn 7
4966d38604fSBaptiste Daroussinand
4976d38604fSBaptiste Daroussin.Xr tbl 7
4986d38604fSBaptiste Daroussincode is not supported.
49961d06d6bSBaptiste Daroussin.Pp
50061d06d6bSBaptiste DaroussinIf the input format of a file is
50161d06d6bSBaptiste Daroussin.Xr man 7 ,
5026d38604fSBaptiste Daroussinthe input is copied to the output.
50361d06d6bSBaptiste DaroussinThe parser is also run, and as usual, the
50461d06d6bSBaptiste Daroussin.Fl W
50561d06d6bSBaptiste Daroussinlevel controls which
50661d06d6bSBaptiste Daroussin.Sx DIAGNOSTICS
50761d06d6bSBaptiste Daroussinare displayed before copying the input to the output.
50861d06d6bSBaptiste Daroussin.Ss Markdown Output
50961d06d6bSBaptiste DaroussinUse
51061d06d6bSBaptiste Daroussin.Fl T Cm markdown
51161d06d6bSBaptiste Daroussinto translate
51261d06d6bSBaptiste Daroussin.Xr mdoc 7
51361d06d6bSBaptiste Daroussininput to the markdown format conforming to
514*c1c95addSBrooks Davis.Lk https://daringfireball.net/projects/markdown/syntax.text\
51561d06d6bSBaptiste Daroussin "John Gruber's 2004 specification" .
51661d06d6bSBaptiste DaroussinThe output also almost conforms to the
517*c1c95addSBrooks Davis.Lk https://commonmark.org/ CommonMark
51861d06d6bSBaptiste Daroussinspecification.
51961d06d6bSBaptiste Daroussin.Pp
52061d06d6bSBaptiste DaroussinThe character set used for the markdown output is ASCII.
52161d06d6bSBaptiste DaroussinNon-ASCII characters are encoded as HTML entities.
52261d06d6bSBaptiste DaroussinSince that is not possible in literal font contexts, because these
52361d06d6bSBaptiste Daroussinare rendered as code spans and code blocks in the markdown output,
52461d06d6bSBaptiste Daroussinnon-ASCII characters are transliterated to ASCII approximations in
52561d06d6bSBaptiste Daroussinthese contexts.
52661d06d6bSBaptiste Daroussin.Pp
52761d06d6bSBaptiste DaroussinMarkdown is a very weak markup language, so all semantic markup is
52861d06d6bSBaptiste Daroussinlost, and even part of the presentational markup may be lost.
52961d06d6bSBaptiste DaroussinDo not use this as an intermediate step in converting to HTML;
53061d06d6bSBaptiste Daroussininstead, use
53161d06d6bSBaptiste Daroussin.Fl T Cm html
53261d06d6bSBaptiste Daroussindirectly.
53361d06d6bSBaptiste Daroussin.Pp
53461d06d6bSBaptiste DaroussinThe
53561d06d6bSBaptiste Daroussin.Xr man 7 ,
53661d06d6bSBaptiste Daroussin.Xr tbl 7 ,
53761d06d6bSBaptiste Daroussinand
53861d06d6bSBaptiste Daroussin.Xr eqn 7
53961d06d6bSBaptiste Daroussininput languages are not supported by
54061d06d6bSBaptiste Daroussin.Fl T Cm markdown
54161d06d6bSBaptiste Daroussinoutput mode.
54261d06d6bSBaptiste Daroussin.Ss PDF Output
54361d06d6bSBaptiste DaroussinPDF-1.1 output may be generated by
54461d06d6bSBaptiste Daroussin.Fl T Cm pdf .
54561d06d6bSBaptiste DaroussinSee
54661d06d6bSBaptiste Daroussin.Sx PostScript Output
54761d06d6bSBaptiste Daroussinfor
54861d06d6bSBaptiste Daroussin.Fl O
54961d06d6bSBaptiste Daroussinarguments and defaults.
55061d06d6bSBaptiste Daroussin.Ss PostScript Output
55161d06d6bSBaptiste DaroussinPostScript
55261d06d6bSBaptiste Daroussin.Qq Adobe-3.0
55361d06d6bSBaptiste DaroussinLevel-2 pages may be generated by
55461d06d6bSBaptiste Daroussin.Fl T Cm ps .
55561d06d6bSBaptiste DaroussinOutput pages default to letter sized and are rendered in the Times font
55661d06d6bSBaptiste Daroussinfamily, 11-point.
55761d06d6bSBaptiste DaroussinMargins are calculated as 1/9 the page length and width.
55861d06d6bSBaptiste DaroussinLine-height is 1.4m.
55961d06d6bSBaptiste Daroussin.Pp
56061d06d6bSBaptiste DaroussinSpecial characters are rendered as in
56161d06d6bSBaptiste Daroussin.Sx ASCII Output .
56261d06d6bSBaptiste Daroussin.Pp
56361d06d6bSBaptiste DaroussinThe following
56461d06d6bSBaptiste Daroussin.Fl O
56561d06d6bSBaptiste Daroussinarguments are accepted:
56661d06d6bSBaptiste Daroussin.Bl -tag -width Ds
56761d06d6bSBaptiste Daroussin.It Cm paper Ns = Ns Ar name
56861d06d6bSBaptiste DaroussinThe paper size
56961d06d6bSBaptiste Daroussin.Ar name
57061d06d6bSBaptiste Daroussinmay be one of
57161d06d6bSBaptiste Daroussin.Ar a3 ,
57261d06d6bSBaptiste Daroussin.Ar a4 ,
57361d06d6bSBaptiste Daroussin.Ar a5 ,
57461d06d6bSBaptiste Daroussin.Ar legal ,
57561d06d6bSBaptiste Daroussinor
57661d06d6bSBaptiste Daroussin.Ar letter .
57761d06d6bSBaptiste DaroussinYou may also manually specify dimensions as
57861d06d6bSBaptiste Daroussin.Ar NNxNN ,
57961d06d6bSBaptiste Daroussinwidth by height in millimetres.
58061d06d6bSBaptiste DaroussinIf an unknown value is encountered,
58161d06d6bSBaptiste Daroussin.Ar letter
58261d06d6bSBaptiste Daroussinis used.
58361d06d6bSBaptiste Daroussin.El
58461d06d6bSBaptiste Daroussin.Ss UTF-8 Output
58561d06d6bSBaptiste DaroussinUse
58661d06d6bSBaptiste Daroussin.Fl T Cm utf8
58761d06d6bSBaptiste Daroussinto force text output in UTF-8 multi-byte character encoding,
58861d06d6bSBaptiste Daroussinignoring the
58961d06d6bSBaptiste Daroussin.Xr locale 1
59061d06d6bSBaptiste Daroussinsettings in the environment.
59161d06d6bSBaptiste DaroussinSee
59261d06d6bSBaptiste Daroussin.Sx ASCII Output
59361d06d6bSBaptiste Daroussinregarding font styles and
59461d06d6bSBaptiste Daroussin.Fl O
59561d06d6bSBaptiste Daroussinarguments.
59661d06d6bSBaptiste Daroussin.Pp
59761d06d6bSBaptiste DaroussinOn operating systems lacking locale or wide character support, and
59861d06d6bSBaptiste Daroussinon those where the internal character representation is not UCS-4,
59961d06d6bSBaptiste Daroussin.Nm
60061d06d6bSBaptiste Daroussinalways falls back to
60161d06d6bSBaptiste Daroussin.Sx ASCII Output .
60261d06d6bSBaptiste Daroussin.Ss Syntax tree output
60361d06d6bSBaptiste DaroussinUse
60461d06d6bSBaptiste Daroussin.Fl T Cm tree
60561d06d6bSBaptiste Daroussinto show a human readable representation of the syntax tree.
60661d06d6bSBaptiste DaroussinIt is useful for debugging the source code of manual pages.
60761d06d6bSBaptiste DaroussinThe exact format is subject to change, so don't write parsers for it.
60861d06d6bSBaptiste Daroussin.Pp
60961d06d6bSBaptiste DaroussinThe first paragraph shows meta data found in the
61061d06d6bSBaptiste Daroussin.Xr mdoc 7
61161d06d6bSBaptiste Daroussinprologue, on the
61261d06d6bSBaptiste Daroussin.Xr man 7
61361d06d6bSBaptiste Daroussin.Ic \&TH
61461d06d6bSBaptiste Daroussinline, or the fallbacks used.
61561d06d6bSBaptiste Daroussin.Pp
61661d06d6bSBaptiste DaroussinIn the tree dump, each output line shows one syntax tree node.
61761d06d6bSBaptiste DaroussinChild nodes are indented with respect to their parent node.
61861d06d6bSBaptiste DaroussinThe columns are:
61961d06d6bSBaptiste Daroussin.Pp
62061d06d6bSBaptiste Daroussin.Bl -enum -compact
62161d06d6bSBaptiste Daroussin.It
62261d06d6bSBaptiste DaroussinFor macro nodes, the macro name; for text and
62361d06d6bSBaptiste Daroussin.Xr tbl 7
62461d06d6bSBaptiste Daroussinnodes, the content.
62561d06d6bSBaptiste DaroussinThere is a special format for
62661d06d6bSBaptiste Daroussin.Xr eqn 7
62761d06d6bSBaptiste Daroussinnodes.
62861d06d6bSBaptiste Daroussin.It
62961d06d6bSBaptiste DaroussinNode type (text, elem, block, head, body, body-end, tail, tbl, eqn).
63061d06d6bSBaptiste Daroussin.It
63161d06d6bSBaptiste DaroussinFlags:
63261d06d6bSBaptiste Daroussin.Bl -dash -compact
63361d06d6bSBaptiste Daroussin.It
63461d06d6bSBaptiste DaroussinAn opening parenthesis if the node is an opening delimiter.
63561d06d6bSBaptiste Daroussin.It
63661d06d6bSBaptiste DaroussinAn asterisk if the node starts a new input line.
63761d06d6bSBaptiste Daroussin.It
63861d06d6bSBaptiste DaroussinThe input line number (starting at one).
63961d06d6bSBaptiste Daroussin.It
64061d06d6bSBaptiste DaroussinA colon.
64161d06d6bSBaptiste Daroussin.It
64261d06d6bSBaptiste DaroussinThe input column number (starting at one).
64361d06d6bSBaptiste Daroussin.It
64461d06d6bSBaptiste DaroussinA closing parenthesis if the node is a closing delimiter.
64561d06d6bSBaptiste Daroussin.It
64661d06d6bSBaptiste DaroussinA full stop if the node ends a sentence.
64761d06d6bSBaptiste Daroussin.It
64861d06d6bSBaptiste DaroussinBROKEN if the node is a block broken by another block.
64961d06d6bSBaptiste Daroussin.It
65061d06d6bSBaptiste DaroussinNOSRC if the node is not in the input file,
65161d06d6bSBaptiste Daroussinbut automatically generated from macros.
65261d06d6bSBaptiste Daroussin.It
65361d06d6bSBaptiste DaroussinNOPRT if the node is not supposed to generate output
65461d06d6bSBaptiste Daroussinfor any output format.
65561d06d6bSBaptiste Daroussin.El
65661d06d6bSBaptiste Daroussin.El
65761d06d6bSBaptiste Daroussin.Pp
65861d06d6bSBaptiste DaroussinThe following
65961d06d6bSBaptiste Daroussin.Fl O
66061d06d6bSBaptiste Daroussinargument is accepted:
66161d06d6bSBaptiste Daroussin.Bl -tag -width Ds
66261d06d6bSBaptiste Daroussin.It Cm noval
66361d06d6bSBaptiste DaroussinSkip validation and show the unvalidated syntax tree.
66461d06d6bSBaptiste DaroussinThis can help to find out whether a given behaviour is caused by
66561d06d6bSBaptiste Daroussinthe parser or by the validator.
66661d06d6bSBaptiste DaroussinMeta data is not available in this case.
66761d06d6bSBaptiste Daroussin.El
66861d06d6bSBaptiste Daroussin.Sh ENVIRONMENT
66961d06d6bSBaptiste Daroussin.Bl -tag -width MANPAGER
67061d06d6bSBaptiste Daroussin.It Ev LC_CTYPE
67161d06d6bSBaptiste DaroussinThe character encoding
67261d06d6bSBaptiste Daroussin.Xr locale 1 .
67361d06d6bSBaptiste DaroussinWhen
67461d06d6bSBaptiste Daroussin.Sx Locale Output
67561d06d6bSBaptiste Daroussinis selected, it decides whether to use ASCII or UTF-8 output format.
67661d06d6bSBaptiste DaroussinIt never affects the interpretation of input files.
67761d06d6bSBaptiste Daroussin.It Ev MANPAGER
67861d06d6bSBaptiste DaroussinAny non-empty value of the environment variable
67961d06d6bSBaptiste Daroussin.Ev MANPAGER
68061d06d6bSBaptiste Daroussinis used instead of the standard pagination program,
6816d38604fSBaptiste Daroussin.Xr less 1 ;
68261d06d6bSBaptiste Daroussinsee
68361d06d6bSBaptiste Daroussin.Xr man 1
68461d06d6bSBaptiste Daroussinfor details.
68561d06d6bSBaptiste DaroussinOnly used if
68661d06d6bSBaptiste Daroussin.Fl a
68761d06d6bSBaptiste Daroussinor
68861d06d6bSBaptiste Daroussin.Fl l
68961d06d6bSBaptiste Daroussinis specified.
69061d06d6bSBaptiste Daroussin.It Ev PAGER
69161d06d6bSBaptiste DaroussinSpecifies the pagination program to use when
69261d06d6bSBaptiste Daroussin.Ev MANPAGER
69361d06d6bSBaptiste Daroussinis not defined.
69461d06d6bSBaptiste DaroussinIf neither PAGER nor MANPAGER is defined,
6956d38604fSBaptiste Daroussin.Xr less 1
69661d06d6bSBaptiste Daroussinis used.
69761d06d6bSBaptiste DaroussinOnly used if
69861d06d6bSBaptiste Daroussin.Fl a
69961d06d6bSBaptiste Daroussinor
70061d06d6bSBaptiste Daroussin.Fl l
70161d06d6bSBaptiste Daroussinis specified.
70261d06d6bSBaptiste Daroussin.El
70361d06d6bSBaptiste Daroussin.Sh EXIT STATUS
70461d06d6bSBaptiste DaroussinThe
70561d06d6bSBaptiste Daroussin.Nm
70661d06d6bSBaptiste Daroussinutility exits with one of the following values, controlled by the message
70761d06d6bSBaptiste Daroussin.Ar level
70861d06d6bSBaptiste Daroussinassociated with the
70961d06d6bSBaptiste Daroussin.Fl W
71061d06d6bSBaptiste Daroussinoption:
71161d06d6bSBaptiste Daroussin.Pp
71261d06d6bSBaptiste Daroussin.Bl -tag -width Ds -compact
71361d06d6bSBaptiste Daroussin.It 0
71461d06d6bSBaptiste DaroussinNo base system convention violations, style suggestions, warnings,
71561d06d6bSBaptiste Daroussinor errors occurred, or those that did were ignored because they
71661d06d6bSBaptiste Daroussinwere lower than the requested
71761d06d6bSBaptiste Daroussin.Ar level .
71861d06d6bSBaptiste Daroussin.It 1
71961d06d6bSBaptiste DaroussinAt least one base system convention violation or style suggestion
72061d06d6bSBaptiste Daroussinoccurred, but no warning or error, and
72161d06d6bSBaptiste Daroussin.Fl W Cm base
72261d06d6bSBaptiste Daroussinor
72361d06d6bSBaptiste Daroussin.Fl W Cm style
72461d06d6bSBaptiste Daroussinwas specified.
72561d06d6bSBaptiste Daroussin.It 2
72661d06d6bSBaptiste DaroussinAt least one warning occurred, but no error, and
72761d06d6bSBaptiste Daroussin.Fl W Cm warning
72861d06d6bSBaptiste Daroussinor a lower
72961d06d6bSBaptiste Daroussin.Ar level
73061d06d6bSBaptiste Daroussinwas requested.
73161d06d6bSBaptiste Daroussin.It 3
73261d06d6bSBaptiste DaroussinAt least one parsing error occurred,
73361d06d6bSBaptiste Daroussinbut no unsupported feature was encountered, and
73461d06d6bSBaptiste Daroussin.Fl W Cm error
73561d06d6bSBaptiste Daroussinor a lower
73661d06d6bSBaptiste Daroussin.Ar level
73761d06d6bSBaptiste Daroussinwas requested.
73861d06d6bSBaptiste Daroussin.It 4
73961d06d6bSBaptiste DaroussinAt least one unsupported feature was encountered, and
74061d06d6bSBaptiste Daroussin.Fl W Cm unsupp
74161d06d6bSBaptiste Daroussinor a lower
74261d06d6bSBaptiste Daroussin.Ar level
74361d06d6bSBaptiste Daroussinwas requested.
74461d06d6bSBaptiste Daroussin.It 5
74561d06d6bSBaptiste DaroussinInvalid command line arguments were specified.
74661d06d6bSBaptiste DaroussinNo input files have been read.
74761d06d6bSBaptiste Daroussin.It 6
74861d06d6bSBaptiste DaroussinAn operating system error occurred, for example exhaustion
74961d06d6bSBaptiste Daroussinof memory, file descriptors, or process table entries.
75045a5aec3SBaptiste DaroussinSuch errors may cause
75161d06d6bSBaptiste Daroussin.Nm
75261d06d6bSBaptiste Daroussinto exit at once, possibly in the middle of parsing or formatting a file.
75361d06d6bSBaptiste Daroussin.El
75461d06d6bSBaptiste Daroussin.Pp
75561d06d6bSBaptiste DaroussinNote that selecting
75661d06d6bSBaptiste Daroussin.Fl T Cm lint
75761d06d6bSBaptiste Daroussinoutput mode implies
75861d06d6bSBaptiste Daroussin.Fl W Cm all .
75961d06d6bSBaptiste Daroussin.Sh EXAMPLES
76061d06d6bSBaptiste DaroussinTo page manuals to the terminal:
76161d06d6bSBaptiste Daroussin.Pp
762*c1c95addSBrooks Davis.Dl $ mandoc -a mandoc.1 man.1 apropos.1 makewhatis.8
76361d06d6bSBaptiste Daroussin.Pp
76461d06d6bSBaptiste DaroussinTo produce HTML manuals with
7657295610fSBaptiste Daroussin.Pa /usr/share/misc/mandoc.css
766*c1c95addSBrooks Davisas the stylesheet:
76761d06d6bSBaptiste Daroussin.Pp
7687295610fSBaptiste Daroussin.Dl $ mandoc \-T html -O style=/usr/share/misc/mandoc.css mdoc.7 > mdoc.7.html
76961d06d6bSBaptiste Daroussin.Pp
77061d06d6bSBaptiste DaroussinTo check over a large set of manuals:
77161d06d6bSBaptiste Daroussin.Pp
77261d06d6bSBaptiste Daroussin.Dl $ mandoc \-T lint \(gafind /usr/src -name \e*\e.[1-9]\(ga
77361d06d6bSBaptiste Daroussin.Pp
77461d06d6bSBaptiste DaroussinTo produce a series of PostScript manuals for A4 paper:
77561d06d6bSBaptiste Daroussin.Pp
7767295610fSBaptiste Daroussin.Dl $ mandoc \-T ps \-O paper=a4 mdoc.7 man.7 > manuals.ps
77761d06d6bSBaptiste Daroussin.Pp
77861d06d6bSBaptiste DaroussinConvert a modern
77961d06d6bSBaptiste Daroussin.Xr mdoc 7
78061d06d6bSBaptiste Daroussinmanual to the older
78161d06d6bSBaptiste Daroussin.Xr man 7
78261d06d6bSBaptiste Daroussinformat, for use on systems lacking an
78361d06d6bSBaptiste Daroussin.Xr mdoc 7
78461d06d6bSBaptiste Daroussinparser:
78561d06d6bSBaptiste Daroussin.Pp
7867295610fSBaptiste Daroussin.Dl $ mandoc \-T man foo.mdoc > foo.man
78761d06d6bSBaptiste Daroussin.Sh DIAGNOSTICS
78861d06d6bSBaptiste DaroussinMessages displayed by
78961d06d6bSBaptiste Daroussin.Nm
79061d06d6bSBaptiste Daroussinfollow this format:
79161d06d6bSBaptiste Daroussin.Bd -ragged -offset indent
79261d06d6bSBaptiste Daroussin.Nm :
793*c1c95addSBrooks Davis.Ar file : Ns Ar line : Ns Ar column : level : message : macro argument ...
79461d06d6bSBaptiste Daroussin.Pq Ar os
79561d06d6bSBaptiste Daroussin.Ed
79661d06d6bSBaptiste Daroussin.Pp
7977295610fSBaptiste DaroussinThe first three fields identify the
7987295610fSBaptiste Daroussin.Ar file
7997295610fSBaptiste Daroussinname,
8007295610fSBaptiste Daroussin.Ar line
8017295610fSBaptiste Daroussinnumber, and
8027295610fSBaptiste Daroussin.Ar column
8037295610fSBaptiste Daroussinnumber of the input file where the message was triggered.
8047295610fSBaptiste DaroussinThe line and column numbers start at 1.
80561d06d6bSBaptiste DaroussinBoth are omitted for messages referring to an input file as a whole.
8067295610fSBaptiste DaroussinAll
8077295610fSBaptiste Daroussin.Ar level
8087295610fSBaptiste Daroussinand
8097295610fSBaptiste Daroussin.Ar message
8107295610fSBaptiste Daroussinstrings are explained below.
8117295610fSBaptiste DaroussinThe name of the
8127295610fSBaptiste Daroussin.Ar macro
813*c1c95addSBrooks Davistriggering the message and its arguments are omitted where meaningless.
81461d06d6bSBaptiste DaroussinThe
81561d06d6bSBaptiste Daroussin.Ar os
81661d06d6bSBaptiste Daroussinoperating system specifier is omitted for messages that are relevant
81761d06d6bSBaptiste Daroussinfor all operating systems.
81861d06d6bSBaptiste DaroussinFatal messages about invalid command line arguments
81961d06d6bSBaptiste Daroussinor operating system errors, for example when memory is exhausted,
82061d06d6bSBaptiste Daroussinmay also omit the
82161d06d6bSBaptiste Daroussin.Ar file
82261d06d6bSBaptiste Daroussinand
82361d06d6bSBaptiste Daroussin.Ar level
82461d06d6bSBaptiste Daroussinfields.
82561d06d6bSBaptiste Daroussin.Pp
82661d06d6bSBaptiste DaroussinMessage levels have the following meanings:
82761d06d6bSBaptiste Daroussin.Bl -tag -width "warning"
82845a5aec3SBaptiste Daroussin.It Cm syserr
82945a5aec3SBaptiste DaroussinAn operating system error occurred.
83045a5aec3SBaptiste DaroussinThere isn't necessarily anything wrong with the input files.
83145a5aec3SBaptiste DaroussinOutput may all the same be missing or incomplete.
83245a5aec3SBaptiste Daroussin.It Cm badarg
83345a5aec3SBaptiste DaroussinInvalid command line arguments were specified.
83445a5aec3SBaptiste DaroussinNo input files have been read and no output is produced.
83561d06d6bSBaptiste Daroussin.It Cm unsupp
83661d06d6bSBaptiste DaroussinAn input file uses unsupported low-level
83761d06d6bSBaptiste Daroussin.Xr roff 7
83861d06d6bSBaptiste Daroussinfeatures.
83961d06d6bSBaptiste DaroussinThe output may be incomplete and/or misformatted,
84061d06d6bSBaptiste Daroussinso using GNU troff instead of
84161d06d6bSBaptiste Daroussin.Nm
84261d06d6bSBaptiste Daroussinto process the file may be preferable.
84361d06d6bSBaptiste Daroussin.It Cm error
84461d06d6bSBaptiste DaroussinIndicates a risk of information loss or severe misformatting,
84561d06d6bSBaptiste Daroussinin most cases caused by serious syntax errors.
84661d06d6bSBaptiste Daroussin.It Cm warning
84761d06d6bSBaptiste DaroussinIndicates a risk that the information shown or its formatting
84861d06d6bSBaptiste Daroussinmay mismatch the author's intent in minor ways.
84961d06d6bSBaptiste DaroussinAdditionally, syntax errors are classified at least as warnings,
85061d06d6bSBaptiste Daroussineven if they do not usually cause misformatting.
85161d06d6bSBaptiste Daroussin.It Cm style
85261d06d6bSBaptiste DaroussinAn input file uses dubious or discouraged style.
85361d06d6bSBaptiste DaroussinThis is not a complaint about the syntax, and probably neither
85461d06d6bSBaptiste Daroussinformatting nor portability are in danger.
85561d06d6bSBaptiste DaroussinWhile great care is taken to avoid false positives on the higher
85661d06d6bSBaptiste Daroussinmessage levels, the
85761d06d6bSBaptiste Daroussin.Cm style
85861d06d6bSBaptiste Daroussinlevel tries to reduce the probability that issues go unnoticed,
85961d06d6bSBaptiste Daroussinso it may occasionally issue bogus suggestions.
860*c1c95addSBrooks DavisUse your judgement to decide whether any particular
86161d06d6bSBaptiste Daroussin.Cm style
86261d06d6bSBaptiste Daroussinsuggestion really justifies a change to the input file.
86361d06d6bSBaptiste Daroussin.It Cm base
86461d06d6bSBaptiste DaroussinA convention used in the base system of a specific operating system
86561d06d6bSBaptiste Daroussinis not adhered to.
86661d06d6bSBaptiste DaroussinThese are not markup mistakes, and neither the quality of formatting
86761d06d6bSBaptiste Daroussinnor portability are in danger.
86861d06d6bSBaptiste DaroussinMessages of the
86961d06d6bSBaptiste Daroussin.Cm base
87061d06d6bSBaptiste Daroussinlevel are printed with the more intuitive
87161d06d6bSBaptiste Daroussin.Cm style
87261d06d6bSBaptiste Daroussin.Ar level
87361d06d6bSBaptiste Daroussintag.
87461d06d6bSBaptiste Daroussin.El
87561d06d6bSBaptiste Daroussin.Pp
87661d06d6bSBaptiste DaroussinMessages of the
87761d06d6bSBaptiste Daroussin.Cm base ,
87861d06d6bSBaptiste Daroussin.Cm style ,
87961d06d6bSBaptiste Daroussin.Cm warning ,
88061d06d6bSBaptiste Daroussin.Cm error ,
88161d06d6bSBaptiste Daroussinand
88261d06d6bSBaptiste Daroussin.Cm unsupp
88345a5aec3SBaptiste Daroussinlevels are hidden unless their level, or a lower level, is requested using a
88461d06d6bSBaptiste Daroussin.Fl W
88561d06d6bSBaptiste Daroussinoption or
88661d06d6bSBaptiste Daroussin.Fl T Cm lint
88761d06d6bSBaptiste Daroussinoutput mode.
88861d06d6bSBaptiste Daroussin.Pp
88961d06d6bSBaptiste DaroussinAs indicated below, all
89061d06d6bSBaptiste Daroussin.Cm base
89161d06d6bSBaptiste Daroussinand some
89261d06d6bSBaptiste Daroussin.Cm style
89361d06d6bSBaptiste Daroussinchecks are only performed if a specific operating system name occurs
89461d06d6bSBaptiste Daroussinin the arguments of the
89561d06d6bSBaptiste Daroussin.Fl W
89661d06d6bSBaptiste Daroussincommand line option, of the
89761d06d6bSBaptiste Daroussin.Ic \&Os
89861d06d6bSBaptiste Daroussinmacro, of the
89961d06d6bSBaptiste Daroussin.Fl Ios
90061d06d6bSBaptiste Daroussincommand line option, or, if neither are present, in the return value
90161d06d6bSBaptiste Daroussinof the
90261d06d6bSBaptiste Daroussin.Xr uname 3
90361d06d6bSBaptiste Daroussinfunction.
90461d06d6bSBaptiste Daroussin.Ss Conventions for base system manuals
90561d06d6bSBaptiste Daroussin.Bl -ohang
90661d06d6bSBaptiste Daroussin.It Sy "Mdocdate found"
90761d06d6bSBaptiste Daroussin.Pq mdoc , Nx
90861d06d6bSBaptiste DaroussinThe
90961d06d6bSBaptiste Daroussin.Ic \&Dd
91061d06d6bSBaptiste Daroussinmacro uses CVS
91161d06d6bSBaptiste Daroussin.Ic Mdocdate
91261d06d6bSBaptiste Daroussinkeyword substitution, which is not supported by the
91361d06d6bSBaptiste Daroussin.Nx
91461d06d6bSBaptiste Daroussinbase system.
91561d06d6bSBaptiste DaroussinConsider using the conventional
91661d06d6bSBaptiste Daroussin.Dq "Month dd, yyyy"
91761d06d6bSBaptiste Daroussinformat instead.
91861d06d6bSBaptiste Daroussin.It Sy "Mdocdate missing"
91961d06d6bSBaptiste Daroussin.Pq mdoc , Ox
92061d06d6bSBaptiste DaroussinThe
92161d06d6bSBaptiste Daroussin.Ic \&Dd
92261d06d6bSBaptiste Daroussinmacro does not use CVS
92361d06d6bSBaptiste Daroussin.Ic Mdocdate
92461d06d6bSBaptiste Daroussinkeyword substitution, but using it is conventionally expected in the
92561d06d6bSBaptiste Daroussin.Ox
92661d06d6bSBaptiste Daroussinbase system.
92761d06d6bSBaptiste Daroussin.It Sy "unknown architecture"
92861d06d6bSBaptiste Daroussin.Pq mdoc , Ox , Nx
92961d06d6bSBaptiste DaroussinThe third argument of the
93061d06d6bSBaptiste Daroussin.Ic \&Dt
93161d06d6bSBaptiste Daroussinmacro does not match any of the architectures this operating system
93261d06d6bSBaptiste Daroussinis running on.
93361d06d6bSBaptiste Daroussin.It Sy "operating system explicitly specified"
93461d06d6bSBaptiste Daroussin.Pq mdoc , Ox , Nx
93561d06d6bSBaptiste DaroussinThe
93661d06d6bSBaptiste Daroussin.Ic \&Os
93761d06d6bSBaptiste Daroussinmacro has an argument.
93861d06d6bSBaptiste DaroussinIn the base system, it is conventionally left blank.
93961d06d6bSBaptiste Daroussin.It Sy "RCS id missing"
94061d06d6bSBaptiste Daroussin.Pq Ox , Nx
94161d06d6bSBaptiste DaroussinThe manual page lacks the comment line with the RCS identifier
94261d06d6bSBaptiste Daroussingenerated by CVS
94361d06d6bSBaptiste Daroussin.Ic OpenBSD
94461d06d6bSBaptiste Daroussinor
94561d06d6bSBaptiste Daroussin.Ic NetBSD
94661d06d6bSBaptiste Daroussinkeyword substitution as conventionally used in these operating systems.
94761d06d6bSBaptiste Daroussin.El
94861d06d6bSBaptiste Daroussin.Ss Style suggestions
94961d06d6bSBaptiste Daroussin.Bl -ohang
95061d06d6bSBaptiste Daroussin.It Sy "legacy man(7) date format"
95161d06d6bSBaptiste Daroussin.Pq mdoc
95261d06d6bSBaptiste DaroussinThe
95361d06d6bSBaptiste Daroussin.Ic \&Dd
95461d06d6bSBaptiste Daroussinmacro uses the legacy
95561d06d6bSBaptiste Daroussin.Xr man 7
95661d06d6bSBaptiste Daroussindate format
95761d06d6bSBaptiste Daroussin.Dq yyyy-dd-mm .
95861d06d6bSBaptiste DaroussinConsider using the conventional
95961d06d6bSBaptiste Daroussin.Xr mdoc 7
96061d06d6bSBaptiste Daroussindate format
96161d06d6bSBaptiste Daroussin.Dq "Month dd, yyyy"
96261d06d6bSBaptiste Daroussininstead.
96361d06d6bSBaptiste Daroussin.It Sy "normalizing date format to" : No ...
96461d06d6bSBaptiste Daroussin.Pq mdoc , man
96561d06d6bSBaptiste DaroussinThe
96661d06d6bSBaptiste Daroussin.Ic \&Dd
96761d06d6bSBaptiste Daroussinor
96861d06d6bSBaptiste Daroussin.Ic \&TH
96961d06d6bSBaptiste Daroussinmacro provides an abbreviated month name or a day number with a
97061d06d6bSBaptiste Daroussinleading zero.
97161d06d6bSBaptiste DaroussinIn the formatted output, the month name is written out in full
97261d06d6bSBaptiste Daroussinand the leading zero is omitted.
97361d06d6bSBaptiste Daroussin.It Sy "lower case character in document title"
97461d06d6bSBaptiste Daroussin.Pq mdoc , man
97561d06d6bSBaptiste DaroussinThe title is still used as given in the
97661d06d6bSBaptiste Daroussin.Ic \&Dt
97761d06d6bSBaptiste Daroussinor
97861d06d6bSBaptiste Daroussin.Ic \&TH
97961d06d6bSBaptiste Daroussinmacro.
98061d06d6bSBaptiste Daroussin.It Sy "duplicate RCS id"
98161d06d6bSBaptiste DaroussinA single manual page contains two copies of the RCS identifier for
98261d06d6bSBaptiste Daroussinthe same operating system.
98361d06d6bSBaptiste DaroussinConsider deleting the later instance and moving the first one up
98461d06d6bSBaptiste Daroussinto the top of the page.
98561d06d6bSBaptiste Daroussin.It Sy "possible typo in section name"
98661d06d6bSBaptiste Daroussin.Pq mdoc
98761d06d6bSBaptiste DaroussinFuzzy string matching revealed that the argument of an
98861d06d6bSBaptiste Daroussin.Ic \&Sh
98961d06d6bSBaptiste Daroussinmacro is similar, but not identical to a standard section name.
99061d06d6bSBaptiste Daroussin.It Sy "unterminated quoted argument"
99161d06d6bSBaptiste Daroussin.Pq roff
99261d06d6bSBaptiste DaroussinMacro arguments can be enclosed in double quote characters
99361d06d6bSBaptiste Daroussinsuch that space characters and macro names contained in the quoted
99461d06d6bSBaptiste Daroussinargument need not be escaped.
99561d06d6bSBaptiste DaroussinThe closing quote of the last argument of a macro can be omitted.
99661d06d6bSBaptiste DaroussinHowever, omitting it is not recommended because it makes the code
99761d06d6bSBaptiste Daroussinharder to read.
99861d06d6bSBaptiste Daroussin.It Sy "useless macro"
99961d06d6bSBaptiste Daroussin.Pq mdoc
100061d06d6bSBaptiste DaroussinA
100161d06d6bSBaptiste Daroussin.Ic \&Bt ,
100261d06d6bSBaptiste Daroussin.Ic \&Tn ,
100361d06d6bSBaptiste Daroussinor
100461d06d6bSBaptiste Daroussin.Ic \&Ud
100561d06d6bSBaptiste Daroussinmacro was found.
100661d06d6bSBaptiste DaroussinSimply delete it: it serves no useful purpose.
100761d06d6bSBaptiste Daroussin.It Sy "consider using OS macro"
100861d06d6bSBaptiste Daroussin.Pq mdoc
100961d06d6bSBaptiste DaroussinA string was found in plain text or in a
101061d06d6bSBaptiste Daroussin.Ic \&Bx
101161d06d6bSBaptiste Daroussinmacro that could be represented using
101261d06d6bSBaptiste Daroussin.Ic \&Ox ,
101361d06d6bSBaptiste Daroussin.Ic \&Nx ,
101461d06d6bSBaptiste Daroussin.Ic \&Fx ,
101561d06d6bSBaptiste Daroussinor
101661d06d6bSBaptiste Daroussin.Ic \&Dx .
101761d06d6bSBaptiste Daroussin.It Sy "errnos out of order"
101861d06d6bSBaptiste Daroussin.Pq mdoc, Nx
101961d06d6bSBaptiste DaroussinThe
102061d06d6bSBaptiste Daroussin.Ic \&Er
102161d06d6bSBaptiste Daroussinitems in a
102261d06d6bSBaptiste Daroussin.Ic \&Bl
102361d06d6bSBaptiste Daroussinlist are not in alphabetical order.
102461d06d6bSBaptiste Daroussin.It Sy "duplicate errno"
102561d06d6bSBaptiste Daroussin.Pq mdoc, Nx
102661d06d6bSBaptiste DaroussinA
102761d06d6bSBaptiste Daroussin.Ic \&Bl
102861d06d6bSBaptiste Daroussinlist contains two consecutive
102961d06d6bSBaptiste Daroussin.Ic \&It
103061d06d6bSBaptiste Daroussinentries describing the same
103161d06d6bSBaptiste Daroussin.Ic \&Er
103261d06d6bSBaptiste Daroussinnumber.
10336d38604fSBaptiste Daroussin.It Sy "referenced manual not found"
10346d38604fSBaptiste Daroussin.Pq mdoc
10356d38604fSBaptiste DaroussinAn
10366d38604fSBaptiste Daroussin.Ic \&Xr
10376d38604fSBaptiste Daroussinmacro references a manual page that was not found.
10386d38604fSBaptiste DaroussinWhen running with
10396d38604fSBaptiste Daroussin.Fl W Cm base ,
10406d38604fSBaptiste Daroussinthe search is restricted to the base system, by default to
10416d38604fSBaptiste Daroussin.Pa /usr/share/man : Ns Pa /usr/X11R6/man .
10426d38604fSBaptiste DaroussinThis path can be configured at compile time using the
10436d38604fSBaptiste Daroussin.Dv MANPATH_BASE
10446d38604fSBaptiste Daroussinpreprocessor macro.
10456d38604fSBaptiste DaroussinWhen running with
10466d38604fSBaptiste Daroussin.Fl W Cm style ,
10476d38604fSBaptiste Daroussinthe search is done along the full search path as described in the
10486d38604fSBaptiste Daroussin.Xr man 1
10496d38604fSBaptiste Daroussinmanual page, respecting the
10506d38604fSBaptiste Daroussin.Fl m
10516d38604fSBaptiste Daroussinand
10526d38604fSBaptiste Daroussin.Fl M
10536d38604fSBaptiste Daroussincommand line options, the
10546d38604fSBaptiste Daroussin.Ev MANPATH
10556d38604fSBaptiste Daroussinenvironment variable, the
10566d38604fSBaptiste Daroussin.Xr man.conf 5
10576d38604fSBaptiste Daroussinfile and falling back to the default of
10586d38604fSBaptiste Daroussin.Pa /usr/share/man : Ns Pa /usr/X11R6/man : Ns Pa /usr/local/man ,
10596d38604fSBaptiste Daroussinalso configurable at compile time using the
10606d38604fSBaptiste Daroussin.Dv MANPATH_DEFAULT
10616d38604fSBaptiste Daroussinpreprocessor macro.
106261d06d6bSBaptiste Daroussin.It Sy "trailing delimiter"
106361d06d6bSBaptiste Daroussin.Pq mdoc
106461d06d6bSBaptiste DaroussinThe last argument of an
106561d06d6bSBaptiste Daroussin.Ic \&Ex , \&Fo , \&Nd , \&Nm , \&Os , \&Sh , \&Ss , \&St ,
106661d06d6bSBaptiste Daroussinor
106761d06d6bSBaptiste Daroussin.Ic \&Sx
106861d06d6bSBaptiste Daroussinmacro ends with a trailing delimiter.
106961d06d6bSBaptiste DaroussinThis is usually bad style and often indicates typos.
107061d06d6bSBaptiste DaroussinMost likely, the delimiter can be removed.
107161d06d6bSBaptiste Daroussin.It Sy "no blank before trailing delimiter"
107261d06d6bSBaptiste Daroussin.Pq mdoc
107361d06d6bSBaptiste DaroussinThe last argument of a macro that supports trailing delimiter
107461d06d6bSBaptiste Daroussinarguments is longer than one byte and ends with a trailing delimiter.
107561d06d6bSBaptiste DaroussinConsider inserting a blank such that the delimiter becomes a separate
107661d06d6bSBaptiste Daroussinargument, thus moving it out of the scope of the macro.
107761d06d6bSBaptiste Daroussin.It Sy "fill mode already enabled, skipping"
107861d06d6bSBaptiste Daroussin.Pq man
107961d06d6bSBaptiste DaroussinA
108061d06d6bSBaptiste Daroussin.Ic \&fi
108161d06d6bSBaptiste Daroussinrequest occurs even though the document is still in fill mode,
108261d06d6bSBaptiste Daroussinor already switched back to fill mode.
108361d06d6bSBaptiste DaroussinIt has no effect.
108461d06d6bSBaptiste Daroussin.It Sy "fill mode already disabled, skipping"
108561d06d6bSBaptiste Daroussin.Pq man
108661d06d6bSBaptiste DaroussinAn
108761d06d6bSBaptiste Daroussin.Ic \&nf
108861d06d6bSBaptiste Daroussinrequest occurs even though the document already switched to no-fill mode
108961d06d6bSBaptiste Daroussinand did not switch back to fill mode yet.
109061d06d6bSBaptiste DaroussinIt has no effect.
10916d38604fSBaptiste Daroussin.It Sy "input text line longer than 80 bytes"
10926d38604fSBaptiste DaroussinConsider breaking the input text line
10936d38604fSBaptiste Daroussinat one of the blank characters before column 80.
109461d06d6bSBaptiste Daroussin.It Sy "verbatim \(dq--\(dq, maybe consider using \e(em"
109561d06d6bSBaptiste Daroussin.Pq mdoc
109661d06d6bSBaptiste DaroussinEven though the ASCII output device renders an em-dash as
109761d06d6bSBaptiste Daroussin.Qq \-\- ,
109861d06d6bSBaptiste Daroussinthat is not a good way to write it in an input file
109961d06d6bSBaptiste Daroussinbecause it renders poorly on all other output devices.
110061d06d6bSBaptiste Daroussin.It Sy "function name without markup"
110161d06d6bSBaptiste Daroussin.Pq mdoc
110261d06d6bSBaptiste DaroussinA word followed by an empty pair of parentheses occurs on a text line.
110361d06d6bSBaptiste DaroussinConsider using an
110461d06d6bSBaptiste Daroussin.Ic \&Fn
110561d06d6bSBaptiste Daroussinor
110661d06d6bSBaptiste Daroussin.Ic \&Xr
110761d06d6bSBaptiste Daroussinmacro.
110861d06d6bSBaptiste Daroussin.It Sy "whitespace at end of input line"
110961d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
111061d06d6bSBaptiste DaroussinWhitespace at the end of input lines is almost never semantically
111161d06d6bSBaptiste Daroussinsignificant \(em but in the odd case where it might be, it is
111261d06d6bSBaptiste Daroussinextremely confusing when reviewing and maintaining documents.
111361d06d6bSBaptiste Daroussin.It Sy "bad comment style"
111461d06d6bSBaptiste Daroussin.Pq roff
111561d06d6bSBaptiste DaroussinComment lines start with a dot, a backslash, and a double-quote character.
111661d06d6bSBaptiste DaroussinThe
111761d06d6bSBaptiste Daroussin.Nm
111861d06d6bSBaptiste Daroussinutility treats the line as a comment line even without the backslash,
111961d06d6bSBaptiste Daroussinbut leaving out the backslash might not be portable.
112061d06d6bSBaptiste Daroussin.El
112161d06d6bSBaptiste Daroussin.Ss Warnings related to the document prologue
112261d06d6bSBaptiste Daroussin.Bl -ohang
112361d06d6bSBaptiste Daroussin.It Sy "missing manual title, using UNTITLED"
112461d06d6bSBaptiste Daroussin.Pq mdoc
112561d06d6bSBaptiste DaroussinA
112661d06d6bSBaptiste Daroussin.Ic \&Dt
112761d06d6bSBaptiste Daroussinmacro has no arguments, or there is no
112861d06d6bSBaptiste Daroussin.Ic \&Dt
112961d06d6bSBaptiste Daroussinmacro before the first non-prologue macro.
113061d06d6bSBaptiste Daroussin.It Sy "missing manual title, using \(dq\(dq"
113161d06d6bSBaptiste Daroussin.Pq man
113261d06d6bSBaptiste DaroussinThere is no
113361d06d6bSBaptiste Daroussin.Ic \&TH
113461d06d6bSBaptiste Daroussinmacro, or it has no arguments.
113561d06d6bSBaptiste Daroussin.It Sy "missing manual section, using \(dq\(dq"
113661d06d6bSBaptiste Daroussin.Pq mdoc , man
113761d06d6bSBaptiste DaroussinA
113861d06d6bSBaptiste Daroussin.Ic \&Dt
113961d06d6bSBaptiste Daroussinor
114061d06d6bSBaptiste Daroussin.Ic \&TH
114161d06d6bSBaptiste Daroussinmacro lacks the mandatory section argument.
114261d06d6bSBaptiste Daroussin.It Sy "unknown manual section"
114361d06d6bSBaptiste Daroussin.Pq mdoc
114461d06d6bSBaptiste DaroussinThe section number in a
114561d06d6bSBaptiste Daroussin.Ic \&Dt
114661d06d6bSBaptiste Daroussinline is invalid, but still used.
11476d38604fSBaptiste Daroussin.It Sy "filename/section mismatch"
11486d38604fSBaptiste Daroussin.Pq mdoc , man
11496d38604fSBaptiste DaroussinThe name of the input file being processed is known and its file
11506d38604fSBaptiste Daroussinname extension starts with a non-zero digit, but the
11516d38604fSBaptiste Daroussin.Ic \&Dt
11526d38604fSBaptiste Daroussinor
11536d38604fSBaptiste Daroussin.Ic \&TH
11546d38604fSBaptiste Daroussinmacro contains a
11556d38604fSBaptiste Daroussin.Ar section
11566d38604fSBaptiste Daroussinargument that starts with a different non-zero digit.
11576d38604fSBaptiste DaroussinThe
11586d38604fSBaptiste Daroussin.Ar section
11596d38604fSBaptiste Daroussinargument is used as provided anyway.
11606d38604fSBaptiste DaroussinConsider checking whether the file name or the argument need a correction.
11616d38604fSBaptiste Daroussin.It Sy "missing date, using \(dq\(dq"
116261d06d6bSBaptiste Daroussin.Pq mdoc, man
116361d06d6bSBaptiste DaroussinThe document was parsed as
116461d06d6bSBaptiste Daroussin.Xr mdoc 7
116561d06d6bSBaptiste Daroussinand it has no
116661d06d6bSBaptiste Daroussin.Ic \&Dd
116761d06d6bSBaptiste Daroussinmacro, or the
116861d06d6bSBaptiste Daroussin.Ic \&Dd
116961d06d6bSBaptiste Daroussinmacro has no arguments or only empty arguments;
117061d06d6bSBaptiste Daroussinor the document was parsed as
117161d06d6bSBaptiste Daroussin.Xr man 7
117261d06d6bSBaptiste Daroussinand it has no
117361d06d6bSBaptiste Daroussin.Ic \&TH
117461d06d6bSBaptiste Daroussinmacro, or the
117561d06d6bSBaptiste Daroussin.Ic \&TH
117661d06d6bSBaptiste Daroussinmacro has less than three arguments or its third argument is empty.
117761d06d6bSBaptiste Daroussin.It Sy "cannot parse date, using it verbatim"
117861d06d6bSBaptiste Daroussin.Pq mdoc , man
117961d06d6bSBaptiste DaroussinThe date given in a
118061d06d6bSBaptiste Daroussin.Ic \&Dd
118161d06d6bSBaptiste Daroussinor
118261d06d6bSBaptiste Daroussin.Ic \&TH
118361d06d6bSBaptiste Daroussinmacro does not follow the conventional format.
118461d06d6bSBaptiste Daroussin.It Sy "date in the future, using it anyway"
118561d06d6bSBaptiste Daroussin.Pq mdoc , man
118661d06d6bSBaptiste DaroussinThe date given in a
118761d06d6bSBaptiste Daroussin.Ic \&Dd
118861d06d6bSBaptiste Daroussinor
118961d06d6bSBaptiste Daroussin.Ic \&TH
119061d06d6bSBaptiste Daroussinmacro is more than a day ahead of the current system
119161d06d6bSBaptiste Daroussin.Xr time 3 .
119261d06d6bSBaptiste Daroussin.It Sy "missing Os macro, using \(dq\(dq"
119361d06d6bSBaptiste Daroussin.Pq mdoc
119461d06d6bSBaptiste DaroussinThe default or current system is not shown in this case.
119561d06d6bSBaptiste Daroussin.It Sy "late prologue macro"
119661d06d6bSBaptiste Daroussin.Pq mdoc
119761d06d6bSBaptiste DaroussinA
119861d06d6bSBaptiste Daroussin.Ic \&Dd
119961d06d6bSBaptiste Daroussinor
120061d06d6bSBaptiste Daroussin.Ic \&Os
120161d06d6bSBaptiste Daroussinmacro occurs after some non-prologue macro, but still takes effect.
120261d06d6bSBaptiste Daroussin.It Sy "prologue macros out of order"
120361d06d6bSBaptiste Daroussin.Pq mdoc
120461d06d6bSBaptiste DaroussinThe prologue macros are not given in the conventional order
120561d06d6bSBaptiste Daroussin.Ic \&Dd ,
120661d06d6bSBaptiste Daroussin.Ic \&Dt ,
120761d06d6bSBaptiste Daroussin.Ic \&Os .
120861d06d6bSBaptiste DaroussinAll three macros are used even when given in another order.
120961d06d6bSBaptiste Daroussin.El
121061d06d6bSBaptiste Daroussin.Ss Warnings regarding document structure
121161d06d6bSBaptiste Daroussin.Bl -ohang
121261d06d6bSBaptiste Daroussin.It Sy ".so is fragile, better use ln(1)"
121361d06d6bSBaptiste Daroussin.Pq roff
121461d06d6bSBaptiste DaroussinIncluding files only works when the parser program runs with the correct
121561d06d6bSBaptiste Daroussincurrent working directory.
121661d06d6bSBaptiste Daroussin.It Sy "no document body"
121761d06d6bSBaptiste Daroussin.Pq mdoc , man
121861d06d6bSBaptiste DaroussinThe document body contains neither text nor macros.
121961d06d6bSBaptiste DaroussinAn empty document is shown, consisting only of a header and a footer line.
122061d06d6bSBaptiste Daroussin.It Sy "content before first section header"
122161d06d6bSBaptiste Daroussin.Pq mdoc , man
122261d06d6bSBaptiste DaroussinSome macros or text precede the first
122361d06d6bSBaptiste Daroussin.Ic \&Sh
122461d06d6bSBaptiste Daroussinor
122561d06d6bSBaptiste Daroussin.Ic \&SH
122661d06d6bSBaptiste Daroussinsection header.
122761d06d6bSBaptiste DaroussinThe offending macros and text are parsed and added to the top level
122861d06d6bSBaptiste Daroussinof the syntax tree, outside any section block.
122961d06d6bSBaptiste Daroussin.It Sy "first section is not NAME"
123061d06d6bSBaptiste Daroussin.Pq mdoc
123161d06d6bSBaptiste DaroussinThe argument of the first
123261d06d6bSBaptiste Daroussin.Ic \&Sh
123361d06d6bSBaptiste Daroussinmacro is not
123461d06d6bSBaptiste Daroussin.Sq NAME .
123561d06d6bSBaptiste DaroussinThis may confuse
123661d06d6bSBaptiste Daroussin.Xr makewhatis 8
123761d06d6bSBaptiste Daroussinand
123861d06d6bSBaptiste Daroussin.Xr apropos 1 .
123961d06d6bSBaptiste Daroussin.It Sy "NAME section without Nm before Nd"
124061d06d6bSBaptiste Daroussin.Pq mdoc
124161d06d6bSBaptiste DaroussinThe NAME section does not contain any
124261d06d6bSBaptiste Daroussin.Ic \&Nm
124361d06d6bSBaptiste Daroussinchild macro before the first
124461d06d6bSBaptiste Daroussin.Ic \&Nd
124561d06d6bSBaptiste Daroussinmacro.
124661d06d6bSBaptiste Daroussin.It Sy "NAME section without description"
124761d06d6bSBaptiste Daroussin.Pq mdoc
124861d06d6bSBaptiste DaroussinThe NAME section lacks the mandatory
124961d06d6bSBaptiste Daroussin.Ic \&Nd
125061d06d6bSBaptiste Daroussinchild macro.
125161d06d6bSBaptiste Daroussin.It Sy "description not at the end of NAME"
125261d06d6bSBaptiste Daroussin.Pq mdoc
125361d06d6bSBaptiste DaroussinThe NAME section does contain an
125461d06d6bSBaptiste Daroussin.Ic \&Nd
125561d06d6bSBaptiste Daroussinchild macro, but other content follows it.
125661d06d6bSBaptiste Daroussin.It Sy "bad NAME section content"
125761d06d6bSBaptiste Daroussin.Pq mdoc
125861d06d6bSBaptiste DaroussinThe NAME section contains plain text or macros other than
125961d06d6bSBaptiste Daroussin.Ic \&Nm
126061d06d6bSBaptiste Daroussinand
126161d06d6bSBaptiste Daroussin.Ic \&Nd .
126261d06d6bSBaptiste Daroussin.It Sy "missing comma before name"
126361d06d6bSBaptiste Daroussin.Pq mdoc
126461d06d6bSBaptiste DaroussinThe NAME section contains an
126561d06d6bSBaptiste Daroussin.Ic \&Nm
126661d06d6bSBaptiste Daroussinmacro that is neither the first one nor preceded by a comma.
126761d06d6bSBaptiste Daroussin.It Sy "missing description line, using \(dq\(dq"
126861d06d6bSBaptiste Daroussin.Pq mdoc
126961d06d6bSBaptiste DaroussinThe
127061d06d6bSBaptiste Daroussin.Ic \&Nd
127161d06d6bSBaptiste Daroussinmacro lacks the required argument.
127261d06d6bSBaptiste DaroussinThe title line of the manual will end after the dash.
127361d06d6bSBaptiste Daroussin.It Sy "description line outside NAME section"
127461d06d6bSBaptiste Daroussin.Pq mdoc
127561d06d6bSBaptiste DaroussinAn
127661d06d6bSBaptiste Daroussin.Ic \&Nd
127761d06d6bSBaptiste Daroussinmacro appears outside the NAME section.
127861d06d6bSBaptiste DaroussinThe arguments are printed anyway and the following text is used for
127961d06d6bSBaptiste Daroussin.Xr apropos 1 ,
128061d06d6bSBaptiste Daroussinbut none of that behaviour is portable.
128161d06d6bSBaptiste Daroussin.It Sy "sections out of conventional order"
128261d06d6bSBaptiste Daroussin.Pq mdoc
128361d06d6bSBaptiste DaroussinA standard section occurs after another section it usually precedes.
128461d06d6bSBaptiste DaroussinAll section titles are used as given,
128561d06d6bSBaptiste Daroussinand the order of sections is not changed.
128661d06d6bSBaptiste Daroussin.It Sy "duplicate section title"
128761d06d6bSBaptiste Daroussin.Pq mdoc
128861d06d6bSBaptiste DaroussinThe same standard section title occurs more than once.
128961d06d6bSBaptiste Daroussin.It Sy "unexpected section"
129061d06d6bSBaptiste Daroussin.Pq mdoc
129161d06d6bSBaptiste DaroussinA standard section header occurs in a section of the manual
129261d06d6bSBaptiste Daroussinwhere it normally isn't useful.
129361d06d6bSBaptiste Daroussin.It Sy "cross reference to self"
1294*c1c95addSBrooks Davis.Pq mdoc , man
129561d06d6bSBaptiste DaroussinAn
129661d06d6bSBaptiste Daroussin.Ic \&Xr
1297*c1c95addSBrooks Davisor
1298*c1c95addSBrooks Davis.Ic \&MR
129961d06d6bSBaptiste Daroussinmacro refers to a name and section matching the section of the present
130061d06d6bSBaptiste Daroussinmanual page and a name mentioned in an
130161d06d6bSBaptiste Daroussin.Ic \&Nm
130261d06d6bSBaptiste Daroussinmacro in the NAME or SYNOPSIS section, or in an
130361d06d6bSBaptiste Daroussin.Ic \&Fn
130461d06d6bSBaptiste Daroussinor
130561d06d6bSBaptiste Daroussin.Ic \&Fo
130661d06d6bSBaptiste Daroussinmacro in the SYNOPSIS.
130761d06d6bSBaptiste DaroussinConsider using
130861d06d6bSBaptiste Daroussin.Ic \&Nm
130961d06d6bSBaptiste Daroussinor
131061d06d6bSBaptiste Daroussin.Ic \&Fn
131161d06d6bSBaptiste Daroussininstead of
131261d06d6bSBaptiste Daroussin.Ic \&Xr .
131361d06d6bSBaptiste Daroussin.It Sy "unusual Xr order"
131461d06d6bSBaptiste Daroussin.Pq mdoc
131561d06d6bSBaptiste DaroussinIn the SEE ALSO section, an
131661d06d6bSBaptiste Daroussin.Ic \&Xr
131761d06d6bSBaptiste Daroussinmacro with a lower section number follows one with a higher number,
131861d06d6bSBaptiste Daroussinor two
131961d06d6bSBaptiste Daroussin.Ic \&Xr
132061d06d6bSBaptiste Daroussinmacros referring to the same section are out of alphabetical order.
132161d06d6bSBaptiste Daroussin.It Sy "unusual Xr punctuation"
132261d06d6bSBaptiste Daroussin.Pq mdoc
132361d06d6bSBaptiste DaroussinIn the SEE ALSO section, punctuation between two
132461d06d6bSBaptiste Daroussin.Ic \&Xr
132561d06d6bSBaptiste Daroussinmacros differs from a single comma, or there is trailing punctuation
132661d06d6bSBaptiste Daroussinafter the last
132761d06d6bSBaptiste Daroussin.Ic \&Xr
132861d06d6bSBaptiste Daroussinmacro.
132961d06d6bSBaptiste Daroussin.It Sy "AUTHORS section without An macro"
133061d06d6bSBaptiste Daroussin.Pq mdoc
133161d06d6bSBaptiste DaroussinAn AUTHORS sections contains no
133261d06d6bSBaptiste Daroussin.Ic \&An
133361d06d6bSBaptiste Daroussinmacros, or only empty ones.
133461d06d6bSBaptiste DaroussinProbably, there are author names lacking markup.
133561d06d6bSBaptiste Daroussin.El
133661d06d6bSBaptiste Daroussin.Ss "Warnings related to macros and nesting"
133761d06d6bSBaptiste Daroussin.Bl -ohang
133861d06d6bSBaptiste Daroussin.It Sy "obsolete macro"
133961d06d6bSBaptiste Daroussin.Pq mdoc
134061d06d6bSBaptiste DaroussinSee the
134161d06d6bSBaptiste Daroussin.Xr mdoc 7
134261d06d6bSBaptiste Daroussinmanual for replacements.
134361d06d6bSBaptiste Daroussin.It Sy "macro neither callable nor escaped"
134461d06d6bSBaptiste Daroussin.Pq mdoc
134561d06d6bSBaptiste DaroussinThe name of a macro that is not callable appears on a macro line.
134661d06d6bSBaptiste DaroussinIt is printed verbatim.
134761d06d6bSBaptiste DaroussinIf the intention is to call it, move it to its own input line;
134861d06d6bSBaptiste Daroussinotherwise, escape it by prepending
134961d06d6bSBaptiste Daroussin.Sq \e& .
135061d06d6bSBaptiste Daroussin.It Sy "skipping paragraph macro"
135161d06d6bSBaptiste DaroussinIn
135261d06d6bSBaptiste Daroussin.Xr mdoc 7
135361d06d6bSBaptiste Daroussindocuments, this happens
135461d06d6bSBaptiste Daroussin.Bl -dash -compact
135561d06d6bSBaptiste Daroussin.It
135661d06d6bSBaptiste Daroussinat the beginning and end of sections and subsections
135761d06d6bSBaptiste Daroussin.It
135861d06d6bSBaptiste Daroussinright before non-compact lists and displays
135961d06d6bSBaptiste Daroussin.It
136061d06d6bSBaptiste Daroussinat the end of items in non-column, non-compact lists
136161d06d6bSBaptiste Daroussin.It
136261d06d6bSBaptiste Daroussinand for multiple consecutive paragraph macros.
136361d06d6bSBaptiste Daroussin.El
136461d06d6bSBaptiste DaroussinIn
136561d06d6bSBaptiste Daroussin.Xr man 7
136661d06d6bSBaptiste Daroussindocuments, it happens
136761d06d6bSBaptiste Daroussin.Bl -dash -compact
136861d06d6bSBaptiste Daroussin.It
136961d06d6bSBaptiste Daroussinfor empty
137061d06d6bSBaptiste Daroussin.Ic \&P ,
137161d06d6bSBaptiste Daroussin.Ic \&PP ,
137261d06d6bSBaptiste Daroussinand
137361d06d6bSBaptiste Daroussin.Ic \&LP
137461d06d6bSBaptiste Daroussinmacros
137561d06d6bSBaptiste Daroussin.It
137661d06d6bSBaptiste Daroussinfor
137761d06d6bSBaptiste Daroussin.Ic \&IP
137861d06d6bSBaptiste Daroussinmacros having neither head nor body arguments
137961d06d6bSBaptiste Daroussin.It
138061d06d6bSBaptiste Daroussinfor
138161d06d6bSBaptiste Daroussin.Ic \&br
138261d06d6bSBaptiste Daroussinor
138361d06d6bSBaptiste Daroussin.Ic \&sp
138461d06d6bSBaptiste Daroussinright after
138561d06d6bSBaptiste Daroussin.Ic \&SH
138661d06d6bSBaptiste Daroussinor
138761d06d6bSBaptiste Daroussin.Ic \&SS
138861d06d6bSBaptiste Daroussin.El
138961d06d6bSBaptiste Daroussin.It Sy "moving paragraph macro out of list"
139061d06d6bSBaptiste Daroussin.Pq mdoc
139161d06d6bSBaptiste DaroussinA list item in a
139261d06d6bSBaptiste Daroussin.Ic \&Bl
139361d06d6bSBaptiste Daroussinlist contains a trailing paragraph macro.
139461d06d6bSBaptiste DaroussinThe paragraph macro is moved after the end of the list.
139561d06d6bSBaptiste Daroussin.It Sy "skipping no-space macro"
139661d06d6bSBaptiste Daroussin.Pq mdoc
139761d06d6bSBaptiste DaroussinAn input line begins with an
139861d06d6bSBaptiste Daroussin.Ic \&Ns
139961d06d6bSBaptiste Daroussinmacro, or the next argument after an
140061d06d6bSBaptiste Daroussin.Ic \&Ns
140161d06d6bSBaptiste Daroussinmacro is an isolated closing delimiter.
140261d06d6bSBaptiste DaroussinThe macro is ignored.
140361d06d6bSBaptiste Daroussin.It Sy "blocks badly nested"
140461d06d6bSBaptiste Daroussin.Pq mdoc
140561d06d6bSBaptiste DaroussinIf two blocks intersect, one should completely contain the other.
140661d06d6bSBaptiste DaroussinOtherwise, rendered output is likely to look strange in any output
140761d06d6bSBaptiste Daroussinformat, and rendering in SGML-based output formats is likely to be
140861d06d6bSBaptiste Daroussinoutright wrong because such languages do not support badly nested
140961d06d6bSBaptiste Daroussinblocks at all.
141061d06d6bSBaptiste DaroussinTypical examples of badly nested blocks are
141161d06d6bSBaptiste Daroussin.Qq Ic \&Ao \&Bo \&Ac \&Bc
141261d06d6bSBaptiste Daroussinand
141361d06d6bSBaptiste Daroussin.Qq Ic \&Ao \&Bq \&Ac .
141461d06d6bSBaptiste DaroussinIn these examples,
141561d06d6bSBaptiste Daroussin.Ic \&Ac
141661d06d6bSBaptiste Daroussinbreaks
141761d06d6bSBaptiste Daroussin.Ic \&Bo
141861d06d6bSBaptiste Daroussinand
141961d06d6bSBaptiste Daroussin.Ic \&Bq ,
142061d06d6bSBaptiste Daroussinrespectively.
142161d06d6bSBaptiste Daroussin.It Sy "nested displays are not portable"
142261d06d6bSBaptiste Daroussin.Pq mdoc
142361d06d6bSBaptiste DaroussinA
142461d06d6bSBaptiste Daroussin.Ic \&Bd ,
142561d06d6bSBaptiste Daroussin.Ic \&D1 ,
142661d06d6bSBaptiste Daroussinor
142761d06d6bSBaptiste Daroussin.Ic \&Dl
142861d06d6bSBaptiste Daroussindisplay occurs nested inside another
142961d06d6bSBaptiste Daroussin.Ic \&Bd
143061d06d6bSBaptiste Daroussindisplay.
143161d06d6bSBaptiste DaroussinThis works with
143261d06d6bSBaptiste Daroussin.Nm ,
143361d06d6bSBaptiste Daroussinbut fails with most other implementations.
143461d06d6bSBaptiste Daroussin.It Sy "moving content out of list"
143561d06d6bSBaptiste Daroussin.Pq mdoc
143661d06d6bSBaptiste DaroussinA
143761d06d6bSBaptiste Daroussin.Ic \&Bl
143861d06d6bSBaptiste Daroussinlist block contains text or macros before the first
143961d06d6bSBaptiste Daroussin.Ic \&It
144061d06d6bSBaptiste Daroussinmacro.
144161d06d6bSBaptiste DaroussinThe offending children are moved before the beginning of the list.
144261d06d6bSBaptiste Daroussin.It Sy "first macro on line"
144361d06d6bSBaptiste DaroussinInside a
144461d06d6bSBaptiste Daroussin.Ic \&Bl Fl column
144561d06d6bSBaptiste Daroussinlist, a
144661d06d6bSBaptiste Daroussin.Ic \&Ta
144761d06d6bSBaptiste Daroussinmacro occurs as the first macro on a line, which is not portable.
144861d06d6bSBaptiste Daroussin.It Sy "line scope broken"
144961d06d6bSBaptiste Daroussin.Pq man
145061d06d6bSBaptiste DaroussinWhile parsing the next-line scope of the previous macro,
145161d06d6bSBaptiste Daroussinanother macro is found that prematurely terminates the previous one.
145261d06d6bSBaptiste DaroussinThe previous, interrupted macro is deleted from the parse tree.
145361d06d6bSBaptiste Daroussin.El
145461d06d6bSBaptiste Daroussin.Ss "Warnings related to missing arguments"
145561d06d6bSBaptiste Daroussin.Bl -ohang
145661d06d6bSBaptiste Daroussin.It Sy "skipping empty request"
145761d06d6bSBaptiste Daroussin.Pq roff , eqn
145861d06d6bSBaptiste DaroussinThe macro name is missing from a macro definition request,
145961d06d6bSBaptiste Daroussinor an
146061d06d6bSBaptiste Daroussin.Xr eqn 7
146161d06d6bSBaptiste Daroussincontrol statement or operation keyword lacks its required argument.
146261d06d6bSBaptiste Daroussin.It Sy "conditional request controls empty scope"
146361d06d6bSBaptiste Daroussin.Pq roff
146461d06d6bSBaptiste DaroussinA conditional request is only useful if any of the following
146561d06d6bSBaptiste Daroussinfollows it on the same logical input line:
146661d06d6bSBaptiste Daroussin.Bl -dash -compact
146761d06d6bSBaptiste Daroussin.It
146861d06d6bSBaptiste DaroussinThe
146961d06d6bSBaptiste Daroussin.Sq \e{
147061d06d6bSBaptiste Daroussinkeyword to open a multi-line scope.
147161d06d6bSBaptiste Daroussin.It
147261d06d6bSBaptiste DaroussinA request or macro or some text, resulting in a single-line scope.
147361d06d6bSBaptiste Daroussin.It
147461d06d6bSBaptiste DaroussinThe immediate end of the logical line without any intervening whitespace,
147561d06d6bSBaptiste Daroussinresulting in next-line scope.
147661d06d6bSBaptiste Daroussin.El
147761d06d6bSBaptiste DaroussinHere, a conditional request is followed by trailing whitespace only,
147861d06d6bSBaptiste Daroussinand there is no other content on its logical input line.
147961d06d6bSBaptiste DaroussinNote that it doesn't matter whether the logical input line is split
148061d06d6bSBaptiste Daroussinacross multiple physical input lines using
148161d06d6bSBaptiste Daroussin.Sq \e
148261d06d6bSBaptiste Daroussinline continuation characters.
148361d06d6bSBaptiste DaroussinThis is one of the rare cases
148461d06d6bSBaptiste Daroussinwhere trailing whitespace is syntactically significant.
148561d06d6bSBaptiste DaroussinThe conditional request controls a scope containing whitespace only,
148661d06d6bSBaptiste Daroussinso it is unlikely to have a significant effect,
148761d06d6bSBaptiste Daroussinexcept that it may control a following
148861d06d6bSBaptiste Daroussin.Ic \&el
148961d06d6bSBaptiste Daroussinclause.
149061d06d6bSBaptiste Daroussin.It Sy "skipping empty macro"
149161d06d6bSBaptiste Daroussin.Pq mdoc
149261d06d6bSBaptiste DaroussinThe indicated macro has no arguments and hence no effect.
149361d06d6bSBaptiste Daroussin.It Sy "empty block"
149461d06d6bSBaptiste Daroussin.Pq mdoc , man
149561d06d6bSBaptiste DaroussinA
149661d06d6bSBaptiste Daroussin.Ic \&Bd ,
149761d06d6bSBaptiste Daroussin.Ic \&Bk ,
149861d06d6bSBaptiste Daroussin.Ic \&Bl ,
149961d06d6bSBaptiste Daroussin.Ic \&D1 ,
150061d06d6bSBaptiste Daroussin.Ic \&Dl ,
150161d06d6bSBaptiste Daroussinor
1502*c1c95addSBrooks Davis.Ic \&RS
150361d06d6bSBaptiste Daroussinblock contains nothing in its body and will produce no output.
150461d06d6bSBaptiste Daroussin.It Sy "empty argument, using 0n"
150561d06d6bSBaptiste Daroussin.Pq mdoc
150661d06d6bSBaptiste DaroussinThe required width is missing after
150761d06d6bSBaptiste Daroussin.Ic \&Bd
150861d06d6bSBaptiste Daroussinor
150961d06d6bSBaptiste Daroussin.Ic \&Bl
151061d06d6bSBaptiste Daroussin.Fl offset
151161d06d6bSBaptiste Daroussinor
151261d06d6bSBaptiste Daroussin.Fl width .
151361d06d6bSBaptiste Daroussin.It Sy "missing display type, using -ragged"
151461d06d6bSBaptiste Daroussin.Pq mdoc
151561d06d6bSBaptiste DaroussinThe
151661d06d6bSBaptiste Daroussin.Ic \&Bd
151761d06d6bSBaptiste Daroussinmacro is invoked without the required display type.
151861d06d6bSBaptiste Daroussin.It Sy "list type is not the first argument"
151961d06d6bSBaptiste Daroussin.Pq mdoc
152061d06d6bSBaptiste DaroussinIn a
152161d06d6bSBaptiste Daroussin.Ic \&Bl
152261d06d6bSBaptiste Daroussinmacro, at least one other argument precedes the type argument.
152361d06d6bSBaptiste DaroussinThe
152461d06d6bSBaptiste Daroussin.Nm
152561d06d6bSBaptiste Daroussinutility copes with any argument order, but some other
152661d06d6bSBaptiste Daroussin.Xr mdoc 7
152761d06d6bSBaptiste Daroussinimplementations do not.
152861d06d6bSBaptiste Daroussin.It Sy "missing -width in -tag list, using 8n"
152961d06d6bSBaptiste Daroussin.Pq mdoc
153061d06d6bSBaptiste DaroussinEvery
153161d06d6bSBaptiste Daroussin.Ic \&Bl
153261d06d6bSBaptiste Daroussinmacro having the
153361d06d6bSBaptiste Daroussin.Fl tag
153461d06d6bSBaptiste Daroussinargument requires
153561d06d6bSBaptiste Daroussin.Fl width ,
153661d06d6bSBaptiste Daroussintoo.
153761d06d6bSBaptiste Daroussin.It Sy "missing utility name, using \(dq\(dq"
153861d06d6bSBaptiste Daroussin.Pq mdoc
153961d06d6bSBaptiste DaroussinThe
154061d06d6bSBaptiste Daroussin.Ic \&Ex Fl std
154161d06d6bSBaptiste Daroussinmacro is called without an argument before
154261d06d6bSBaptiste Daroussin.Ic \&Nm
154361d06d6bSBaptiste Daroussinhas first been called with an argument.
154461d06d6bSBaptiste Daroussin.It Sy "missing function name, using \(dq\(dq"
154561d06d6bSBaptiste Daroussin.Pq mdoc
154661d06d6bSBaptiste DaroussinThe
154761d06d6bSBaptiste Daroussin.Ic \&Fo
154861d06d6bSBaptiste Daroussinmacro is called without an argument.
154961d06d6bSBaptiste DaroussinNo function name is printed.
155061d06d6bSBaptiste Daroussin.It Sy "empty head in list item"
155161d06d6bSBaptiste Daroussin.Pq mdoc
155261d06d6bSBaptiste DaroussinIn a
155361d06d6bSBaptiste Daroussin.Ic \&Bl
155461d06d6bSBaptiste Daroussin.Fl diag ,
155561d06d6bSBaptiste Daroussin.Fl hang ,
155661d06d6bSBaptiste Daroussin.Fl inset ,
155761d06d6bSBaptiste Daroussin.Fl ohang ,
155861d06d6bSBaptiste Daroussinor
155961d06d6bSBaptiste Daroussin.Fl tag
156061d06d6bSBaptiste Daroussinlist, an
156161d06d6bSBaptiste Daroussin.Ic \&It
156261d06d6bSBaptiste Daroussinmacro lacks the required argument.
156361d06d6bSBaptiste DaroussinThe item head is left empty.
156461d06d6bSBaptiste Daroussin.It Sy "empty list item"
156561d06d6bSBaptiste Daroussin.Pq mdoc
156661d06d6bSBaptiste DaroussinIn a
156761d06d6bSBaptiste Daroussin.Ic \&Bl
156861d06d6bSBaptiste Daroussin.Fl bullet ,
156961d06d6bSBaptiste Daroussin.Fl dash ,
157061d06d6bSBaptiste Daroussin.Fl enum ,
157161d06d6bSBaptiste Daroussinor
157261d06d6bSBaptiste Daroussin.Fl hyphen
157361d06d6bSBaptiste Daroussinlist, an
157461d06d6bSBaptiste Daroussin.Ic \&It
157561d06d6bSBaptiste Daroussinblock is empty.
157661d06d6bSBaptiste DaroussinAn empty list item is shown.
157761d06d6bSBaptiste Daroussin.It Sy "missing argument, using next line"
157861d06d6bSBaptiste Daroussin.Pq mdoc
157961d06d6bSBaptiste DaroussinAn
158061d06d6bSBaptiste Daroussin.Ic \&It
158161d06d6bSBaptiste Daroussinmacro in a
158261d06d6bSBaptiste Daroussin.Ic \&Bd Fl column
158361d06d6bSBaptiste Daroussinlist has no arguments.
158461d06d6bSBaptiste DaroussinWhile
158561d06d6bSBaptiste Daroussin.Nm
158661d06d6bSBaptiste Daroussinuses the text or macros of the following line, if any, for the cell,
158761d06d6bSBaptiste Daroussinother formatters may misformat the list.
158861d06d6bSBaptiste Daroussin.It Sy "missing font type, using \efR"
158961d06d6bSBaptiste Daroussin.Pq mdoc
159061d06d6bSBaptiste DaroussinA
159161d06d6bSBaptiste Daroussin.Ic \&Bf
159261d06d6bSBaptiste Daroussinmacro has no argument.
159361d06d6bSBaptiste DaroussinIt switches to the default font.
159461d06d6bSBaptiste Daroussin.It Sy "unknown font type, using \efR"
159561d06d6bSBaptiste Daroussin.Pq mdoc
159661d06d6bSBaptiste DaroussinThe
159761d06d6bSBaptiste Daroussin.Ic \&Bf
159861d06d6bSBaptiste Daroussinargument is invalid.
159961d06d6bSBaptiste DaroussinThe default font is used instead.
160061d06d6bSBaptiste Daroussin.It Sy "nothing follows prefix"
160161d06d6bSBaptiste Daroussin.Pq mdoc
160261d06d6bSBaptiste DaroussinA
160361d06d6bSBaptiste Daroussin.Ic \&Pf
160461d06d6bSBaptiste Daroussinmacro has no argument, or only one argument and no macro follows
160561d06d6bSBaptiste Daroussinon the same input line.
160661d06d6bSBaptiste DaroussinThis defeats its purpose; in particular, spacing is not suppressed
160761d06d6bSBaptiste Daroussinbefore the text or macros following on the next input line.
160861d06d6bSBaptiste Daroussin.It Sy "empty reference block"
160961d06d6bSBaptiste Daroussin.Pq mdoc
161061d06d6bSBaptiste DaroussinAn
161161d06d6bSBaptiste Daroussin.Ic \&Rs
161261d06d6bSBaptiste Daroussinmacro is immediately followed by an
161361d06d6bSBaptiste Daroussin.Ic \&Re
161461d06d6bSBaptiste Daroussinmacro on the next input line.
161561d06d6bSBaptiste DaroussinSuch an empty block does not produce any output.
161661d06d6bSBaptiste Daroussin.It Sy "missing section argument"
1617*c1c95addSBrooks Davis.Pq mdoc , man
161861d06d6bSBaptiste DaroussinAn
161961d06d6bSBaptiste Daroussin.Ic \&Xr
1620*c1c95addSBrooks Davisor
1621*c1c95addSBrooks Davis.Ic \&MR
162261d06d6bSBaptiste Daroussinmacro lacks its second, section number argument.
1623*c1c95addSBrooks DavisThe first argument, i.e. the name, is printed, but without a section number.
1624*c1c95addSBrooks DavisIn the case of
1625*c1c95addSBrooks Davis.Ic \&Xr ,
1626*c1c95addSBrooks Davisthe parentheses are also omitted.
162761d06d6bSBaptiste Daroussin.It Sy "missing -std argument, adding it"
162861d06d6bSBaptiste Daroussin.Pq mdoc
162961d06d6bSBaptiste DaroussinAn
163061d06d6bSBaptiste Daroussin.Ic \&Ex
163161d06d6bSBaptiste Daroussinor
163261d06d6bSBaptiste Daroussin.Ic \&Rv
163361d06d6bSBaptiste Daroussinmacro lacks the required
163461d06d6bSBaptiste Daroussin.Fl std
163561d06d6bSBaptiste Daroussinargument.
163661d06d6bSBaptiste DaroussinThe
163761d06d6bSBaptiste Daroussin.Nm
163861d06d6bSBaptiste Daroussinutility assumes
163961d06d6bSBaptiste Daroussin.Fl std
164061d06d6bSBaptiste Daroussineven when it is not specified, but other implementations may not.
164161d06d6bSBaptiste Daroussin.It Sy "missing option string, using \(dq\(dq"
164261d06d6bSBaptiste Daroussin.Pq man
164361d06d6bSBaptiste DaroussinThe
164461d06d6bSBaptiste Daroussin.Ic \&OP
164561d06d6bSBaptiste Daroussinmacro is invoked without any argument.
164661d06d6bSBaptiste DaroussinAn empty pair of square brackets is shown.
164761d06d6bSBaptiste Daroussin.It Sy "missing resource identifier, using \(dq\(dq"
164861d06d6bSBaptiste Daroussin.Pq man
164961d06d6bSBaptiste DaroussinThe
165061d06d6bSBaptiste Daroussin.Ic \&MT
165161d06d6bSBaptiste Daroussinor
165261d06d6bSBaptiste Daroussin.Ic \&UR
165361d06d6bSBaptiste Daroussinmacro is invoked without any argument.
165461d06d6bSBaptiste DaroussinAn empty pair of angle brackets is shown.
165561d06d6bSBaptiste Daroussin.It Sy "missing eqn box, using \(dq\(dq"
165661d06d6bSBaptiste Daroussin.Pq eqn
165761d06d6bSBaptiste DaroussinA diacritic mark or a binary operator is found,
165861d06d6bSBaptiste Daroussinbut there is nothing to the left of it.
165961d06d6bSBaptiste DaroussinAn empty box is inserted.
166061d06d6bSBaptiste Daroussin.El
166161d06d6bSBaptiste Daroussin.Ss "Warnings related to bad macro arguments"
166261d06d6bSBaptiste Daroussin.Bl -ohang
166361d06d6bSBaptiste Daroussin.It Sy "duplicate argument"
166461d06d6bSBaptiste Daroussin.Pq mdoc
166561d06d6bSBaptiste DaroussinA
166661d06d6bSBaptiste Daroussin.Ic \&Bd
166761d06d6bSBaptiste Daroussinor
166861d06d6bSBaptiste Daroussin.Ic \&Bl
166961d06d6bSBaptiste Daroussinmacro has more than one
167061d06d6bSBaptiste Daroussin.Fl compact ,
167161d06d6bSBaptiste Daroussinmore than one
167261d06d6bSBaptiste Daroussin.Fl offset ,
167361d06d6bSBaptiste Daroussinor more than one
167461d06d6bSBaptiste Daroussin.Fl width
167561d06d6bSBaptiste Daroussinargument.
167661d06d6bSBaptiste DaroussinAll but the last instances of these arguments are ignored.
167761d06d6bSBaptiste Daroussin.It Sy "skipping duplicate argument"
167861d06d6bSBaptiste Daroussin.Pq mdoc
167961d06d6bSBaptiste DaroussinAn
168061d06d6bSBaptiste Daroussin.Ic \&An
168161d06d6bSBaptiste Daroussinmacro has more than one
168261d06d6bSBaptiste Daroussin.Fl split
168361d06d6bSBaptiste Daroussinor
168461d06d6bSBaptiste Daroussin.Fl nosplit
168561d06d6bSBaptiste Daroussinargument.
168661d06d6bSBaptiste DaroussinAll but the first of these arguments are ignored.
168761d06d6bSBaptiste Daroussin.It Sy "skipping duplicate display type"
168861d06d6bSBaptiste Daroussin.Pq mdoc
168961d06d6bSBaptiste DaroussinA
169061d06d6bSBaptiste Daroussin.Ic \&Bd
169161d06d6bSBaptiste Daroussinmacro has more than one type argument; the first one is used.
169261d06d6bSBaptiste Daroussin.It Sy "skipping duplicate list type"
169361d06d6bSBaptiste Daroussin.Pq mdoc
169461d06d6bSBaptiste DaroussinA
169561d06d6bSBaptiste Daroussin.Ic \&Bl
169661d06d6bSBaptiste Daroussinmacro has more than one type argument; the first one is used.
169761d06d6bSBaptiste Daroussin.It Sy "skipping -width argument"
169861d06d6bSBaptiste Daroussin.Pq mdoc
169961d06d6bSBaptiste DaroussinA
170061d06d6bSBaptiste Daroussin.Ic \&Bl
170161d06d6bSBaptiste Daroussin.Fl column ,
170261d06d6bSBaptiste Daroussin.Fl diag ,
170361d06d6bSBaptiste Daroussin.Fl ohang ,
170461d06d6bSBaptiste Daroussin.Fl inset ,
170561d06d6bSBaptiste Daroussinor
170661d06d6bSBaptiste Daroussin.Fl item
170761d06d6bSBaptiste Daroussinlist has a
170861d06d6bSBaptiste Daroussin.Fl width
170961d06d6bSBaptiste Daroussinargument.
171061d06d6bSBaptiste DaroussinThat has no effect.
171161d06d6bSBaptiste Daroussin.It Sy "wrong number of cells"
171261d06d6bSBaptiste DaroussinIn a line of a
171361d06d6bSBaptiste Daroussin.Ic \&Bl Fl column
171461d06d6bSBaptiste Daroussinlist, the number of tabs or
171561d06d6bSBaptiste Daroussin.Ic \&Ta
171661d06d6bSBaptiste Daroussinmacros is less than the number expected from the list header line
171761d06d6bSBaptiste Daroussinor exceeds the expected number by more than one.
171861d06d6bSBaptiste DaroussinMissing cells remain empty, and all cells exceeding the number of
171961d06d6bSBaptiste Daroussincolumns are joined into one single cell.
172061d06d6bSBaptiste Daroussin.It Sy "unknown AT&T UNIX version"
172161d06d6bSBaptiste Daroussin.Pq mdoc
172261d06d6bSBaptiste DaroussinAn
172361d06d6bSBaptiste Daroussin.Ic \&At
172461d06d6bSBaptiste Daroussinmacro has an invalid argument.
172561d06d6bSBaptiste DaroussinIt is used verbatim, with
172661d06d6bSBaptiste Daroussin.Qq "AT&T UNIX "
172761d06d6bSBaptiste Daroussinprefixed to it.
172861d06d6bSBaptiste Daroussin.It Sy "comma in function argument"
172961d06d6bSBaptiste Daroussin.Pq mdoc
173061d06d6bSBaptiste DaroussinAn argument of an
173161d06d6bSBaptiste Daroussin.Ic \&Fa
173261d06d6bSBaptiste Daroussinor
173361d06d6bSBaptiste Daroussin.Ic \&Fn
173461d06d6bSBaptiste Daroussinmacro contains a comma; it should probably be split into two arguments.
173561d06d6bSBaptiste Daroussin.It Sy "parenthesis in function name"
173661d06d6bSBaptiste Daroussin.Pq mdoc
173761d06d6bSBaptiste DaroussinThe first argument of an
173861d06d6bSBaptiste Daroussin.Ic \&Fc
173961d06d6bSBaptiste Daroussinor
174061d06d6bSBaptiste Daroussin.Ic \&Fn
174161d06d6bSBaptiste Daroussinmacro contains an opening or closing parenthesis; that's probably wrong,
174261d06d6bSBaptiste Daroussinparentheses are added automatically.
174361d06d6bSBaptiste Daroussin.It Sy "unknown library name"
174461d06d6bSBaptiste Daroussin.Pq mdoc, not on Ox
174561d06d6bSBaptiste DaroussinAn
174661d06d6bSBaptiste Daroussin.Ic \&Lb
174761d06d6bSBaptiste Daroussinmacro has an unknown name argument and will be rendered as
174861d06d6bSBaptiste Daroussin.Qq library Dq Ar name .
174961d06d6bSBaptiste Daroussin.It Sy "invalid content in Rs block"
175061d06d6bSBaptiste Daroussin.Pq mdoc
175161d06d6bSBaptiste DaroussinAn
175261d06d6bSBaptiste Daroussin.Ic \&Rs
175361d06d6bSBaptiste Daroussinblock contains plain text or non-% macros.
175461d06d6bSBaptiste DaroussinThe bogus content is left in the syntax tree.
175561d06d6bSBaptiste DaroussinFormatting may be poor.
175661d06d6bSBaptiste Daroussin.It Sy "invalid Boolean argument"
175761d06d6bSBaptiste Daroussin.Pq mdoc
175861d06d6bSBaptiste DaroussinAn
175961d06d6bSBaptiste Daroussin.Ic \&Sm
176061d06d6bSBaptiste Daroussinmacro has an argument other than
176161d06d6bSBaptiste Daroussin.Cm on
176261d06d6bSBaptiste Daroussinor
176361d06d6bSBaptiste Daroussin.Cm off .
176461d06d6bSBaptiste DaroussinThe invalid argument is moved out of the macro, which leaves the macro
176561d06d6bSBaptiste Daroussinempty, causing it to toggle the spacing mode.
17667295610fSBaptiste Daroussin.It Sy "argument contains two font escapes"
17677295610fSBaptiste Daroussin.Pq roff
17687295610fSBaptiste DaroussinThe second argument of a
17697295610fSBaptiste Daroussin.Ic char
17707295610fSBaptiste Daroussinrequest contains more than one font escape sequence.
17717295610fSBaptiste DaroussinA wrong font may remain active after using the character.
177261d06d6bSBaptiste Daroussin.It Sy "unknown font, skipping request"
177361d06d6bSBaptiste Daroussin.Pq man , tbl
177461d06d6bSBaptiste DaroussinA
177561d06d6bSBaptiste Daroussin.Xr roff 7
177661d06d6bSBaptiste Daroussin.Ic \&ft
177761d06d6bSBaptiste Daroussinrequest or a
177861d06d6bSBaptiste Daroussin.Xr tbl 7
177961d06d6bSBaptiste Daroussin.Ic \&f
178061d06d6bSBaptiste Daroussinlayout modifier has an unknown
178161d06d6bSBaptiste Daroussin.Ar font
178261d06d6bSBaptiste Daroussinargument.
1783*c1c95addSBrooks Davis.It Sy "ignoring distance argument"
1784*c1c95addSBrooks Davis.Pq roff
1785*c1c95addSBrooks DavisIn addition to the margin character, an
1786*c1c95addSBrooks Davis.Ic \&mc
1787*c1c95addSBrooks Davisrequest has a second argument supposed to represent a distance, but the
1788*c1c95addSBrooks Davis.Nm
1789*c1c95addSBrooks Davisimplementation of
1790*c1c95addSBrooks Davis.Ic \&mc
1791*c1c95addSBrooks Davisalways ignores the second argument.
179261d06d6bSBaptiste Daroussin.It Sy "odd number of characters in request"
179361d06d6bSBaptiste Daroussin.Pq roff
179461d06d6bSBaptiste DaroussinA
179561d06d6bSBaptiste Daroussin.Ic \&tr
179661d06d6bSBaptiste Daroussinrequest contains an odd number of characters.
179761d06d6bSBaptiste DaroussinThe last character is mapped to the blank character.
179861d06d6bSBaptiste Daroussin.El
179961d06d6bSBaptiste Daroussin.Ss "Warnings related to plain text"
180061d06d6bSBaptiste Daroussin.Bl -ohang
180161d06d6bSBaptiste Daroussin.It Sy "blank line in fill mode, using .sp"
180261d06d6bSBaptiste Daroussin.Pq mdoc
180361d06d6bSBaptiste DaroussinThe meaning of blank input lines is only well-defined in non-fill mode:
180461d06d6bSBaptiste DaroussinIn fill mode, line breaks of text input lines are not supposed to be
180561d06d6bSBaptiste Daroussinsignificant.
180661d06d6bSBaptiste DaroussinHowever, for compatibility with groff, blank lines in fill mode
180745a5aec3SBaptiste Daroussinare formatted like
180861d06d6bSBaptiste Daroussin.Ic \&sp
180961d06d6bSBaptiste Daroussinrequests.
181045a5aec3SBaptiste DaroussinTo request a paragraph break, use
181145a5aec3SBaptiste Daroussin.Ic \&Pp
181245a5aec3SBaptiste Daroussininstead of a blank line.
181361d06d6bSBaptiste Daroussin.It Sy "tab in filled text"
181461d06d6bSBaptiste Daroussin.Pq mdoc , man
181561d06d6bSBaptiste DaroussinThe meaning of tab characters is only well-defined in non-fill mode:
181661d06d6bSBaptiste DaroussinIn fill mode, whitespace is not supposed to be significant
181761d06d6bSBaptiste Daroussinon text input lines.
181861d06d6bSBaptiste DaroussinAs an implementation dependent choice, tab characters on text lines
181961d06d6bSBaptiste Daroussinare passed through to the formatters in any case.
182061d06d6bSBaptiste DaroussinGiven that the text before the tab character will be filled,
182161d06d6bSBaptiste Daroussinit is hard to predict which tab stop position the tab will advance to.
182261d06d6bSBaptiste Daroussin.It Sy "new sentence, new line"
182361d06d6bSBaptiste Daroussin.Pq mdoc
182461d06d6bSBaptiste DaroussinA new sentence starts in the middle of a text line.
182561d06d6bSBaptiste DaroussinStart it on a new input line to help formatters produce correct spacing.
1826*c1c95addSBrooks Davis.It Sy "invalid escape sequence argument"
182761d06d6bSBaptiste Daroussin.Pq roff
1828*c1c95addSBrooks DavisThe argument of an escape sequence is of an invalid form.
1829*c1c95addSBrooks DavisInvalid escape sequences are ignored.
18307295610fSBaptiste Daroussin.It Sy "undefined escape, printing literally"
18317295610fSBaptiste Daroussin.Pq roff
18327295610fSBaptiste DaroussinIn an escape sequence, the first character
18337295610fSBaptiste Daroussinright after the leading backslash is invalid.
18347295610fSBaptiste DaroussinThat character is printed literally,
18357295610fSBaptiste Daroussinwhich is equivalent to ignoring the backslash.
183661d06d6bSBaptiste Daroussin.It Sy "undefined string, using \(dq\(dq"
183761d06d6bSBaptiste Daroussin.Pq roff
183861d06d6bSBaptiste DaroussinIf a string is used without being defined before,
183961d06d6bSBaptiste Daroussinits value is implicitly set to the empty string.
184061d06d6bSBaptiste DaroussinHowever, defining strings explicitly before use
184161d06d6bSBaptiste Daroussinkeeps the code more readable.
184261d06d6bSBaptiste Daroussin.El
184361d06d6bSBaptiste Daroussin.Ss "Warnings related to tables"
184461d06d6bSBaptiste Daroussin.Bl -ohang
184561d06d6bSBaptiste Daroussin.It Sy "tbl line starts with span"
184661d06d6bSBaptiste Daroussin.Pq tbl
184761d06d6bSBaptiste DaroussinThe first cell in a table layout line is a horizontal span
184861d06d6bSBaptiste Daroussin.Pq Sq Cm s .
184961d06d6bSBaptiste DaroussinData provided for this cell is ignored, and nothing is printed in the cell.
185061d06d6bSBaptiste Daroussin.It Sy "tbl column starts with span"
185161d06d6bSBaptiste Daroussin.Pq tbl
185261d06d6bSBaptiste DaroussinThe first line of a table layout specification
185361d06d6bSBaptiste Daroussinrequests a vertical span
185461d06d6bSBaptiste Daroussin.Pq Sq Cm ^ .
185561d06d6bSBaptiste DaroussinData provided for this cell is ignored, and nothing is printed in the cell.
185661d06d6bSBaptiste Daroussin.It Sy "skipping vertical bar in tbl layout"
185761d06d6bSBaptiste Daroussin.Pq tbl
185861d06d6bSBaptiste DaroussinA table layout specification contains more than two consecutive vertical bars.
185961d06d6bSBaptiste DaroussinA double bar is printed, all additional bars are discarded.
186061d06d6bSBaptiste Daroussin.El
186161d06d6bSBaptiste Daroussin.Ss "Errors related to tables"
186261d06d6bSBaptiste Daroussin.Bl -ohang
186361d06d6bSBaptiste Daroussin.It Sy "non-alphabetic character in tbl options"
186461d06d6bSBaptiste Daroussin.Pq tbl
186561d06d6bSBaptiste DaroussinThe table options line contains a character other than a letter,
186661d06d6bSBaptiste Daroussinblank, or comma where the beginning of an option name is expected.
186761d06d6bSBaptiste DaroussinThe character is ignored.
186861d06d6bSBaptiste Daroussin.It Sy "skipping unknown tbl option"
186961d06d6bSBaptiste Daroussin.Pq tbl
187061d06d6bSBaptiste DaroussinThe table options line contains a string of letters that does not
187161d06d6bSBaptiste Daroussinmatch any known option name.
187261d06d6bSBaptiste DaroussinThe word is ignored.
187361d06d6bSBaptiste Daroussin.It Sy "missing tbl option argument"
187461d06d6bSBaptiste Daroussin.Pq tbl
187561d06d6bSBaptiste DaroussinA table option that requires an argument is not followed by an
187661d06d6bSBaptiste Daroussinopening parenthesis, or the opening parenthesis is immediately
187761d06d6bSBaptiste Daroussinfollowed by a closing parenthesis.
187861d06d6bSBaptiste DaroussinThe option is ignored.
187961d06d6bSBaptiste Daroussin.It Sy "wrong tbl option argument size"
188061d06d6bSBaptiste Daroussin.Pq tbl
188161d06d6bSBaptiste DaroussinA table option argument contains an invalid number of characters.
188261d06d6bSBaptiste DaroussinBoth the option and the argument are ignored.
188361d06d6bSBaptiste Daroussin.It Sy "empty tbl layout"
188461d06d6bSBaptiste Daroussin.Pq tbl
188561d06d6bSBaptiste DaroussinA table layout specification is completely empty,
188661d06d6bSBaptiste Daroussinspecifying zero lines and zero columns.
188761d06d6bSBaptiste DaroussinAs a fallback, a single left-justified column is used.
188861d06d6bSBaptiste Daroussin.It Sy "invalid character in tbl layout"
188961d06d6bSBaptiste Daroussin.Pq tbl
189061d06d6bSBaptiste DaroussinA table layout specification contains a character that can neither
189161d06d6bSBaptiste Daroussinbe interpreted as a layout key character nor as a layout modifier,
189261d06d6bSBaptiste Daroussinor a modifier precedes the first key.
189361d06d6bSBaptiste DaroussinThe invalid character is discarded.
189461d06d6bSBaptiste Daroussin.It Sy "unmatched parenthesis in tbl layout"
189561d06d6bSBaptiste Daroussin.Pq tbl
189661d06d6bSBaptiste DaroussinA table layout specification contains an opening parenthesis,
189761d06d6bSBaptiste Daroussinbut no matching closing parenthesis.
189861d06d6bSBaptiste DaroussinThe rest of the input line, starting from the parenthesis, has no effect.
18996d38604fSBaptiste Daroussin.It Sy "ignoring excessive spacing in tbl layout"
19006d38604fSBaptiste Daroussin.Pq tbl
19016d38604fSBaptiste DaroussinA spacing modifier in a table layout is unreasonably large.
19026d38604fSBaptiste DaroussinThe default spacing of 3n is used instead.
190361d06d6bSBaptiste Daroussin.It Sy "tbl without any data cells"
190461d06d6bSBaptiste Daroussin.Pq tbl
190561d06d6bSBaptiste DaroussinA table does not contain any data cells.
190661d06d6bSBaptiste DaroussinIt will probably produce no output.
190761d06d6bSBaptiste Daroussin.It Sy "ignoring data in spanned tbl cell"
190861d06d6bSBaptiste Daroussin.Pq tbl
190961d06d6bSBaptiste DaroussinA table cell is marked as a horizontal span
191061d06d6bSBaptiste Daroussin.Pq Sq Cm s
191161d06d6bSBaptiste Daroussinor vertical span
191261d06d6bSBaptiste Daroussin.Pq Sq Cm ^
191361d06d6bSBaptiste Daroussinin the table layout, but it contains data.
191461d06d6bSBaptiste DaroussinThe data is ignored.
191561d06d6bSBaptiste Daroussin.It Sy "ignoring extra tbl data cells"
191661d06d6bSBaptiste Daroussin.Pq tbl
191761d06d6bSBaptiste DaroussinA data line contains more cells than the corresponding layout line.
191861d06d6bSBaptiste DaroussinThe data in the extra cells is ignored.
191961d06d6bSBaptiste Daroussin.It Sy "data block open at end of tbl"
192061d06d6bSBaptiste Daroussin.Pq tbl
192161d06d6bSBaptiste DaroussinA data block is opened with
192261d06d6bSBaptiste Daroussin.Cm T{ ,
192361d06d6bSBaptiste Daroussinbut never closed with a matching
192461d06d6bSBaptiste Daroussin.Cm T} .
192561d06d6bSBaptiste DaroussinThe remaining data lines of the table are all put into one cell,
192661d06d6bSBaptiste Daroussinand any remaining cells stay empty.
192761d06d6bSBaptiste Daroussin.El
192861d06d6bSBaptiste Daroussin.Ss "Errors related to roff, mdoc, and man code"
192961d06d6bSBaptiste Daroussin.Bl -ohang
193061d06d6bSBaptiste Daroussin.It Sy "duplicate prologue macro"
193161d06d6bSBaptiste Daroussin.Pq mdoc
193261d06d6bSBaptiste DaroussinOne of the prologue macros occurs more than once.
193361d06d6bSBaptiste DaroussinThe last instance overrides all previous ones.
193461d06d6bSBaptiste Daroussin.It Sy "skipping late title macro"
193561d06d6bSBaptiste Daroussin.Pq mdoc
193661d06d6bSBaptiste DaroussinThe
193761d06d6bSBaptiste Daroussin.Ic \&Dt
193861d06d6bSBaptiste Daroussinmacro appears after the first non-prologue macro.
193961d06d6bSBaptiste DaroussinTraditional formatters cannot handle this because
194061d06d6bSBaptiste Daroussinthey write the page header before parsing the document body.
194161d06d6bSBaptiste DaroussinEven though this technical restriction does not apply to
194261d06d6bSBaptiste Daroussin.Nm ,
194361d06d6bSBaptiste Daroussintraditional semantics is preserved.
194461d06d6bSBaptiste DaroussinThe late macro is discarded including its arguments.
194561d06d6bSBaptiste Daroussin.It Sy "input stack limit exceeded, infinite loop?"
194661d06d6bSBaptiste Daroussin.Pq roff
194761d06d6bSBaptiste DaroussinExplicit recursion limits are implemented for the following features,
194861d06d6bSBaptiste Daroussinin order to prevent infinite loops:
194961d06d6bSBaptiste Daroussin.Bl -dash -compact
195061d06d6bSBaptiste Daroussin.It
195161d06d6bSBaptiste Daroussinexpansion of nested escape sequences
195261d06d6bSBaptiste Daroussinincluding expansion of strings and number registers,
195361d06d6bSBaptiste Daroussin.It
195461d06d6bSBaptiste Daroussinexpansion of nested user-defined macros,
195561d06d6bSBaptiste Daroussin.It
195661d06d6bSBaptiste Daroussinand
195761d06d6bSBaptiste Daroussin.Ic \&so
195861d06d6bSBaptiste Daroussinfile inclusion.
195961d06d6bSBaptiste Daroussin.El
196061d06d6bSBaptiste DaroussinWhen a limit is hit, the output is incorrect, typically losing
196161d06d6bSBaptiste Daroussinsome content, but the parser can continue.
196261d06d6bSBaptiste Daroussin.It Sy "skipping bad character"
196361d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
196461d06d6bSBaptiste DaroussinThe input file contains a byte that is not a printable
196561d06d6bSBaptiste Daroussin.Xr ascii 7
196661d06d6bSBaptiste Daroussincharacter.
196761d06d6bSBaptiste DaroussinThe message mentions the character number.
196861d06d6bSBaptiste DaroussinThe offending byte is replaced with a question mark
196961d06d6bSBaptiste Daroussin.Pq Sq \&? .
197061d06d6bSBaptiste DaroussinConsider editing the input file to replace the byte with an ASCII
197161d06d6bSBaptiste Daroussintransliteration of the intended character.
197261d06d6bSBaptiste Daroussin.It Sy "skipping unknown macro"
197361d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
197461d06d6bSBaptiste DaroussinThe first identifier on a request or macro line is neither recognized as a
197561d06d6bSBaptiste Daroussin.Xr roff 7
197661d06d6bSBaptiste Daroussinrequest, nor as a user-defined macro, nor, respectively, as an
197761d06d6bSBaptiste Daroussin.Xr mdoc 7
197861d06d6bSBaptiste Daroussinor
197961d06d6bSBaptiste Daroussin.Xr man 7
198061d06d6bSBaptiste Daroussinmacro.
198161d06d6bSBaptiste DaroussinIt may be mistyped or unsupported.
198261d06d6bSBaptiste DaroussinThe request or macro is discarded including its arguments.
19837295610fSBaptiste Daroussin.It Sy "skipping request outside macro"
19847295610fSBaptiste Daroussin.Pq roff
19857295610fSBaptiste DaroussinA
19867295610fSBaptiste Daroussin.Ic shift
19877295610fSBaptiste Daroussinor
19887295610fSBaptiste Daroussin.Ic return
19897295610fSBaptiste Daroussinrequest occurs outside any macro definition and has no effect.
199061d06d6bSBaptiste Daroussin.It Sy "skipping insecure request"
199161d06d6bSBaptiste Daroussin.Pq roff
199261d06d6bSBaptiste DaroussinAn input file attempted to run a shell command
199361d06d6bSBaptiste Daroussinor to read or write an external file.
199461d06d6bSBaptiste DaroussinSuch attempts are denied for security reasons.
199561d06d6bSBaptiste Daroussin.It Sy "skipping item outside list"
199661d06d6bSBaptiste Daroussin.Pq mdoc , eqn
199761d06d6bSBaptiste DaroussinAn
199861d06d6bSBaptiste Daroussin.Ic \&It
199961d06d6bSBaptiste Daroussinmacro occurs outside any
200061d06d6bSBaptiste Daroussin.Ic \&Bl
200161d06d6bSBaptiste Daroussinlist, or an
200261d06d6bSBaptiste Daroussin.Xr eqn 7
200361d06d6bSBaptiste Daroussin.Ic above
200461d06d6bSBaptiste Daroussindelimiter occurs outside any pile.
200561d06d6bSBaptiste DaroussinIt is discarded including its arguments.
200661d06d6bSBaptiste Daroussin.It Sy "skipping column outside column list"
200761d06d6bSBaptiste Daroussin.Pq mdoc
200861d06d6bSBaptiste DaroussinA
200961d06d6bSBaptiste Daroussin.Ic \&Ta
201061d06d6bSBaptiste Daroussinmacro occurs outside any
201161d06d6bSBaptiste Daroussin.Ic \&Bl Fl column
201261d06d6bSBaptiste Daroussinblock.
201361d06d6bSBaptiste DaroussinIt is discarded including its arguments.
201461d06d6bSBaptiste Daroussin.It Sy "skipping end of block that is not open"
201561d06d6bSBaptiste Daroussin.Pq mdoc , man , eqn , tbl , roff
201661d06d6bSBaptiste DaroussinVarious syntax elements can only be used to explicitly close blocks
201761d06d6bSBaptiste Daroussinthat have previously been opened.
201861d06d6bSBaptiste DaroussinAn
201961d06d6bSBaptiste Daroussin.Xr mdoc 7
202061d06d6bSBaptiste Daroussinblock closing macro, a
202161d06d6bSBaptiste Daroussin.Xr man 7
202261d06d6bSBaptiste Daroussin.Ic \&ME , \&RE
202361d06d6bSBaptiste Daroussinor
202461d06d6bSBaptiste Daroussin.Ic \&UE
202561d06d6bSBaptiste Daroussinmacro, an
202661d06d6bSBaptiste Daroussin.Xr eqn 7
202761d06d6bSBaptiste Daroussinright delimiter or closing brace, or the end of an equation, table, or
202861d06d6bSBaptiste Daroussin.Xr roff 7
202961d06d6bSBaptiste Daroussinconditional request is encountered but no matching block is open.
203061d06d6bSBaptiste DaroussinThe offending request or macro is discarded.
203161d06d6bSBaptiste Daroussin.It Sy "fewer RS blocks open, skipping"
203261d06d6bSBaptiste Daroussin.Pq man
203361d06d6bSBaptiste DaroussinThe
203461d06d6bSBaptiste Daroussin.Ic \&RE
203561d06d6bSBaptiste Daroussinmacro is invoked with an argument, but less than the specified number of
203661d06d6bSBaptiste Daroussin.Ic \&RS
203761d06d6bSBaptiste Daroussinblocks is open.
203861d06d6bSBaptiste DaroussinThe
203961d06d6bSBaptiste Daroussin.Ic \&RE
204061d06d6bSBaptiste Daroussinmacro is discarded.
204161d06d6bSBaptiste Daroussin.It Sy "inserting missing end of block"
204261d06d6bSBaptiste Daroussin.Pq mdoc , tbl
204361d06d6bSBaptiste DaroussinVarious
204461d06d6bSBaptiste Daroussin.Xr mdoc 7
204561d06d6bSBaptiste Daroussinmacros as well as tables require explicit closing by dedicated macros.
204661d06d6bSBaptiste DaroussinA block that doesn't support bad nesting
204761d06d6bSBaptiste Daroussinends before all of its children are properly closed.
204861d06d6bSBaptiste DaroussinThe open child nodes are closed implicitly.
204961d06d6bSBaptiste Daroussin.It Sy "appending missing end of block"
205061d06d6bSBaptiste Daroussin.Pq mdoc , man , eqn , tbl , roff
205161d06d6bSBaptiste DaroussinAt the end of the document, an explicit
205261d06d6bSBaptiste Daroussin.Xr mdoc 7
205361d06d6bSBaptiste Daroussinblock, a
205461d06d6bSBaptiste Daroussin.Xr man 7
205561d06d6bSBaptiste Daroussinnext-line scope or
205661d06d6bSBaptiste Daroussin.Ic \&MT , \&RS
205761d06d6bSBaptiste Daroussinor
205861d06d6bSBaptiste Daroussin.Ic \&UR
205961d06d6bSBaptiste Daroussinblock, an equation, table, or
206061d06d6bSBaptiste Daroussin.Xr roff 7
206161d06d6bSBaptiste Daroussinconditional or ignore block is still open.
206261d06d6bSBaptiste DaroussinThe open block is closed implicitly.
206361d06d6bSBaptiste Daroussin.It Sy "escaped character not allowed in a name"
206461d06d6bSBaptiste Daroussin.Pq roff
206561d06d6bSBaptiste DaroussinMacro, string and register identifiers consist of printable,
206661d06d6bSBaptiste Daroussinnon-whitespace ASCII characters.
206761d06d6bSBaptiste DaroussinEscape sequences and characters and strings expressed in terms of them
206861d06d6bSBaptiste Daroussincannot form part of a name.
206961d06d6bSBaptiste DaroussinThe first argument of an
207061d06d6bSBaptiste Daroussin.Ic \&am ,
207161d06d6bSBaptiste Daroussin.Ic \&as ,
207261d06d6bSBaptiste Daroussin.Ic \&de ,
207361d06d6bSBaptiste Daroussin.Ic \&ds ,
207461d06d6bSBaptiste Daroussin.Ic \&nr ,
207561d06d6bSBaptiste Daroussinor
207661d06d6bSBaptiste Daroussin.Ic \&rr
207761d06d6bSBaptiste Daroussinrequest, or any argument of an
207861d06d6bSBaptiste Daroussin.Ic \&rm
207961d06d6bSBaptiste Daroussinrequest, or the name of a request or user defined macro being called,
208061d06d6bSBaptiste Daroussinis terminated by an escape sequence.
208161d06d6bSBaptiste DaroussinIn the cases of
208261d06d6bSBaptiste Daroussin.Ic \&as ,
208361d06d6bSBaptiste Daroussin.Ic \&ds ,
208461d06d6bSBaptiste Daroussinand
208561d06d6bSBaptiste Daroussin.Ic \&nr ,
208661d06d6bSBaptiste Daroussinthe request has no effect at all.
208761d06d6bSBaptiste DaroussinIn the cases of
208861d06d6bSBaptiste Daroussin.Ic \&am ,
208961d06d6bSBaptiste Daroussin.Ic \&de ,
209061d06d6bSBaptiste Daroussin.Ic \&rr ,
209161d06d6bSBaptiste Daroussinand
209261d06d6bSBaptiste Daroussin.Ic \&rm ,
209361d06d6bSBaptiste Daroussinwhat was parsed up to this point is used as the arguments to the request,
209461d06d6bSBaptiste Daroussinand the rest of the input line is discarded including the escape sequence.
209561d06d6bSBaptiste DaroussinWhen parsing for a request or a user-defined macro name to be called,
209661d06d6bSBaptiste Daroussinonly the escape sequence is discarded.
209761d06d6bSBaptiste DaroussinThe characters preceding it are used as the request or macro name,
209861d06d6bSBaptiste Daroussinthe characters following it are used as the arguments to the request or macro.
20997295610fSBaptiste Daroussin.It Sy "using macro argument outside macro"
21007295610fSBaptiste Daroussin.Pq roff
21017295610fSBaptiste DaroussinThe escape sequence \e$ occurs outside any macro definition
21027295610fSBaptiste Daroussinand expands to the empty string.
21037295610fSBaptiste Daroussin.It Sy "argument number is not numeric"
21047295610fSBaptiste Daroussin.Pq roff
21057295610fSBaptiste DaroussinThe argument of the escape sequence \e$ is not a digit;
21067295610fSBaptiste Daroussinthe escape sequence expands to the empty string.
2107*c1c95addSBrooks Davis.It Sy "negative argument, using 0"
2108*c1c95addSBrooks Davis.Pq roff
2109*c1c95addSBrooks DavisA
2110*c1c95addSBrooks Davis.Ic \&shift
2111*c1c95addSBrooks Davisrequest has a negative argument
2112*c1c95addSBrooks Davisor an argument that is negative due to integer overflow.
2113*c1c95addSBrooks DavisMacro argument numbering remains unchanged.
211461d06d6bSBaptiste Daroussin.It Sy "NOT IMPLEMENTED: Bd -file"
211561d06d6bSBaptiste Daroussin.Pq mdoc
211661d06d6bSBaptiste DaroussinFor security reasons, the
211761d06d6bSBaptiste Daroussin.Ic \&Bd
211861d06d6bSBaptiste Daroussinmacro does not support the
211961d06d6bSBaptiste Daroussin.Fl file
212061d06d6bSBaptiste Daroussinargument.
212161d06d6bSBaptiste DaroussinBy requesting the inclusion of a sensitive file, a malicious document
212261d06d6bSBaptiste Daroussinmight otherwise trick a privileged user into inadvertently displaying
212361d06d6bSBaptiste Daroussinthe file on the screen, revealing the file content to bystanders.
212461d06d6bSBaptiste DaroussinThe argument is ignored including the file name following it.
212561d06d6bSBaptiste Daroussin.It Sy "skipping display without arguments"
212661d06d6bSBaptiste Daroussin.Pq mdoc
212761d06d6bSBaptiste DaroussinA
212861d06d6bSBaptiste Daroussin.Ic \&Bd
212961d06d6bSBaptiste Daroussinblock macro does not have any arguments.
213061d06d6bSBaptiste DaroussinThe block is discarded, and the block content is displayed in
213161d06d6bSBaptiste Daroussinwhatever mode was active before the block.
213261d06d6bSBaptiste Daroussin.It Sy "missing list type, using -item"
213361d06d6bSBaptiste Daroussin.Pq mdoc
213461d06d6bSBaptiste DaroussinA
213561d06d6bSBaptiste Daroussin.Ic \&Bl
213661d06d6bSBaptiste Daroussinmacro fails to specify the list type.
213761d06d6bSBaptiste Daroussin.It Sy "argument is not numeric, using 1"
213861d06d6bSBaptiste Daroussin.Pq roff
213961d06d6bSBaptiste DaroussinThe argument of a
214061d06d6bSBaptiste Daroussin.Ic \&ce
214161d06d6bSBaptiste Daroussinrequest is not a number.
21427295610fSBaptiste Daroussin.It Sy "argument is not a character"
21437295610fSBaptiste Daroussin.Pq roff
21447295610fSBaptiste DaroussinThe first argument of a
21457295610fSBaptiste Daroussin.Ic char
21467295610fSBaptiste Daroussinrequest is neither a single ASCII character
21477295610fSBaptiste Daroussinnor a single character escape sequence.
21487295610fSBaptiste DaroussinThe request is ignored including all its arguments.
2149*c1c95addSBrooks Davis.It Sy "skipping unusable escape sequence"
2150*c1c95addSBrooks Davis.Pq roff
2151*c1c95addSBrooks DavisThe first argument of an
2152*c1c95addSBrooks Davis.Ic mc
2153*c1c95addSBrooks Davisrequest is neither a single ASCII character
2154*c1c95addSBrooks Davisnor a single character escape sequence.
2155*c1c95addSBrooks DavisAll arguments are ignored and printing of a margin character is disabled.
215661d06d6bSBaptiste Daroussin.It Sy "missing manual name, using \(dq\(dq"
2157*c1c95addSBrooks Davis.Pq mdoc , man
215861d06d6bSBaptiste DaroussinThe first call to
215961d06d6bSBaptiste Daroussin.Ic \&Nm ,
2160*c1c95addSBrooks Davisor any call in the NAME section, lacks the required argument, or
2161*c1c95addSBrooks Davis.Ic \&MR
2162*c1c95addSBrooks Davisis called without any argument.
216361d06d6bSBaptiste Daroussin.It Sy "uname(3) system call failed, using UNKNOWN"
216461d06d6bSBaptiste Daroussin.Pq mdoc
216561d06d6bSBaptiste DaroussinThe
216661d06d6bSBaptiste Daroussin.Ic \&Os
216761d06d6bSBaptiste Daroussinmacro is called without arguments, and the
216861d06d6bSBaptiste Daroussin.Xr uname 3
216961d06d6bSBaptiste Daroussinsystem call failed.
217061d06d6bSBaptiste DaroussinAs a workaround,
217161d06d6bSBaptiste Daroussin.Nm
217261d06d6bSBaptiste Daroussincan be compiled with
217361d06d6bSBaptiste Daroussin.Sm off
217461d06d6bSBaptiste Daroussin.Fl D Cm OSNAME=\(dq\e\(dq Ar string Cm \e\(dq\(dq .
217561d06d6bSBaptiste Daroussin.Sm on
217661d06d6bSBaptiste Daroussin.It Sy "unknown standard specifier"
217761d06d6bSBaptiste Daroussin.Pq mdoc
217861d06d6bSBaptiste DaroussinAn
217961d06d6bSBaptiste Daroussin.Ic \&St
218061d06d6bSBaptiste Daroussinmacro has an unknown argument and is discarded.
218161d06d6bSBaptiste Daroussin.It Sy "skipping request without numeric argument"
218261d06d6bSBaptiste Daroussin.Pq roff , eqn
218361d06d6bSBaptiste DaroussinAn
218461d06d6bSBaptiste Daroussin.Ic \&it
218561d06d6bSBaptiste Daroussinrequest or an
218661d06d6bSBaptiste Daroussin.Xr eqn 7
218761d06d6bSBaptiste Daroussin.Ic \&size
218861d06d6bSBaptiste Daroussinor
218961d06d6bSBaptiste Daroussin.Ic \&gsize
219061d06d6bSBaptiste Daroussinstatement has a non-numeric or negative argument or no argument at all.
219161d06d6bSBaptiste DaroussinThe invalid request or statement is ignored.
21927295610fSBaptiste Daroussin.It Sy "excessive shift"
21937295610fSBaptiste Daroussin.Pq roff
21947295610fSBaptiste DaroussinThe argument of a
21957295610fSBaptiste Daroussin.Ic shift
21967295610fSBaptiste Daroussinrequest is larger than the number of arguments of the macro that is
21977295610fSBaptiste Daroussincurrently being executed.
21987295610fSBaptiste DaroussinAll macro arguments are deleted and \en(.$ is set to zero.
219961d06d6bSBaptiste Daroussin.It Sy "NOT IMPLEMENTED: .so with absolute path or \(dq..\(dq"
220061d06d6bSBaptiste Daroussin.Pq roff
220161d06d6bSBaptiste DaroussinFor security reasons,
220261d06d6bSBaptiste Daroussin.Nm
220361d06d6bSBaptiste Daroussinallows
220461d06d6bSBaptiste Daroussin.Ic \&so
220561d06d6bSBaptiste Daroussinfile inclusion requests only with relative paths
220661d06d6bSBaptiste Daroussinand only without ascending to any parent directory.
220761d06d6bSBaptiste DaroussinBy requesting the inclusion of a sensitive file, a malicious document
220861d06d6bSBaptiste Daroussinmight otherwise trick a privileged user into inadvertently displaying
220961d06d6bSBaptiste Daroussinthe file on the screen, revealing the file content to bystanders.
221061d06d6bSBaptiste Daroussin.Nm
221161d06d6bSBaptiste Daroussinonly shows the path as it appears behind
221261d06d6bSBaptiste Daroussin.Ic \&so .
221361d06d6bSBaptiste Daroussin.It Sy ".so request failed"
221461d06d6bSBaptiste Daroussin.Pq roff
221561d06d6bSBaptiste DaroussinServicing a
221661d06d6bSBaptiste Daroussin.Ic \&so
221761d06d6bSBaptiste Daroussinrequest requires reading an external file, but the file could not be
221861d06d6bSBaptiste Daroussinopened.
221961d06d6bSBaptiste Daroussin.Nm
222061d06d6bSBaptiste Daroussinonly shows the path as it appears behind
222161d06d6bSBaptiste Daroussin.Ic \&so .
222261d06d6bSBaptiste Daroussin.It Sy "skipping all arguments"
222361d06d6bSBaptiste Daroussin.Pq mdoc , man , eqn , roff
222461d06d6bSBaptiste DaroussinAn
222561d06d6bSBaptiste Daroussin.Xr mdoc 7
222661d06d6bSBaptiste Daroussin.Ic \&Bt ,
222761d06d6bSBaptiste Daroussin.Ic \&Ed ,
222861d06d6bSBaptiste Daroussin.Ic \&Ef ,
222961d06d6bSBaptiste Daroussin.Ic \&Ek ,
223061d06d6bSBaptiste Daroussin.Ic \&El ,
223161d06d6bSBaptiste Daroussin.Ic \&Lp ,
223261d06d6bSBaptiste Daroussin.Ic \&Pp ,
223361d06d6bSBaptiste Daroussin.Ic \&Re ,
223461d06d6bSBaptiste Daroussin.Ic \&Rs ,
223561d06d6bSBaptiste Daroussinor
223661d06d6bSBaptiste Daroussin.Ic \&Ud
223761d06d6bSBaptiste Daroussinmacro, an
223861d06d6bSBaptiste Daroussin.Ic \&It
223961d06d6bSBaptiste Daroussinmacro in a list that don't support item heads, a
224061d06d6bSBaptiste Daroussin.Xr man 7
224161d06d6bSBaptiste Daroussin.Ic \&LP ,
224261d06d6bSBaptiste Daroussin.Ic \&P ,
224361d06d6bSBaptiste Daroussinor
224461d06d6bSBaptiste Daroussin.Ic \&PP
224561d06d6bSBaptiste Daroussinmacro, an
224661d06d6bSBaptiste Daroussin.Xr eqn 7
224761d06d6bSBaptiste Daroussin.Ic \&EQ
224861d06d6bSBaptiste Daroussinor
224961d06d6bSBaptiste Daroussin.Ic \&EN
225061d06d6bSBaptiste Daroussinmacro, or a
225161d06d6bSBaptiste Daroussin.Xr roff 7
225261d06d6bSBaptiste Daroussin.Ic \&br ,
225361d06d6bSBaptiste Daroussin.Ic \&fi ,
225461d06d6bSBaptiste Daroussinor
225561d06d6bSBaptiste Daroussin.Ic \&nf
225661d06d6bSBaptiste Daroussinrequest or
225761d06d6bSBaptiste Daroussin.Sq \&..
225861d06d6bSBaptiste Daroussinblock closing request is invoked with at least one argument.
225961d06d6bSBaptiste DaroussinAll arguments are ignored.
226061d06d6bSBaptiste Daroussin.It Sy "skipping excess arguments"
226161d06d6bSBaptiste Daroussin.Pq mdoc , man , roff
226261d06d6bSBaptiste DaroussinA macro or request is invoked with too many arguments:
226361d06d6bSBaptiste Daroussin.Bl -dash -offset 2n -width 2n -compact
226461d06d6bSBaptiste Daroussin.It
226561d06d6bSBaptiste Daroussin.Ic \&Fo ,
226661d06d6bSBaptiste Daroussin.Ic \&MT ,
226761d06d6bSBaptiste Daroussin.Ic \&PD ,
226861d06d6bSBaptiste Daroussin.Ic \&RS ,
226961d06d6bSBaptiste Daroussin.Ic \&UR ,
227061d06d6bSBaptiste Daroussin.Ic \&ft ,
227161d06d6bSBaptiste Daroussinor
227261d06d6bSBaptiste Daroussin.Ic \&sp
227361d06d6bSBaptiste Daroussinwith more than one argument
227461d06d6bSBaptiste Daroussin.It
227561d06d6bSBaptiste Daroussin.Ic \&An
227661d06d6bSBaptiste Daroussinwith another argument after
227761d06d6bSBaptiste Daroussin.Fl split
227861d06d6bSBaptiste Daroussinor
227961d06d6bSBaptiste Daroussin.Fl nosplit
228061d06d6bSBaptiste Daroussin.It
228161d06d6bSBaptiste Daroussin.Ic \&RE
228261d06d6bSBaptiste Daroussinwith more than one argument or with a non-integer argument
228361d06d6bSBaptiste Daroussin.It
228461d06d6bSBaptiste Daroussin.Ic \&OP
228561d06d6bSBaptiste Daroussinor a request of the
228661d06d6bSBaptiste Daroussin.Ic \&de
228761d06d6bSBaptiste Daroussinfamily with more than two arguments
228861d06d6bSBaptiste Daroussin.It
228961d06d6bSBaptiste Daroussin.Ic \&Dt
2290*c1c95addSBrooks Davisor
2291*c1c95addSBrooks Davis.Ic \&MR
229261d06d6bSBaptiste Daroussinwith more than three arguments
229361d06d6bSBaptiste Daroussin.It
229461d06d6bSBaptiste Daroussin.Ic \&TH
229561d06d6bSBaptiste Daroussinwith more than five arguments
229661d06d6bSBaptiste Daroussin.It
229761d06d6bSBaptiste Daroussin.Ic \&Bd ,
229861d06d6bSBaptiste Daroussin.Ic \&Bk ,
229961d06d6bSBaptiste Daroussinor
230061d06d6bSBaptiste Daroussin.Ic \&Bl
230161d06d6bSBaptiste Daroussinwith invalid arguments
230261d06d6bSBaptiste Daroussin.El
230361d06d6bSBaptiste DaroussinThe excess arguments are ignored.
230461d06d6bSBaptiste Daroussin.El
2305*c1c95addSBrooks Davis.Ss "Errors related to escape sequences"
2306*c1c95addSBrooks Davis.Bl -ohang
2307*c1c95addSBrooks Davis.It Sy "incomplete escape sequence"
2308*c1c95addSBrooks Davis.Pq roff
2309*c1c95addSBrooks DavisThe end of the input line is encountered
2310*c1c95addSBrooks Daviswhile parsing the argument of an escape sequence.
2311*c1c95addSBrooks DavisIn this case,
2312*c1c95addSBrooks Davis.Ic \e*
2313*c1c95addSBrooks Davisand
2314*c1c95addSBrooks Davis.Ic \en
2315*c1c95addSBrooks Davisexpand to an empty string,
2316*c1c95addSBrooks Davis.Ic \eB
2317*c1c95addSBrooks Davisto the digit
2318*c1c95addSBrooks Davis.Sq 0 ,
2319*c1c95addSBrooks Davisand
2320*c1c95addSBrooks Davis.Ic \ew
2321*c1c95addSBrooks Davisto the length of the incomplete argument.
2322*c1c95addSBrooks DavisAll other incomplete escape sequences are ignored.
2323*c1c95addSBrooks Davis.It Sy "invalid special character"
2324*c1c95addSBrooks Davis.Pq roff
2325*c1c95addSBrooks DavisA special character escape sequence is invalid,
2326*c1c95addSBrooks Davisfor example a Unicode sequence pointing to a surrogate
2327*c1c95addSBrooks Davisor beyond the Unicode range, a \e[char...] escape sequence
2328*c1c95addSBrooks Davisrepresenting a control character or pointing beyond the
2329*c1c95addSBrooks Davis.Vt unsigned char
2330*c1c95addSBrooks Davisrange, or an invalid variable-length form
2331*c1c95addSBrooks Davisof a single-byte character escape sequence, for example writing
2332*c1c95addSBrooks Davis.Qq \e[e]
2333*c1c95addSBrooks Davisor
2334*c1c95addSBrooks Davis.Qq \e[~]
2335*c1c95addSBrooks Davisinstead of
2336*c1c95addSBrooks Davis.Qq \ee
2337*c1c95addSBrooks Davisor
2338*c1c95addSBrooks Davis.Qq \e~ ,
2339*c1c95addSBrooks Davisrespectively.
2340*c1c95addSBrooks DavisThe escape sequence is ignored.
2341*c1c95addSBrooks Davis.It Sy "unknown special character"
2342*c1c95addSBrooks Davis.Pq roff
2343*c1c95addSBrooks DavisThe name given in a special character escape sequence is not known to
2344*c1c95addSBrooks Davis.Nm .
2345*c1c95addSBrooks DavisThe escape sequence is ignored.
2346*c1c95addSBrooks Davis.It Sy "invalid escape argument delimiter"
2347*c1c95addSBrooks Davis.Pq roff
2348*c1c95addSBrooks DavisAn escape sequence that expects a numerical argument
2349*c1c95addSBrooks Davisattempts to employ one of the characters
2350*c1c95addSBrooks Davis.Qq " %&()*+-./0123456789:<=>"
2351*c1c95addSBrooks Davisas an argument delimiter.
2352*c1c95addSBrooks DavisThe escape sequence is ignored including the invalid opening delimiter
2353*c1c95addSBrooks Davisand the rest of the argument may appear as output text.
2354*c1c95addSBrooks DavisWhile various characters can be used as argument delimiters,
2355*c1c95addSBrooks Davisusing the apostrophe-quote character
2356*c1c95addSBrooks Davis.Pq Sq \(aq
2357*c1c95addSBrooks Davisis recommended for readability and robustness.
2358*c1c95addSBrooks Davis.El
235961d06d6bSBaptiste Daroussin.Ss Unsupported features
236061d06d6bSBaptiste Daroussin.Bl -ohang
236161d06d6bSBaptiste Daroussin.It Sy "input too large"
236261d06d6bSBaptiste Daroussin.Pq mdoc , man
236361d06d6bSBaptiste DaroussinCurrently,
236461d06d6bSBaptiste Daroussin.Nm
236561d06d6bSBaptiste Daroussincannot handle input files larger than its arbitrary size limit
236661d06d6bSBaptiste Daroussinof 2^31 bytes (2 Gigabytes).
236761d06d6bSBaptiste DaroussinSince useful manuals are always small, this is not a problem in practice.
236861d06d6bSBaptiste DaroussinParsing is aborted as soon as the condition is detected.
236961d06d6bSBaptiste Daroussin.It Sy "unsupported control character"
237061d06d6bSBaptiste Daroussin.Pq roff
237161d06d6bSBaptiste DaroussinAn ASCII control character supported by other
237261d06d6bSBaptiste Daroussin.Xr roff 7
237361d06d6bSBaptiste Daroussinimplementations but not by
237461d06d6bSBaptiste Daroussin.Nm
237561d06d6bSBaptiste Daroussinwas found in an input file.
237661d06d6bSBaptiste DaroussinIt is replaced by a question mark.
23777295610fSBaptiste Daroussin.It Sy "unsupported escape sequence"
23787295610fSBaptiste Daroussin.Pq roff
23797295610fSBaptiste DaroussinAn input file contains an escape sequence supported by GNU troff
23807295610fSBaptiste Daroussinor Heirloom troff but not by
23817295610fSBaptiste Daroussin.Nm ,
23827295610fSBaptiste Daroussinand it is likely that this will cause information loss
23837295610fSBaptiste Daroussinor considerable misformatting.
238461d06d6bSBaptiste Daroussin.It Sy "unsupported roff request"
238561d06d6bSBaptiste Daroussin.Pq roff
238661d06d6bSBaptiste DaroussinAn input file contains a
238761d06d6bSBaptiste Daroussin.Xr roff 7
238861d06d6bSBaptiste Daroussinrequest supported by GNU troff or Heirloom troff but not by
238961d06d6bSBaptiste Daroussin.Nm ,
239061d06d6bSBaptiste Daroussinand it is likely that this will cause information loss
239161d06d6bSBaptiste Daroussinor considerable misformatting.
239261d06d6bSBaptiste Daroussin.It Sy "eqn delim option in tbl"
239361d06d6bSBaptiste Daroussin.Pq eqn , tbl
239461d06d6bSBaptiste DaroussinThe options line of a table defines equation delimiters.
239561d06d6bSBaptiste DaroussinAny equation source code contained in the table will be printed unformatted.
239661d06d6bSBaptiste Daroussin.It Sy "unsupported table layout modifier"
239761d06d6bSBaptiste Daroussin.Pq tbl
239861d06d6bSBaptiste DaroussinA table layout specification contains an
239961d06d6bSBaptiste Daroussin.Sq Cm m
240061d06d6bSBaptiste Daroussinmodifier.
240161d06d6bSBaptiste DaroussinThe modifier is discarded.
240261d06d6bSBaptiste Daroussin.It Sy "ignoring macro in table"
240361d06d6bSBaptiste Daroussin.Pq tbl , mdoc , man
240461d06d6bSBaptiste DaroussinA table contains an invocation of an
240561d06d6bSBaptiste Daroussin.Xr mdoc 7
240661d06d6bSBaptiste Daroussinor
240761d06d6bSBaptiste Daroussin.Xr man 7
240861d06d6bSBaptiste Daroussinmacro or of an undefined macro.
240961d06d6bSBaptiste DaroussinThe macro is ignored, and its arguments are handled
241061d06d6bSBaptiste Daroussinas if they were a text line.
24116d38604fSBaptiste Daroussin.It Sy "skipping tbl in -Tman mode"
24126d38604fSBaptiste Daroussin.Pq mdoc , tbl
24136d38604fSBaptiste DaroussinAn input file contains the
24146d38604fSBaptiste Daroussin.Ic \&TS
24156d38604fSBaptiste Daroussinmacro.
24166d38604fSBaptiste DaroussinThis message is only generated in
24176d38604fSBaptiste Daroussin.Fl T Cm man
24186d38604fSBaptiste Daroussinoutput mode, where
24196d38604fSBaptiste Daroussin.Xr tbl 7
24206d38604fSBaptiste Daroussininput is not supported.
24216d38604fSBaptiste Daroussin.It Sy "skipping eqn in -Tman mode"
24226d38604fSBaptiste Daroussin.Pq mdoc , eqn
24236d38604fSBaptiste DaroussinAn input file contains the
24246d38604fSBaptiste Daroussin.Ic \&EQ
24256d38604fSBaptiste Daroussinmacro.
24266d38604fSBaptiste DaroussinThis message is only generated in
24276d38604fSBaptiste Daroussin.Fl T Cm man
24286d38604fSBaptiste Daroussinoutput mode, where
24296d38604fSBaptiste Daroussin.Xr eqn 7
24306d38604fSBaptiste Daroussininput is not supported.
243161d06d6bSBaptiste Daroussin.El
243245a5aec3SBaptiste Daroussin.Ss Bad command line arguments
243345a5aec3SBaptiste Daroussin.Bl -ohang
243445a5aec3SBaptiste Daroussin.It Sy "bad command line argument"
243545a5aec3SBaptiste DaroussinThe argument following one of the
243645a5aec3SBaptiste Daroussin.Fl IKMmOTW
243745a5aec3SBaptiste Daroussincommand line options is invalid, or a
243845a5aec3SBaptiste Daroussin.Ar file
243945a5aec3SBaptiste Daroussingiven as a command line argument cannot be opened.
244045a5aec3SBaptiste Daroussin.It Sy "duplicate command line argument"
244145a5aec3SBaptiste DaroussinThe
244245a5aec3SBaptiste Daroussin.Fl I
244345a5aec3SBaptiste Daroussincommand line option was specified twice.
244445a5aec3SBaptiste Daroussin.It Sy "option has a superfluous value"
244545a5aec3SBaptiste DaroussinAn argument to the
244645a5aec3SBaptiste Daroussin.Fl O
244745a5aec3SBaptiste Daroussinoption has a value but does not accept one.
244845a5aec3SBaptiste Daroussin.It Sy "missing option value"
244945a5aec3SBaptiste DaroussinAn argument to the
245045a5aec3SBaptiste Daroussin.Fl O
245145a5aec3SBaptiste Daroussinoption has no argument but requires one.
245245a5aec3SBaptiste Daroussin.It Sy "bad option value"
245345a5aec3SBaptiste DaroussinAn argument to the
245445a5aec3SBaptiste Daroussin.Fl O
245545a5aec3SBaptiste Daroussin.Cm indent
245645a5aec3SBaptiste Daroussinor
245745a5aec3SBaptiste Daroussin.Cm width
245845a5aec3SBaptiste Daroussinoption has an invalid value.
245945a5aec3SBaptiste Daroussin.It Sy "duplicate option value"
246045a5aec3SBaptiste DaroussinThe same
246145a5aec3SBaptiste Daroussin.Fl O
246245a5aec3SBaptiste Daroussinoption is specified more than once.
246345a5aec3SBaptiste Daroussin.It Sy "no such tag"
246445a5aec3SBaptiste DaroussinThe
246545a5aec3SBaptiste Daroussin.Fl O Cm tag
246645a5aec3SBaptiste Daroussinoption was specified but the tag was not found in any of the displayed
246745a5aec3SBaptiste Daroussinmanual pages.
24686d38604fSBaptiste Daroussin.It Sy "\-Tmarkdown unsupported for man(7) input"
24696d38604fSBaptiste Daroussin.Pq man
24706d38604fSBaptiste DaroussinThe
24716d38604fSBaptiste Daroussin.Fl T Cm markdown
24726d38604fSBaptiste Daroussinoption was specified but an input file uses the
24736d38604fSBaptiste Daroussin.Xr man 7
24746d38604fSBaptiste Daroussinlanguage.
24756d38604fSBaptiste DaroussinNo output is produced for that input file.
247645a5aec3SBaptiste Daroussin.El
247761d06d6bSBaptiste Daroussin.Sh SEE ALSO
247861d06d6bSBaptiste Daroussin.Xr apropos 1 ,
247961d06d6bSBaptiste Daroussin.Xr man 1 ,
248061d06d6bSBaptiste Daroussin.Xr eqn 7 ,
248161d06d6bSBaptiste Daroussin.Xr man 7 ,
248261d06d6bSBaptiste Daroussin.Xr mandoc_char 7 ,
248361d06d6bSBaptiste Daroussin.Xr mdoc 7 ,
248461d06d6bSBaptiste Daroussin.Xr roff 7 ,
248561d06d6bSBaptiste Daroussin.Xr tbl 7
248661d06d6bSBaptiste Daroussin.Sh HISTORY
248761d06d6bSBaptiste DaroussinThe
248861d06d6bSBaptiste Daroussin.Nm
248961d06d6bSBaptiste Daroussinutility first appeared in
249061d06d6bSBaptiste Daroussin.Ox 4.8 .
249161d06d6bSBaptiste DaroussinThe option
249261d06d6bSBaptiste Daroussin.Fl I
249361d06d6bSBaptiste Daroussinappeared in
249461d06d6bSBaptiste Daroussin.Ox 5.2 ,
249561d06d6bSBaptiste Daroussinand
249661d06d6bSBaptiste Daroussin.Fl aCcfhKklMSsw
249761d06d6bSBaptiste Daroussinin
249861d06d6bSBaptiste Daroussin.Ox 5.7 .
249961d06d6bSBaptiste Daroussin.Sh AUTHORS
250061d06d6bSBaptiste Daroussin.An -nosplit
250161d06d6bSBaptiste DaroussinThe
250261d06d6bSBaptiste Daroussin.Nm
250361d06d6bSBaptiste Daroussinutility was written by
250461d06d6bSBaptiste Daroussin.An Kristaps Dzonsons Aq Mt kristaps@bsd.lv
250561d06d6bSBaptiste Daroussinand is maintained by
250661d06d6bSBaptiste Daroussin.An Ingo Schwarze Aq Mt schwarze@openbsd.org .
2507