version 1.46, 2010/05/14 12:55:22 |
version 1.49, 2010/05/17 22:11:42 |
|
|
#include <stdio.h> |
#include <stdio.h> |
#include <string.h> |
#include <string.h> |
|
|
|
#include "mandoc.h" |
#include "libmdoc.h" |
#include "libmdoc.h" |
#include "libmandoc.h" |
#include "libmandoc.h" |
|
|
Line 399 args(struct mdoc *m, int line, int *pos, |
|
Line 400 args(struct mdoc *m, int line, int *pos, |
|
assert(' ' != buf[*pos]); |
assert(' ' != buf[*pos]); |
|
|
if ('\0' == buf[*pos]) { |
if ('\0' == buf[*pos]) { |
if (ARGS_PPHRASED & fl) |
if (MDOC_PPHRASE & m->flags) |
return(ARGS_EOLN); |
return(ARGS_EOLN); |
/* |
/* |
* If we're not in a partial phrase and the flag for |
* If we're not in a partial phrase and the flag for |
Line 407 args(struct mdoc *m, int line, int *pos, |
|
Line 408 args(struct mdoc *m, int line, int *pos, |
|
* is unterminated. |
* is unterminated. |
*/ |
*/ |
if (MDOC_PHRASELIT & m->flags) |
if (MDOC_PHRASELIT & m->flags) |
if ( ! mdoc_pwarn(m, line, *pos, EQUOTTERM)) |
if ( ! mdoc_pmsg(m, line, *pos, MANDOCERR_BADQUOTE)) |
return(ARGS_ERROR); |
return(ARGS_ERROR); |
|
|
m->flags &= ~MDOC_PHRASELIT; |
m->flags &= ~MDOC_PHRASELIT; |
Line 421 args(struct mdoc *m, int line, int *pos, |
|
Line 422 args(struct mdoc *m, int line, int *pos, |
|
* we ONLY care about closing delimiters. |
* we ONLY care about closing delimiters. |
*/ |
*/ |
|
|
if ((fl & ARGS_DELIM) && mdoc_iscdelim(buf[*pos]) > 1) { |
if ((fl & ARGS_DELIM) && DELIM_CLOSE == mdoc_iscdelim(buf[*pos])) { |
for (i = *pos; buf[i]; ) { |
for (i = *pos; buf[i]; ) { |
if (mdoc_iscdelim(buf[i]) < 2) |
enum mdelim d = mdoc_iscdelim(buf[i]); |
|
if (DELIM_NONE == d || DELIM_OPEN == d) |
break; |
break; |
i++; |
i++; |
if ('\0' == buf[i] || ' ' != buf[i]) |
if ('\0' == buf[i] || ' ' != buf[i]) |
Line 439 args(struct mdoc *m, int line, int *pos, |
|
Line 441 args(struct mdoc *m, int line, int *pos, |
|
return(ARGS_PUNCT); |
return(ARGS_PUNCT); |
if (ARGS_NOWARN & fl) |
if (ARGS_NOWARN & fl) |
return(ARGS_PUNCT); |
return(ARGS_PUNCT); |
if ( ! mdoc_pwarn(m, line, *pos, ETAILWS)) |
if ( ! mdoc_pmsg(m, line, *pos, MANDOCERR_EOLNSPACE)) |
return(ARGS_ERROR); |
return(ARGS_ERROR); |
return(ARGS_PUNCT); |
return(ARGS_PUNCT); |
} |
} |
Line 494 args(struct mdoc *m, int line, int *pos, |
|
Line 496 args(struct mdoc *m, int line, int *pos, |
|
|
|
/* Whitespace check for eoln case... */ |
/* Whitespace check for eoln case... */ |
if (0 == *p && ' ' == *(p - 1) && ! (ARGS_NOWARN & fl)) |
if (0 == *p && ' ' == *(p - 1) && ! (ARGS_NOWARN & fl)) |
if ( ! mdoc_pwarn(m, line, *pos, ETAILWS)) |
if ( ! mdoc_pmsg(m, line, *pos, MANDOCERR_EOLNSPACE)) |
return(ARGS_ERROR); |
return(ARGS_ERROR); |
|
|
*pos += (int)(p - *v); |
*pos += (int)(p - *v); |
Line 525 args(struct mdoc *m, int line, int *pos, |
|
Line 527 args(struct mdoc *m, int line, int *pos, |
|
if ( ! (MDOC_PHRASELIT & m->flags)) |
if ( ! (MDOC_PHRASELIT & m->flags)) |
*v = &buf[++(*pos)]; |
*v = &buf[++(*pos)]; |
|
|
if (ARGS_PPHRASED & fl) |
if (MDOC_PPHRASE & m->flags) |
m->flags |= MDOC_PHRASELIT; |
m->flags |= MDOC_PHRASELIT; |
|
|
for ( ; buf[*pos]; (*pos)++) { |
for ( ; buf[*pos]; (*pos)++) { |
Line 537 args(struct mdoc *m, int line, int *pos, |
|
Line 539 args(struct mdoc *m, int line, int *pos, |
|
} |
} |
|
|
if ('\0' == buf[*pos]) { |
if ('\0' == buf[*pos]) { |
if (ARGS_NOWARN & fl || ARGS_PPHRASED & fl) |
if (ARGS_NOWARN & fl || MDOC_PPHRASE & m->flags) |
return(ARGS_QWORD); |
return(ARGS_QWORD); |
if ( ! mdoc_pwarn(m, line, *pos, EQUOTTERM)) |
if ( ! mdoc_pmsg(m, line, *pos, MANDOCERR_BADQUOTE)) |
return(ARGS_ERROR); |
return(ARGS_ERROR); |
return(ARGS_QWORD); |
return(ARGS_QWORD); |
} |
} |
Line 554 args(struct mdoc *m, int line, int *pos, |
|
Line 556 args(struct mdoc *m, int line, int *pos, |
|
(*pos)++; |
(*pos)++; |
|
|
if (0 == buf[*pos] && ! (ARGS_NOWARN & fl)) |
if (0 == buf[*pos] && ! (ARGS_NOWARN & fl)) |
if ( ! mdoc_pwarn(m, line, *pos, ETAILWS)) |
if ( ! mdoc_pmsg(m, line, *pos, MANDOCERR_EOLNSPACE)) |
return(ARGS_ERROR); |
return(ARGS_ERROR); |
|
|
return(ARGS_QWORD); |
return(ARGS_QWORD); |
Line 578 args(struct mdoc *m, int line, int *pos, |
|
Line 580 args(struct mdoc *m, int line, int *pos, |
|
(*pos)++; |
(*pos)++; |
|
|
if ('\0' == buf[*pos] && ! (ARGS_NOWARN & fl)) |
if ('\0' == buf[*pos] && ! (ARGS_NOWARN & fl)) |
if ( ! mdoc_pwarn(m, line, *pos, ETAILWS)) |
if ( ! mdoc_pmsg(m, line, *pos, MANDOCERR_EOLNSPACE)) |
return(ARGS_ERROR); |
return(ARGS_ERROR); |
|
|
return(ARGS_WORD); |
return(ARGS_WORD); |
Line 750 argv_single(struct mdoc *m, int line, |
|
Line 752 argv_single(struct mdoc *m, int line, |
|
ppos = *pos; |
ppos = *pos; |
|
|
ac = args(m, line, pos, buf, 0, &p); |
ac = args(m, line, pos, buf, 0, &p); |
if (ARGS_ERROR == ac) |
if (ARGS_EOLN == ac) { |
|
mdoc_pmsg(m, line, ppos, MANDOCERR_SYNTARGVCOUNT); |
return(0); |
return(0); |
if (ARGS_EOLN == ac) |
} else if (ARGS_ERROR == ac) |
return(mdoc_perr(m, line, ppos, EARGVAL)); |
return(0); |
|
|
v->sz = 1; |
v->sz = 1; |
v->value = mandoc_malloc(sizeof(char *)); |
v->value = mandoc_malloc(sizeof(char *)); |