xref: /freebsd/contrib/less/pattern.h (revision a0409676120c1e558d0ade943019934e0f15118d)
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