version 1.375, 2020/08/03 11:02:57 |
version 1.381, 2022/04/13 13:19:34 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2010-2015, 2017-2020 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010-2015, 2017-2022 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
|
|
roff_man_free(struct roff_man *man) |
roff_man_free(struct roff_man *man) |
{ |
{ |
roff_man_free1(man); |
roff_man_free1(man); |
|
free(man->os_r); |
free(man); |
free(man); |
} |
} |
|
|
Line 1400 roff_expand(struct roff *r, struct buf *buf, int ln, i |
|
Line 1401 roff_expand(struct roff *r, struct buf *buf, int ln, i |
|
|
|
term = '\0'; |
term = '\0'; |
cp = stesc + 1; |
cp = stesc + 1; |
if (*cp == 'E') |
while (*cp == 'E') |
cp++; |
cp++; |
esct = cp; |
esct = cp; |
switch (*esct) { |
switch (*esct) { |
Line 1823 roff_parsetext(struct roff *r, struct buf *buf, int po |
|
Line 1824 roff_parsetext(struct roff *r, struct buf *buf, int po |
|
} |
} |
|
|
int |
int |
roff_parseln(struct roff *r, int ln, struct buf *buf, int *offs) |
roff_parseln(struct roff *r, int ln, struct buf *buf, int *offs, size_t len) |
{ |
{ |
enum roff_tok t; |
enum roff_tok t; |
int e; |
int e; |
Line 1834 roff_parseln(struct roff *r, int ln, struct buf *buf, |
|
Line 1835 roff_parseln(struct roff *r, int ln, struct buf *buf, |
|
|
|
ppos = pos = *offs; |
ppos = pos = *offs; |
|
|
|
if (len > 80 && r->tbl == NULL && r->eqn == NULL && |
|
(r->man->flags & ROFF_NOFILL) == 0 && |
|
strchr(" .\\", buf->buf[pos]) == NULL && |
|
buf->buf[pos] != r->control && |
|
strcspn(buf->buf, " ") < 80) |
|
mandoc_msg(MANDOCERR_TEXT_LONG, ln, (int)len - 1, |
|
"%.20s...", buf->buf + pos); |
|
|
/* Handle in-line equation delimiters. */ |
/* Handle in-line equation delimiters. */ |
|
|
if (r->tbl == NULL && |
if (r->tbl == NULL && |
Line 2362 roff_cond_checkend(ROFF_ARGS) |
|
Line 2371 roff_cond_checkend(ROFF_ARGS) |
|
while ((ep = strchr(ep, '\\')) != NULL) { |
while ((ep = strchr(ep, '\\')) != NULL) { |
switch (ep[1]) { |
switch (ep[1]) { |
case '}': |
case '}': |
if (rr) |
if (ep[2] == '\0') |
|
ep[0] = '\0'; |
|
else if (rr) |
ep[1] = '&'; |
ep[1] = '&'; |
else |
else |
memmove(ep, ep + 2, strlen(ep + 2) + 1); |
memmove(ep, ep + 2, strlen(ep + 2) + 1); |
Line 3657 roff_char(ROFF_ARGS) |
|
Line 3668 roff_char(ROFF_ARGS) |
|
case ESCAPE_FONTITALIC: |
case ESCAPE_FONTITALIC: |
case ESCAPE_FONTBOLD: |
case ESCAPE_FONTBOLD: |
case ESCAPE_FONTBI: |
case ESCAPE_FONTBI: |
case ESCAPE_FONTCW: |
case ESCAPE_FONTCR: |
|
case ESCAPE_FONTCB: |
|
case ESCAPE_FONTCI: |
case ESCAPE_FONTPREV: |
case ESCAPE_FONTPREV: |
font++; |
font++; |
break; |
break; |
Line 3937 roff_userdef(ROFF_ARGS) |
|
Line 3950 roff_userdef(ROFF_ARGS) |
|
r->mstacksz += 8; |
r->mstacksz += 8; |
} |
} |
ctx = r->mstack + r->mstackpos; |
ctx = r->mstack + r->mstackpos; |
ctx->argsz = 0; |
|
ctx->argc = 0; |
ctx->argc = 0; |
ctx->argv = NULL; |
|
|
|
/* |
/* |
* Collect pointers to macro argument strings, |
* Collect pointers to macro argument strings, |