version 1.85, 2012/11/17 00:26:33 |
version 1.89, 2013/12/25 00:50:05 |
Line 161 static const struct mdocarg mdocargs[MDOC_MAX] = { |
|
Line 161 static const struct mdocarg mdocargs[MDOC_MAX] = { |
|
{ ARGSFL_DELIM, NULL }, /* Ad */ |
{ ARGSFL_DELIM, NULL }, /* Ad */ |
{ ARGSFL_DELIM, args_An }, /* An */ |
{ ARGSFL_DELIM, args_An }, /* An */ |
{ ARGSFL_DELIM, NULL }, /* Ar */ |
{ ARGSFL_DELIM, NULL }, /* Ar */ |
{ ARGSFL_NONE, NULL }, /* Cd */ |
{ ARGSFL_DELIM, NULL }, /* Cd */ |
{ ARGSFL_DELIM, NULL }, /* Cm */ |
{ ARGSFL_DELIM, NULL }, /* Cm */ |
{ ARGSFL_DELIM, NULL }, /* Dv */ |
{ ARGSFL_DELIM, NULL }, /* Dv */ |
{ ARGSFL_DELIM, NULL }, /* Er */ |
{ ARGSFL_DELIM, NULL }, /* Er */ |
Line 241 static const struct mdocarg mdocargs[MDOC_MAX] = { |
|
Line 241 static const struct mdocarg mdocargs[MDOC_MAX] = { |
|
{ ARGSFL_DELIM, NULL }, /* Xc */ |
{ ARGSFL_DELIM, NULL }, /* Xc */ |
{ ARGSFL_NONE, NULL }, /* Xo */ |
{ ARGSFL_NONE, NULL }, /* Xo */ |
{ ARGSFL_NONE, NULL }, /* Fo */ |
{ ARGSFL_NONE, NULL }, /* Fo */ |
{ ARGSFL_NONE, NULL }, /* Fc */ |
{ ARGSFL_DELIM, NULL }, /* Fc */ |
{ ARGSFL_NONE, NULL }, /* Oo */ |
{ ARGSFL_NONE, NULL }, /* Oo */ |
{ ARGSFL_DELIM, NULL }, /* Oc */ |
{ ARGSFL_DELIM, NULL }, /* Oc */ |
{ ARGSFL_NONE, args_Bk }, /* Bk */ |
{ ARGSFL_NONE, args_Bk }, /* Bk */ |
Line 250 static const struct mdocarg mdocargs[MDOC_MAX] = { |
|
Line 250 static const struct mdocarg mdocargs[MDOC_MAX] = { |
|
{ ARGSFL_NONE, NULL }, /* Hf */ |
{ ARGSFL_NONE, NULL }, /* Hf */ |
{ ARGSFL_NONE, NULL }, /* Fr */ |
{ ARGSFL_NONE, NULL }, /* Fr */ |
{ ARGSFL_NONE, NULL }, /* Ud */ |
{ ARGSFL_NONE, NULL }, /* Ud */ |
{ ARGSFL_NONE, NULL }, /* Lb */ |
{ ARGSFL_DELIM, NULL }, /* Lb */ |
{ ARGSFL_NONE, NULL }, /* Lp */ |
{ ARGSFL_NONE, NULL }, /* Lp */ |
{ ARGSFL_DELIM, NULL }, /* Lk */ |
{ ARGSFL_DELIM, NULL }, /* Lk */ |
{ ARGSFL_DELIM, NULL }, /* Mt */ |
{ ARGSFL_DELIM, NULL }, /* Mt */ |
Line 260 static const struct mdocarg mdocargs[MDOC_MAX] = { |
|
Line 260 static const struct mdocarg mdocargs[MDOC_MAX] = { |
|
{ ARGSFL_NONE, NULL }, /* %C */ |
{ ARGSFL_NONE, NULL }, /* %C */ |
{ ARGSFL_NONE, NULL }, /* Es */ |
{ ARGSFL_NONE, NULL }, /* Es */ |
{ ARGSFL_NONE, NULL }, /* En */ |
{ ARGSFL_NONE, NULL }, /* En */ |
{ ARGSFL_NONE, NULL }, /* Dx */ |
{ ARGSFL_DELIM, NULL }, /* Dx */ |
{ ARGSFL_NONE, NULL }, /* %Q */ |
{ ARGSFL_NONE, NULL }, /* %Q */ |
{ ARGSFL_NONE, NULL }, /* br */ |
{ ARGSFL_NONE, NULL }, /* br */ |
{ ARGSFL_NONE, NULL }, /* sp */ |
{ ARGSFL_NONE, NULL }, /* sp */ |
Line 447 args(struct mdoc *mdoc, int line, int *pos, |
|
Line 447 args(struct mdoc *mdoc, int line, int *pos, |
|
char *buf, enum argsflag fl, char **v) |
char *buf, enum argsflag fl, char **v) |
{ |
{ |
char *p, *pp; |
char *p, *pp; |
|
int pairs; |
enum margserr rc; |
enum margserr rc; |
|
|
if ('\0' == buf[*pos]) { |
if ('\0' == buf[*pos]) { |
Line 535 args(struct mdoc *mdoc, int line, int *pos, |
|
Line 536 args(struct mdoc *mdoc, int line, int *pos, |
|
/* Skip ahead. */ ; |
/* Skip ahead. */ ; |
|
|
return(rc); |
return(rc); |
} |
} |
|
|
/* |
/* |
* Process a quoted literal. A quote begins with a double-quote |
* Process a quoted literal. A quote begins with a double-quote |
* and ends with a double-quote NOT preceded by a double-quote. |
* and ends with a double-quote NOT preceded by a double-quote. |
|
* NUL-terminate the literal in place. |
|
* Collapse pairs of quotes inside quoted literals. |
* Whitespace is NOT involved in literal termination. |
* Whitespace is NOT involved in literal termination. |
*/ |
*/ |
|
|
Line 550 args(struct mdoc *mdoc, int line, int *pos, |
|
Line 553 args(struct mdoc *mdoc, int line, int *pos, |
|
if (MDOC_PPHRASE & mdoc->flags) |
if (MDOC_PPHRASE & mdoc->flags) |
mdoc->flags |= MDOC_PHRASELIT; |
mdoc->flags |= MDOC_PHRASELIT; |
|
|
|
pairs = 0; |
for ( ; buf[*pos]; (*pos)++) { |
for ( ; buf[*pos]; (*pos)++) { |
|
/* Move following text left after quoted quotes. */ |
|
if (pairs) |
|
buf[*pos - pairs] = buf[*pos]; |
if ('\"' != buf[*pos]) |
if ('\"' != buf[*pos]) |
continue; |
continue; |
|
/* Unquoted quotes end quoted args. */ |
if ('\"' != buf[*pos + 1]) |
if ('\"' != buf[*pos + 1]) |
break; |
break; |
|
/* Quoted quotes collapse. */ |
|
pairs++; |
(*pos)++; |
(*pos)++; |
} |
} |
|
if (pairs) |
|
buf[*pos - pairs] = '\0'; |
|
|
if ('\0' == buf[*pos]) { |
if ('\0' == buf[*pos]) { |
if (MDOC_PPHRASE & mdoc->flags) |
if (MDOC_PPHRASE & mdoc->flags) |