From 58ec1de730c493d7dac46e9e8c77b5551fcc8df3 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Thu, 12 Mar 2009 15:55:11 +0000 Subject: NetBSD '.[[:whitespace:]]*' properly handled. mdoc.3 indicates compatibilities and bugs. --- Makefile | 4 +-- mdoc.3 | 87 ++++++++++++++++++++++++++++++---------------------------------- mdoc.c | 16 ++++++++++-- term.c | 4 ++- 4 files changed, 60 insertions(+), 51 deletions(-) diff --git a/Makefile b/Makefile index b9ef2732..ef4dd5c5 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .SUFFIXES: .html .sgml -VERSION = 1.4.10 -VDATE = 12 March 2009 +VERSION = 1.4.11 +VDATE = 13 March 2009 BINDIR = $(PREFIX)/bin INCLUDEDIR = $(PREFIX)/include diff --git a/mdoc.3 b/mdoc.3 index 226895b9..d6e6d30d 100644 --- a/mdoc.3 +++ b/mdoc.3 @@ -1,4 +1,4 @@ -.\" $Id: mdoc.3,v 1.13 2009/02/27 09:14:02 kristaps Exp $ +.\" $Id: mdoc.3,v 1.14 2009/03/12 15:55:11 kristaps Exp $ .\" .\" Copyright (c) 2009 Kristaps Dzonsons .\" @@ -16,7 +16,7 @@ .\" TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR .\" PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: February 27 2009 $ +.Dd $Mdocdate: March 12 2009 $ .Dt mdoc 3 .Os .\" SECTION @@ -360,6 +360,39 @@ parsed(mdoc, node); mdoc_free(mdoc); .Ed .\" SECTION +.Sh COMPATIBILITY +In general, only those macros specified by +.Xr mdoc.samples 7 +and +.Xr mdoc 7 +for +.Ox +and +.Nx +are supported; support for other +.Bx +systems is in progress. +.Bl -bullet +.\" LIST-ITEM +.It +NetBSD +.Sq \&It \-nested +is assumed for all lists: any list may be nested and +.Sq \-enum +lists will restart the sequence only for the sub-list. +.\" LIST-ITEM +.It +Newer NetBSD-style +.Sq \&It \-column +syntax, where column widths may be preceeded by other arguments (instead +of proceeded), is not supported. +.\" LIST-ITEM +.It +The +.Sq \&At +macro only accepts a single parameter. +.El +.\" SECTION .Sh SEE ALSO .Xr mdoc 7 , .Xr mdoc.samples 7 , @@ -372,17 +405,11 @@ The utility was written by .An Kristaps Dzonsons Aq kristaps@kth.se . .\" SECTION -.Sh BUGS -Bugs, un-implemented macros and incompabilities are documented in this -section. The baseline for determining whether macro parsing is -.Qq incompatible -is the default -.Xr groff 1 -system bundled with -.Ox . -.\" PARAGRAPH -.Pp -Un-implemented: the +.Sh CAVEATS +.Bl -bullet +.\" LIST-ITEM +.It +The .Sq \&Xc and .Sq \&Xo @@ -390,36 +417,4 @@ macros aren't handled when used to span lines for the .Sq \&It macro. Such usage is specifically discouraged in .Xr mdoc.samples 7 . -.\" PARAGRAPH -.Pp -Bugs: when -.Sq \&It \-column -is invoked, whitespace is not stripped around -.Sq \&Ta -or tab-character separators. -.\" PARAGRAPH -.Pp -Bugs: elements within columns for -.Sq \&It \-column -are not yet supported. -.\" PARAGRAPH -.Pp -Incompatible: the -.Sq \&At -macro only accepts a single parameter. Furthermore, several macros -.Pf ( Sq \&Pp , -.Sq \&It , -and possibly others) accept multiple arguments with a warning. -.\" PARAGRAPH -.Pp -Incompatible: only those macros specified by -.Xr mdoc.samples 7 -and -.Xr mdoc 7 -for -.Ox -are supported; support for -.Nx -and other -.Bx -systems is in progress. +.El diff --git a/mdoc.c b/mdoc.c index 9c25faaf..719434ae 100644 --- a/mdoc.c +++ b/mdoc.c @@ -1,4 +1,4 @@ -/* $Id: mdoc.c,v 1.62 2009/03/12 02:57:36 kristaps Exp $ */ +/* $Id: mdoc.c,v 1.63 2009/03/12 15:55:11 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -520,7 +520,19 @@ parsemacro(struct mdoc *m, int ln, char *buf) int i, c; char mac[5]; - /* Comments are quickly ignored. */ + /* Comments and empties are quickly ignored. */ + + if (0 == buf[1]) + return(1); + + if (isspace((unsigned char)buf[1])) { + i = 2; + while (buf[i] && isspace((unsigned char)buf[i])) + i++; + if (0 == buf[i]) + return(1); + return(mdoc_perr(m, ln, 1, "invalid syntax")); + } if (buf[1] && '\\' == buf[1]) if (buf[2] && '\"' == buf[2]) diff --git a/term.c b/term.c index 8f10d0d3..3730968b 100644 --- a/term.c +++ b/term.c @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.55 2009/03/12 06:32:17 kristaps Exp $ */ +/* $Id: term.c,v 1.56 2009/03/12 15:55:11 kristaps Exp $ */ /* * Copyright (c) 2009 Kristaps Dzonsons * @@ -508,6 +508,8 @@ termp_it_pre(DECL_ARGS) (&bl->args->argv[vals[2]], i); assert(i < (int)bl->args->argv[vals[2]].sz); width = arg_width(&bl->args->argv[vals[2]], i); + if (vals[1] >= 0) + offset += arg_offset(&bl->args->argv[vals[1]]); break; default: if (vals[0] >= 0) -- cgit v1.2.3