aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mandoc.3
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-01-05 20:26:36 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-01-05 20:26:36 +0000
commit3d871d9086bbc5f79cd485dfb26b9d02a19cf2e3 (patch)
tree12c6882973b4bed0d9b5eb332153635e293e50e2 /mandoc.3
parentd9597fb775134ff4c4ae106fdb7f3214b5af2463 (diff)
downloadmandoc-3d871d9086bbc5f79cd485dfb26b9d02a19cf2e3.tar.gz
mandoc-3d871d9086bbc5f79cd485dfb26b9d02a19cf2e3.tar.zst
mandoc-3d871d9086bbc5f79cd485dfb26b9d02a19cf2e3.zip
Add an option -Q (quick) to mandocdb(8)
for accelerated generation of reduced-size databases. Implement this by allowing the parsers to optionally abort the parse sequence after the NAME section. While here, garbage collect the unused void *arg attribute of struct mparse and mparse_alloc() and fix some errors in mandoc(3). This reduces the processing time of mandocdb(8) on /usr/share/man by a factor of 2 and the database size by a factor of 4. However, it still takes 5 times the time and 6 times the space of makewhatis(8), so more work is clearly needed.
Diffstat (limited to 'mandoc.3')
-rw-r--r--mandoc.355
1 files changed, 46 insertions, 9 deletions
diff --git a/mandoc.3 b/mandoc.3
index fe6503d5..db763749 100644
--- a/mandoc.3
+++ b/mandoc.3
@@ -1,4 +1,4 @@
-.\" $Id: mandoc.3,v 1.22 2013/10/06 17:01:52 schwarze Exp $
+.\" $Id: mandoc.3,v 1.23 2014/01/05 20:26:36 schwarze Exp $
.\"
.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
.\" Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -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: October 6 2013 $
+.Dd $Mdocdate: January 5 2014 $
.Dt MANDOC 3
.Os
.Sh NAME
@@ -50,8 +50,8 @@
.In mandoc.h
.Ft "enum mandoc_esc"
.Fo mandoc_escape
-.Fa "const char const **end"
-.Fa "const char const **start"
+.Fa "const char **end"
+.Fa "const char **start"
.Fa "int *sz"
.Fc
.Ft "const struct man_meta *"
@@ -97,16 +97,17 @@
.Fc
.Ft void
.Fo mparse_alloc
-.Fa "enum mparset type"
+.Fa "enum mparset inttype"
.Fa "enum mandoclevel wlevel"
-.Fa "mandocmsg msg"
-.Fa "void *msgarg"
+.Fa "mandocmsg mmsg"
+.Fa "char *defos"
+.Fa "int quick"
.Fc
.Ft void
.Fo mparse_free
.Fa "struct mparse *parse"
.Fc
-.Ft void
+.Ft const char *
.Fo mparse_getkeep
.Fa "const struct mparse *parse"
.Fc
@@ -203,7 +204,7 @@ An escape sequence classification.
A fatal error, error, or warning message during parsing.
.It Vt "enum mandoclevel"
A classification of an
-.Vt "enum mandoclevel"
+.Vt "enum mandocerr"
as regards system operation.
.It Vt "struct mchars"
An opaque pointer to an object allowing for translation between
@@ -352,6 +353,42 @@ implemented in
.Pa mdoc.c .
.It Fn mparse_alloc
Allocate a parser.
+The arguments have the following effect:
+.Bl -tag -offset 5n -width inttype
+.It Ar inttype
+When set to
+.Dv MPARSE_MDOC
+or
+.Dv MPARSE_MAN ,
+only that parser will be used.
+With
+.Dv MPARSE_AUTO ,
+the document type will be automatically detected.
+.It Ar wlevel
+Can be set to
+.Dv MANDOCLEVEL_FATAL ,
+.Dv MANDOCLEVEL_ERROR ,
+or
+.Dv MANDOCLEVEL_WARNING .
+Messages below the selected level will be suppressed.
+.It Ar mmsg
+A callback function to handle errors and warnings.
+See
+.Pa main.c
+for an example.
+.It Ar defos
+A default string for the
+.Xr mdoc 7
+.Sq \&Os
+macro, overriding the
+.Dv OSNAME
+preprocessor definition and the results of
+.Xr uname 3 .
+.It Ar quick
+When set, parsing is aborted after the NAME section.
+This is for example useful to quickly build minimal databases.
+.El
+.Pp
The same parser may be used for multiple files so long as
.Fn mparse_reset
is called between parses.