index f9a45258aa0485df6f6205aa8121bdad07a480b0..db341b6797ccb5e44796ff1556437677f595a913 100644 (file)
--- a/grep.c
+++ b/grep.c
p->next = NULL;
}
-static int isregexspecial(int c)
-{
- return c == '\0' || is_glob_special(c) ||
- c == '$' || c == '(' || c == ')' || c == '+' ||
- c == '.' || c == '^' || c == '{' || c == '|';
-}
-
static int is_fixed(const char *s)
{
- while (!isregexspecial(*s))
+ while (*s && !is_regex_special(*s))
s++;
return !*s;
}
h = !match_expr_eval(o, x->u.unary, bol, eol, ctx, 0);
break;
case GREP_NODE_AND:
- if (!collect_hits)
- return (match_expr_eval(o, x->u.binary.left,
- bol, eol, ctx, 0) &&
- match_expr_eval(o, x->u.binary.right,
- bol, eol, ctx, 0));
- h = match_expr_eval(o, x->u.binary.left, bol, eol, ctx, 0);
- h &= match_expr_eval(o, x->u.binary.right, bol, eol, ctx, 0);
+ if (!match_expr_eval(o, x->u.binary.left, bol, eol, ctx, 0))
+ return 0;
+ h = match_expr_eval(o, x->u.binary.right, bol, eol, ctx, 0);
break;
case GREP_NODE_OR:
if (!collect_hits)