grep: factor out create_grep_pat()

Add create_grep_pat(), a shared helper for all grep pattern allocation and initialization needs. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>

René Scharfe committed May 20, 2012 at 16:32 UTC fc456751102ededf8405446e70c228836d390f81
1 file changed +17 -11
grep.c
+17 -11
@@ -3,15 +3,26 @@
3 #include "userdiff.h"
4 #include "xdiff-interface.h"
5
6 -void append_header_grep_pattern(struct grep_opt *opt, enum grep_header_field field, const char *pat)
6 +static struct grep_pat *create_grep_pat(const char *pat, size_t patlen,
7 + const char *origin, int no,
8 + enum grep_pat_token t,
9 + enum grep_header_field field)
10 {
11 struct grep_pat *p = xcalloc(1, sizeof(*p));
12 p->pattern = pat;
10 - p->patternlen = strlen(pat);
11 - p->origin = "header";
12 - p->no = 0;
13 - p->token = GREP_PATTERN_HEAD;
13 + p->patternlen = patlen;
14 + p->origin = origin;
15 + p->no = no;
16 + p->token = t;
17 p->field = field;
18 + return p;
19 +}
20 +
21 +void append_header_grep_pattern(struct grep_opt *opt,
22 + enum grep_header_field field, const char *pat)
23 +{
24 + struct grep_pat *p = create_grep_pat(pat, strlen(pat), "header", 0,
25 + GREP_PATTERN_HEAD, field);
26 *opt->header_tail = p;
27 opt->header_tail = &p->next;
28 p->next = NULL;
@@ -26,12 +37,7 @@ void append_grep_pattern(struct grep_opt *opt, const char *pat,
37 void append_grep_pat(struct grep_opt *opt, const char *pat, size_t patlen,
38 const char *origin, int no, enum grep_pat_token t)
39 {
29 - struct grep_pat *p = xcalloc(1, sizeof(*p));
30 - p->pattern = pat;
31 - p->patternlen = patlen;
32 - p->origin = origin;
33 - p->no = no;
34 - p->token = t;
40 + struct grep_pat *p = create_grep_pat(pat, patlen, origin, no, t, 0);
41 *opt->pattern_tail = p;
42 opt->pattern_tail = &p->next;
43 p->next = NULL;