version 1.248, 2015/01/07 12:19:46 |
version 1.250, 2015/01/16 16:53:49 |
|
|
ROFF_T_, |
ROFF_T_, |
ROFF_EQ, |
ROFF_EQ, |
ROFF_EN, |
ROFF_EN, |
|
ROFF_IX, |
ROFF_cblock, |
ROFF_cblock, |
ROFF_USERDEF, |
ROFF_USERDEF, |
ROFF_MAX |
ROFF_MAX |
Line 274 static struct roffmac roffs[ROFF_MAX] = { |
|
Line 275 static struct roffmac roffs[ROFF_MAX] = { |
|
{ "T&", roff_T_, NULL, NULL, 0, NULL }, |
{ "T&", roff_T_, NULL, NULL, 0, NULL }, |
{ "EQ", roff_EQ, NULL, NULL, 0, NULL }, |
{ "EQ", roff_EQ, NULL, NULL, 0, NULL }, |
{ "EN", roff_EN, NULL, NULL, 0, NULL }, |
{ "EN", roff_EN, NULL, NULL, 0, NULL }, |
|
{ "IX", roff_line_ignore, NULL, NULL, 0, NULL }, |
{ ".", roff_cblock, NULL, NULL, 0, NULL }, |
{ ".", roff_cblock, NULL, NULL, 0, NULL }, |
{ NULL, roff_userdef, NULL, NULL, 0, NULL }, |
{ NULL, roff_userdef, NULL, NULL, 0, NULL }, |
}; |
}; |
Line 2103 roff_tr(ROFF_ARGS) |
|
Line 2105 roff_tr(ROFF_ARGS) |
|
static enum rofferr |
static enum rofferr |
roff_so(ROFF_ARGS) |
roff_so(ROFF_ARGS) |
{ |
{ |
char *name; |
char *name, *cp; |
|
|
name = buf->buf + pos; |
name = buf->buf + pos; |
mandoc_vmsg(MANDOCERR_SO, r->parse, ln, ppos, "so %s", name); |
mandoc_vmsg(MANDOCERR_SO, r->parse, ln, ppos, "so %s", name); |
Line 2118 roff_so(ROFF_ARGS) |
|
Line 2120 roff_so(ROFF_ARGS) |
|
if (*name == '/' || strstr(name, "../") || strstr(name, "/..")) { |
if (*name == '/' || strstr(name, "../") || strstr(name, "/..")) { |
mandoc_vmsg(MANDOCERR_SO_PATH, r->parse, ln, ppos, |
mandoc_vmsg(MANDOCERR_SO_PATH, r->parse, ln, ppos, |
".so %s", name); |
".so %s", name); |
return(ROFF_ERR); |
buf->sz = mandoc_asprintf(&cp, |
|
".sp\nSee the file %s.\n.sp", name) + 1; |
|
free(buf->buf); |
|
buf->buf = cp; |
|
*offs = 0; |
|
return(ROFF_REPARSE); |
} |
} |
|
|
*offs = pos; |
*offs = pos; |