summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-03-12 15:55:11 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-03-12 15:55:11 +0000
commit58ec1de730c493d7dac46e9e8c77b5551fcc8df3 (patch)
tree79d6c850e01d7ff19e4974b84adde4cc810fc836
parent9712ec552692f3361d7528344ffff29931c4831e (diff)
downloadmandoc-58ec1de730c493d7dac46e9e8c77b5551fcc8df3.tar.gz
mandoc-58ec1de730c493d7dac46e9e8c77b5551fcc8df3.tar.zst
mandoc-58ec1de730c493d7dac46e9e8c77b5551fcc8df3.zip
NetBSD '.[[:whitespace:]]*' properly handled.
mdoc.3 indicates compatibilities and bugs.
-rw-r--r--Makefile4
-rw-r--r--mdoc.387
-rw-r--r--mdoc.c16
-rw-r--r--term.c4
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 <kristaps@kth.se>
.\"
@@ -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 <kristaps@kth.se>
*
@@ -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 <kristaps@kth.se>
*
@@ -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)