=================================================================== RCS file: /cvs/mandoc/mdoc_argv.c,v retrieving revision 1.2 retrieving revision 1.9 diff -u -p -r1.2 -r1.9 --- mandoc/mdoc_argv.c 2009/03/31 13:50:19 1.2 +++ mandoc/mdoc_argv.c 2009/07/06 09:21:24 1.9 @@ -1,20 +1,18 @@ -/* $Id: mdoc_argv.c,v 1.2 2009/03/31 13:50:19 kristaps Exp $ */ +/* $Id: mdoc_argv.c,v 1.9 2009/07/06 09:21:24 kristaps Exp $ */ /* - * Copyright (c) 2008, 2009 Kristaps Dzonsons + * Copyright (c) 2008, 2009 Kristaps Dzonsons * * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the - * above copyright notice and this permission notice appear in all - * copies. + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #include @@ -34,6 +32,9 @@ * There's no limit to the number or arguments that may be allocated. */ +/* FIXME .Bf Li raises "macro-like parameter". */ +/* FIXME .Bl -column should deprecate old-groff syntax. */ + #define ARGS_QUOTED (1 << 0) #define ARGS_DELIM (1 << 1) #define ARGS_TABSEP (1 << 2) @@ -107,7 +108,7 @@ static int mdoc_argvflags[MDOC_ARG_MAX] = { }; static int mdoc_argflags[MDOC_MAX] = { - 0, /* \" */ + 0, /* Ap */ 0, /* Dd */ 0, /* Dt */ 0, /* Os */ @@ -118,7 +119,7 @@ static int mdoc_argflags[MDOC_MAX] = { ARGS_DELIM | ARGS_QUOTED, /* Dl */ 0, /* Bd */ 0, /* Ed */ - 0, /* Bl */ + ARGS_QUOTED, /* Bl */ 0, /* El */ 0, /* It */ ARGS_DELIM, /* Ad */ @@ -214,7 +215,6 @@ static int mdoc_argflags[MDOC_MAX] = { 0, /* Fr */ 0, /* Ud */ 0, /* Lb */ - 0, /* Ap */ ARGS_DELIM, /* Lp */ ARGS_DELIM | ARGS_QUOTED, /* Lk */ ARGS_DELIM | ARGS_QUOTED, /* Mt */ @@ -369,6 +369,7 @@ perr(struct mdoc *mdoc, int line, int pos, enum merr c p = "argument requires a value"; break; } + assert(p); return(mdoc_perr(mdoc, line, pos, p)); } @@ -378,10 +379,9 @@ static int pwarn(struct mdoc *mdoc, int line, int pos, enum mwarn code) { char *p; - int c; p = NULL; - c = WARN_SYNTAX; + switch (code) { case (WQUOTPARM): p = "unexpected quoted parameter"; @@ -391,15 +391,14 @@ pwarn(struct mdoc *mdoc, int line, int pos, enum mwarn break; case (WCOLEMPTY): p = "last list column is empty"; - c = WARN_COMPAT; break; case (WTAILWS): p = "trailing whitespace"; - c = WARN_COMPAT; break; } + assert(p); - return(mdoc_pwarn(mdoc, line, pos, c, p)); + return(mdoc_pwarn(mdoc, line, pos, p)); } @@ -756,11 +755,9 @@ static int argv_multi(struct mdoc *mdoc, int line, struct mdoc_argv *v, int *pos, char *buf) { - int c, ppos; + int c; char *p; - ppos = *pos; - for (v->sz = 0; ; v->sz++) { if ('-' == buf[*pos]) break; @@ -782,10 +779,7 @@ argv_multi(struct mdoc *mdoc, int line, return(verr(mdoc, EMALLOC)); } - if (v->sz) - return(1); - - return(perr(mdoc, line, ppos, EARGVAL)); + return(1); }