version 1.36, 2009/03/05 12:08:53 |
version 1.37, 2009/03/05 13:12:12 |
|
|
static int argv_a2arg(int, const char *); |
static int argv_a2arg(int, const char *); |
static int args(struct mdoc *, int, int *, |
static int args(struct mdoc *, int, int *, |
char *, int, char **); |
char *, int, char **); |
static int argv(struct mdoc *, int, |
static int argv(struct mdoc *, int, int, |
struct mdoc_arg *, int *, char *); |
struct mdoc_arg *, int *, char *); |
static int argv_single(struct mdoc *, int, |
static int argv_single(struct mdoc *, int, |
struct mdoc_arg *, int *, char *); |
struct mdoc_arg *, int *, char *); |
Line 90 static int mdoc_argvflags[MDOC_ARG_MAX] = { |
|
Line 90 static int mdoc_argvflags[MDOC_ARG_MAX] = { |
|
ARGV_MULTI, /* MDOC_Column */ |
ARGV_MULTI, /* MDOC_Column */ |
ARGV_SINGLE, /* MDOC_Width */ |
ARGV_SINGLE, /* MDOC_Width */ |
ARGV_NONE, /* MDOC_Compact */ |
ARGV_NONE, /* MDOC_Compact */ |
ARGV_OPT_SINGLE, /* MDOC_Std */ |
ARGV_SINGLE, /* MDOC_Std */ |
ARGV_NONE, /* MDOC_p1003_1_88 */ |
ARGV_NONE, /* MDOC_p1003_1_88 */ |
ARGV_NONE, /* MDOC_p1003_1_90 */ |
ARGV_NONE, /* MDOC_p1003_1_90 */ |
ARGV_NONE, /* MDOC_p1003_1_96 */ |
ARGV_NONE, /* MDOC_p1003_1_96 */ |
Line 389 args(struct mdoc *mdoc, int line, |
|
Line 389 args(struct mdoc *mdoc, int line, |
|
break; |
break; |
i++; |
i++; |
/* There must be at least one space... */ |
/* There must be at least one space... */ |
if (0 == buf[i] || ! isspace((int)buf[i])) |
if (0 == buf[i] || ! isspace((u_char)buf[i])) |
break; |
break; |
i++; |
i++; |
while (buf[i] && isspace((int)buf[i])) |
while (buf[i] && isspace((u_char)buf[i])) |
i++; |
i++; |
} |
} |
if (0 == buf[i]) { |
if (0 == buf[i]) { |
Line 500 args(struct mdoc *mdoc, int line, |
|
Line 500 args(struct mdoc *mdoc, int line, |
|
|
|
if ( ! (ARGS_TABSEP & fl)) |
if ( ! (ARGS_TABSEP & fl)) |
while (buf[*pos]) { |
while (buf[*pos]) { |
if (isspace((int)buf[*pos])) |
if (isspace((u_char)buf[*pos])) |
if ('\\' != buf[*pos - 1]) |
if ('\\' != buf[*pos - 1]) |
break; |
break; |
(*pos)++; |
(*pos)++; |
Line 515 args(struct mdoc *mdoc, int line, |
|
Line 515 args(struct mdoc *mdoc, int line, |
|
return(ARGS_WORD); |
return(ARGS_WORD); |
|
|
if ( ! (ARGS_TABSEP & fl)) |
if ( ! (ARGS_TABSEP & fl)) |
while (buf[*pos] && isspace((int)buf[*pos])) |
while (buf[*pos] && isspace((u_char)buf[*pos])) |
(*pos)++; |
(*pos)++; |
|
|
if (buf[*pos]) |
if (buf[*pos]) |
Line 547 args(struct mdoc *mdoc, int line, |
|
Line 547 args(struct mdoc *mdoc, int line, |
|
if (0 == buf[*pos]) |
if (0 == buf[*pos]) |
return(ARGS_QWORD); |
return(ARGS_QWORD); |
|
|
while (buf[*pos] && isspace((int)buf[*pos])) |
while (buf[*pos] && isspace((u_char)buf[*pos])) |
(*pos)++; |
(*pos)++; |
|
|
if (buf[*pos]) |
if (buf[*pos]) |
Line 823 argv_single(struct mdoc *mdoc, int line, |
|
Line 823 argv_single(struct mdoc *mdoc, int line, |
|
* multiple parameters. |
* multiple parameters. |
*/ |
*/ |
static int |
static int |
argv(struct mdoc *mdoc, int line, |
argv(struct mdoc *mdoc, int tok, int line, |
struct mdoc_arg *v, int *pos, char *buf) |
struct mdoc_arg *v, int *pos, char *buf) |
{ |
{ |
|
int fl; |
|
|
v->sz = 0; |
v->sz = 0; |
v->value = NULL; |
v->value = NULL; |
|
fl = mdoc_argvflags[v->arg]; |
|
|
switch (mdoc_argvflags[v->arg]) { |
/* |
|
* Override the default per-argument value. |
|
*/ |
|
|
|
switch (tok) { |
|
case (MDOC_Ex): |
|
fl = ARGV_OPT_SINGLE; |
|
break; |
|
default: |
|
break; |
|
} |
|
|
|
switch (fl) { |
case (ARGV_SINGLE): |
case (ARGV_SINGLE): |
return(argv_single(mdoc, line, v, pos, buf)); |
return(argv_single(mdoc, line, v, pos, buf)); |
case (ARGV_MULTI): |
case (ARGV_MULTI): |
Line 863 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
Line 877 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
if (0 == buf[*pos]) |
if (0 == buf[*pos]) |
return(ARGV_EOLN); |
return(ARGV_EOLN); |
|
|
assert( ! isspace((int)buf[*pos])); |
assert( ! isspace((u_char)buf[*pos])); |
|
|
if ('-' != buf[*pos]) |
if ('-' != buf[*pos]) |
return(ARGV_WORD); |
return(ARGV_WORD); |
Line 878 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
Line 892 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
|
|
/* LINTED */ |
/* LINTED */ |
while (buf[*pos]) { |
while (buf[*pos]) { |
if (isspace((int)buf[*pos])) |
if (isspace((u_char)buf[*pos])) |
if ('\\' != buf[*pos - 1]) |
if ('\\' != buf[*pos - 1]) |
break; |
break; |
(*pos)++; |
(*pos)++; |
Line 899 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
Line 913 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
return(ARGV_WORD); |
return(ARGV_WORD); |
} |
} |
|
|
while (buf[*pos] && isspace((int)buf[*pos])) |
while (buf[*pos] && isspace((u_char)buf[*pos])) |
(*pos)++; |
(*pos)++; |
|
|
/* FIXME: whitespace if no value. */ |
/* FIXME: whitespace if no value. */ |
|
|
if ( ! argv(mdoc, line, v, pos, buf)) |
if ( ! argv(mdoc, tok, line, v, pos, buf)) |
return(ARGV_ERROR); |
return(ARGV_ERROR); |
|
|
return(ARGV_ARG); |
return(ARGV_ARG); |