1 8ad51794 2004-03-25 devnull #include <u.h>
2 8ad51794 2004-03-25 devnull #include <libc.h>
3 8ad51794 2004-03-25 devnull #include <bio.h>
5 8ad51794 2004-03-25 devnull #ifndef EXTERN
6 8ad51794 2004-03-25 devnull #define EXTERN extern
9 8ad51794 2004-03-25 devnull typedef struct Re Re;
10 8ad51794 2004-03-25 devnull typedef struct Re2 Re2;
11 8ad51794 2004-03-25 devnull typedef struct State State;
13 8ad51794 2004-03-25 devnull struct State
15 8ad51794 2004-03-25 devnull int count;
16 8ad51794 2004-03-25 devnull int match;
18 8ad51794 2004-03-25 devnull State* linkleft;
19 8ad51794 2004-03-25 devnull State* linkright;
20 8ad51794 2004-03-25 devnull State* next[256];
22 8ad51794 2004-03-25 devnull struct Re2
27 8ad51794 2004-03-25 devnull struct Re
29 8ad51794 2004-03-25 devnull uchar type;
30 8ad51794 2004-03-25 devnull ushort gen;
33 8ad51794 2004-03-25 devnull Re* alt; /* Talt */
34 8ad51794 2004-03-25 devnull Re** cases; /* case */
35 8ad51794 2004-03-25 devnull struct /* class */
40 8ad51794 2004-03-25 devnull Rune val; /* char */
42 8ad51794 2004-03-25 devnull Re* next;
47 8ad51794 2004-03-25 devnull Talt = 1,
54 8ad51794 2004-03-25 devnull Caselim = 7,
55 8ad51794 2004-03-25 devnull Nhunk = 1<<16,
56 8ad51794 2004-03-25 devnull Cbegin = 0x10000,
57 8ad51794 2004-03-25 devnull Flshcnt = (1<<9)-1,
59 8ad51794 2004-03-25 devnull Cflag = 1<<0,
60 8ad51794 2004-03-25 devnull Hflag = 1<<1,
61 8ad51794 2004-03-25 devnull Iflag = 1<<2,
62 8ad51794 2004-03-25 devnull Llflag = 1<<3,
63 8ad51794 2004-03-25 devnull LLflag = 1<<4,
64 8ad51794 2004-03-25 devnull Nflag = 1<<5,
65 8ad51794 2004-03-25 devnull Sflag = 1<<6,
66 8ad51794 2004-03-25 devnull Vflag = 1<<7,
67 8ad51794 2004-03-25 devnull Bflag = 1<<8
70 8ad51794 2004-03-25 devnull EXTERN union
72 8ad51794 2004-03-25 devnull char string[16*1024];
76 8ad51794 2004-03-25 devnull * if a line requires multiple reads, we keep shifting
77 8ad51794 2004-03-25 devnull * buf down into pre and then do another read into
78 8ad51794 2004-03-25 devnull * buf. so you'll get the last 16-32k of the matching line.
79 1a84af59 2004-03-25 devnull * if h were smaller than buf you'd get a suffix of the
80 8ad51794 2004-03-25 devnull * line with a hole cut out.
82 8ad51794 2004-03-25 devnull uchar pre[16*1024]; /* to save to previous '\n' */
83 8ad51794 2004-03-25 devnull uchar buf[16*1024]; /* input buffer */
87 8ad51794 2004-03-25 devnull EXTERN char *filename;
88 8ad51794 2004-03-25 devnull EXTERN Biobuf bout;
89 8ad51794 2004-03-25 devnull EXTERN char flags[256];
90 8ad51794 2004-03-25 devnull EXTERN Re** follow;
91 8ad51794 2004-03-25 devnull EXTERN ushort gen;
92 8ad51794 2004-03-25 devnull EXTERN char* input;
93 8ad51794 2004-03-25 devnull EXTERN long lineno;
94 8ad51794 2004-03-25 devnull EXTERN int literal;
95 8ad51794 2004-03-25 devnull EXTERN int matched;
96 8ad51794 2004-03-25 devnull EXTERN long maxfollow;
97 8ad51794 2004-03-25 devnull EXTERN long nfollow;
98 8ad51794 2004-03-25 devnull EXTERN int peekc;
99 8ad51794 2004-03-25 devnull EXTERN Biobuf* rein;
100 8ad51794 2004-03-25 devnull EXTERN State* state0;
101 8ad51794 2004-03-25 devnull EXTERN Re2 topre;
103 8ad51794 2004-03-25 devnull extern Re* addcase(Re*);
104 8ad51794 2004-03-25 devnull extern void appendnext(Re*, Re*);
105 8ad51794 2004-03-25 devnull extern void error(char*);
106 8ad51794 2004-03-25 devnull extern int fcmp(const void*, const void*); /* (Re**, Re**) */
107 8ad51794 2004-03-25 devnull extern void fol1(Re*, int);
108 8ad51794 2004-03-25 devnull extern int getrec(void);
109 8ad51794 2004-03-25 devnull extern void increment(State*, int);
110 8ad51794 2004-03-25 devnull #define initstate grepinitstate
111 8ad51794 2004-03-25 devnull extern State* initstate(Re*);
112 8ad51794 2004-03-25 devnull extern void* mal(int);
113 8ad51794 2004-03-25 devnull extern void patchnext(Re*, Re*);
114 8ad51794 2004-03-25 devnull extern Re* ral(int);
115 8ad51794 2004-03-25 devnull extern Re2 re2cat(Re2, Re2);
116 8ad51794 2004-03-25 devnull extern Re2 re2class(char*);
117 8ad51794 2004-03-25 devnull extern Re2 re2or(Re2, Re2);
118 8ad51794 2004-03-25 devnull extern Re2 re2char(int, int);
119 8ad51794 2004-03-25 devnull extern Re2 re2star(Re2);
120 8ad51794 2004-03-25 devnull extern State* sal(int);
121 8ad51794 2004-03-25 devnull extern int search(char*, int);
122 8ad51794 2004-03-25 devnull extern void str2top(char*);
123 8ad51794 2004-03-25 devnull extern int yyparse(void);
124 8ad51794 2004-03-25 devnull extern void reprint(char*, Re*);
125 8ad51794 2004-03-25 devnull extern void yyerror(char*, ...);