grep: Extract compile_regexp_failed() from compile_regexp()
This simplifies compile_regexp() a little and allows re-using error handling code. Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michał Kiedrowicz committed
May 9, 2011 at 23:52 UTC
a30c148aa7ec6583dbdb38fa6601df3cf4f5a660
1 file changed
+16
-9
grep.c
+16
-9
@@ -59,6 +59,21 @@ struct grep_opt *grep_opt_dup(const struct grep_opt *opt)
59
return ret;
60
}
61
62
+static NORETURN void compile_regexp_failed(const struct grep_pat *p,
63
+ const char *error)
64
+{
65
+ char where[1024];
66
+
67
+ if (p->no)
68
+ sprintf(where, "In '%s' at %d, ", p->origin, p->no);
69
+ else if (p->origin)
70
+ sprintf(where, "%s, ", p->origin);
71
+ else
72
+ where[0] = 0;
73
+
74
+ die("%s'%s': %s", where, p->pattern, error);
75
+}
76
+
77
static void compile_regexp(struct grep_pat *p, struct grep_opt *opt)
78
{
79
int err;
@@ -73,17 +88,9 @@ static void compile_regexp(struct grep_pat *p, struct grep_opt *opt)
88
err = regcomp(&p->regexp, p->pattern, opt->regflags);
89
if (err) {
90
char errbuf[1024];
76
- char where[1024];
77
- if (p->no)
78
- sprintf(where, "In '%s' at %d, ",
79
- p->origin, p->no);
80
- else if (p->origin)
81
- sprintf(where, "%s, ", p->origin);
82
- else
83
- where[0] = 0;
91
regerror(err, &p->regexp, errbuf, 1024);
92
regfree(&p->regexp);
86
- die("%s'%s': %s", where, p->pattern, errbuf);
93
+ compile_regexp_failed(p, errbuf);
94
}
95
}
96