version 1.21, 2008/11/30 18:50:44 |
version 1.25, 2008/11/30 23:05:57 |
Line 307 const char *const toknamesp[ROFF_MAX] = { |
|
Line 307 const char *const toknamesp[ROFF_MAX] = { |
|
"Ic", "In", "Li", "Nd", |
"Ic", "In", "Li", "Nd", |
"Nm", "Op", "Ot", "Pa", |
"Nm", "Op", "Ot", "Pa", |
"Rv", "St", "Va", "Vt", |
"Rv", "St", "Va", "Vt", |
|
/* LINTED */ |
"Xr", "\%A", "\%B", "\%D", |
"Xr", "\%A", "\%B", "\%D", |
|
/* LINTED */ |
"\%I", "\%J", "\%N", "\%O", |
"\%I", "\%J", "\%N", "\%O", |
|
/* LINTED */ |
"\%P", "\%R", "\%T", "\%V", |
"\%P", "\%R", "\%T", "\%V", |
"Ac", "Ao", "Aq", "At", |
"Ac", "Ao", "Aq", "At", |
"Bc", "Bf", "Bo", "Bq", |
"Bc", "Bf", "Bo", "Bq", |
Line 515 roffparse(struct rofftree *tree, char *buf) |
|
Line 518 roffparse(struct rofftree *tree, char *buf) |
|
char *argv[ROFF_MAXARG]; |
char *argv[ROFF_MAXARG]; |
char **argvp; |
char **argvp; |
|
|
|
if (0 != *buf && 0 != *(buf + 1) && 0 != *(buf + 2)) |
|
if (0 == strncmp(buf, ".\\\"", 3)) |
|
return(1); |
|
|
if (ROFF_MAX == (tok = rofffindtok(buf + 1))) { |
if (ROFF_MAX == (tok = rofffindtok(buf + 1))) { |
roff_err(tree, buf + 1, "bogus line macro"); |
roff_err(tree, buf + 1, "bogus line macro"); |
return(0); |
return(0); |
Line 522 roffparse(struct rofftree *tree, char *buf) |
|
Line 529 roffparse(struct rofftree *tree, char *buf) |
|
roff_err(tree, buf + 1, "unsupported macro `%s'", |
roff_err(tree, buf + 1, "unsupported macro `%s'", |
toknames[tok]); |
toknames[tok]); |
return(0); |
return(0); |
} else if (ROFF_COMMENT == tokens[tok].type) |
} |
return(1); |
|
|
assert(ROFF___ != tok); |
if ( ! roffargs(tree, tok, buf, argv)) |
if ( ! roffargs(tree, tok, buf, argv)) |
return(0); |
return(0); |
|
|
|
|
rofffindtok(const char *buf) |
rofffindtok(const char *buf) |
{ |
{ |
char token[4]; |
char token[4]; |
size_t i; |
int i; |
|
|
for (i = 0; *buf && ! isspace(*buf) && i < 3; i++, buf++) |
for (i = 0; *buf && ! isspace(*buf) && i < 3; i++, buf++) |
token[i] = *buf; |
token[i] = *buf; |
Line 1022 roff_layout(ROFFCALL_ARGS) |
|
Line 1029 roff_layout(ROFFCALL_ARGS) |
|
|
|
assert(i > 0); |
assert(i > 0); |
if ( ! roffispunct(argv[--i])) |
if ( ! roffispunct(argv[--i])) |
return(1); |
return((*tree->cb.roffout)(tree->arg, tok)); |
|
|
while (i >= 0 && roffispunct(argv[i])) |
while (i >= 0 && roffispunct(argv[i])) |
i--; |
i--; |
Line 1030 roff_layout(ROFFCALL_ARGS) |
|
Line 1037 roff_layout(ROFFCALL_ARGS) |
|
assert(0 != i); |
assert(0 != i); |
i++; |
i++; |
|
|
|
/* LINTED */ |
while (argv[i]) |
while (argv[i]) |
if ( ! (*tree->cb.roffdata)(tree->arg, 0, argv[i++])) |
if ( ! (*tree->cb.roffdata)(tree->arg, 0, argv[i++])) |
return(0); |
return(0); |
Line 1148 roff_text(ROFFCALL_ARGS) |
|
Line 1156 roff_text(ROFFCALL_ARGS) |
|
assert(0 != i); |
assert(0 != i); |
i++; |
i++; |
|
|
|
/* LINTED */ |
while (argv[i]) |
while (argv[i]) |
if ( ! (*tree->cb.roffdata)(tree->arg, 0, argv[i++])) |
if ( ! (*tree->cb.roffdata)(tree->arg, 0, argv[i++])) |
return(0); |
return(0); |