From a30c148aa7ec6583dbdb38fa6601df3cf4f5a660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Kiedrowicz?= Date: Mon, 9 May 2011 23:52:04 +0200 Subject: [PATCH] grep: Extract compile_regexp_failed() from compile_regexp() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This simplifies compile_regexp() a little and allows re-using error handling code. Signed-off-by: MichaƂ Kiedrowicz Signed-off-by: Junio C Hamano --- grep.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/grep.c b/grep.c index 250462e0c0..870d10cf69 100644 --- a/grep.c +++ b/grep.c @@ -59,6 +59,21 @@ struct grep_opt *grep_opt_dup(const struct grep_opt *opt) return ret; } +static NORETURN void compile_regexp_failed(const struct grep_pat *p, + const char *error) +{ + char where[1024]; + + if (p->no) + sprintf(where, "In '%s' at %d, ", p->origin, p->no); + else if (p->origin) + sprintf(where, "%s, ", p->origin); + else + where[0] = 0; + + die("%s'%s': %s", where, p->pattern, error); +} + static void compile_regexp(struct grep_pat *p, struct grep_opt *opt) { int err; @@ -73,17 +88,9 @@ static void compile_regexp(struct grep_pat *p, struct grep_opt *opt) err = regcomp(&p->regexp, p->pattern, opt->regflags); if (err) { char errbuf[1024]; - char where[1024]; - if (p->no) - sprintf(where, "In '%s' at %d, ", - p->origin, p->no); - else if (p->origin) - sprintf(where, "%s, ", p->origin); - else - where[0] = 0; regerror(err, &p->regexp, errbuf, 1024); regfree(&p->regexp); - die("%s'%s': %s", where, p->pattern, errbuf); + compile_regexp_failed(p, errbuf); } }