-/* $Id: argv.c,v 1.28 2009/02/23 15:19:47 kristaps Exp $ */
+/* $Id: argv.c,v 1.32 2009/02/26 14:56:27 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
#define ARGS_DELIM (1 << 1)
#define ARGS_TABSEP (1 << 2)
-static int lookup(int, const char *);
+static int argv_a2arg(int, const char *);
static int args(struct mdoc *, int, int *,
char *, int, char **);
static int argv(struct mdoc *, int,
0, /* Ed */
0, /* Bl */
0, /* El */
- ARGS_DELIM, /* It */
+ 0, /* It */
ARGS_DELIM, /* Ad */
ARGS_DELIM, /* An */
ARGS_DELIM, /* Ar */
args(struct mdoc *mdoc, int line,
int *pos, char *buf, int fl, char **v)
{
- int i, c;
+ int i;
char *p, *pp;
assert(*pos > 0);
*/
if ((fl & ARGS_DELIM) && mdoc_iscdelim(buf[*pos])) {
- for (i = *pos; (c = buf[i]); ) {
- if ( ! mdoc_iscdelim(c))
+ for (i = *pos; buf[i]; ) {
+ if ( ! mdoc_iscdelim(buf[i]))
break;
i++;
- if (0 == buf[i] || ! isspace(c))
- break;
- i++;
- while (buf[i] && isspace(c))
+ while (buf[i] && isspace((int)buf[i]))
i++;
}
if (0 == buf[i]) {
/* Do non-tabsep look-ahead here. */
if ( ! (ARGS_TABSEP & fl))
- while ((c = buf[*pos])) {
- if (isspace(c))
+ while (buf[*pos]) {
+ if (isspace((int)buf[*pos]))
if ('\\' != buf[*pos - 1])
break;
(*pos)++;
static int
-lookup(int tok, const char *argv)
+argv_a2arg(int tok, const char *argv)
{
switch (tok) {
mdoc_argv(struct mdoc *mdoc, int line, int tok,
struct mdoc_arg *v, int *pos, char *buf)
{
- int i, ppos;
+ int i;
char *p;
(void)memset(v, 0, sizeof(struct mdoc_arg));
if (buf[*pos])
buf[(*pos)++] = 0;
- if (MDOC_ARG_MAX == (v->arg = lookup(tok, p))) {
+ if (MDOC_ARG_MAX == (v->arg = argv_a2arg(tok, p))) {
if ( ! pwarn(mdoc, line, i, WARGVPARM))
return(ARGV_ERROR);
return(ARGV_WORD);
/* FIXME: whitespace if no value. */
- ppos = *pos;
if ( ! argv(mdoc, line, v, pos, buf))
return(ARGV_ERROR);