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

Function compile_grep_patterns

grep.c:770–815  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

768}
769
770void compile_grep_patterns(struct grep_opt *opt)
771{
772 struct grep_pat *p;
773 struct grep_expr *header_expr = prep_header_patterns(opt);
774 int extended = 0;
775
776 for (p = opt->pattern_list; p; p = p->next) {
777 switch (p->token) {
778 case GREP_PATTERN: /* atom */
779 case GREP_PATTERN_HEAD:
780 case GREP_PATTERN_BODY:
781 compile_regexp(p, opt);
782 break;
783 default:
784 extended = 1;
785 break;
786 }
787 }
788
789 if (opt->all_match || opt->no_body_match || header_expr)
790 extended = 1;
791 else if (!extended)
792 return;
793
794 p = opt->pattern_list;
795 if (p)
796 opt->pattern_expression = compile_pattern_expr(&p);
797 if (p)
798 die("incomplete pattern expression group: %s", p->pattern);
799
800 if (opt->no_body_match && opt->pattern_expression)
801 opt->pattern_expression = grep_not_expr(opt->pattern_expression);
802
803 if (!header_expr)
804 return;
805
806 if (!opt->pattern_expression)
807 opt->pattern_expression = header_expr;
808 else if (opt->all_match)
809 opt->pattern_expression = grep_splice_or(header_expr,
810 opt->pattern_expression);
811 else
812 opt->pattern_expression = grep_or_expr(opt->pattern_expression,
813 header_expr);
814 opt->all_match = 1;
815}
816
817static void free_pattern_expr(struct grep_expr *x)
818{

Callers 3

setup_revisionsFunction · 0.85
start_threadsFunction · 0.85
cmd_grepFunction · 0.85

Calls 7

prep_header_patternsFunction · 0.85
compile_regexpFunction · 0.85
compile_pattern_exprFunction · 0.85
grep_not_exprFunction · 0.85
grep_splice_orFunction · 0.85
grep_or_exprFunction · 0.85
dieFunction · 0.70

Tested by

no test coverage detected