| |
| enum{ |
| Dump = 0, /* Actions must be in order of descending importance */ |
| HoldHeader, |
| Hold, |
| SaveLine, |
| Lineoff, /* Lineoff must be the last action code */ |
| Nactions, |
| |
| Nhash = 128, |
| |
| regexp = 1, /* types: literal string or regular expression */ |
| string = 2, |
| |
| MaxHtml = 256, |
| Hdrsize = 4096, |
| Bodysize = 8192, |
| Maxread = 64*1024 |
| }; |
| |
| typedef struct spat Spat; |
| typedef struct pattern Pattern; |
| typedef struct patterns Patterns; |
| struct spat |
| { |
| char* string; |
| int len; |
| int c1; |
| Spat* next; |
| Spat* alt; |
| }; |
| |
| struct pattern{ |
| struct pattern *next; |
| int action; |
| int type; |
| Spat* alt; |
| union{ |
| Reprog* pat; |
| Spat* spat[Nhash]; |
| }; |
| }; |
| |
| struct patterns { |
| char *action; |
| Pattern *strings; |
| Pattern *regexps; |
| }; |
| |
| extern int debug; |
| extern Patterns patterns[]; |
| extern char header[]; |
| extern char cmd[]; |
| |
| extern void conv64(char*, char*, char*, int); |
| extern int convert(char*, char*, char*, int, int); |
| extern void* Malloc(long n); |
| extern int matchpat(Pattern*, char*, Resub*); |
| extern char* readmsg(Biobuf*, int*, int*); |
| extern void parsepats(Biobuf*); |
| extern void* Realloc(void*, ulong); |
| extern void xprint(int, char*, Resub*); |