diff options
author | 2011-01-17 00:15:19 +0000 | |
---|---|---|
committer | 2011-01-17 00:15:19 +0000 | |
commit | ea2002247d26596e8b1435c1c1499ef7ea1700f5 (patch) | |
tree | 6e86d49fc6c1fe09890a9b70b0eb31da68d0c96c | |
parent | explain various points in more detail, and some in easier or (diff) | |
download | wireguard-openbsd-ea2002247d26596e8b1435c1c1499ef7ea1700f5.tar.xz wireguard-openbsd-ea2002247d26596e8b1435c1c1499ef7ea1700f5.zip |
Refrain from throwing fatal errors for
* .br .sp .nf .fi .na with arguments - just skip the arguments
* .TH lacking arguments - use empty strings instead like groff
* .TH with excessive arguments - skip those
Reminded by Joerg Sonnenberger, ok kristaps@.
26 files changed, 245 insertions, 47 deletions
diff --git a/regress/usr.bin/mandoc/man/Makefile b/regress/usr.bin/mandoc/man/Makefile index 9b7fe04580c..7f872dd8ba0 100644 --- a/regress/usr.bin/mandoc/man/Makefile +++ b/regress/usr.bin/mandoc/man/Makefile @@ -1,6 +1,6 @@ -# $OpenBSD: Makefile,v 1.2 2011/01/09 17:55:20 schwarze Exp $ +# $OpenBSD: Makefile,v 1.3 2011/01/17 00:15:19 schwarze Exp $ -SUBDIR= nf BI IP TP +SUBDIR= nf BI IP TH TP groff groff-clean: _SUBDIRUSE diff --git a/regress/usr.bin/mandoc/man/TH/Makefile b/regress/usr.bin/mandoc/man/TH/Makefile new file mode 100644 index 00000000000..97f70e88752 --- /dev/null +++ b/regress/usr.bin/mandoc/man/TH/Makefile @@ -0,0 +1,6 @@ +# $OpenBSD: Makefile,v 1.1 2011/01/17 00:15:19 schwarze Exp $ + +REGRESS_TARGETS=noarg onearg sixargs +GROFF_TARGETS=noarg onearg sixargs + +.include <bsd.regress.mk> diff --git a/regress/usr.bin/mandoc/man/TH/noarg.in b/regress/usr.bin/mandoc/man/TH/noarg.in new file mode 100644 index 00000000000..3c15e9428d3 --- /dev/null +++ b/regress/usr.bin/mandoc/man/TH/noarg.in @@ -0,0 +1,5 @@ +.TH +.SH NAME +TH-noarg \- no arguments to the TH macro +.SH DESCRIPTION +some text diff --git a/regress/usr.bin/mandoc/man/TH/noarg.out_ascii b/regress/usr.bin/mandoc/man/TH/noarg.out_ascii new file mode 100644 index 00000000000..0bbb7e0ccca --- /dev/null +++ b/regress/usr.bin/mandoc/man/TH/noarg.out_ascii @@ -0,0 +1,12 @@ +() () + + + +NNAAMMEE + TH-noarg - no arguments to the TH macro + +DDEESSCCRRIIPPTTIIOONN + some text + + + diff --git a/regress/usr.bin/mandoc/man/TH/onearg.in b/regress/usr.bin/mandoc/man/TH/onearg.in new file mode 100644 index 00000000000..fe77903eb76 --- /dev/null +++ b/regress/usr.bin/mandoc/man/TH/onearg.in @@ -0,0 +1,5 @@ +.TH TH-ONEARG +.SH NAME +TH-onearg \- only one argument to the TH macro +.SH DESCRIPTION +some text diff --git a/regress/usr.bin/mandoc/man/TH/onearg.out_ascii b/regress/usr.bin/mandoc/man/TH/onearg.out_ascii new file mode 100644 index 00000000000..8ec0650ca96 --- /dev/null +++ b/regress/usr.bin/mandoc/man/TH/onearg.out_ascii @@ -0,0 +1,12 @@ +TH-ONEARG() TH-ONEARG() + + + +NNAAMMEE + TH-onearg - only one argument to the TH macro + +DDEESSCCRRIIPPTTIIOONN + some text + + + diff --git a/regress/usr.bin/mandoc/man/TH/sixargs.in b/regress/usr.bin/mandoc/man/TH/sixargs.in new file mode 100644 index 00000000000..2357966612d --- /dev/null +++ b/regress/usr.bin/mandoc/man/TH/sixargs.in @@ -0,0 +1,5 @@ +.TH TH-SIXARGS 1 2011-01-16 OpenBSD regress SIX +.SH NAME +TH-sixargs \- six arguments to the TH macro +.SH DESCRIPTION +some text diff --git a/regress/usr.bin/mandoc/man/TH/sixargs.out_ascii b/regress/usr.bin/mandoc/man/TH/sixargs.out_ascii new file mode 100644 index 00000000000..a2cf331f8d3 --- /dev/null +++ b/regress/usr.bin/mandoc/man/TH/sixargs.out_ascii @@ -0,0 +1,12 @@ +TH-SIXARGS(1) regress TH-SIXARGS(1) + + + +NNAAMMEE + TH-sixargs - six arguments to the TH macro + +DDEESSCCRRIIPPTTIIOONN + some text + + + diff --git a/regress/usr.bin/mandoc/man/nf/Makefile b/regress/usr.bin/mandoc/man/nf/Makefile index 225c2b7b5dc..d32d34d7fb3 100644 --- a/regress/usr.bin/mandoc/man/nf/Makefile +++ b/regress/usr.bin/mandoc/man/nf/Makefile @@ -1,6 +1,6 @@ -# $OpenBSD: Makefile,v 1.1 2011/01/04 01:15:39 schwarze Exp $ +# $OpenBSD: Makefile,v 1.2 2011/01/17 00:15:19 schwarze Exp $ -REGRESS_TARGETS=indent -GROFF_TARGETS=indent +REGRESS_TARGETS=indent args +GROFF_TARGETS=indent args .include <bsd.regress.mk> diff --git a/regress/usr.bin/mandoc/man/nf/args.in b/regress/usr.bin/mandoc/man/nf/args.in new file mode 100644 index 00000000000..a8800882d23 --- /dev/null +++ b/regress/usr.bin/mandoc/man/nf/args.in @@ -0,0 +1,12 @@ +.TH NF-ARGS 1 +.SH NAME +nf-args \- filling macros with arguments +.SH DESCRIPTION +regular +text +.nf arg1 arg2 arg3 +literal +text +.fi arg1 arg2 arg3 +regular +text diff --git a/regress/usr.bin/mandoc/man/nf/args.out_ascii b/regress/usr.bin/mandoc/man/nf/args.out_ascii new file mode 100644 index 00000000000..fff94ca454b --- /dev/null +++ b/regress/usr.bin/mandoc/man/nf/args.out_ascii @@ -0,0 +1,15 @@ +NF-ARGS(1) NF-ARGS(1) + + + +NNAAMMEE + nf-args - filling macros with arguments + +DDEESSCCRRIIPPTTIIOONN + regular text + literal + text + regular text + + + diff --git a/regress/usr.bin/mandoc/roff/Makefile b/regress/usr.bin/mandoc/roff/Makefile index cf1cc6118cd..96d857a8c8d 100644 --- a/regress/usr.bin/mandoc/roff/Makefile +++ b/regress/usr.bin/mandoc/roff/Makefile @@ -1,6 +1,6 @@ -# $OpenBSD: Makefile,v 1.4 2011/01/12 20:56:40 schwarze Exp $ +# $OpenBSD: Makefile,v 1.5 2011/01/17 00:15:19 schwarze Exp $ -SUBDIR+= args cond string rm +SUBDIR+= args cond string br na rm sp groff groff-clean: _SUBDIRUSE diff --git a/regress/usr.bin/mandoc/roff/br/Makefile b/regress/usr.bin/mandoc/roff/br/Makefile new file mode 100644 index 00000000000..217ec06be4a --- /dev/null +++ b/regress/usr.bin/mandoc/roff/br/Makefile @@ -0,0 +1,6 @@ +# $OpenBSD: Makefile,v 1.1 2011/01/17 00:15:19 schwarze Exp $ + +REGRESS_TARGETS=args +GROFF_TARGETS=args + +.include <bsd.regress.mk> diff --git a/regress/usr.bin/mandoc/roff/br/args.in b/regress/usr.bin/mandoc/roff/br/args.in new file mode 100644 index 00000000000..3726871e6e1 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/br/args.in @@ -0,0 +1,9 @@ +.TH BR-ARGS 1 +.SH NAME +br-args \- arguments to .br macros +.SH DESCRIPTION +some +text +.br arg1 arg2 arg3 +more +text diff --git a/regress/usr.bin/mandoc/roff/br/args.out_ascii b/regress/usr.bin/mandoc/roff/br/args.out_ascii new file mode 100644 index 00000000000..211997f6eda --- /dev/null +++ b/regress/usr.bin/mandoc/roff/br/args.out_ascii @@ -0,0 +1,13 @@ +BR-ARGS(1) BR-ARGS(1) + + + +NNAAMMEE + br-args - arguments to .br macros + +DDEESSCCRRIIPPTTIIOONN + some text + more text + + + diff --git a/regress/usr.bin/mandoc/roff/na/Makefile b/regress/usr.bin/mandoc/roff/na/Makefile new file mode 100644 index 00000000000..217ec06be4a --- /dev/null +++ b/regress/usr.bin/mandoc/roff/na/Makefile @@ -0,0 +1,6 @@ +# $OpenBSD: Makefile,v 1.1 2011/01/17 00:15:19 schwarze Exp $ + +REGRESS_TARGETS=args +GROFF_TARGETS=args + +.include <bsd.regress.mk> diff --git a/regress/usr.bin/mandoc/roff/na/args.in b/regress/usr.bin/mandoc/roff/na/args.in new file mode 100644 index 00000000000..6a3e8a55ead --- /dev/null +++ b/regress/usr.bin/mandoc/roff/na/args.in @@ -0,0 +1,9 @@ +.TH NA-ARGS 1 +.SH NAME +na-args \- arguments to .na macros +.SH DESCRIPTION +some +text +.na arg1 arg2 arg3 +more +text diff --git a/regress/usr.bin/mandoc/roff/na/args.out_ascii b/regress/usr.bin/mandoc/roff/na/args.out_ascii new file mode 100644 index 00000000000..8851c325f20 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/na/args.out_ascii @@ -0,0 +1,12 @@ +NA-ARGS(1) NA-ARGS(1) + + + +NNAAMMEE + na-args - arguments to .na macros + +DDEESSCCRRIIPPTTIIOONN + some text more text + + + diff --git a/regress/usr.bin/mandoc/roff/sp/Makefile b/regress/usr.bin/mandoc/roff/sp/Makefile new file mode 100644 index 00000000000..5681ca5fe2e --- /dev/null +++ b/regress/usr.bin/mandoc/roff/sp/Makefile @@ -0,0 +1,6 @@ +# $OpenBSD: Makefile,v 1.1 2011/01/17 00:15:19 schwarze Exp $ + +REGRESS_TARGETS=badargs-mdoc badargs-man +GROFF_TARGETS=badargs-mdoc badargs-man + +.include <bsd.regress.mk> diff --git a/regress/usr.bin/mandoc/roff/sp/badargs-man.in b/regress/usr.bin/mandoc/roff/sp/badargs-man.in new file mode 100644 index 00000000000..18e4575a511 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/sp/badargs-man.in @@ -0,0 +1,11 @@ +.TH SP-BADARGS-MAN 1 +.SH NAME +sp-badargs-man \- bad numbers of arguments to .sp macros in man(7) +.SH DESCRIPTION +no arguments: +.sp +one argument: +.sp 2v +two arguments: +.sp 3v 2i +end of test document diff --git a/regress/usr.bin/mandoc/roff/sp/badargs-man.out_ascii b/regress/usr.bin/mandoc/roff/sp/badargs-man.out_ascii new file mode 100644 index 00000000000..86865785ef7 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/sp/badargs-man.out_ascii @@ -0,0 +1,21 @@ +SP-BADARGS-MAN(1) SP-BADARGS-MAN(1) + + + +NNAAMMEE + sp-badargs-man - bad numbers of arguments to .sp macros in man(7) + +DDEESSCCRRIIPPTTIIOONN + no arguments: + + one argument: + + + two arguments: + + + + end of test document + + + diff --git a/regress/usr.bin/mandoc/roff/sp/badargs-mdoc.in b/regress/usr.bin/mandoc/roff/sp/badargs-mdoc.in new file mode 100644 index 00000000000..9f9d18fbcd2 --- /dev/null +++ b/regress/usr.bin/mandoc/roff/sp/badargs-mdoc.in @@ -0,0 +1,14 @@ +.Dd January 2, 2011 +.Dt SP-BADARGS-MDOC 1 +.Os +.Sh NAME +.Nm sp-badargs-mdoc +.Nd bad numbers of arguments to .sp macros in mdoc(7) +.Sh DESCRIPTION +no arguments: +.sp +one argument: +.sp 2v +two arguments: +.sp 3v 2i +end of test document diff --git a/regress/usr.bin/mandoc/roff/sp/badargs-mdoc.out_ascii b/regress/usr.bin/mandoc/roff/sp/badargs-mdoc.out_ascii new file mode 100644 index 00000000000..92ca70ac2ab --- /dev/null +++ b/regress/usr.bin/mandoc/roff/sp/badargs-mdoc.out_ascii @@ -0,0 +1,17 @@ +SP-BADARGS-MDOC(1) OpenBSD Reference Manual SP-BADARGS-MDOC(1) + +NNAAMMEE + sspp--bbaaddaarrggss--mmddoocc - bad numbers of arguments to .sp macros in mdoc(7) + +DDEESSCCRRIIPPTTIIOONN + no arguments: + + one argument: + + + two arguments: + + + + end of test document + diff --git a/usr.bin/mandoc/man_html.c b/usr.bin/mandoc/man_html.c index e4ec6dcc6e0..046e22af34d 100644 --- a/usr.bin/mandoc/man_html.c +++ b/usr.bin/mandoc/man_html.c @@ -1,4 +1,4 @@ -/* $Id: man_html.c,v 1.33 2011/01/16 19:41:16 schwarze Exp $ */ +/* $Id: man_html.c,v 1.34 2011/01/17 00:15:19 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * @@ -96,7 +96,7 @@ static const struct htmlman mans[MAN_MAX] = { { man_I_pre, NULL }, /* I */ { man_alt_pre, NULL }, /* IR */ { man_alt_pre, NULL }, /* RI */ - { NULL, NULL }, /* na */ + { man_ign_pre, NULL }, /* na */ { man_br_pre, NULL }, /* sp */ { man_literal_pre, NULL }, /* nf */ { man_literal_pre, NULL }, /* fi */ @@ -649,7 +649,7 @@ man_literal_pre(MAN_ARGS) } else mh->fl &= ~MANH_LITERAL; - return(1); + return(0); } diff --git a/usr.bin/mandoc/man_term.c b/usr.bin/mandoc/man_term.c index fc319fcbcdc..700a3e17381 100644 --- a/usr.bin/mandoc/man_term.c +++ b/usr.bin/mandoc/man_term.c @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.61 2011/01/16 03:46:21 schwarze Exp $ */ +/* $Id: man_term.c,v 1.62 2011/01/17 00:15:19 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org> @@ -122,7 +122,7 @@ static const struct termact termacts[MAN_MAX] = { { pre_I, NULL, 0 }, /* I */ { pre_alternate, NULL, 0 }, /* IR */ { pre_alternate, NULL, 0 }, /* RI */ - { NULL, NULL, MAN_NOTEXT }, /* na */ + { pre_ign, NULL, MAN_NOTEXT }, /* na */ { pre_sp, NULL, MAN_NOTEXT }, /* sp */ { pre_literal, NULL, 0 }, /* nf */ { pre_literal, NULL, 0 }, /* fi */ @@ -251,7 +251,7 @@ pre_literal(DECL_ARGS) else mt->fl &= ~MANT_LITERAL; - return(1); + return(0); } /* ARGSUSED */ diff --git a/usr.bin/mandoc/man_validate.c b/usr.bin/mandoc/man_validate.c index 77db6986725..3c1e91f809f 100644 --- a/usr.bin/mandoc/man_validate.c +++ b/usr.bin/mandoc/man_validate.c @@ -1,4 +1,4 @@ -/* $Id: man_validate.c,v 1.39 2011/01/16 19:27:25 schwarze Exp $ */ +/* $Id: man_validate.c,v 1.40 2011/01/17 00:15:19 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> @@ -50,7 +50,6 @@ static int check_part(CHKARGS); static int check_root(CHKARGS); static int check_sec(CHKARGS); static int check_text(CHKARGS); -static int check_title(CHKARGS); static int post_AT(CHKARGS); static int post_fi(CHKARGS); @@ -67,7 +66,7 @@ static v_check posts_nf[] = { check_eq0, post_nf, NULL }; static v_check posts_par[] = { check_par, NULL }; static v_check posts_part[] = { check_part, NULL }; static v_check posts_sec[] = { check_sec, NULL }; -static v_check posts_th[] = { check_ge2, check_le5, check_title, post_TH, NULL }; +static v_check posts_th[] = { check_ge2, check_le5, post_TH, NULL }; static v_check posts_uc[] = { post_UC, NULL }; static v_check pres_bline[] = { check_bline, NULL }; @@ -197,29 +196,6 @@ check_root(CHKARGS) static int -check_title(CHKARGS) -{ - const char *p; - - assert(n->child); - /* FIXME: is this sufficient? */ - if ('\0' == *n->child->string) { - man_nmsg(m, n, MANDOCERR_SYNTARGCOUNT); - return(0); - } - - for (p = n->child->string; '\0' != *p; p++) - /* Only warn about this once... */ - if (isalpha((u_char)*p) && ! isupper((u_char)*p)) { - man_nmsg(m, n, MANDOCERR_UPPERCASE); - break; - } - - return(1); -} - - -static int check_text(CHKARGS) { char *p; @@ -263,10 +239,10 @@ check_##name(CHKARGS) \ { \ if (n->nchild ineq (x)) \ return(1); \ - man_vmsg(m, MANDOCERR_SYNTARGCOUNT, n->line, n->pos, \ + man_vmsg(m, MANDOCERR_ARGCOUNT, n->line, n->pos, \ "line arguments %s %d (have %d)", \ #ineq, (x), n->nchild); \ - return(0); \ + return(1); \ } INEQ_DEFINE(0, ==, eq0) @@ -393,6 +369,7 @@ check_bline(CHKARGS) static int post_TH(CHKARGS) { + const char *p; if (m->meta.title) free(m->meta.title); @@ -412,14 +389,26 @@ post_TH(CHKARGS) /* ->TITLE<- MSEC DATE SOURCE VOL */ n = n->child; - assert(n); - m->meta.title = mandoc_strdup(n->string); + if (n && n->string) { + for (p = n->string; '\0' != *p; p++) { + /* Only warn about this once... */ + if (isalpha((u_char)*p) && ! isupper((u_char)*p)) { + man_nmsg(m, n, MANDOCERR_UPPERCASE); + break; + } + } + m->meta.title = mandoc_strdup(n->string); + } else + m->meta.title = mandoc_strdup(""); /* TITLE ->MSEC<- DATE SOURCE VOL */ - n = n->next; - assert(n); - m->meta.msec = mandoc_strdup(n->string); + if (n) + n = n->next; + if (n && n->string) + m->meta.msec = mandoc_strdup(n->string); + else + m->meta.msec = mandoc_strdup(""); /* TITLE MSEC ->DATE<- SOURCE VOL */ @@ -430,7 +419,8 @@ post_TH(CHKARGS) * string, then use the current date. */ - n = n->next; + if (n) + n = n->next; if (n && n->string && *n->string) { m->meta.date = mandoc_a2time (MTIME_ISO_8601, n->string); |