MCPcopy Create free account
hub / github.com/git/git / prep_header_patterns

Function prep_header_patterns

grep.c:705–751  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

703}
704
705static struct grep_expr *prep_header_patterns(struct grep_opt *opt)
706{
707 struct grep_pat *p;
708 struct grep_expr *header_expr;
709 struct grep_expr *(header_group[GREP_HEADER_FIELD_MAX]);
710 enum grep_header_field fld;
711
712 if (!opt->header_list)
713 return NULL;
714
715 for (p = opt->header_list; p; p = p->next) {
716 if (p->token != GREP_PATTERN_HEAD)
717 BUG("a non-header pattern in grep header list.");
718 if (p->field < GREP_HEADER_FIELD_MIN ||
719 GREP_HEADER_FIELD_MAX <= p->field)
720 BUG("unknown header field %d", p->field);
721 compile_regexp(p, opt);
722 }
723
724 for (fld = 0; fld < GREP_HEADER_FIELD_MAX; fld++)
725 header_group[fld] = NULL;
726
727 for (p = opt->header_list; p; p = p->next) {
728 struct grep_expr *h;
729 struct grep_pat *pp = p;
730
731 h = compile_pattern_atom(&pp);
732 if (!h || pp != p->next)
733 BUG("malformed header expr");
734 if (!header_group[p->field]) {
735 header_group[p->field] = h;
736 continue;
737 }
738 header_group[p->field] = grep_or_expr(h, header_group[p->field]);
739 }
740
741 header_expr = NULL;
742
743 for (fld = 0; fld < GREP_HEADER_FIELD_MAX; fld++) {
744 if (!header_group[fld])
745 continue;
746 if (!header_expr)
747 header_expr = grep_true_expr();
748 header_expr = grep_or_expr(header_group[fld], header_expr);
749 }
750 return header_expr;
751}
752
753static struct grep_expr *grep_splice_or(struct grep_expr *x, struct grep_expr *y)
754{

Callers 1

compile_grep_patternsFunction · 0.85

Calls 4

compile_regexpFunction · 0.85
compile_pattern_atomFunction · 0.85
grep_or_exprFunction · 0.85
grep_true_exprFunction · 0.85

Tested by

no test coverage detected