summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--macro.c15
-rw-r--r--mdoc.c14
-rw-r--r--mdoc.h3
-rw-r--r--mdocml.c5
4 files changed, 26 insertions, 11 deletions
diff --git a/macro.c b/macro.c
index 12dd1cc4..1b9e2f51 100644
--- a/macro.c
+++ b/macro.c
@@ -1,4 +1,4 @@
-/* $Id: macro.c,v 1.8 2008/12/28 21:25:09 kristaps Exp $ */
+/* $Id: macro.c,v 1.9 2008/12/28 23:07:04 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -154,7 +154,9 @@ append_scoped(struct mdoc *mdoc, int tok, int pos,
case (MDOC_Bd):
assert(mdoc->last);
- for (node = mdoc->last->parent; node; node = node->parent) {
+ node = mdoc->last->parent;
+ /* LINTED */
+ for ( ; node; node = node->parent) {
if (node->type != MDOC_BLOCK)
continue;
if (node->data.block.tok != MDOC_Bd)
@@ -791,6 +793,11 @@ again:
}
+/*
+ * Partial-line scope is identical to line scope (macro_scoped_line())
+ * except that trailing punctuation is appended to the BLOCK, instead of
+ * contained within the HEAD.
+ */
int
macro_scoped_pline(MACRO_PROT_ARGS)
{
@@ -803,6 +810,10 @@ macro_scoped_pline(MACRO_PROT_ARGS)
/* Token pre-processing. */
switch (tok) {
+ case (MDOC_Ql):
+ if ( ! mdoc_warn(mdoc, tok, ppos, WARN_COMPAT_TROFF))
+ return(0);
+ break;
default:
break;
}
diff --git a/mdoc.c b/mdoc.c
index 5885d8ee..c12f01af 100644
--- a/mdoc.c
+++ b/mdoc.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc.c,v 1.6 2008/12/28 21:25:09 kristaps Exp $ */
+/* $Id: mdoc.c,v 1.7 2008/12/28 23:07:04 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -137,18 +137,18 @@ const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
{ NULL, 0 }, /* %V */
{ NULL, 0 }, /* Ac */
{ NULL, 0 }, /* Ao */
- { NULL, 0 }, /* Aq */
+ { macro_scoped_pline, MDOC_CALLABLE }, /* Aq */
{ NULL, 0 }, /* At */
{ NULL, 0 }, /* Bc */
{ NULL, 0 }, /* Bf */
{ NULL, 0 }, /* Bo */
- { NULL, 0 }, /* Bq */
+ { macro_scoped_pline, MDOC_CALLABLE }, /* Bq */
{ NULL, 0 }, /* Bsx */
{ NULL, 0 }, /* Bx */
{ NULL, 0 }, /* Db */
{ NULL, 0 }, /* Dc */
{ NULL, 0 }, /* Do */
- { NULL, 0 }, /* Dq */
+ { macro_scoped_pline, MDOC_CALLABLE }, /* Dq */
{ NULL, 0 }, /* Ec */
{ NULL, 0 }, /* Ef */
{ macro_text, MDOC_CALLABLE }, /* Em */
@@ -162,16 +162,16 @@ const struct mdoc_macro __mdoc_macros[MDOC_MAX] = {
{ NULL, 0 }, /* Pc */
{ NULL, 0 }, /* Pf */
{ NULL, 0 }, /* Po */
- { NULL, 0 }, /* Pq */
+ { macro_scoped_pline, MDOC_CALLABLE }, /* Pq */
{ NULL, 0 }, /* Qc */
- { NULL, 0 }, /* Ql */
+ { macro_scoped_pline, MDOC_CALLABLE }, /* Ql */
{ NULL, 0 }, /* Qo */
{ macro_scoped_pline, MDOC_CALLABLE }, /* Qq */
{ NULL, 0 }, /* Re */
{ NULL, 0 }, /* Rs */
{ NULL, 0 }, /* Sc */
{ NULL, 0 }, /* So */
- { NULL, 0 }, /* Sq */
+ { macro_scoped_pline, MDOC_CALLABLE }, /* Sq */
{ NULL, 0 }, /* Sm */
{ NULL, 0 }, /* Sx */
{ NULL, 0 }, /* Sy */
diff --git a/mdoc.h b/mdoc.h
index 45a691e9..3ab94889 100644
--- a/mdoc.h
+++ b/mdoc.h
@@ -1,4 +1,4 @@
-/* $Id: mdoc.h,v 1.5 2008/12/28 00:34:20 kristaps Exp $ */
+/* $Id: mdoc.h,v 1.6 2008/12/28 23:07:04 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -224,6 +224,7 @@ enum mdoc_warn {
WARN_SEC_OO,
WARN_ARGS_GE1,
WARN_ARGS_EQ0,
+ WARN_COMPAT_TROFF
};
struct mdoc_arg {
diff --git a/mdocml.c b/mdocml.c
index d872caa3..610b5a4c 100644
--- a/mdocml.c
+++ b/mdocml.c
@@ -1,4 +1,4 @@
-/* $Id: mdocml.c,v 1.26 2008/12/28 21:25:09 kristaps Exp $ */
+/* $Id: mdocml.c,v 1.27 2008/12/28 23:07:04 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -491,6 +491,9 @@ msg_warn(void *arg, int tok, int col, enum mdoc_warn type)
case (WARN_IGN_BEFORE_BLK):
fmt = "ignore: macro before block macro `%s' ignored";
break;
+ case (WARN_COMPAT_TROFF):
+ fmt = "compat: macro `%s' behaves differently in troff and nroff";
+ break;
default:
abort();
/* NOTREACHED */