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