summaryrefslogtreecommitdiffstatshomepage
path: root/macro.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-01-03 18:38:39 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-01-03 18:38:39 +0000
commit50ffcd72be49e8f794384aa7bc4041065cf94d13 (patch)
tree5fc66a56d4f56abbcaa6739847a82f16915615bf /macro.c
parent870e7027cc4f493228db816427256127402b6b19 (diff)
downloadmandoc-50ffcd72be49e8f794384aa7bc4041065cf94d13.tar.gz
mandoc-50ffcd72be49e8f794384aa7bc4041065cf94d13.tar.zst
mandoc-50ffcd72be49e8f794384aa7bc4041065cf94d13.zip
*** empty log message ***
Diffstat (limited to 'macro.c')
-rw-r--r--macro.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/macro.c b/macro.c
index 79497bbf..c59e5ec3 100644
--- a/macro.c
+++ b/macro.c
@@ -1,4 +1,4 @@
-/* $Id: macro.c,v 1.17 2009/01/02 14:06:16 kristaps Exp $ */
+/* $Id: macro.c,v 1.18 2009/01/03 18:38:39 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -171,6 +171,9 @@ append_text(struct mdoc *mdoc, int tok,
return(0);
switch (tok) {
+ /*
+ * FIXME: deprecate this "feature" of mdoc(7).
+ */
case (MDOC_At):
if (0 == sz)
break;
@@ -210,6 +213,7 @@ macro_text(MACRO_PROT_ARGS)
/* Token pre-processing. */
switch (tok) {
+ /* FIXME: move to validate.c. */
case (MDOC_Pp):
/* `.Pp' ignored when following `.Sh' or `.Ss'. */
assert(mdoc->last);
@@ -349,6 +353,8 @@ macro_close_explicit(MACRO_PROT_ARGS)
/* NOTREACHED */
}
+ if (0 != buf[*pos])
+ return(mdoc_err(mdoc, tok, ppos, ERR_ARGS_EQ0));
return(scope_rewind_exp(mdoc, ppos, tok, tt));
}
@@ -465,17 +471,19 @@ macro_scoped(MACRO_PROT_ARGS)
mdoc_argv_free(argc, argv);
- mdoc_head_alloc(mdoc, ppos, tok);
- mdoc->next = MDOC_NEXT_CHILD;
-
- for (i = 0; i < sz; i++) {
- mdoc_word_alloc(mdoc, ppos, args[i]);
- mdoc->next = MDOC_NEXT_SIBLING;
+ if (sz > 0) {
+ mdoc_head_alloc(mdoc, ppos, tok);
+ mdoc->next = MDOC_NEXT_CHILD;
+
+ for (i = 0; i < sz; i++) {
+ mdoc_word_alloc(mdoc, ppos, args[i]);
+ mdoc->next = MDOC_NEXT_SIBLING;
+ }
+
+ if ( ! scope_rewind_line(mdoc, ppos, tok))
+ return(0);
}
- if ( ! scope_rewind_line(mdoc, ppos, tok))
- return(0);
-
mdoc_body_alloc(mdoc, ppos, tok);
mdoc->next = MDOC_NEXT_CHILD;