version 1.384, 2022/04/28 16:21:10 |
version 1.385, 2022/04/30 11:32:42 |
Line 2276 roff_block_sub(ROFF_ARGS) |
|
Line 2276 roff_block_sub(ROFF_ARGS) |
|
int i, j; |
int i, j; |
|
|
/* |
/* |
* First check whether a custom macro exists at this level. If |
* If a custom end marker is a user-defined or predefined macro |
* it does, then check against it. This is some of groff's |
* or a request, interpret it. |
* stranger behaviours. If we encountered a custom end-scope |
|
* tag and that tag also happens to be a "real" macro, then we |
|
* need to try interpreting it again as a real macro. If it's |
|
* not, then return ignore. Else continue. |
|
*/ |
*/ |
|
|
if (r->last->end) { |
if (r->last->end) { |
Line 2307 roff_block_sub(ROFF_ARGS) |
|
Line 2303 roff_block_sub(ROFF_ARGS) |
|
} |
} |
} |
} |
|
|
/* |
/* Handle the standard end marker. */ |
* If we have no custom end-query or lookup failed, then try |
|
* pulling it out of the hashtable. |
|
*/ |
|
|
|
t = roff_parse(r, buf->buf, &pos, ln, ppos); |
t = roff_parse(r, buf->buf, &pos, ln, ppos); |
|
if (t == ROFF_cblock) |
|
return roff_cblock(r, t, buf, ln, ppos, pos, offs); |
|
|
if (t != ROFF_cblock) { |
/* Not an end marker, so append the line to the block. */ |
if (tok != ROFF_ig) |
|
roff_setstr(r, r->last->name, buf->buf + ppos, 2); |
|
return ROFF_IGN; |
|
} |
|
|
|
return (*roffs[t].proc)(r, t, buf, ln, ppos, pos, offs); |
if (tok != ROFF_ig) |
|
roff_setstr(r, r->last->name, buf->buf + ppos, 2); |
|
return ROFF_IGN; |
} |
} |
|
|
static int |
static int |