version 1.14, 2009/01/16 11:50:54 |
version 1.17, 2009/01/19 17:02:58 |
|
|
#include "private.h" |
#include "private.h" |
|
|
|
|
|
/* FIXME: .It called with -column and quoted arguments. */ |
|
|
static int lookup(int, const char *); |
static int lookup(int, const char *); |
static int parse(struct mdoc *, int, int, |
static int parse(struct mdoc *, int, |
struct mdoc_arg *, int *, char *); |
struct mdoc_arg *, int *, char *); |
static int parse_single(struct mdoc *, int, |
static int parse_single(struct mdoc *, int, |
struct mdoc_arg *, int *, char *); |
struct mdoc_arg *, int *, char *); |
Line 76 mdoc_args(struct mdoc *mdoc, int line, int *pos, char |
|
Line 78 mdoc_args(struct mdoc *mdoc, int line, int *pos, char |
|
|
|
/* Parse routine for non-quoted string. */ |
/* Parse routine for non-quoted string. */ |
|
|
if ('\"' != buf[*pos]) { |
assert(*pos > 0); |
|
if ('\"' != buf[*pos] || ! (ARGS_QUOTED & fl)) { |
*v = &buf[*pos]; |
*v = &buf[*pos]; |
|
|
/* FIXME: UGLY tab-sep processing. */ |
/* FIXME: UGLY tab-sep processing. */ |
Line 96 mdoc_args(struct mdoc *mdoc, int line, int *pos, char |
|
Line 99 mdoc_args(struct mdoc *mdoc, int line, int *pos, char |
|
} |
} |
(*pos)++; |
(*pos)++; |
} |
} |
else |
else { |
while (buf[*pos] && ! isspace(buf[*pos])) |
while (buf[*pos]) { |
|
if (isspace(buf[*pos])) |
|
if ('\\' != buf[*pos - 1]) |
|
break; |
(*pos)++; |
(*pos)++; |
|
} |
|
} |
|
|
if (0 == buf[*pos]) |
if (0 == buf[*pos]) |
return(ARGS_WORD); |
return(ARGS_WORD); |
Line 402 parse_single(struct mdoc *mdoc, int line, |
|
Line 410 parse_single(struct mdoc *mdoc, int line, |
|
|
|
|
|
static int |
static int |
parse(struct mdoc *mdoc, int line, int tok, |
parse(struct mdoc *mdoc, int line, |
struct mdoc_arg *v, int *pos, char *buf) |
struct mdoc_arg *v, int *pos, char *buf) |
{ |
{ |
|
|
Line 449 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
Line 457 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
v->line = line; |
v->line = line; |
v->pos = *pos; |
v->pos = *pos; |
|
|
while (buf[*pos] && ! isspace(buf[*pos])) |
assert(*pos > 0); |
|
while (buf[*pos]) { |
|
if (isspace(buf[*pos])) |
|
if ('\\' != buf[*pos - 1]) |
|
break; |
(*pos)++; |
(*pos)++; |
|
} |
|
|
if (buf[*pos]) |
if (buf[*pos]) |
buf[(*pos)++] = 0; |
buf[(*pos)++] = 0; |
Line 467 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
Line 480 mdoc_argv(struct mdoc *mdoc, int line, int tok, |
|
/* FIXME: whitespace if no value. */ |
/* FIXME: whitespace if no value. */ |
|
|
ppos = *pos; |
ppos = *pos; |
if ( ! parse(mdoc, line, tok, v, pos, buf)) |
if ( ! parse(mdoc, line, v, pos, buf)) |
return(ARGV_ERROR); |
return(ARGV_ERROR); |
if ( ! postparse(mdoc, line, v, ppos)) |
if ( ! postparse(mdoc, line, v, ppos)) |
return(ARGV_ERROR); |
return(ARGV_ERROR); |