diff options
author | 2009-07-12 21:45:44 +0000 | |
---|---|---|
committer | 2009-07-12 21:45:44 +0000 | |
commit | bd6ebe84a582e6083a0b0b52728cf4bb4d4a9416 (patch) | |
tree | 70561d187653465654b2633aadebc6b97dc1eb1f | |
parent | remove a semicolon at the end of an if statement, already (diff) | |
download | wireguard-openbsd-bd6ebe84a582e6083a0b0b52728cf4bb4d4a9416.tar.xz wireguard-openbsd-bd6ebe84a582e6083a0b0b52728cf4bb4d4a9416.zip |
sync to 1.7.23: pass error code to mdoc_perr() instead of error string
and use the so improved mdoc_nerr() at many places;
get rid of now unused static functions perr()
-rw-r--r-- | usr.bin/mandoc/libmdoc.h | 5 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc.c | 67 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_action.c | 30 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_argv.c | 32 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_macro.c | 36 | ||||
-rw-r--r-- | usr.bin/mandoc/mdoc_validate.c | 76 |
6 files changed, 25 insertions, 221 deletions
diff --git a/usr.bin/mandoc/libmdoc.h b/usr.bin/mandoc/libmdoc.h index 861b891c2dc..7b6b604e16a 100644 --- a/usr.bin/mandoc/libmdoc.h +++ b/usr.bin/mandoc/libmdoc.h @@ -1,4 +1,4 @@ -/* $Id: libmdoc.h,v 1.11 2009/07/12 21:08:29 schwarze Exp $ */ +/* $Id: libmdoc.h,v 1.12 2009/07/12 21:45:44 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> * @@ -121,7 +121,8 @@ __BEGIN_DECLS int mdoc_warn(struct mdoc *, enum mdoc_warn, const char *, ...); int mdoc_pwarn(struct mdoc *, int, int, enum mdoc_warn,const char *, ...); -int mdoc_perr(struct mdoc *, int, int, const char *, ...); +#define mdoc_perr(m, l, p, t) \ + mdoc_err((m), (l), (p), 1, (t)) #define mdoc_nerr(m, n, t) \ mdoc_err((m), (n)->line, (n)->pos, 0, (t)) diff --git a/usr.bin/mandoc/mdoc.c b/usr.bin/mandoc/mdoc.c index e780ff806cf..94ebf3b0059 100644 --- a/usr.bin/mandoc/mdoc.c +++ b/usr.bin/mandoc/mdoc.c @@ -1,4 +1,4 @@ -/* $Id: mdoc.c,v 1.15 2009/07/12 21:08:29 schwarze Exp $ */ +/* $Id: mdoc.c,v 1.16 2009/07/12 21:45:44 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> * @@ -143,7 +143,7 @@ static int node_append(struct mdoc *, static int parsetext(struct mdoc *, int, char *); static int parsemacro(struct mdoc *, int, char *); static int macrowarn(struct mdoc *, int, const char *); -static int perr(struct mdoc *, int, int, enum merr); + const struct mdoc_node * mdoc_node(const struct mdoc *m) @@ -356,6 +356,7 @@ mdoc_err(struct mdoc *m, int line, int pos, int iserr, enum merr type) if (iserr) return(mdoc_verr(m, line, pos, p)); + return(mdoc_vwarn(m, line, pos, p)); } @@ -377,75 +378,25 @@ mdoc_pwarn(struct mdoc *mdoc, int line, int pos, enum mdoc_warn type, } int -mdoc_perr(struct mdoc *mdoc, int line, int pos, 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, line, pos, buf)); -} - - -int mdoc_macro(struct mdoc *m, int tok, int ln, int pp, int *pos, char *buf) { if (MDOC_PROLOGUE & mdoc_macros[tok].flags && MDOC_PBODY & m->flags) - return(perr(m, ln, pp, EPROLBODY)); + return(mdoc_perr(m, ln, pp, EPROLBODY)); if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) && ! (MDOC_PBODY & m->flags)) - return(perr(m, ln, pp, EBODYPROL)); + return(mdoc_perr(m, ln, pp, EBODYPROL)); if (1 != pp && ! (MDOC_CALLABLE & mdoc_macros[tok].flags)) - return(perr(m, ln, pp, ENOCALL)); + return(mdoc_perr(m, ln, pp, ENOCALL)); return((*mdoc_macros[tok].fp)(m, tok, ln, pp, pos, buf)); } static int -perr(struct mdoc *m, int line, int pos, enum merr type) -{ - char *p; - - p = NULL; - switch (type) { - case (ENOCALL): - p = "not callable"; - break; - case (EPROLBODY): - p = "macro disallowed in document body"; - break; - case (EBODYPROL): - p = "macro disallowed in document prologue"; - break; - case (EMALLOC): - p = "memory exhausted"; - break; - case (ETEXTPROL): - p = "text disallowed in document prologue"; - break; - case (ENOBLANK): - p = "blank lines disallowed in non-literal contexts"; - break; - case (ESPACE): - p = "whitespace disallowed after delimiter"; - break; - } - assert(p); - return(mdoc_perr(m, line, pos, p)); -} - - -static int node_append(struct mdoc *mdoc, struct mdoc_node *p) { @@ -657,10 +608,10 @@ parsetext(struct mdoc *m, int line, char *buf) { if (SEC_NONE == m->lastnamed) - return(perr(m, line, 0, ETEXTPROL)); + return(mdoc_perr(m, line, 0, ETEXTPROL)); if (0 == buf[0] && ! (MDOC_LITERAL & m->flags)) - return(perr(m, line, 0, ENOBLANK)); + return(mdoc_perr(m, line, 0, ENOBLANK)); if ( ! mdoc_word_alloc(m, line, 0, buf)) return(0); @@ -703,7 +654,7 @@ parsemacro(struct mdoc *m, int ln, char *buf) i++; if (0 == buf[i]) return(1); - return(perr(m, ln, 1, ESPACE)); + return(mdoc_perr(m, ln, 1, ESPACE)); } /* Copy the first word into a nil-terminated buffer. */ diff --git a/usr.bin/mandoc/mdoc_action.c b/usr.bin/mandoc/mdoc_action.c index 042ca6e1927..069fd35c535 100644 --- a/usr.bin/mandoc/mdoc_action.c +++ b/usr.bin/mandoc/mdoc_action.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_action.c,v 1.12 2009/07/12 21:08:29 schwarze Exp $ */ +/* $Id: mdoc_action.c,v 1.13 2009/07/12 21:45:44 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> * @@ -39,7 +39,6 @@ struct actions { }; static int pwarn(struct mdoc *, int, int, enum mwarn); -static int perr(struct mdoc *, int, int, enum merr); static int concat(struct mdoc *, const struct mdoc_node *, char *, size_t); @@ -62,8 +61,6 @@ static int pre_bd(PRE_ARGS); static int pre_dl(PRE_ARGS); #define vwarn(m, t) pwarn((m), (m)->last->line, (m)->last->pos, (t)) -#define verr(m, t) perr((m), (m)->last->line, (m)->last->pos, (t)) -#define nerr(m, n, t) perr((m), (n)->line, (n)->pos, (t)) const struct actions mdoc_actions[MDOC_MAX] = { { NULL, NULL }, /* Ap */ @@ -249,31 +246,6 @@ concat(struct mdoc *m, const struct mdoc_node *n, static int -perr(struct mdoc *m, int line, int pos, enum merr type) -{ - char *p; - - p = NULL; - switch (type) { - case (ENUMFMT): - p = "bad number format"; - break; - case (ETOOLONG): - p = "argument text too long"; - break; - case (EUTSNAME): - p = "utsname"; - break; - case (EMALLOC): - p = "memory exhausted"; - break; - } - assert(p); - return(mdoc_perr(m, line, pos, p)); -} - - -static int pwarn(struct mdoc *m, int line, int pos, enum mwarn type) { char *p; diff --git a/usr.bin/mandoc/mdoc_argv.c b/usr.bin/mandoc/mdoc_argv.c index 89cfdc3845f..f2dd8ba3d89 100644 --- a/usr.bin/mandoc/mdoc_argv.c +++ b/usr.bin/mandoc/mdoc_argv.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_argv.c,v 1.6 2009/07/12 21:08:29 schwarze Exp $ */ +/* $Id: mdoc_argv.c,v 1.7 2009/07/12 21:45:44 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> * @@ -66,9 +66,6 @@ static int argv_opt_single(struct mdoc *, int, static int argv_multi(struct mdoc *, int, struct mdoc_argv *, int *, char *); static int pwarn(struct mdoc *, int, int, enum mwarn); -static int perr(struct mdoc *, int, int, enum merr); - -#define verr(m, t) perr((m), (m)->last->line, (m)->last->pos, (t)) /* Per-argument flags. */ @@ -345,29 +342,6 @@ mdoc_argv_free(struct mdoc_arg *p) } - -static int -perr(struct mdoc *mdoc, int line, int pos, enum merr code) -{ - char *p; - - p = NULL; - switch (code) { - case (EMALLOC): - p = "memory exhausted"; - break; - case (EQUOTTERM): - p = "unterminated quoted parameter"; - break; - case (EARGVAL): - p = "argument requires a value"; - break; - } - assert(p); - return(mdoc_perr(mdoc, line, pos, p)); -} - - static int pwarn(struct mdoc *mdoc, int line, int pos, enum mwarn code) { @@ -627,7 +601,7 @@ args(struct mdoc *mdoc, int line, (*pos)++; if (0 == buf[*pos]) { - (void)perr(mdoc, line, *pos, EQUOTTERM); + (void)mdoc_perr(mdoc, line, *pos, EQUOTTERM); return(ARGS_ERROR); } @@ -820,7 +794,7 @@ argv_single(struct mdoc *m, int line, if (ARGS_ERROR == c) return(0); if (ARGS_EOLN == c) - return(perr(m, line, ppos, EARGVAL)); + return(mdoc_perr(m, line, ppos, EARGVAL)); v->sz = 1; if (NULL == (v->value = calloc(1, sizeof(char *)))) diff --git a/usr.bin/mandoc/mdoc_macro.c b/usr.bin/mandoc/mdoc_macro.c index 7eabfdbd04b..163f812eb74 100644 --- a/usr.bin/mandoc/mdoc_macro.c +++ b/usr.bin/mandoc/mdoc_macro.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_macro.c,v 1.8 2009/07/12 21:08:29 schwarze Exp $ */ +/* $Id: mdoc_macro.c,v 1.9 2009/07/12 21:45:44 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> * @@ -56,12 +56,9 @@ static int rew_last(struct mdoc *, struct mdoc_node *); static int append_delims(struct mdoc *, int, int *, char *); static int lookup(struct mdoc *, int, int, int, const char *); static int pwarn(struct mdoc *, int, int, enum mwarn); -static int perr(struct mdoc *, int, int, enum merr); static int swarn(struct mdoc *, enum mdoc_type, int, int, const struct mdoc_node *); -#define nerr(m, n, t) perr((m), (n)->line, (n)->pos, (t)) - /* Central table of library: who gets parsed how. */ const struct mdoc_macro __mdoc_macros[MDOC_MAX] = { @@ -189,31 +186,6 @@ const struct mdoc_macro * const mdoc_macros = __mdoc_macros; static int -perr(struct mdoc *mdoc, int line, int pos, enum merr type) -{ - char *p; - - p = NULL; - switch (type) { - case (EOPEN): - p = "explicit scope still open on exit"; - break; - case (EQUOTPHR): - p = "unterminated quotation"; - break; - case (ENOCTX): - p = "closure has no prior context"; - break; - case (ENOLINE): - p = "unexpect line arguments"; - break; - } - assert(p); - return(mdoc_perr(mdoc, line, pos, p)); -} - - -static int pwarn(struct mdoc *mdoc, int line, int pos, enum mwarn type) { char *p; @@ -630,7 +602,7 @@ rew_expblock(struct mdoc *mdoc, int tok, int line, int ppos) for (n = mdoc->last; n; n = n->parent) { c = rew_dohalt(tok, MDOC_BLOCK, n); if (REWIND_HALT == c) - return(perr(mdoc, line, ppos, ENOCTX)); + return(mdoc_perr(mdoc, line, ppos, ENOCTX)); if (REWIND_REWIND == c) break; else if (rew_dobreak(tok, n)) @@ -721,7 +693,7 @@ blk_exp_close(MACRO_PROT_ARGS) return(0); return(rew_expblock(mdoc, tok, line, ppos)); } - return(perr(mdoc, line, ppos, ENOLINE)); + return(mdoc_perr(mdoc, line, ppos, ENOLINE)); } if ( ! rew_subblock(MDOC_BODY, mdoc, tok, line, ppos)) @@ -1443,7 +1415,7 @@ phrase(struct mdoc *mdoc, int line, int ppos, char *buf) else if ('\\' != buf[i - 1]) break; if (0 == buf[i]) - return(perr(mdoc, line, la, EQUOTPHR)); + return(mdoc_perr(mdoc, line, la, EQUOTPHR)); quoted = 1; } else for ( ; buf[i]; i++) diff --git a/usr.bin/mandoc/mdoc_validate.c b/usr.bin/mandoc/mdoc_validate.c index 14a9d1ec6e4..5592b069069 100644 --- a/usr.bin/mandoc/mdoc_validate.c +++ b/usr.bin/mandoc/mdoc_validate.c @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.19 2009/07/12 21:08:29 schwarze Exp $ */ +/* $Id: mdoc_validate.c,v 1.20 2009/07/12 21:45:44 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> * @@ -61,7 +61,6 @@ struct valids { }; static int pwarn(struct mdoc *, int, int, enum mwarn); -static int perr(struct mdoc *, int, int, enum merr); static int check_parent(PRE_ARGS, int, enum mdoc_type); static int check_msec(PRE_ARGS, ...); static int check_sec(PRE_ARGS, ...); @@ -127,9 +126,7 @@ static int post_sh_head(POST_ARGS); static int post_st(POST_ARGS); #define vwarn(m, t) nwarn((m), (m)->last, (t)) -#define verr(m, t) nerr((m), (m)->last, (t)) #define nwarn(m, n, t) pwarn((m), (n)->line, (n)->pos, (t)) -#define nerr(m, n, t) perr((m), (n)->line, (n)->pos, (t)) static v_pre pres_an[] = { pre_an, NULL }; static v_pre pres_bd[] = { pre_display, pre_bd, NULL }; @@ -352,70 +349,6 @@ mdoc_valid_post(struct mdoc *mdoc) static int -perr(struct mdoc *m, int line, int pos, enum merr type) -{ - char *p; - - p = NULL; - switch (type) { - case (ETOOLONG): - p = "text argument too long"; - break; - case (EESCAPE): - p = "invalid escape sequence"; - break; - case (EPRINT): - p = "invalid character"; - break; - case (ENESTDISP): - p = "displays may not be nested"; - break; - case (EBOOL): - p = "expected boolean value"; - break; - case (EARGREP): - p = "argument repeated"; - break; - case (EMULTIDISP): - p = "multiple display types specified"; - break; - case (EMULTILIST): - p = "multiple list types specified"; - break; - case (ELISTTYPE): - p = "missing list type"; - break; - case (EDISPTYPE): - p = "missing display type"; - break; - case (ESECNAME): - p = "the NAME section must come first"; - break; - case (ELINE): - p = "expected line arguments"; - break; - case (ENOPROLOGUE): - p = "document has no prologue"; - break; - case (ENODAT): - p = "document has no data"; - break; - case (ECOLMIS): - p = "column syntax style mismatch"; - break; - case (EATT): - p = "expected valid AT&T symbol"; - break; - case (ENAME): - p = "default name not yet set"; - break; - } - assert(p); - return(mdoc_perr(m, line, pos, p)); -} - - -static int pwarn(struct mdoc *m, int line, int pos, enum mwarn type) { char *p; @@ -493,9 +426,10 @@ pwarn(struct mdoc *m, int line, int pos, enum mwarn type) static int warn_print(struct mdoc *m, int ln, int pos) { + if (MDOC_IGN_CHARS & m->pflags) return(pwarn(m, ln, pos, WPRINT)); - return(perr(m, ln, pos, EPRINT)); + return(mdoc_perr(m, ln, pos, EPRINT)); } @@ -700,8 +634,8 @@ check_text(struct mdoc *mdoc, int line, int pos, const char *p) continue; } if ( ! (MDOC_IGN_ESCAPE & mdoc->pflags)) - return(perr(mdoc, line, pos, EESCAPE)); - if ( ! pwarn(mdoc, line, pos, WESCAPE)) + return(mdoc_perr(mdoc, line, pos, EESCAPE)); + if ( ! mdoc_perr(mdoc, line, pos, EESCAPE)) return(0); } |