version 1.3, 2011/11/13 11:10:27 |
version 1.4, 2011/11/14 10:07:06 |
|
|
} |
} |
|
|
struct expr * |
struct expr * |
exprcomp(int argc, char *argv[]) |
exprcomp(char *buf) |
{ |
{ |
struct expr *p; |
struct expr *p; |
struct expr e; |
struct expr e; |
char *key; |
char *key; |
int i, icase; |
int i, icase; |
|
|
if (0 >= argc) |
if ('\0' == *buf) |
return(NULL); |
return(NULL); |
|
|
/* |
/* |
* Choose regex or substring match. |
* Choose regex or substring match. |
*/ |
*/ |
|
|
if (NULL == (e.v = strpbrk(*argv, "=~"))) { |
if (NULL == (e.v = strpbrk(buf, "=~"))) { |
e.regex = 0; |
e.regex = 0; |
e.v = *argv; |
e.v = buf; |
} else { |
} else { |
e.regex = '~' == *e.v; |
e.regex = '~' == *e.v; |
*e.v++ = '\0'; |
*e.v++ = '\0'; |
Line 482 exprcomp(int argc, char *argv[]) |
|
Line 482 exprcomp(int argc, char *argv[]) |
|
|
|
icase = 0; |
icase = 0; |
e.mask = 0; |
e.mask = 0; |
if (*argv < e.v) { |
if (buf < e.v) { |
while (NULL != (key = strsep(argv, ","))) { |
while (NULL != (key = strsep(&buf, ","))) { |
if ('i' == key[0] && '\0' == key[1]) { |
if ('i' == key[0] && '\0' == key[1]) { |
icase = REG_ICASE; |
icase = REG_ICASE; |
continue; |
continue; |
} |
} |
i = 0; |
i = 0; |
while (types[i].mask && |
while (types[i].mask && |
strcmp(types[i].name, key)) |
strcmp(types[i].name, key)) |
i++; |
i++; |
e.mask |= types[i].mask; |
e.mask |= types[i].mask; |
} |
} |