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 21extern 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 50char *re_comp(char*); 51int 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 58char *regcmp(char*); 59char *regex(char**, char*); 60extern 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" 68extern 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