grep: Put calls to fixmatch() and regmatch() into patmatch()
Both match_one_pattern() and look_ahead() use fixmatch() and regmatch() in the same way. They really want to match a pattern againt a string, but now they need to know if the pattern is fixed or regexp. This change cleans this up by introducing patmatch() (from "pattern match") and also simplifies inserting other ways of matching a string. Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michał Kiedrowicz committed
May 5, 2011 at 00:00 UTC
97e777842260a5339bb5272a35ebeaeaae554937
1 file changed
+15
-8
grep.c
+15
-8
@@ -412,6 +412,19 @@ static int regmatch(const regex_t *preg, char *line, char *eol,
412
return regexec(preg, line, 1, match, eflags);
413
}
414
415
+static int patmatch(struct grep_pat *p, char *line, char *eol,
416
+ regmatch_t *match, int eflags)
417
+{
418
+ int hit;
419
+
420
+ if (p->fixed)
421
+ hit = !fixmatch(p, line, eol, match);
422
+ else
423
+ hit = !regmatch(&p->regexp, line, eol, match, eflags);
424
+
425
+ return hit;
426
+}
427
+
428
static int strip_timestamp(char *bol, char **eol_p)
429
{
430
char *eol = *eol_p;
@@ -461,10 +474,7 @@ static int match_one_pattern(struct grep_pat *p, char *bol, char *eol,
474
}
475
476
again:
464
- if (p->fixed)
465
- hit = !fixmatch(p, bol, eol, pmatch);
466
- else
467
- hit = !regmatch(&p->regexp, bol, eol, pmatch, eflags);
477
+ hit = patmatch(p, bol, eol, pmatch, eflags);
478
479
if (hit && p->word_regexp) {
480
if ((pmatch[0].rm_so < 0) ||
@@ -791,10 +801,7 @@ static int look_ahead(struct grep_opt *opt,
801
int hit;
802
regmatch_t m;
803
794
- if (p->fixed)
795
- hit = !fixmatch(p, bol, bol + *left_p, &m);
796
- else
797
- hit = !regmatch(&p->regexp, bol, bol + *left_p, &m, 0);
804
+ hit = patmatch(p, bol, bol + *left_p, &m, 0);
805
if (!hit || m.rm_so < 0 || m.rm_eo < 0)
806
continue;
807
if (earliest < 0 || m.rm_so < earliest)