Home | History | Annotate | Download | only in dist

Lines Matching refs:pattern

1 /*	$NetBSD: pattern.c,v 1.4 2023/10/06 05:49:49 simonb Exp $	*/
13 * Routines to do pattern matching.
23 * Compile a search pattern, for future use by match_pattern.
25 static int compile_pattern2(char *pattern, int search_type, PATTERN_TYPE *comp_pattern, int show_error)
34 if (re_compile_pattern(pattern, strlen(pattern), comp))
38 error("Invalid pattern", NULL_PARG);
50 if (regcomp(comp, pattern, REGCOMP_FLAG | (is_caseless ? REG_ICASE : 0)))
54 error("Invalid pattern", NULL_PARG);
68 pcre *comp = pcre_compile(pattern,
85 pcre2_code *comp = pcre2_compile((PCRE2_SPTR)pattern, strlen(pattern),
103 if ((parg.p_string = re_comp(pattern)) != NULL)
113 if ((comp = regcmp(pattern, 0)) == NULL)
116 error("Invalid pattern", NULL_PARG);
126 comp = regcomp(pattern);
145 * Like compile_pattern2, but convert the pattern to lowercase if necessary.
147 public int compile_pattern(char *pattern, int search_type, int show_error, PATTERN_TYPE *comp_pattern)
153 cvt_pattern = pattern;
156 cvt_pattern = (char*) ecalloc(1, cvt_length(strlen(pattern), CVT_TO_LC));
157 cvt_text(cvt_pattern, pattern, (int *)NULL, (int *)NULL, CVT_TO_LC);
160 if (cvt_pattern != pattern)
166 * Forget that we have a compiled pattern.
168 public void uncompile_pattern(PATTERN_TYPE *pattern)
171 if (*pattern != NULL)
173 regfree(*pattern);
174 free(*pattern);
176 *pattern = NULL;
179 if (*pattern != NULL)
181 regfree(*pattern);
182 free(*pattern);
184 *pattern = NULL;
187 if (*pattern != NULL)
188 pcre_free(*pattern);
189 *pattern = NULL;
192 if (*pattern != NULL)
193 pcre2_code_free(*pattern);
194 *pattern = NULL;
197 *pattern = 0;
200 if (*pattern != NULL)
201 free(*pattern);
202 *pattern = NULL;
205 if (*pattern != NULL)
206 free(*pattern);
207 *pattern = NULL;
213 * Can a pattern be successfully compiled?
215 public int valid_pattern(char *pattern)
221 result = compile_pattern2(pattern, 0, &comp_pattern, 0);
230 * Is a compiled pattern null?
232 public int is_null_pattern(PATTERN_TYPE pattern)
235 return (pattern == NULL);
238 return (pattern == NULL);
241 return (pattern == NULL);
244 return (pattern == NULL);
247 return (pattern == 0);
250 return (pattern == NULL);
253 return (pattern == NULL);
256 return (pattern == NULL);
260 * Simple pattern matching function.
263 static int match(char *pattern, int pattern_len, char *buf, int buf_len, char ***sp, char ***ep, int nsubs)
266 char *pattern_end = pattern + pattern_len;
271 for (pp = pattern, lp = buf; ; pp++, lp++)
294 * Perform a pattern match with the previously compiled pattern.
299 static int match_pattern1(PATTERN_TYPE pattern, char *tpattern, char *line, int line_len, char **sp, char **ep, int nsp, int notbol, int search_type)
313 pattern->not_bol = notbol;
314 pattern->regs_allocated = REGS_UNALLOCATED;
315 matched = re_search(pattern, line, line_len, 0, line_len, &search_regs) >= 0;
333 matched = !regexec(pattern, line, RM_COUNT, rm, flags);
369 int mcount = pcre_exec(pattern, NULL, line, line_len,
392 int mcount = pcre2_match(pattern, (PCRE2_SPTR)line, line_len,
424 matched = ((*ep++ = regex(pattern, line)) != NULL);
430 matched = regexec2(pattern, line, notbol);
432 matched = regexec(pattern, line);
436 *sp++ = pattern->startp[0];
437 *ep++ = pattern->endp[0];
447 public int match_pattern(PATTERN_TYPE pattern, char *tpattern, char *line, int line_len, char **sp, char **ep, int nsp, int notbol, int search_type)
449 int matched = match_pattern1(pattern, tpattern, line, line_len, sp, ep, nsp, notbol, search_type);
460 * Return the name of the pattern matching library.