summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorschwarze <schwarze@openbsd.org>2009-07-12 21:45:44 +0000
committerschwarze <schwarze@openbsd.org>2009-07-12 21:45:44 +0000
commitbd6ebe84a582e6083a0b0b52728cf4bb4d4a9416 (patch)
tree70561d187653465654b2633aadebc6b97dc1eb1f
parentremove a semicolon at the end of an if statement, already (diff)
downloadwireguard-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.h5
-rw-r--r--usr.bin/mandoc/mdoc.c67
-rw-r--r--usr.bin/mandoc/mdoc_action.c30
-rw-r--r--usr.bin/mandoc/mdoc_argv.c32
-rw-r--r--usr.bin/mandoc/mdoc_macro.c36
-rw-r--r--usr.bin/mandoc/mdoc_validate.c76
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);
}