diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2010-08-29 11:29:51 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2010-08-29 11:29:51 +0000 |
commit | a98d254132a47ab6826511a1ab1dcd7763e588c1 (patch) | |
tree | b6e0eefa78a9c996784f24ae09faaa1ee920057a /roff.c | |
parent | 5b800687386963e8ac308abec4e60dace556292c (diff) | |
download | mandoc-a98d254132a47ab6826511a1ab1dcd7763e588c1.tar.gz |
Allow `.xx\}' where xx is a macro (e.g., `.br\}') to close scope. This is
experimental and hasn't been rigorously tested. It's only implemented in
-mdoc for the time being. This is absolutely required for pod2man. It
does, however, make the pod2man preamble be processed in full.
Diffstat (limited to 'roff.c')
-rw-r--r-- | roff.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -59,7 +59,7 @@ enum rofft { ROFF_rm, ROFF_tr, ROFF_cblock, - ROFF_ccond, + ROFF_ccond, /* FIXME: remove this. */ ROFF_nr, ROFF_MAX }; @@ -764,8 +764,13 @@ roff_cond_sub(ROFF_ARGS) if (l != r->last) return(ROFFRULE_DENY == rr ? ROFF_IGN : ROFF_CONT); - if (ROFF_MAX == (t = roff_parse(*bufp, &pos))) + if (ROFF_MAX == (t = roff_parse(*bufp, &pos))) { + if ('\\' == (*bufp)[pos] && '}' == (*bufp)[pos + 1]) + return(roff_ccond + (r, ROFF_ccond, bufp, szp, + ln, pos, pos + 2, offs)); return(ROFFRULE_DENY == rr ? ROFF_IGN : ROFF_CONT); + } /* * A denied conditional must evaluate its children if and only @@ -797,6 +802,8 @@ roff_cond_text(ROFF_ARGS) * scope permits us to do so. */ + /* FIXME: use roff_ccond? */ + st = &(*bufp)[pos]; if (NULL == (ep = strstr(st, "\\}"))) { roffnode_cleanscope(r); |