]> git.cameronkatri.com Git - mandoc.git/blobdiff - roff.c
Run the regression tests iteratively rather than recursively.
[mandoc.git] / roff.c
diff --git a/roff.c b/roff.c
index 38595a99bc678a01bbf410f2af110724b9530a52..e2e498da0ce4cd5733ee0fbe9cb21028a007c110 100644 (file)
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/*     $Id: roff.c,v 1.322 2017/07/13 15:13:18 schwarze Exp $ */
+/*     $Id: roff.c,v 1.324 2017/07/14 17:16:16 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -1127,13 +1127,13 @@ roff_res(struct roff *r, struct buf *buf, int ln, int pos)
        size_t           maxl;  /* expected length of the escape name */
        size_t           naml;  /* actual length of the escape name */
        enum mandoc_esc  esc;   /* type of the escape sequence */
-       enum mandoc_os   os_e;  /* kind of RCS id seen */
        int              inaml; /* length returned from mandoc_escape() */
        int              expand_count;  /* to avoid infinite loops */
        int              npos;  /* position in numeric expression */
        int              arg_complete; /* argument not interrupted by eol */
        int              done;  /* no more input available */
        int              deftype; /* type of definition to paste */
+       int              rcsid; /* kind of RCS id seen */
        char             term;  /* character terminating the escape */
 
        /* Search forward for comments. */
@@ -1149,20 +1149,21 @@ roff_res(struct roff *r, struct buf *buf, int ln, int pos)
 
                /* Comment found, look for RCS id. */
 
+               rcsid = 0;
                if ((cp = strstr(stesc, "$" "OpenBSD")) != NULL) {
-                       os_e = MANDOC_OS_OPENBSD;
+                       rcsid = 1 << MANDOC_OS_OPENBSD;
                        cp += 8;
                } else if ((cp = strstr(stesc, "$" "NetBSD")) != NULL) {
-                       os_e = MANDOC_OS_NETBSD;
+                       rcsid = 1 << MANDOC_OS_NETBSD;
                        cp += 7;
                }
                if (cp != NULL &&
                    isalnum((unsigned char)*cp) == 0 &&
                    strchr(cp, '$') != NULL) {
-                       if (r->man->meta.rcsids & (1 << os_e))
+                       if (r->man->meta.rcsids & rcsid)
                                mandoc_msg(MANDOCERR_RCS_REP, r->parse,
                                    ln, stesc + 1 - buf->buf, stesc + 1);
-                       r->man->meta.rcsids |= 1 << os_e;
+                       r->man->meta.rcsids |= rcsid;
                }
 
                /* Handle trailing whitespace. */
@@ -1558,7 +1559,8 @@ roff_parseln(struct roff *r, int ln, struct buf *buf, int *offs)
        /* For now, let high level macros abort .ce mode. */
 
        if (ctl && roffce_node != NULL &&
-           (t == TOKEN_NONE || t == ROFF_EQ || t == ROFF_TS)) {
+           (t == TOKEN_NONE || t == ROFF_Dd || t == ROFF_EQ ||
+            t == ROFF_TH || t == ROFF_TS)) {
                r->man->last = roffce_node;
                r->man->next = ROFF_NEXT_SIBLING;
                roffce_lines = 0;