1 /* 2 * Copyright (C) 1984-2020 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 CLEAR_PATTERN(name) name = NULL 15 #endif 16 17 #if HAVE_POSIX_REGCOMP 18 #include <regex.h> 19 #ifdef REG_EXTENDED 20 extern int less_is_more; 21 #define REGCOMP_FLAG (less_is_more ? 0 : REG_EXTENDED) 22 #else 23 #define REGCOMP_FLAG 0 24 #endif 25 #define PATTERN_TYPE regex_t * 26 #define CLEAR_PATTERN(name) name = NULL 27 #endif 28 29 #if HAVE_PCRE 30 #include <pcre.h> 31 #define PATTERN_TYPE pcre * 32 #define CLEAR_PATTERN(name) name = NULL 33 #endif 34 35 #if HAVE_PCRE2 36 #define PCRE2_CODE_UNIT_WIDTH 8 37 #include <pcre2.h> 38 #define PATTERN_TYPE pcre2_code * 39 #define CLEAR_PATTERN(name) name = NULL 40 #endif 41 42 #if HAVE_RE_COMP 43 char *re_comp LESSPARAMS ((char*)); 44 int re_exec LESSPARAMS ((char*)); 45 #define PATTERN_TYPE int 46 #define CLEAR_PATTERN(name) name = 0 47 #endif 48 49 #if HAVE_REGCMP 50 char *regcmp LESSPARAMS ((char*)); 51 char *regex LESSPARAMS ((char**, char*)); 52 extern char *__loc1; 53 #define PATTERN_TYPE char ** 54 #define CLEAR_PATTERN(name) name = NULL 55 #endif 56 57 #if HAVE_V8_REGCOMP 58 #include "regexp.h" 59 extern int reg_show_error; 60 #define PATTERN_TYPE struct regexp * 61 #define CLEAR_PATTERN(name) name = NULL 62 #endif 63 64 #if NO_REGEX 65 #define PATTERN_TYPE void * 66 #define CLEAR_PATTERN(name) 67 #endif 68