version 1.2, 2011/11/09 22:05:56 |
version 1.3, 2011/11/09 23:31:36 |
Line 462 exprcomp(int cs, char *argv[], int argc) |
|
Line 462 exprcomp(int cs, char *argv[], int argc) |
|
{ |
{ |
struct expr *p; |
struct expr *p; |
struct expr e; |
struct expr e; |
int i, ch; |
int i, pos, ch; |
|
|
if (3 != argc) |
pos = 0; |
|
|
|
if (pos > argc) |
return(NULL); |
return(NULL); |
|
|
if (0 == strcmp("-eq", argv[0])) |
for (i = 0; 0 != types[i].mask; i++) |
|
if (0 == strcmp(types[i].name, argv[pos])) |
|
break; |
|
|
|
if (0 == (e.mask = types[i].mask)) |
|
return(NULL); |
|
|
|
if (++pos > argc--) |
|
return(NULL); |
|
|
|
if ('-' != *argv[pos]) |
e.match = cs ? MATCH_STRCASE : MATCH_STR; |
e.match = cs ? MATCH_STRCASE : MATCH_STR; |
else if (0 == strcmp("-ieq", argv[0])) |
else if (0 == strcmp("-eq", argv[pos])) |
|
e.match = cs ? MATCH_STRCASE : MATCH_STR; |
|
else if (0 == strcmp("-ieq", argv[pos])) |
e.match = MATCH_STRCASE; |
e.match = MATCH_STRCASE; |
else if (0 == strcmp("-re", argv[0])) |
else if (0 == strcmp("-re", argv[pos])) |
e.match = cs ? MATCH_REGEXCASE : MATCH_REGEX; |
e.match = cs ? MATCH_REGEXCASE : MATCH_REGEX; |
else if (0 == strcmp("-ire", argv[0])) |
else if (0 == strcmp("-ire", argv[pos])) |
e.match = MATCH_REGEXCASE; |
e.match = MATCH_REGEXCASE; |
else |
else |
return(NULL); |
return(NULL); |
|
|
for (i = 0; 0 != types[i].mask; i++) |
if ('-' == *argv[pos]) |
if (0 == strcmp(types[i].name, argv[1])) |
pos++; |
break; |
|
|
|
if (0 == (e.mask = types[i].mask)) |
if (pos > argc--) |
return(NULL); |
return(NULL); |
|
|
e.v = mandoc_strdup(argv[2]); |
e.v = mandoc_strdup(argv[pos]); |
|
|
if (MATCH_REGEX == e.match || MATCH_REGEXCASE == e.match) { |
if (MATCH_REGEX == e.match || MATCH_REGEXCASE == e.match) { |
ch = REG_EXTENDED | REG_NOSUB; |
ch = REG_EXTENDED | REG_NOSUB; |