00001 /* 00002 * Definitions etc. for regexp(3) routines. 00003 * 00004 * Caveat: this is V8 regexp(3) [actually, a reimplementation thereof], 00005 * not the System V one. 00006 * 00007 * Changes: 00008 * 00009 * 11/04/02 (seiwald) - const-ing for string literals 00010 */ 00011 00012 #define NSUBEXP 10 00013 typedef struct regexp { 00014 const char *startp[NSUBEXP]; 00015 const char *endp[NSUBEXP]; 00016 char regstart; /* Internal use only. */ 00017 char reganch; /* Internal use only. */ 00018 char *regmust; /* Internal use only. */ 00019 int regmlen; /* Internal use only. */ 00020 char program[1]; /* Unwarranted chumminess with compiler. */ 00021 } regexp; 00022 00023 regexp *regcomp( const char *exp ); 00024 int regexec( regexp *prog, const char *string ); 00025 void regerror( const char *s ); 00026 00027 /* 00028 * The first byte of the regexp internal "program" is actually this magic 00029 * number; the start node begins in the second byte. 00030 */ 00031 #define MAGIC 0234