xref: /freebsd/contrib/less/pattern.h (revision 81bdc9ebe3d55a4ee30ee123ada62e1fe1ea9b63)
1 /*
2  * Copyright (C) 1984-2022  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 LESSPARAMS ((char*));
51 int re_exec LESSPARAMS ((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 LESSPARAMS ((char*));
59 char *regex LESSPARAMS ((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