=================================================================== RCS file: /cvs/mandoc/mdoc.c,v retrieving revision 1.78 retrieving revision 1.84 diff -u -p -r1.78 -r1.84 --- mandoc/mdoc.c 2009/06/15 09:55:43 1.78 +++ mandoc/mdoc.c 2009/06/17 07:59:47 1.84 @@ -1,4 +1,4 @@ -/* $Id: mdoc.c,v 1.78 2009/06/15 09:55:43 kristaps Exp $ */ +/* $Id: mdoc.c,v 1.84 2009/06/17 07:59:47 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -34,7 +34,7 @@ enum merr { }; const char *const __mdoc_macronames[MDOC_MAX] = { - "\\\"", "Dd", "Dt", "Os", + "Ap", "Dd", "Dt", "Os", "Sh", "Ss", "Pp", "D1", "Dl", "Bd", "Ed", "Bl", "El", "It", "Ad", "An", @@ -63,12 +63,12 @@ const char *const __mdoc_macronames[MDOC_MAX] = { "Tn", "Ux", "Xc", "Xo", "Fo", "Fc", "Oo", "Oc", "Bk", "Ek", "Bt", "Hf", - "Fr", "Ud", "Lb", "Ap", - "Lp", "Lk", "Mt", "Brq", + "Fr", "Ud", "Lb", "Lp", + "Lk", "Mt", "Brq", "Bro", /* LINTED */ - "Bro", "Brc", "\%C", "Es", + "Brc", "\%C", "Es", "En", /* LINTED */ - "En", "Dx", "\%Q" + "Dx", "\%Q" }; const char *const __mdoc_argnames[MDOC_ARG_MAX] = { @@ -97,11 +97,6 @@ static int parsemacro(struct mdoc *, int, char *); static int macrowarn(struct mdoc *, int, const char *); static int perr(struct mdoc *, int, int, enum merr); -#define verr(m, t) perr((m), (m)->last->line, (m)->last->pos, (t)) - -/* - * Get the first (root) node of the parse tree. - */ const struct mdoc_node * mdoc_node(const struct mdoc *m) { @@ -232,8 +227,6 @@ int mdoc_parseln(struct mdoc *m, int ln, char *buf) { - /* If in error-mode, then we parse no more. */ - if (MDOC_HALT & m->flags) return(0); @@ -242,22 +235,6 @@ mdoc_parseln(struct mdoc *m, int ln, char *buf) } -void -mdoc_vmsg(struct mdoc *mdoc, int ln, int pos, const char *fmt, ...) -{ - char buf[256]; - va_list ap; - - if (NULL == mdoc->cb.mdoc_msg) - return; - - va_start(ap, fmt); - (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); - va_end(ap); - (*mdoc->cb.mdoc_msg)(mdoc->data, ln, pos, buf); -} - - int mdoc_verr(struct mdoc *mdoc, int ln, int pos, const char *fmt, ...) @@ -293,40 +270,26 @@ mdoc_vwarn(struct mdoc *mdoc, int ln, int pos, int -mdoc_nwarn(struct mdoc *mdoc, const struct mdoc_node *node, enum mdoc_warn type, +mdoc_nerr(struct mdoc *mdoc, const struct mdoc_node *node, const char *fmt, ...) { char buf[256]; va_list ap; - if (NULL == mdoc->cb.mdoc_warn) - return(0); - - va_start(ap, fmt); - (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); - va_end(ap); - return((*mdoc->cb.mdoc_warn)(mdoc->data, node->line, node->pos, type, - buf)); -} - -int -mdoc_nerr(struct mdoc *mdoc, const struct mdoc_node *node, const char *fmt, ...) -{ - char buf[256]; - va_list ap; - if (NULL == mdoc->cb.mdoc_err) return(0); va_start(ap, fmt); (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); va_end(ap); - return((*mdoc->cb.mdoc_err)(mdoc->data, node->line, node->pos, buf)); + return((*mdoc->cb.mdoc_err)(mdoc->data, + node->line, node->pos, buf)); } int -mdoc_warn(struct mdoc *mdoc, enum mdoc_warn type, const char *fmt, ...) +mdoc_warn(struct mdoc *mdoc, enum mdoc_warn type, + const char *fmt, ...) { char buf[256]; va_list ap; @@ -338,7 +301,7 @@ mdoc_warn(struct mdoc *mdoc, enum mdoc_warn type, cons (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); va_end(ap); return((*mdoc->cb.mdoc_warn)(mdoc->data, mdoc->last->line, - mdoc->last->pos, type, buf)); + mdoc->last->pos, type, buf)); } @@ -355,43 +318,10 @@ mdoc_err(struct mdoc *mdoc, const char *fmt, ...) (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); va_end(ap); return((*mdoc->cb.mdoc_err)(mdoc->data, mdoc->last->line, - mdoc->last->pos, buf)); + mdoc->last->pos, buf)); } -void -mdoc_msg(struct mdoc *mdoc, const char *fmt, ...) -{ - char buf[256]; - va_list ap; - - if (NULL == mdoc->cb.mdoc_msg) - return; - - va_start(ap, fmt); - (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); - va_end(ap); - (*mdoc->cb.mdoc_msg)(mdoc->data, mdoc->last->line, mdoc->last->pos, - buf); -} - - -void -mdoc_pmsg(struct mdoc *mdoc, int line, int pos, const char *fmt, ...) -{ - char buf[256]; - va_list ap; - - if (NULL == mdoc->cb.mdoc_msg) - return; - - va_start(ap, fmt); - (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); - va_end(ap); - (*mdoc->cb.mdoc_msg)(mdoc->data, line, pos, buf); -} - - int mdoc_pwarn(struct mdoc *mdoc, int line, int pos, enum mdoc_warn type, const char *fmt, ...) @@ -405,7 +335,8 @@ mdoc_pwarn(struct mdoc *mdoc, int line, int pos, enum va_start(ap, fmt); (void)vsnprintf(buf, sizeof(buf) - 1, fmt, ap); va_end(ap); - return((*mdoc->cb.mdoc_warn)(mdoc->data, line, pos, type, buf)); + return((*mdoc->cb.mdoc_warn)(mdoc->data, + line, pos, type, buf)); } int @@ -549,7 +480,8 @@ node_alloc(struct mdoc *mdoc, int line, struct mdoc_node *p; if (NULL == (p = calloc(1, sizeof(struct mdoc_node)))) { - (void)verr(mdoc, EMALLOC); + (void)perr(mdoc, (mdoc)->last->line, + (mdoc)->last->pos, EMALLOC); return(NULL); } @@ -645,7 +577,8 @@ mdoc_word_alloc(struct mdoc *mdoc, if (NULL == p) return(0); if (NULL == (p->string = strdup(word))) { - (void)verr(mdoc, EMALLOC); + (void)perr(mdoc, (mdoc)->last->line, + (mdoc)->last->pos, EMALLOC); return(0); } return(node_append(mdoc, p)); @@ -712,7 +645,6 @@ macrowarn(struct mdoc *m, int ln, const char *buf) } - /* * Parse a macro line, that is, a line beginning with the control * character. @@ -723,7 +655,7 @@ parsemacro(struct mdoc *m, int ln, char *buf) int i, c; char mac[5]; - /* Comments and empties are quickly ignored. */ + /* Empty lines are ignored. */ if (0 == buf[1]) return(1); @@ -736,10 +668,6 @@ parsemacro(struct mdoc *m, int ln, char *buf) return(1); return(perr(m, ln, 1, ESPACE)); } - - if (buf[1] && '\\' == buf[1]) - if (buf[2] && '\"' == buf[2]) - return(1); /* Copy the first word into a nil-terminated buffer. */