version 1.131, 2015/01/14 22:02:49 |
version 1.139, 2015/01/28 17:32:07 |
|
|
.Cm warning , |
.Cm warning , |
.Cm error , |
.Cm error , |
or |
or |
.Cm fatal . |
.Cm unsupp ; |
The default is |
.Cm all |
.Fl W Ns Cm fatal ; |
|
.Fl W Ns Cm all |
|
is an alias for |
is an alias for |
.Fl W Ns Cm warning . |
.Cm warning . |
|
By default, |
|
.Nm |
|
is silent. |
See |
See |
.Sx EXIT STATUS |
.Sx EXIT STATUS |
and |
and |
Line 532 At least one warning occurred, but no error, and |
|
Line 533 At least one warning occurred, but no error, and |
|
.Fl W Ns Cm warning |
.Fl W Ns Cm warning |
was specified. |
was specified. |
.It 3 |
.It 3 |
At least one parsing error occurred, but no fatal error, and |
At least one parsing error occurred, |
|
but no unsupported feature was encountered, and |
.Fl W Ns Cm error |
.Fl W Ns Cm error |
or |
or |
.Fl W Ns Cm warning |
.Fl W Ns Cm warning |
was specified. |
was specified. |
.It 4 |
.It 4 |
A fatal parsing error occurred. |
At least one unsupported feature was encountered, and |
|
.Fl W Ns Cm unsupp , |
|
.Fl W Ns Cm error |
|
or |
|
.Fl W Ns Cm warning |
|
was specified. |
.It 5 |
.It 5 |
Invalid command line arguments were specified. |
Invalid command line arguments were specified. |
No input files have been read. |
No input files have been read. |
|
|
.Pp |
.Pp |
Message levels have the following meanings: |
Message levels have the following meanings: |
.Bl -tag -width "warning" |
.Bl -tag -width "warning" |
.It Cm fatal |
.It Cm unsupp |
The parser is unable to parse a given input file at all. |
An input file uses unsupported low-level |
No formatted output is produced from that input file. |
.Xr roff 7 |
.It Cm error |
features. |
An input file contains syntax that cannot be safely interpreted, |
The output may be incomplete and/or misformatted, |
either because it is invalid or because |
so using GNU troff instead of |
.Nm |
.Nm |
does not implement it yet. |
to process the file may be preferable. |
|
.It Cm error |
|
An input file contains invalid syntax that cannot be safely interpreted. |
By discarding part of the input or inserting missing tokens, |
By discarding part of the input or inserting missing tokens, |
the parser is able to continue, and the error does not prevent |
the parser is able to continue, and the error does not prevent |
generation of formatted output, but typically, preparing that |
generation of formatted output, but typically, preparing that |
output involves information loss, broken document structure |
output involves information loss, broken document structure |
or unintended formatting. |
or unintended formatting, no matter whether |
|
.Nm |
|
or GNU troff is used. |
|
In many cases, the output of |
|
.Nm |
|
and GNU troff is identical, but in some, |
|
.Nm |
|
is more resilient than GNU troff with respect to malformed input. |
.Pp |
.Pp |
Non-existent or unreadable input files are also reported on the |
Non-existent or unreadable input files are also reported on the |
.Cm error |
.Cm error |
Line 632 formatting tools instead of |
|
Line 648 formatting tools instead of |
|
.El |
.El |
.Pp |
.Pp |
Messages of the |
Messages of the |
.Cm warning |
.Cm warning , |
|
.Cm error , |
and |
and |
.Cm error |
.Cm unsupp |
levels except those about non-existent or unreadable input files |
levels except those about non-existent or unreadable input files |
are hidden unless their level, or a lower level, is requested using a |
are hidden unless their level, or a lower level, is requested using a |
.Fl W |
.Fl W |
Line 1256 its value is implicitly set to the empty string. |
|
Line 1273 its value is implicitly set to the empty string. |
|
However, defining strings explicitly before use |
However, defining strings explicitly before use |
keeps the code more readable. |
keeps the code more readable. |
.El |
.El |
|
.Ss "Warnings related to tables" |
|
.Bl -ohang |
|
.It Sy "tbl line starts with span" |
|
.Pq tbl |
|
The first cell in a table layout line is a horizontal span |
|
.Pq Sq Cm s . |
|
Data provided for this cell is ignored, and nothing is printed in the cell. |
|
.It Sy "tbl column starts with span" |
|
.Pq tbl |
|
The first line of a table layout specification |
|
requests a vertical span |
|
.Pq Sq Cm ^ . |
|
Data provided for this cell is ignored, and nothing is printed in the cell. |
|
.It Sy "skipping vertical bar in tbl layout" |
|
.Pq tbl |
|
A table layout specification contains more than two consecutive vertical bars. |
|
A double bar is printed, all additional bars are discarded. |
|
.El |
.Ss "Errors related to equations" |
.Ss "Errors related to equations" |
.Bl -inset -compact |
.Bl -inset -compact |
.It "unexpected equation scope closure" |
.It "unexpected equation scope closure" |
Line 1264 keeps the code more readable. |
|
Line 1299 keeps the code more readable. |
|
.It "unexpected end of equation" |
.It "unexpected end of equation" |
.El |
.El |
.Ss "Errors related to tables" |
.Ss "Errors related to tables" |
.Bl -inset -compact |
.Bl -ohang |
.It "bad table syntax" |
.It Sy "non-alphabetic character in tbl options" |
.It "bad table option" |
.Pq tbl |
.It "bad table layout" |
The table options line contains a character other than a letter, |
.It "no table layout cells specified" |
blank, or comma where the beginning of an option name is expected. |
.It "no table data cells specified" |
The character is ignored. |
.It "ignore data in cell" |
.It Sy "skipping unknown tbl option" |
.It "data block still open" |
.Pq tbl |
.It "ignoring extra data cells" |
The table options line contains a string of letters that does not |
.It "ignoring macro in table" |
match any known option name. |
|
The word is ignored. |
|
.It Sy "missing tbl option argument" |
|
.Pq tbl |
|
A table option that requires an argument is not followed by an |
|
opening parenthesis, or the opening parenthesis is immediately |
|
followed by a closing parenthesis. |
|
The option is ignored. |
|
.It Sy "wrong tbl option argument size" |
|
.Pq tbl |
|
A table option argument contains an invalid number of characters. |
|
Both the option and the argument are ignored. |
|
.It Sy "empty tbl layout" |
|
.Pq tbl |
|
A table layout specification is completely empty, |
|
specifying zero lines and zero columns. |
|
As a fallback, a single left-justified column is used. |
|
.It Sy "invalid character in tbl layout" |
|
.Pq tbl |
|
A table layout specification contains a character that can neither |
|
be interpreted as a layout key character nor as a layout modifier, |
|
or a modifier precedes the first key. |
|
The invalid character is discarded. |
|
.It Sy "unmatched parenthesis in tbl layout" |
|
.Pq tbl |
|
A table layout specification contains an opening parenthesis, |
|
but no matching closing parenthesis. |
|
The rest of the input line, starting from the parenthesis, has no effect. |
|
.It Sy "tbl without any data cells" |
|
.Pq tbl |
|
A table does not contain any data cells. |
|
It will probably produce no output. |
|
.It Sy "ignoring data in spanned tbl cell" |
|
.Pq tbl |
|
A table cell is marked as a horizontal span |
|
.Pq Sq Cm s |
|
or vertical span |
|
.Pq Sq Cm ^ |
|
in the table layout, but it contains data. |
|
The data is ignored. |
|
.It Sy "ignoring extra tbl data cells" |
|
.Pq tbl |
|
A data line contains more cells than the corresponding layout line. |
|
The data in the extra cells is ignored. |
|
.It Sy "data block open at end of tbl" |
|
.Pq tbl |
|
A data block is opened with |
|
.Cm T{ , |
|
but never closed with a matching |
|
.Cm T} . |
|
The remaining data lines of the table are all put into one cell, |
|
and any remaining cells stay empty. |
.El |
.El |
.Ss "Errors related to roff, mdoc, and man code" |
.Ss "Errors related to roff, mdoc, and man code" |
.Bl -ohang |
.Bl -ohang |
|
|
macro. |
macro. |
It may be mistyped or unsupported. |
It may be mistyped or unsupported. |
The request or macro is discarded including its arguments. |
The request or macro is discarded including its arguments. |
|
.It Sy "skipping insecure request" |
|
.Pq roff |
|
An input file attempted to run a shell command |
|
or to read or write an external file. |
|
Such attempts are denied for security reasons. |
.It Sy "skipping item outside list" |
.It Sy "skipping item outside list" |
.Pq mdoc , eqn |
.Pq mdoc , eqn |
An |
An |
Line 1351 right delimiter or closing brace, or the end of an equ |
|
Line 1442 right delimiter or closing brace, or the end of an equ |
|
.Xr roff 7 |
.Xr roff 7 |
conditional request is encountered but no matching block is open. |
conditional request is encountered but no matching block is open. |
The offending request or macro is discarded. |
The offending request or macro is discarded. |
|
.It Sy "fewer RS blocks open, skipping" |
|
.Pq man |
|
The |
|
.Ic \&RE |
|
macro is invoked with an argument, but less than the specified number of |
|
.Ic \&RS |
|
blocks is open. |
|
The |
|
.Ic \&RE |
|
macro is discarded. |
.It Sy "inserting missing end of block" |
.It Sy "inserting missing end of block" |
.Pq mdoc , tbl |
.Pq mdoc , tbl |
Various |
Various |
|
|
.Ic \&gsize |
.Ic \&gsize |
statement has a non-numeric or negative argument or no argument at all. |
statement has a non-numeric or negative argument or no argument at all. |
The invalid request or statement is ignored. |
The invalid request or statement is ignored. |
|
.It Sy "NOT IMPLEMENTED: .so with absolute path or \(dq..\(dq" |
|
.Pq roff |
|
For security reasons, |
|
.Nm |
|
allows |
|
.Ic \&so |
|
file inclusion requests only with relative paths |
|
and only without ascending to any parent directory. |
|
By requesting the inclusion of a sensitive file, a malicious document |
|
might otherwise trick a privileged user into inadvertently displaying |
|
the file on the screen, revealing the file content to bystanders. |
|
.Nm |
|
only shows the path as it appears behind |
|
.Ic \&so . |
|
.It Sy ".so request failed" |
|
.Pq roff |
|
Servicing a |
|
.Ic \&so |
|
request requires reading an external file, but the file could not be |
|
opened. |
|
.Nm |
|
only shows the path as it appears behind |
|
.Ic \&so . |
.It Sy "skipping all arguments" |
.It Sy "skipping all arguments" |
.Pq mdoc , man , eqn , roff |
.Pq mdoc , man , eqn , roff |
An |
An |
|
|
block closing request is invoked with at least one argument. |
block closing request is invoked with at least one argument. |
All arguments are ignored. |
All arguments are ignored. |
.It Sy "skipping excess arguments" |
.It Sy "skipping excess arguments" |
.Pq mdoc , roff |
.Pq mdoc , man , roff |
The |
The |
.Ic \&Bf |
.Ic \&Bf |
macro is invoked with more than one argument, or a request of the |
macro is invoked with more than one argument, the |
|
.Ic \&RE |
|
macro is invoked with more than one argument |
|
or with a non-integer argument, or a request of the |
.Ic \&de |
.Ic \&de |
family is invoked with more than two arguments. |
family is invoked with more than two arguments. |
The excess arguments are ignored. |
The excess arguments are ignored. |
.El |
.El |
.Ss FATAL errors |
.Ss Unsupported features |
.Bl -ohang |
.Bl -ohang |
.It Sy "input too large" |
.It Sy "input too large" |
.Pq mdoc , man |
.Pq mdoc , man |
Line 1514 cannot handle input files larger than its arbitrary si |
|
Line 1641 cannot handle input files larger than its arbitrary si |
|
of 2^31 bytes (2 Gigabytes). |
of 2^31 bytes (2 Gigabytes). |
Since useful manuals are always small, this is not a problem in practice. |
Since useful manuals are always small, this is not a problem in practice. |
Parsing is aborted as soon as the condition is detected. |
Parsing is aborted as soon as the condition is detected. |
.It Sy "NOT IMPLEMENTED: .so with absolute path or \(dq..\(dq" |
.It Sy "unsupported control character" |
.Pq roff |
.Pq roff |
For security reasons, |
An ASCII control character supported by other |
|
.Xr roff 7 |
|
implementations but not by |
.Nm |
.Nm |
allows |
was found in an input file. |
.Ic \&so |
It is replaced by a question mark. |
file inclusion requests only with relative paths |
.It Sy "unsupported roff request" |
and only without ascending to any parent directory. |
|
By requesting the inclusion of a sensitive file, a malicious document |
|
might otherwise trick a privileged user into inadvertently displaying |
|
the file on the screen, revealing the file content to bystanders. |
|
The parser exits immediately. |
|
.It Sy ".so request failed" |
|
.Pq roff |
.Pq roff |
Servicing a |
An input file contains a |
.Ic \&so |
.Xr roff 7 |
request requires reading an external file. |
request supported by GNU troff or Heirloom troff but not by |
While trying to do so, an |
.Nm , |
.Xr open 2 , |
and it is likely that this will cause information loss |
.Xr stat 2 , |
or considerable misformatting. |
|
.It Sy "eqn delim option in tbl" |
|
.Pq eqn , tbl |
|
The options line of a table defines equation delimiters. |
|
Any equation source code contained in the table will be printed unformatted. |
|
.It Sy "unsupported table layout modifier" |
|
.Pq tbl |
|
A table layout specification contains an |
|
.Sq Cm m |
|
modifier. |
|
The modifier is discarded. |
|
.It Sy "ignoring macro in table" |
|
.Pq tbl , mdoc , man |
|
A table contains an invocation of an |
|
.Xr mdoc 7 |
or |
or |
.Xr read 2 |
.Xr man 7 |
system call failed. |
macro or of an undefined macro. |
The parser exits immediately. |
The macro is ignored, and its arguments are handled |
Before showing this message, |
as if they were a text line. |
.Nm |
|
always shows another message explaining why the system call failed. |
|
.El |
.El |
.Sh COMPATIBILITY |
.Sh COMPATIBILITY |
This section summarises |
This section summarises |