180ee5cbfSDavid du Colombier 280ee5cbfSDavid du Colombier enum{ 380ee5cbfSDavid du Colombier Dump = 0, /* Actions must be in order of descending importance */ 480ee5cbfSDavid du Colombier HoldHeader, 580ee5cbfSDavid du Colombier Hold, 680ee5cbfSDavid du Colombier SaveLine, 780ee5cbfSDavid du Colombier Lineoff, /* Lineoff must be the last action code */ 880ee5cbfSDavid du Colombier Nactions, 980ee5cbfSDavid du Colombier 1080ee5cbfSDavid du Colombier Nhash = 128, 1180ee5cbfSDavid du Colombier 1280ee5cbfSDavid du Colombier regexp = 1, /* types: literal string or regular expression */ 1380ee5cbfSDavid du Colombier string = 2, 1480ee5cbfSDavid du Colombier 1580ee5cbfSDavid du Colombier MaxHtml = 256, 1680ee5cbfSDavid du Colombier Hdrsize = 4096, 1780ee5cbfSDavid du Colombier Bodysize = 8192, 1880ee5cbfSDavid du Colombier Maxread = 64*1024, 1980ee5cbfSDavid du Colombier }; 2080ee5cbfSDavid du Colombier 2180ee5cbfSDavid du Colombier typedef struct spat Spat; 2280ee5cbfSDavid du Colombier typedef struct pattern Pattern; 2380ee5cbfSDavid du Colombier typedef struct patterns Patterns; 2480ee5cbfSDavid du Colombier struct spat 2580ee5cbfSDavid du Colombier { 2680ee5cbfSDavid du Colombier char* string; 2780ee5cbfSDavid du Colombier int len; 2880ee5cbfSDavid du Colombier int c1; 2980ee5cbfSDavid du Colombier Spat* next; 3080ee5cbfSDavid du Colombier Spat* alt; 3180ee5cbfSDavid du Colombier }; 3280ee5cbfSDavid du Colombier 3380ee5cbfSDavid du Colombier struct pattern{ 3480ee5cbfSDavid du Colombier struct pattern *next; 3580ee5cbfSDavid du Colombier int action; 3680ee5cbfSDavid du Colombier int type; 3780ee5cbfSDavid du Colombier Spat* alt; 3880ee5cbfSDavid du Colombier union{ 3980ee5cbfSDavid du Colombier Reprog* pat; 4080ee5cbfSDavid du Colombier Spat* spat[Nhash]; 4180ee5cbfSDavid du Colombier }; 4280ee5cbfSDavid du Colombier }; 4380ee5cbfSDavid du Colombier 4480ee5cbfSDavid du Colombier struct patterns { 4580ee5cbfSDavid du Colombier char *action; 4680ee5cbfSDavid du Colombier Pattern *strings; 4780ee5cbfSDavid du Colombier Pattern *regexps; 4880ee5cbfSDavid du Colombier }; 4980ee5cbfSDavid du Colombier 5080ee5cbfSDavid du Colombier extern int debug; 5180ee5cbfSDavid du Colombier extern Patterns patterns[]; 5280ee5cbfSDavid du Colombier extern char header[]; 5380ee5cbfSDavid du Colombier extern char cmd[]; 5480ee5cbfSDavid du Colombier 55*9a747e4fSDavid du Colombier extern void conv64(char*, char*, char*, int); 56*9a747e4fSDavid du Colombier extern int convert(char*, char*, char*, int, int); 5780ee5cbfSDavid du Colombier extern void* Malloc(long n); 5880ee5cbfSDavid du Colombier extern int matchpat(Pattern*, char*, Resub*); 5980ee5cbfSDavid du Colombier extern char* readmsg(Biobuf*, int*, int*); 6080ee5cbfSDavid du Colombier extern void parsepats(Biobuf*); 6180ee5cbfSDavid du Colombier extern void* Realloc(void*, ulong); 6280ee5cbfSDavid du Colombier extern void xprint(int, char*, Resub*); 63