19 #ifdef HAVE_REGEX_SUPPORT
22 #ifndef __REGEXP_LIBRARY_H__
23 #define __REGEXP_LIBRARY_H__
28 #include <sys/types.h>
41 typedef unsigned reg_syntax_t;
45 #define RE_BACKSLASH_ESCAPE_IN_LISTS (1)
50 #define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
56 #define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
70 #define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
78 #define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
82 #define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
86 #define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
90 #define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
94 #define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
99 #define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
103 #define RE_LIMITED_OPS (RE_INTERVALS << 1)
107 #define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
112 #define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
116 #define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
120 #define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
124 #define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
130 #define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
134 #define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
140 extern reg_syntax_t re_syntax_options;
146 #define RE_SYNTAX_EMACS 0
148 #define RE_SYNTAX_AWK \
149 (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
150 | RE_NO_BK_PARENS | RE_NO_BK_REFS \
151 | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
152 | RE_UNMATCHED_RIGHT_PAREN_ORD)
154 #define RE_SYNTAX_POSIX_AWK \
155 (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS)
157 #define RE_SYNTAX_GREP \
158 (RE_BK_PLUS_QM | RE_CHAR_CLASSES \
159 | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
162 #define RE_SYNTAX_EGREP \
163 (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
164 | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
165 | RE_NEWLINE_ALT | RE_NO_BK_PARENS \
168 #define RE_SYNTAX_POSIX_EGREP \
169 (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
172 #define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
174 #define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
177 #define _RE_SYNTAX_POSIX_COMMON \
178 (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
179 | RE_INTERVALS | RE_NO_EMPTY_RANGES)
181 #define RE_SYNTAX_POSIX_BASIC \
182 (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
187 #define RE_SYNTAX_POSIX_MINIMAL_BASIC \
188 (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
190 #define RE_SYNTAX_POSIX_EXTENDED \
191 (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
192 | RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
193 | RE_NO_BK_PARENS | RE_NO_BK_VBAR \
194 | RE_UNMATCHED_RIGHT_PAREN_ORD)
198 #define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
199 (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
200 | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
201 | RE_NO_BK_PARENS | RE_NO_BK_REFS \
202 | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
211 #define RE_DUP_MAX ((1 << 15) - 1)
218 #define REG_EXTENDED 1
222 #define REG_ICASE (REG_EXTENDED << 1)
227 #define REG_NEWLINE (REG_ICASE << 1)
231 #define REG_NOSUB (REG_NEWLINE << 1)
244 #define REG_NOTEOL (1 << 1)
287 unsigned char *buffer;
290 unsigned long allocated;
317 unsigned can_be_null : 1;
323 #define REGS_UNALLOCATED 0
324 #define REGS_REALLOCATE 1
326 unsigned regs_allocated : 2;
330 unsigned fastmap_accurate : 1;
338 unsigned not_bol : 1;
341 unsigned not_eol : 1;
344 unsigned newline_anchor : 1;
355 #define RE_EXACTN_VALUE 1
358 typedef int regoff_t;
398 #define _RE_ARGS(args) args
402 #define _RE_ARGS(args) ()
408 extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
413 extern const char *re_compile_pattern
414 _RE_ARGS ((
const char *pattern,
int length,
431 int length,
int start,
int range,
struct re_registers *regs));
436 extern int re_search_2
438 int length1,
const char *string2,
int length2,
439 int start,
int range,
struct re_registers *regs,
int stop));
450 extern int re_match_2
452 int length1,
const char *string2,
int length2,
468 extern void re_set_registers
470 unsigned num_regs, regoff_t *starts, regoff_t *ends));
473 extern char *re_comp _RE_ARGS ((
const char *));
474 extern int re_exec _RE_ARGS ((
const char *));
477 extern int regcomp _RE_ARGS ((
regex_t *preg,
const char *pattern,
int cflags));
479 _RE_ARGS ((
const regex_t *preg,
const char *
string,
size_t nmatch,
481 extern size_t regerror
482 _RE_ARGS ((
int errcode,
const regex_t *preg,
char *errbuf,
483 size_t errbuf_size));
484 extern void regfree _RE_ARGS ((
regex_t *preg));
498 extern int nasl_regcomp (
regex_t *preg,
const char *pattern,
int cflags);
499 extern int nasl_regexec (
const regex_t *preg,
const char *
string,
size_t nmatch,
501 extern size_t nasl_regerror (
int errcode,
const regex_t *preg,
char *errbuf,
503 extern reg_syntax_t nasl_re_set_syntax (reg_syntax_t syntax);
504 extern char * nasl_regorig(
regex_t * preg);
505 extern void nasl_regfree (
regex_t *preg);