netgen/base/regexp.h

58 lines
1.5 KiB
C

#ifdef HAVE_REGCMP
typedef char *Regexp;
Regexp regcmp(char *s, ...);
#define RegexpCompile(a) regcmp(a, (char *)0)
#define REGEXP_FREE_TEMPLATE
char *regex(char *re, char *s);
#define RegexpMatch(a,b) (regex((a),(b)) != NULL)
#endif /* HAVE_REGCMP */
#ifdef HAVE_RE_COMP
typedef char *Regexp;
Regexp re_comp(char *s);
#define RegexpCompile(a) re_comp(a)
/* re_comp returns an error code, not a regexp, so... */
#undef REGEXP_FREE_TEMPLATE
extern int re_exec(char *s);
#define RegexpMatch(a,b) re_exec(b)
#endif /* HAVE_RE_COMP */
#if !defined(HAVE_RE_COMP) && !defined(HAVE_REGCMP)
/*
* Definitions etc. for our own regexp(3) routines.
*
* THESE ARE SHAMELESSLY STOLEN FROM HENRY SPENCER'S UTZOO ROUTINES
* (prototypes added by MAS)
*/
#define NSUBEXP 10
typedef struct regexp {
char *startp[NSUBEXP];
char *endp[NSUBEXP];
char regstart; /* Internal use only. */
char reganch; /* Internal use only. */
char *regmust; /* Internal use only. */
int regmlen; /* Internal use only. */
char program[1]; /* Unwarranted chumminess with compiler. */
} regexp;
typedef struct regexp *Regexp;
#define RegexpCompile(a) regcomp(a)
#define RegexpMatch(a,b) regexec((a),(b))
Regexp regcomp(char *exp);
#define REGEXP_FREE_TEMPLATE
extern int regexec(regexp *prog, char *string);
extern void regsub(regexp *prog, char *source, char *dest);
extern void regerror(char *s);
#endif /* neither HAVE_RE_COMP nor HAVE_REGCMP */