version 1.14, 2009/07/17 10:56:57 |
version 1.16, 2009/07/17 12:28:38 |
|
|
#define ARGS_QUOTED (1 << 0) |
#define ARGS_QUOTED (1 << 0) |
#define ARGS_DELIM (1 << 1) |
#define ARGS_DELIM (1 << 1) |
#define ARGS_TABSEP (1 << 2) |
#define ARGS_TABSEP (1 << 2) |
#define ARGS_ARGVLIKE (1 << 3) |
|
|
|
#define ARGV_NONE (1 << 0) |
#define ARGV_NONE (1 << 0) |
#define ARGV_SINGLE (1 << 1) |
#define ARGV_SINGLE (1 << 1) |
Line 127 static int mdoc_argflags[MDOC_MAX] = { |
|
Line 126 static int mdoc_argflags[MDOC_MAX] = { |
|
0, /* Ot */ |
0, /* Ot */ |
ARGS_DELIM, /* Pa */ |
ARGS_DELIM, /* Pa */ |
0, /* Rv */ |
0, /* Rv */ |
ARGS_DELIM | ARGS_ARGVLIKE, /* St */ |
ARGS_DELIM, /* St */ |
ARGS_DELIM, /* Va */ |
ARGS_DELIM, /* Va */ |
ARGS_DELIM, /* Vt */ |
ARGS_DELIM, /* Vt */ |
ARGS_DELIM, /* Xr */ |
ARGS_DELIM, /* Xr */ |
|
|
mdoc_argv(struct mdoc *m, int line, int tok, |
mdoc_argv(struct mdoc *m, int line, int tok, |
struct mdoc_arg **v, int *pos, char *buf) |
struct mdoc_arg **v, int *pos, char *buf) |
{ |
{ |
int i; |
|
char *p, sv; |
char *p, sv; |
struct mdoc_argv tmp; |
struct mdoc_argv tmp; |
struct mdoc_arg *arg; |
struct mdoc_arg *arg; |
Line 232 mdoc_argv(struct mdoc *m, int line, int tok, |
|
Line 230 mdoc_argv(struct mdoc *m, int line, int tok, |
|
|
|
assert(' ' != buf[*pos]); |
assert(' ' != buf[*pos]); |
|
|
if ('-' != buf[*pos] || ARGS_ARGVLIKE & mdoc_argflags[tok]) |
|
return(ARGV_WORD); |
|
|
|
/* Parse through to the first unescaped space. */ |
/* Parse through to the first unescaped space. */ |
|
|
i = *pos; |
|
p = &buf[++(*pos)]; |
p = &buf[++(*pos)]; |
|
|
assert(*pos > 0); |
assert(*pos > 0); |
Line 268 mdoc_argv(struct mdoc *m, int line, int tok, |
|
Line 262 mdoc_argv(struct mdoc *m, int line, int tok, |
|
/* XXX - restore saved zeroed byte. */ |
/* XXX - restore saved zeroed byte. */ |
if (sv) |
if (sv) |
buf[*pos - 1] = sv; |
buf[*pos - 1] = sv; |
if ( ! mdoc_pwarn(m, line, i, EARGVPARM)) |
|
return(ARGV_ERROR); |
|
return(ARGV_WORD); |
return(ARGV_WORD); |
} |
} |
|
|
Line 405 args(struct mdoc *m, int line, int *pos, |
|
Line 397 args(struct mdoc *m, int line, int *pos, |
|
|
|
if ('\"' == buf[*pos] && ! (fl & ARGS_QUOTED)) |
if ('\"' == buf[*pos] && ! (fl & ARGS_QUOTED)) |
if ( ! mdoc_pwarn(m, line, *pos, EQUOTPARM)) |
if ( ! mdoc_pwarn(m, line, *pos, EQUOTPARM)) |
return(ARGS_ERROR); |
|
|
|
if ( ! (fl & ARGS_ARGVLIKE) && '-' == buf[*pos]) |
|
if ( ! mdoc_pwarn(m, line, *pos, EARGVPARM)) |
|
return(ARGS_ERROR); |
return(ARGS_ERROR); |
|
|
/* |
/* |