Introduction
Introduction Statistics Contact Development Disclaimer Help
grep.h - 9base - revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log
Files
Refs
README
LICENSE
---
grep.h (2224B)
---
1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4
5 #ifndef EXTERN
6 #define EXTERN extern
7 #endif
8
9 typedef struct Re Re;
10 typedef struct Re2 Re2;
11 typedef struct State State;
12
13 struct State
14 {
15 int count;
16 int match;
17 Re** re;
18 State* linkleft;
19 State* linkright;
20 State* next[256];
21 };
22 struct Re2
23 {
24 Re* beg;
25 Re* end;
26 };
27 struct Re
28 {
29 uchar type;
30 ushort gen;
31 union
32 {
33 Re* alt; /* Talt */
34 Re** cases; /* case */
35 struct /* class */
36 {
37 Rune lo;
38 Rune hi;
39 } x;
40 Rune val; /* char */
41 } u;
42 Re* next;
43 };
44
45 enum
46 {
47 Talt = 1,
48 Tbegin,
49 Tcase,
50 Tclass,
51 Tend,
52 Tor,
53
54 Caselim = 7,
55 Nhunk = 1<<16,
56 Cbegin = 0x10000,
57 Flshcnt = (1<<9)-1,
58
59 Cflag = 1<<0,
60 Hflag = 1<<1,
61 Iflag = 1<<2,
62 Llflag = 1<<3,
63 LLflag = 1<<4,
64 Nflag = 1<<5,
65 Sflag = 1<<6,
66 Vflag = 1<<7,
67 Bflag = 1<<8
68 };
69
70 EXTERN union
71 {
72 char string[16*1024];
73 struct
74 {
75 /*
76 * if a line requires multiple reads, we keep shifting
77 * buf down into pre and then do another read into
78 * buf. so you'll get the last 16-32k of the matching l…
79 * if h were smaller than buf you'd get a suffix of the
80 * line with a hole cut out.
81 */
82 uchar pre[16*1024]; /* to save to previous…
83 uchar buf[16*1024]; /* input buffer */
84 } u;
85 } u;
86
87 EXTERN char *filename;
88 EXTERN Biobuf bout;
89 EXTERN char flags[256];
90 EXTERN Re** follow;
91 EXTERN ushort gen;
92 EXTERN char* input;
93 EXTERN long lineno;
94 EXTERN int literal;
95 EXTERN int matched;
96 EXTERN long maxfollow;
97 EXTERN long nfollow;
98 EXTERN int peekc;
99 EXTERN Biobuf* rein;
100 EXTERN State* state0;
101 EXTERN Re2 topre;
102
103 extern Re* addcase(Re*);
104 extern void appendnext(Re*, Re*);
105 extern void error(char*);
106 extern int fcmp(const void*, const void*); /* (Re*…
107 extern void fol1(Re*, int);
108 extern int getrec(void);
109 extern void increment(State*, int);
110 #define initstate grepinitstate
111 extern State* initstate(Re*);
112 extern void* mal(int);
113 extern void patchnext(Re*, Re*);
114 extern Re* ral(int);
115 extern Re2 re2cat(Re2, Re2);
116 extern Re2 re2class(char*);
117 extern Re2 re2or(Re2, Re2);
118 extern Re2 re2char(int, int);
119 extern Re2 re2star(Re2);
120 extern State* sal(int);
121 extern int search(char*, int);
122 extern void str2top(char*);
123 extern int yyparse(void);
124 extern void reprint(char*, Re*);
125 extern void yyerror(char*, ...);
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.