=================================================================== RCS file: /cvs/mandoc/mdoc_argv.c,v retrieving revision 1.3 retrieving revision 1.9 diff -u -p -r1.3 -r1.9 --- mandoc/mdoc_argv.c 2009/04/12 19:45:26 1.3 +++ mandoc/mdoc_argv.c 2009/07/06 09:21:24 1.9 @@ -1,6 +1,6 @@ -/* $Id: mdoc_argv.c,v 1.3 2009/04/12 19:45:26 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 @@ -32,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) @@ -105,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 */ @@ -116,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 */ @@ -212,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 */ @@ -367,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)); } @@ -376,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"; @@ -389,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)); } @@ -754,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; @@ -780,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); }