=================================================================== RCS file: /cvs/mandoc/mandoc.1,v retrieving revision 1.131 retrieving revision 1.138 diff -u -p -r1.131 -r1.138 --- mandoc/mandoc.1 2015/01/14 22:02:49 1.131 +++ mandoc/mandoc.1 2015/01/26 18:42:30 1.138 @@ -1,4 +1,4 @@ -.\" $Id: mandoc.1,v 1.131 2015/01/14 22:02:49 schwarze Exp $ +.\" $Id: mandoc.1,v 1.138 2015/01/26 18:42:30 schwarze Exp $ .\" .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons .\" Copyright (c) 2012, 2014, 2015 Ingo Schwarze @@ -15,7 +15,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: January 14 2015 $ +.Dd $Mdocdate: January 26 2015 $ .Dt MANDOC 1 .Os .Sh NAME @@ -162,12 +162,13 @@ can be .Cm warning , .Cm error , or -.Cm fatal . -The default is -.Fl W Ns Cm fatal ; -.Fl W Ns Cm all +.Cm unsupp ; +.Cm all is an alias for -.Fl W Ns Cm warning . +.Cm warning . +By default, +.Nm +is silent. See .Sx EXIT STATUS and @@ -532,13 +533,19 @@ At least one warning occurred, but no error, and .Fl W Ns Cm warning was specified. .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 or .Fl W Ns Cm warning was specified. .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 Invalid command line arguments were specified. No input files have been read. @@ -603,19 +610,28 @@ fields. .Pp Message levels have the following meanings: .Bl -tag -width "warning" -.It Cm fatal -The parser is unable to parse a given input file at all. -No formatted output is produced from that input file. -.It Cm error -An input file contains syntax that cannot be safely interpreted, -either because it is invalid or because +.It Cm unsupp +An input file uses unsupported low-level +.Xr roff 7 +features. +The output may be incomplete and/or misformatted, +so using GNU troff instead of .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, the parser is able to continue, and the error does not prevent generation of formatted output, but typically, preparing that 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 Non-existent or unreadable input files are also reported on the .Cm error @@ -632,9 +648,10 @@ formatting tools instead of .El .Pp Messages of the -.Cm warning +.Cm warning , +.Cm error , and -.Cm error +.Cm unsupp levels except those about non-existent or unreadable input files are hidden unless their level, or a lower level, is requested using a .Fl W @@ -1256,6 +1273,24 @@ its value is implicitly set to the empty string. However, defining strings explicitly before use keeps the code more readable. .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" .Bl -inset -compact .It "unexpected equation scope closure" @@ -1264,16 +1299,50 @@ keeps the code more readable. .It "unexpected end of equation" .El .Ss "Errors related to tables" +.Bl -ohang +.It Sy "non-alphabetic character in tbl options" +.Pq tbl +The table options line contains a character other than a letter, +blank, or comma where the beginning of an option name is expected. +The character is ignored. +.It Sy "skipping unknown tbl option" +.Pq tbl +The table options line contains a string of letters that does not +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. +.El +.Pp .Bl -inset -compact -.It "bad table syntax" -.It "bad table option" -.It "bad table layout" -.It "no table layout cells specified" -.It "no table data cells specified" -.It "ignore data in cell" -.It "data block still open" -.It "ignoring extra data cells" -.It "ignoring macro in table" +.It Sy "no table data cells specified" +.It Sy "ignore data in cell" +.It Sy "data block still open" +.It Sy "ignoring extra data cells" .El .Ss "Errors related to roff, mdoc, and man code" .Bl -ohang @@ -1315,6 +1384,11 @@ or macro. It may be mistyped or unsupported. 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" .Pq mdoc , eqn An @@ -1351,6 +1425,16 @@ right delimiter or closing brace, or the end of an equ .Xr roff 7 conditional request is encountered but no matching block is open. 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" .Pq mdoc , tbl Various @@ -1465,6 +1549,29 @@ or .Ic \&gsize statement has a non-numeric or negative argument or no argument at all. 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" .Pq mdoc , man , eqn , roff An @@ -1496,15 +1603,18 @@ macro, or a block closing request is invoked with at least one argument. All arguments are ignored. .It Sy "skipping excess arguments" -.Pq mdoc , roff +.Pq mdoc , man , roff The .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 family is invoked with more than two arguments. The excess arguments are ignored. .El -.Ss FATAL errors +.Ss Unsupported features .Bl -ohang .It Sy "input too large" .Pq mdoc , man @@ -1514,33 +1624,33 @@ cannot handle input files larger than its arbitrary si of 2^31 bytes (2 Gigabytes). Since useful manuals are always small, this is not a problem in practice. 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 -For security reasons, +An ASCII control character supported by other +.Xr roff 7 +implementations but not by .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. -The parser exits immediately. -.It Sy ".so request failed" +was found in an input file. +It is replaced by a question mark. +.It Sy "unsupported roff request" .Pq roff -Servicing a -.Ic \&so -request requires reading an external file. -While trying to do so, an -.Xr open 2 , -.Xr stat 2 , -or -.Xr read 2 -system call failed. -The parser exits immediately. -Before showing this message, -.Nm -always shows another message explaining why the system call failed. +An input file contains a +.Xr roff 7 +request supported by GNU troff or Heirloom troff but not by +.Nm , +and it is likely that this will cause information loss +or considerable misformatting. +.It Sy "unsupported table layout modfier" +.Pq tbl +A table layout specification contains an +.Sq Cm m +modifier. +The modifier is discarded. +.It Sy "ignoring macro in table" +.It Sy "eqn 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. .El .Sh COMPATIBILITY This section summarises