Lines Matching defs:pattern
11 * Routines to do pattern matching.
21 * Compile a search pattern, for future use by match_pattern.
23 static int compile_pattern2(constant char *pattern, int search_type, PATTERN_TYPE *comp_pattern, int show_error)
32 if (re_compile_pattern(pattern, strlen(pattern), comp))
36 error("Invalid pattern", NULL_PARG);
48 if (regcomp(comp, pattern, REGCOMP_FLAG | (is_caseless ? REG_ICASE : 0)))
52 error("Invalid pattern", NULL_PARG);
66 pcre *comp = pcre_compile(pattern,
83 pcre2_code *comp = pcre2_compile((PCRE2_SPTR)pattern, strlen(pattern),
101 if ((parg.p_string = re_comp(pattern)) != NULL)
111 if ((comp = regcmp(pattern, 0)) == NULL)
114 error("Invalid pattern", NULL_PARG);
124 comp = regcomp(pattern);
143 * Like compile_pattern2, but convert the pattern to lowercase if necessary.
145 public int compile_pattern(constant char *pattern, int search_type, int show_error, PATTERN_TYPE *comp_pattern)
151 result = compile_pattern2(pattern, search_type, comp_pattern, show_error);
154 char *cvt_pattern = (char*) ecalloc(1, cvt_length(strlen(pattern), CVT_TO_LC));
155 cvt_text(cvt_pattern, pattern, NULL, NULL, CVT_TO_LC);
163 * Forget that we have a compiled pattern.
165 public void uncompile_pattern(PATTERN_TYPE *pattern)
168 if (*pattern != NULL)
170 regfree(*pattern);
171 free(*pattern);
173 *pattern = NULL;
176 if (*pattern != NULL)
178 regfree(*pattern);
179 free(*pattern);
181 *pattern = NULL;
184 if (*pattern != NULL)
185 pcre_free(*pattern);
186 *pattern = NULL;
189 if (*pattern != NULL)
190 pcre2_code_free(*pattern);
191 *pattern = NULL;
194 *pattern = 0;
197 if (*pattern != NULL)
198 free(*pattern);
199 *pattern = NULL;
202 if (*pattern != NULL)
203 free(*pattern);
204 *pattern = NULL;
210 * Can a pattern be successfully compiled?
212 public int valid_pattern(char *pattern)
218 result = compile_pattern2(pattern, 0, &comp_pattern, 0);
227 * Is a compiled pattern null?
229 public lbool is_null_pattern(PATTERN_TYPE pattern)
232 return (pattern == NULL);
235 return (pattern == NULL);
238 return (pattern == NULL);
241 return (pattern == NULL);
244 return (pattern == 0);
247 return (pattern == NULL);
250 return (pattern == NULL);
253 return (pattern == NULL);
257 * Simple pattern matching function.
260 static int match(constant char *pattern, size_t pattern_len, constant char *buf, int buf_len, constant char ***sp, constant char ***ep, int nsubs)
264 constant char *pattern_end = pattern + pattern_len;
270 for (pp = pattern, lp = buf; ; pp++, lp++)
293 * Perform a pattern match with the previously compiled pattern.
298 static int match_pattern1(PATTERN_TYPE pattern, constant char *tpattern, constant char *line, size_t aline_len, constant char **sp, constant 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, constant char *tpattern, constant char *line, size_t line_len, constant char **sp, constant 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.