• Home
  • Raw
  • Download

Lines Matching +full:to +full:- +full:regex

7 #include "regex.h"
19 /* If the compiler doesn't define __BYTE_ORDER__, try to use the C
23 #error Neither __BYTE_ORDER__ nor __BYTE_ORDER defined. Unable to determine endianness.
34 static int match_data_key_initialized = -1;
55 "%zu-%zu-%s", sizeof(void *), in regex_arch_string()
67 pcre2_code *regex; /* compiled regular expression */ member
70 int regex_prepare_data(struct regex_data **regex, char const *pattern_string, in regex_prepare_data() argument
75 *regex = regex_data_create(); in regex_prepare_data()
76 if (!(*regex)) in regex_prepare_data()
77 return -1; in regex_prepare_data()
79 (*regex)->regex = pcre2_compile( in regex_prepare_data()
81 &errordata->error_code, &errordata->error_offset, NULL); in regex_prepare_data()
82 if (!(*regex)->regex) { in regex_prepare_data()
89 regex_data_free(*regex); in regex_prepare_data()
90 *regex = NULL; in regex_prepare_data()
91 return -1; in regex_prepare_data()
105 int regex_load_mmap(struct mmap_area *mmap_area, struct regex_data **regex, in regex_load_mmap() argument
114 return -1; in regex_load_mmap()
121 rc = pcre2_serialize_get_number_of_codes(mmap_area->next_addr); in regex_load_mmap()
123 return -1; in regex_load_mmap()
125 *regex = regex_data_create(); in regex_load_mmap()
126 if (!*regex) in regex_load_mmap()
127 return -1; in regex_load_mmap()
129 rc = pcre2_serialize_decode(&(*regex)->regex, 1, in regex_load_mmap()
130 (PCRE2_SPTR)mmap_area->next_addr, in regex_load_mmap()
145 regex_data_free(*regex); in regex_load_mmap()
146 *regex = NULL; in regex_load_mmap()
147 return -1; in regex_load_mmap()
150 int regex_writef(struct regex_data *regex, FILE *fp, int do_write_precompregex) in regex_writef() argument
160 rc = pcre2_serialize_encode((const pcre2_code **)&regex->regex, in regex_writef()
163 rc = -1; in regex_writef()
172 rc = -1; in regex_writef()
180 rc = -1; in regex_writef()
204 if (--match_data_key_initialized == 1) { in match_data_thread_free()
206 match_data_key_initialized = -1; in match_data_thread_free()
211 void regex_data_free(struct regex_data *regex) in regex_data_free() argument
213 if (regex) { in regex_data_free()
214 if (regex->regex) in regex_data_free()
215 pcre2_code_free(regex->regex); in regex_data_free()
216 free(regex); in regex_data_free()
220 int regex_match(struct regex_data *regex, char const *subject, int partial) in regex_match() argument
243 match_data = pcre2_match_data_create_from_pattern(regex->regex, in regex_match()
250 regex->regex, (PCRE2_SPTR)subject, PCRE2_ZERO_TERMINATED, 0, in regex_match()
281 rc = pcre2_pattern_info(regex1->regex, PCRE2_INFO_SIZE, &len1); in regex_cmp()
283 rc = pcre2_pattern_info(regex2->regex, PCRE2_INFO_SIZE, &len2); in regex_cmp()
285 if (len1 != len2 || memcmp(regex1->regex, regex2->regex, len1)) in regex_cmp()
315 /* Prior to version 8.20, libpcre did not have pcre_free_study() */
322 * non zero if regex and pcre_extra is owned by this
325 pcre *regex; /* compiled regular expression */ member
327 pcre_extra *sd; /* pointer to extra compiled stuff */
328 pcre_extra lsd; /* used to hold the mmap'd version */
332 int regex_prepare_data(struct regex_data **regex, char const *pattern_string, in regex_prepare_data() argument
337 *regex = regex_data_create(); in regex_prepare_data()
338 if (!(*regex)) in regex_prepare_data()
339 return -1; in regex_prepare_data()
341 (*regex)->regex = in regex_prepare_data()
342 pcre_compile(pattern_string, PCRE_DOTALL, &errordata->error_buffer, in regex_prepare_data()
343 &errordata->error_offset, NULL); in regex_prepare_data()
344 if (!(*regex)->regex) in regex_prepare_data()
347 (*regex)->owned = 1; in regex_prepare_data()
349 (*regex)->sd = pcre_study((*regex)->regex, 0, &errordata->error_buffer); in regex_prepare_data()
350 if (!(*regex)->sd && errordata->error_buffer) in regex_prepare_data()
356 regex_data_free(*regex); in regex_prepare_data()
357 *regex = NULL; in regex_prepare_data()
358 return -1; in regex_prepare_data()
366 int regex_load_mmap(struct mmap_area *mmap_area, struct regex_data **regex, in regex_load_mmap() argument
375 return -1; in regex_load_mmap()
377 *regex = regex_data_create(); in regex_load_mmap()
378 if (!(*regex)) in regex_load_mmap()
379 return -1; in regex_load_mmap()
381 (*regex)->owned = 0; in regex_load_mmap()
382 (*regex)->regex = (pcre *)mmap_area->next_addr; in regex_load_mmap()
388 * Check that regex lengths match. pcre_fullinfo() in regex_load_mmap()
391 rc = pcre_fullinfo((*regex)->regex, NULL, PCRE_INFO_SIZE, &info_len); in regex_load_mmap()
400 (*regex)->lsd.study_data = (void *)mmap_area->next_addr; in regex_load_mmap()
401 (*regex)->lsd.flags |= PCRE_EXTRA_STUDY_DATA; in regex_load_mmap()
407 rc = pcre_fullinfo((*regex)->regex, &(*regex)->lsd, in regex_load_mmap()
417 regex_data_free(*regex); in regex_load_mmap()
418 *regex = NULL; in regex_load_mmap()
419 return -1; in regex_load_mmap()
422 static inline pcre_extra *get_pcre_extra(struct regex_data *regex) in get_pcre_extra() argument
424 if (!regex) return NULL; in get_pcre_extra()
425 if (regex->owned) { in get_pcre_extra()
426 return regex->sd; in get_pcre_extra()
427 } else if (regex->lsd.study_data) { in get_pcre_extra()
428 return &regex->lsd; in get_pcre_extra()
434 int regex_writef(struct regex_data *regex, FILE *fp, in regex_writef() argument
441 pcre_extra *sd = get_pcre_extra(regex); in regex_writef()
444 rc = pcre_fullinfo(regex->regex, NULL, PCRE_INFO_SIZE, &size); in regex_writef()
446 return -1; in regex_writef()
452 return -1; in regex_writef()
455 len = fwrite(regex->regex, 1, to_write, fp); in regex_writef()
457 return -1; in regex_writef()
462 pcre_fullinfo(regex->regex, sd, PCRE_INFO_STUDYSIZE, &size); in regex_writef()
464 return -1; in regex_writef()
472 return -1; in regex_writef()
476 len = fwrite(sd->study_data, 1, to_write, fp); in regex_writef()
478 return -1; in regex_writef()
484 void regex_data_free(struct regex_data *regex) in regex_data_free() argument
486 if (regex) { in regex_data_free()
487 if (regex->owned) { in regex_data_free()
488 if (regex->regex) in regex_data_free()
489 pcre_free(regex->regex); in regex_data_free()
490 if (regex->sd) in regex_data_free()
491 pcre_free_study(regex->sd); in regex_data_free()
493 free(regex); in regex_data_free()
497 int regex_match(struct regex_data *regex, char const *subject, int partial) in regex_match() argument
501 rc = pcre_exec(regex->regex, get_pcre_extra(regex), in regex_match()
529 rc = pcre_fullinfo(regex1->regex, NULL, PCRE_INFO_SIZE, &len1); in regex_cmp()
531 rc = pcre_fullinfo(regex2->regex, NULL, PCRE_INFO_SIZE, &len2); in regex_cmp()
533 if (len1 != len2 || memcmp(regex1->regex, regex2->regex, len1)) in regex_cmp()
550 char *ptr = &buffer[buf_size - the_end_length]; in regex_format_error()
555 rc = snprintf(buffer, buf_size, "REGEX back-end error: "); in regex_format_error()
567 /* Return early if there is no error to format */ in regex_format_error()
569 if (!error_data->error_code) { in regex_format_error()
570 rc = snprintf(buffer + pos, buf_size - pos, "no error code"); in regex_format_error()
579 if (!error_data->error_buffer) { in regex_format_error()
580 rc = snprintf(buffer + pos, buf_size - pos, "empty error"); in regex_format_error()
590 if (error_data->error_offset > 0) { in regex_format_error()
592 rc = snprintf(buffer + pos, buf_size - pos, "At offset %zu: ", in regex_format_error()
593 error_data->error_offset); in regex_format_error()
595 rc = snprintf(buffer + pos, buf_size - pos, "At offset %d: ", in regex_format_error()
596 error_data->error_offset); in regex_format_error()
606 rc = pcre2_get_error_message(error_data->error_code, in regex_format_error()
608 buf_size - pos); in regex_format_error()
612 rc = snprintf(buffer + pos, buf_size - pos, "%s", in regex_format_error()
613 error_data->error_buffer); in regex_format_error()
617 if ((size_t)rc < strlen(error_data->error_buffer)) in regex_format_error()
624 /* replace end of string with "..." to indicate that it was truncated */ in regex_format_error()
626 /* no break statements, fall-through is intended */ in regex_format_error()