version 1.38, 2009/01/09 14:45:44 |
version 1.41, 2009/01/12 16:39:57 |
Line 192 print_node(const struct mdoc_node *n, int indent) |
|
Line 192 print_node(const struct mdoc_node *n, int indent) |
|
params = NULL; |
params = NULL; |
sz = 0; |
sz = 0; |
|
|
|
/* FIXME: put parts of this in util.c. */ |
switch (n->type) { |
switch (n->type) { |
case (MDOC_TEXT): |
case (MDOC_TEXT): |
assert(NULL == n->child); |
assert(NULL == n->child); |
Line 199 print_node(const struct mdoc_node *n, int indent) |
|
Line 200 print_node(const struct mdoc_node *n, int indent) |
|
t = "text"; |
t = "text"; |
break; |
break; |
case (MDOC_BODY): |
case (MDOC_BODY): |
p = mdoc_macronames[n->data.body.tok]; |
p = mdoc_macronames[n->tok]; |
t = "block-body"; |
t = "block-body"; |
break; |
break; |
case (MDOC_HEAD): |
case (MDOC_HEAD): |
p = mdoc_macronames[n->data.head.tok]; |
p = mdoc_macronames[n->tok]; |
t = "block-head"; |
t = "block-head"; |
break; |
break; |
case (MDOC_TAIL): |
case (MDOC_TAIL): |
p = mdoc_macronames[n->data.tail.tok]; |
p = mdoc_macronames[n->tok]; |
t = "block-tail"; |
t = "block-tail"; |
break; |
break; |
case (MDOC_ELEM): |
case (MDOC_ELEM): |
p = mdoc_macronames[n->data.elem.tok]; |
p = mdoc_macronames[n->tok]; |
t = "element"; |
t = "element"; |
argv = n->data.elem.argv; |
argv = n->data.elem.argv; |
argc = n->data.elem.argc; |
argc = n->data.elem.argc; |
break; |
break; |
case (MDOC_BLOCK): |
case (MDOC_BLOCK): |
p = mdoc_macronames[n->data.block.tok]; |
p = mdoc_macronames[n->tok]; |
t = "block"; |
t = "block"; |
argv = n->data.block.argv; |
argv = n->data.block.argv; |
argc = n->data.block.argc; |
argc = n->data.block.argc; |
Line 237 print_node(const struct mdoc_node *n, int indent) |
|
Line 238 print_node(const struct mdoc_node *n, int indent) |
|
|
|
for (i = 0; i < (int)argc; i++) { |
for (i = 0; i < (int)argc; i++) { |
(void)printf(" -%s", mdoc_argnames[argv[i].arg]); |
(void)printf(" -%s", mdoc_argnames[argv[i].arg]); |
|
if (j > 0) |
|
(void)printf(" ["); |
for (j = 0; j < (int)argv[i].sz; j++) |
for (j = 0; j < (int)argv[i].sz; j++) |
(void)printf(" \"%s\"", argv[i].value[j]); |
(void)printf(" [%s]", argv[i].value[j]); |
|
if (j > 0) |
|
(void)printf(" ]"); |
} |
} |
|
|
for (i = 0; i < (int)sz; i++) |
for (i = 0; i < (int)sz; i++) |
(void)printf(" \"%s\"", params[i]); |
(void)printf(" [%s]", params[i]); |
|
|
(void)printf("\n"); |
(void)printf(" %d:%d\n", n->line, n->pos); |
|
|
if (n->child) |
if (n->child) |
print_node(n->child, indent + 1); |
print_node(n->child, indent + 1); |
Line 328 msg_err(void *arg, int line, int col, enum mdoc_err ty |
|
Line 333 msg_err(void *arg, int line, int col, enum mdoc_err ty |
|
{ |
{ |
char *lit; |
char *lit; |
struct md_parse *p; |
struct md_parse *p; |
int i; |
|
|
|
p = (struct md_parse *)arg; |
p = (struct md_parse *)arg; |
|
|
Line 409 msg_err(void *arg, int line, int col, enum mdoc_err ty |
|
Line 413 msg_err(void *arg, int line, int col, enum mdoc_err ty |
|
lit = "syntax: expected value for macro argument"; |
lit = "syntax: expected value for macro argument"; |
break; |
break; |
case (ERR_SYNTAX_ARGBAD): |
case (ERR_SYNTAX_ARGBAD): |
lit = "syntax: invalid value for macro argument"; |
lit = "syntax: invalid value(s) for macro argument"; |
break; |
break; |
|
case (ERR_SYNTAX_ARGMISS): |
|
lit = "syntax: missing required argument(s) for macro"; |
|
break; |
case (ERR_SYNTAX_ARGMANY): |
case (ERR_SYNTAX_ARGMANY): |
lit = "syntax: too many values for macro argument"; |
lit = "syntax: too many values for macro argument"; |
break; |
break; |
|
case (ERR_SYNTAX_CHILDBAD): |
|
lit = "syntax: invalid child for parent macro"; |
|
break; |
|
case (ERR_SYNTAX_PARENTBAD): |
|
lit = "syntax: invalid parent for macro"; |
|
break; |
case (ERR_SYNTAX_CHILDHEAD): |
case (ERR_SYNTAX_CHILDHEAD): |
lit = "syntax: expected only block-header section"; |
lit = "syntax: expected only block-header section"; |
break; |
break; |
Line 431 msg_err(void *arg, int line, int col, enum mdoc_err ty |
|
Line 444 msg_err(void *arg, int line, int col, enum mdoc_err ty |
|
/* NOTREACHED */ |
/* NOTREACHED */ |
} |
} |
|
|
(void)fprintf(stderr, "%s:%d: error: %s", p->name, p->lnn, lit); |
(void)fprintf(stderr, "%s:%d: error: %s (column %d)\n", |
|
p->name, line, lit, col); |
if (p->dbg < 1) { |
|
(void)fprintf(stderr, " (column %d)\n", col); |
|
return(0); |
|
} |
|
|
|
(void)fprintf(stderr, "\nFrom: %s\n ", p->line); |
|
for (i = 0; i < col; i++) |
|
(void)fprintf(stderr, " "); |
|
(void)fprintf(stderr, "^\n"); |
|
|
|
return(0); |
return(0); |
} |
} |
|
|
|
|
msg_msg(void *arg, int line, int col, const char *msg) |
msg_msg(void *arg, int line, int col, const char *msg) |
{ |
{ |
struct md_parse *p; |
struct md_parse *p; |
int i; |
|
|
|
p = (struct md_parse *)arg; |
p = (struct md_parse *)arg; |
|
|
if (p->dbg < 2) |
if (p->dbg < 2) |
return; |
return; |
|
|
(void)printf("%s:%d: %s", p->name, line, msg); |
(void)printf("%s:%d: %s (column %d)\n", |
|
p->name, line, msg, col); |
if (p->dbg < 3) { |
|
(void)printf(" (column %d)\n", col); |
|
return; |
|
} |
|
|
|
(void)printf("\nFrom: %s\n ", p->line); |
|
for (i = 0; i < col; i++) |
|
(void)printf(" "); |
|
(void)printf("^\n"); |
|
} |
} |
|
|
|
|
Line 477 msg_warn(void *arg, int line, int col, enum mdoc_warn |
|
Line 470 msg_warn(void *arg, int line, int col, enum mdoc_warn |
|
{ |
{ |
char *lit; |
char *lit; |
struct md_parse *p; |
struct md_parse *p; |
int i; |
|
extern char *__progname; |
extern char *__progname; |
|
|
p = (struct md_parse *)arg; |
p = (struct md_parse *)arg; |
Line 501 msg_warn(void *arg, int line, int col, enum mdoc_warn |
|
Line 493 msg_warn(void *arg, int line, int col, enum mdoc_warn |
|
lit = "syntax: argument-like value"; |
lit = "syntax: argument-like value"; |
break; |
break; |
case (WARN_SYNTAX_EMPTYBODY): |
case (WARN_SYNTAX_EMPTYBODY): |
lit = "syntax: empty block-body section"; |
lit = "syntax: macro suggests non-empty block-body section"; |
break; |
break; |
|
case (WARN_SYNTAX_EMPTYHEAD): |
|
lit = "syntax: macro suggests non-empty block-head section"; |
|
break; |
|
case (WARN_SYNTAX_NOBODY): |
|
lit = "syntax: macro suggests empty block-body section"; |
|
break; |
case (WARN_SEC_OO): |
case (WARN_SEC_OO): |
lit = "section is out of conventional order"; |
lit = "section is out of conventional order"; |
break; |
break; |
Line 533 msg_warn(void *arg, int line, int col, enum mdoc_warn |
|
Line 531 msg_warn(void *arg, int line, int col, enum mdoc_warn |
|
} |
} |
|
|
|
|
(void)fprintf(stderr, "%s:%d: warning: %s", p->name, line, lit); |
(void)fprintf(stderr, "%s:%d: warning: %s (column %d)\n", |
|
p->name, line, lit, col); |
if (p->dbg >= 1) { |
|
(void)fprintf(stderr, "\nFrom: %s\n ", p->line); |
|
for (i = 0; i < col; i++) |
|
(void)fprintf(stderr, " "); |
|
(void)fprintf(stderr, "^\n"); |
|
} else |
|
(void)fprintf(stderr, " (column %d)\n", col); |
|
|
|
if (p->warn & MD_WARN_ERR) { |
if (p->warn & MD_WARN_ERR) { |
(void)fprintf(stderr, "%s: considering warnings as " |
(void)fprintf(stderr, "%s: considering warnings as " |