/* setup regular expression handling */

#ifdef USE_RE_COMP

char *re_comp();
int re_exec();
#define re_free()

#else
#ifdef USE_COMPILE

#define INIT   register char *sp = instring;
#define GETC() (*sp++)
#define PEEKC()     (*sp)
#define UNGETC(c)   (--sp)
#define RETURN(c)   return;
#define ERROR(c)    if(verbose)fprintf(stderr,"regexp compile error %d\n",(c));
#define re_comp(s)  (char*)(compile((s),expbuf,&expbuf[EXPSIZE],'\0'),NULL)
#define re_exec(s)  step((s),expbuf)
#define re_free()
#include <regexp.h>

#else
#ifdef NO_REGEX

#ifndef DONT_REGEX
#define DONT_REGEX
#endif

#else

#include <regex.h>
static regex_t local_re;
#define re_comp(s)  (regcomp(&local_re,(s),REG_NOSUB|REG_ICASE),(char*)NULL)
#define re_exec(s)  (regexec(&local_re,(s),(size_t)0,NULL,0)==NULL)
#define re_free()  (regfree(&local_re))

#endif
#endif
#endif
