=================================================================== RCS file: /cvs/mandoc/mandoc.3,v retrieving revision 1.37 retrieving revision 1.42 diff -u -p -r1.37 -r1.42 --- mandoc/mandoc.3 2016/07/07 19:19:01 1.37 +++ mandoc/mandoc.3 2018/08/23 19:33:27 1.42 @@ -1,7 +1,7 @@ -.\" $Id: mandoc.3,v 1.37 2016/07/07 19:19:01 schwarze Exp $ +.\" $Id: mandoc.3,v 1.42 2018/08/23 19:33:27 schwarze Exp $ .\" .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons -.\" Copyright (c) 2010-2016 Ingo Schwarze +.\" Copyright (c) 2010-2017 Ingo Schwarze .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -15,26 +15,25 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: July 7 2016 $ +.Dd $Mdocdate: August 23 2018 $ .Dt MANDOC 3 .Os .Sh NAME .Nm mandoc , .Nm deroff , .Nm mandocmsg , -.Nm man_mparse , .Nm man_validate , .Nm mdoc_validate , .Nm mparse_alloc , +.Nm mparse_copy , .Nm mparse_free , -.Nm mparse_getkeep , -.Nm mparse_keep , .Nm mparse_open , .Nm mparse_readfd , .Nm mparse_reset , .Nm mparse_result , .Nm mparse_strerror , -.Nm mparse_strlevel +.Nm mparse_strlevel , +.Nm mparse_updaterc .Nd mandoc macro compiler library .Sh SYNOPSIS .In sys/types.h @@ -46,9 +45,10 @@ .Ft struct mparse * .Fo mparse_alloc .Fa "int options" -.Fa "enum mandoclevel wlevel" +.Fa "enum mandocerr mmin" .Fa "mandocmsg mmsg" -.Fa "char *defos" +.Fa "enum mandoc_os oe_e" +.Fa "char *os_s" .Fc .Ft void .Fo (*mandocmsg) @@ -63,14 +63,10 @@ .Fo mparse_free .Fa "struct mparse *parse" .Fc -.Ft const char * -.Fo mparse_getkeep +.Ft void +.Fo mparse_copy .Fa "const struct mparse *parse" .Fc -.Ft void -.Fo mparse_keep -.Fa "struct mparse *parse" -.Fc .Ft int .Fo mparse_open .Fa "struct mparse *parse" @@ -100,6 +96,11 @@ .Fo mparse_strlevel .Fa "enum mandoclevel" .Fc +.Ft void +.Fo mparse_updaterc +.Fa "struct mparse *parse" +.Fa "enum mandoclevel *rc" +.Fc .In roff.h .Ft void .Fo deroff @@ -119,10 +120,6 @@ .In mandoc.h .In man.h .Vt extern const char * const * man_macronames; -.Ft "const struct mparse *" -.Fo man_mparse -.Fa "const struct roff_man *man" -.Fc .Ft void .Fo man_validate .Fa "struct roff_man *man" @@ -181,6 +178,9 @@ or .Fn man_validate , respectively; .It +if information about the validity of the input is needed, fetch it with +.Fn mparse_updaterc ; +.It iterate over parse nodes with starting from the .Fa first member of the returned @@ -240,12 +240,6 @@ When it is no longer needed, the pointer returned from .Fn deroff can be passed to .Xr free 3 . -.It Fn man_mparse -Get the parser used for the current output. -Declared in -.In man.h , -implemented in -.Pa man.c . .It Fn man_validate Validate the .Dv MACROSET_MAN @@ -295,12 +289,15 @@ This is for example useful in .Xr makewhatis 8 .Fl Q to quickly build minimal databases. -.It Ar wlevel +.It Ar mmin Can be set to -.Dv MANDOCLEVEL_BADARG , -.Dv MANDOCLEVEL_ERROR , +.Dv MANDOCERR_BASE , +.Dv MANDOCERR_STYLE , +.Dv MANDOCERR_WARNING , +.Dv MANDOCERR_ERROR , +.Dv MANDOCERR_UNSUPP , or -.Dv MANDOCLEVEL_WARNING . +.Dv MANDOCERR_MAX . Messages below the selected level will be suppressed. .It Ar mmsg A callback function to handle errors and warnings. @@ -310,10 +307,19 @@ for an example. If printing of error messages is not desired, .Dv NULL may be passed. -.It Ar defos +.It Ar os_e +Operating system to check base system conventions for. +If +.Dv MANDOC_OS_OTHER , +the system is automatically detected from +.Ic \&Os , +.Fl Ios , +or +.Xr uname 3 . +.It Ar os_s A default string for the .Xr mdoc 7 -.Sq \&Os +.Ic \&Os macro, overriding the .Dv OSNAME preprocessor definition and the results of @@ -339,23 +345,13 @@ Declared in .In mandoc.h , implemented in .Pa read.c . -.It Fn mparse_getkeep -Acquire the keep buffer. -Must follow a call of -.Fn mparse_keep . +.It Fn mparse_copy +Dump a copy of the input to the standard output; used for +.Fl man T Ns Cm man . Declared in .In mandoc.h , implemented in .Pa read.c . -.It Fn mparse_keep -Instruct the parser to retain a copy of its parsed input. -This can be acquired with subsequent -.Fn mparse_getkeep -calls. -Declared in -.In mandoc.h , -implemented in -.Pa read.c . .It Fn mparse_open Open the file for reading. If that fails and @@ -416,6 +412,22 @@ Declared in .In mandoc.h , implemented in .Pa read.c . +.It Fn mparse_updaterc +If the highest warning or error level that occurred during the current +.Fa parse +is higher than +.Pf * Fa rc , +update +.Pf * Fa rc +accordingly. +This is useful after calling +.Fn mdoc_validate +or +.Fn man_validate . +Declared in +.In mandoc.h , +implemented in +.Pa read.c . .El .Ss Variables .Bl -ohang @@ -625,10 +637,10 @@ TEXT end .Ed .Pp Here, the formatting of the -.Sq \&Ao +.Ic \&Ao block extends from TEXT ao to TEXT ac, while the formatting of the -.Sq \&Bo +.Ic \&Bo block extends from TEXT bo to TEXT bc. It renders as follows in .Fl T Ns Cm ascii @@ -644,11 +656,9 @@ Using badly-nested blocks is .Em strongly discouraged ; for example, the .Fl T Ns Cm html -and -.Fl T Ns Cm xhtml -front-ends to +front-end to .Xr mandoc 1 -are unable to render them in any meaningful way. +is unable to render them in any meaningful way. Furthermore, behaviour when encountering badly-nested blocks is not consistent across troff implementations, especially when using multiple levels of badly-nested blocks.