1 /* 2 * Copyright (C) 1984-2023 Mark Nudelman 3 * 4 * You may distribute under the terms of either the GNU General Public 5 * License or the Less License, as specified in the README file. 6 * 7 * For more information, see the README file. 8 */ 9 10 #if HAVE_GNU_REGEX 11 #define __USE_GNU 1 12 #include <regex.h> 13 #define PATTERN_TYPE struct re_pattern_buffer * 14 #define SET_NULL_PATTERN(name) name = NULL 15 #endif 16 17 /* ---- POSIX ---- */ 18 #if HAVE_POSIX_REGCOMP 19 #include <regex.h> 20 #ifdef REG_EXTENDED 21 extern int less_is_more; 22 #define REGCOMP_FLAG (less_is_more ? 0 : REG_EXTENDED) 23 #else 24 #define REGCOMP_FLAG 0 25 #endif 26 #define PATTERN_TYPE regex_t * 27 #define SET_NULL_PATTERN(name) name = NULL 28 #define re_handles_caseless TRUE 29 #endif 30 31 /* ---- PCRE ---- */ 32 #if HAVE_PCRE 33 #include <pcre.h> 34 #define PATTERN_TYPE pcre * 35 #define SET_NULL_PATTERN(name) name = NULL 36 #define re_handles_caseless TRUE 37 #endif 38 39 /* ---- PCRE2 ---- */ 40 #if HAVE_PCRE2 41 #define PCRE2_CODE_UNIT_WIDTH 8 42 #include <pcre2.h> 43 #define PATTERN_TYPE pcre2_code * 44 #define SET_NULL_PATTERN(name) name = NULL 45 #define re_handles_caseless TRUE 46 #endif 47 48 /* ---- RE_COMP ---- */ 49 #if HAVE_RE_COMP 50 char *re_comp(char*); 51 int re_exec(char*); 52 #define PATTERN_TYPE int 53 #define SET_NULL_PATTERN(name) name = 0 54 #endif 55 56 /* ---- REGCMP ---- */ 57 #if HAVE_REGCMP 58 char *regcmp(char*); 59 char *regex(char**, char*); 60 extern char *__loc1; 61 #define PATTERN_TYPE char ** 62 #define SET_NULL_PATTERN(name) name = NULL 63 #endif 64 65 /* ---- REGCOMP ---- */ 66 #if HAVE_V8_REGCOMP 67 #include "regexp.h" 68 extern int reg_show_error; 69 #define PATTERN_TYPE struct regexp * 70 #define SET_NULL_PATTERN(name) name = NULL 71 #endif 72 73 /* ---- NONE ---- */ 74 #if NO_REGEX 75 #define PATTERN_TYPE void * 76 #define SET_NULL_PATTERN(name) 77 #endif 78 79 #ifndef re_handles_caseless 80 #define re_handles_caseless FALSE 81 #endif 82