xref: /plan9/sys/src/ape/cmd/sed/sed.h (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1*219b2ee8SDavid du Colombier #
2*219b2ee8SDavid du Colombier /*
3*219b2ee8SDavid du Colombier  * sed -- stream  editor
4*219b2ee8SDavid du Colombier  *
5*219b2ee8SDavid du Colombier  *
6*219b2ee8SDavid du Colombier  */
7*219b2ee8SDavid du Colombier 
8*219b2ee8SDavid du Colombier #define CBRA	1
9*219b2ee8SDavid du Colombier #define	CCHR	2
10*219b2ee8SDavid du Colombier #define	CDOT	4
11*219b2ee8SDavid du Colombier #define	CCL	6
12*219b2ee8SDavid du Colombier #define	CNL	8
13*219b2ee8SDavid du Colombier #define	CDOL	10
14*219b2ee8SDavid du Colombier #define	CEOF	11
15*219b2ee8SDavid du Colombier #define CKET	12
16*219b2ee8SDavid du Colombier #define CNULL	13
17*219b2ee8SDavid du Colombier #define CLNUM	14
18*219b2ee8SDavid du Colombier #define CEND	16
19*219b2ee8SDavid du Colombier #define CDONT	17
20*219b2ee8SDavid du Colombier #define	CBACK	18
21*219b2ee8SDavid du Colombier 
22*219b2ee8SDavid du Colombier #define	STAR	01
23*219b2ee8SDavid du Colombier 
24*219b2ee8SDavid du Colombier #define NLINES	256
25*219b2ee8SDavid du Colombier #define	DEPTH	20
26*219b2ee8SDavid du Colombier #define PTRSIZE	1024
27*219b2ee8SDavid du Colombier #define RESIZE	20000
28*219b2ee8SDavid du Colombier #define	ABUFSIZE	20
29*219b2ee8SDavid du Colombier #define	LBSIZE	4000
30*219b2ee8SDavid du Colombier #define	LABSIZE	50
31*219b2ee8SDavid du Colombier #define NBRA	9
32*219b2ee8SDavid du Colombier 
33*219b2ee8SDavid du Colombier typedef unsigned char uchar;
34*219b2ee8SDavid du Colombier 
35*219b2ee8SDavid du Colombier FILE	*fin;
36*219b2ee8SDavid du Colombier union reptr	*abuf[ABUFSIZE];
37*219b2ee8SDavid du Colombier union reptr **aptr;
38*219b2ee8SDavid du Colombier uchar	*lastre;
39*219b2ee8SDavid du Colombier uchar	ibuf[512];
40*219b2ee8SDavid du Colombier uchar	*cbp;
41*219b2ee8SDavid du Colombier uchar	*ebp;
42*219b2ee8SDavid du Colombier uchar	genbuf[LBSIZE];
43*219b2ee8SDavid du Colombier uchar	*loc1;
44*219b2ee8SDavid du Colombier uchar	*loc2;
45*219b2ee8SDavid du Colombier uchar	*locs;
46*219b2ee8SDavid du Colombier uchar	seof;
47*219b2ee8SDavid du Colombier uchar	*reend;
48*219b2ee8SDavid du Colombier uchar	*lbend;
49*219b2ee8SDavid du Colombier uchar	*hend;
50*219b2ee8SDavid du Colombier uchar	*lcomend;
51*219b2ee8SDavid du Colombier union reptr	*ptrend;
52*219b2ee8SDavid du Colombier int	eflag;
53*219b2ee8SDavid du Colombier int	dolflag;
54*219b2ee8SDavid du Colombier int	sflag;
55*219b2ee8SDavid du Colombier int	jflag;
56*219b2ee8SDavid du Colombier int	numbra;
57*219b2ee8SDavid du Colombier int	delflag;
58*219b2ee8SDavid du Colombier long	lnum;
59*219b2ee8SDavid du Colombier uchar	linebuf[LBSIZE+1];
60*219b2ee8SDavid du Colombier uchar	holdsp[LBSIZE+1];
61*219b2ee8SDavid du Colombier uchar	*spend;
62*219b2ee8SDavid du Colombier uchar	*hspend;
63*219b2ee8SDavid du Colombier int	nflag;
64*219b2ee8SDavid du Colombier int	gflag;
65*219b2ee8SDavid du Colombier uchar	*braelist[NBRA];
66*219b2ee8SDavid du Colombier uchar	*braslist[NBRA];
67*219b2ee8SDavid du Colombier long	tlno[NLINES];
68*219b2ee8SDavid du Colombier int	nlno;
69*219b2ee8SDavid du Colombier #define MAXFILES	120
70*219b2ee8SDavid du Colombier char	fname[MAXFILES][40];
71*219b2ee8SDavid du Colombier FILE	*fcode[MAXFILES];
72*219b2ee8SDavid du Colombier int	nfiles;
73*219b2ee8SDavid du Colombier 
74*219b2ee8SDavid du Colombier #define ACOM	01
75*219b2ee8SDavid du Colombier #define BCOM	020
76*219b2ee8SDavid du Colombier #define CCOM	02
77*219b2ee8SDavid du Colombier #define	CDCOM	025
78*219b2ee8SDavid du Colombier #define	CNCOM	022
79*219b2ee8SDavid du Colombier #define COCOM	017
80*219b2ee8SDavid du Colombier #define	CPCOM	023
81*219b2ee8SDavid du Colombier #define DCOM	03
82*219b2ee8SDavid du Colombier #define ECOM	015
83*219b2ee8SDavid du Colombier #define EQCOM	013
84*219b2ee8SDavid du Colombier #define FCOM	016
85*219b2ee8SDavid du Colombier #define GCOM	027
86*219b2ee8SDavid du Colombier #define CGCOM	030
87*219b2ee8SDavid du Colombier #define HCOM	031
88*219b2ee8SDavid du Colombier #define CHCOM	032
89*219b2ee8SDavid du Colombier #define ICOM	04
90*219b2ee8SDavid du Colombier #define LCOM	05
91*219b2ee8SDavid du Colombier #define NCOM	012
92*219b2ee8SDavid du Colombier #define PCOM	010
93*219b2ee8SDavid du Colombier #define QCOM	011
94*219b2ee8SDavid du Colombier #define RCOM	06
95*219b2ee8SDavid du Colombier #define SCOM	07
96*219b2ee8SDavid du Colombier #define TCOM	021
97*219b2ee8SDavid du Colombier #define WCOM	014
98*219b2ee8SDavid du Colombier #define	CWCOM	024
99*219b2ee8SDavid du Colombier #define	YCOM	026
100*219b2ee8SDavid du Colombier #define XCOM	033
101*219b2ee8SDavid du Colombier 
102*219b2ee8SDavid du Colombier uchar	*cp;
103*219b2ee8SDavid du Colombier uchar	*reend;
104*219b2ee8SDavid du Colombier uchar	*lbend;
105*219b2ee8SDavid du Colombier 
106*219b2ee8SDavid du Colombier union	reptr {
107*219b2ee8SDavid du Colombier 	struct reptr1 {
108*219b2ee8SDavid du Colombier 		uchar	*ad1;
109*219b2ee8SDavid du Colombier 		uchar	*ad2;
110*219b2ee8SDavid du Colombier 		uchar	*re1;
111*219b2ee8SDavid du Colombier 		uchar	*rhs;
112*219b2ee8SDavid du Colombier 		FILE	*fcode;
113*219b2ee8SDavid du Colombier 		uchar	command;
114*219b2ee8SDavid du Colombier 		uchar	gfl;
115*219b2ee8SDavid du Colombier 		uchar	pfl;
116*219b2ee8SDavid du Colombier 		uchar	inar;
117*219b2ee8SDavid du Colombier 		uchar	negfl;
118*219b2ee8SDavid du Colombier 	} r1;
119*219b2ee8SDavid du Colombier 	struct reptr2 {
120*219b2ee8SDavid du Colombier 		uchar	*ad1;
121*219b2ee8SDavid du Colombier 		uchar	*ad2;
122*219b2ee8SDavid du Colombier 		union reptr	*lb1;
123*219b2ee8SDavid du Colombier 		uchar	*rhs;
124*219b2ee8SDavid du Colombier 		FILE	*fcode;
125*219b2ee8SDavid du Colombier 		uchar	command;
126*219b2ee8SDavid du Colombier 		uchar	gfl;
127*219b2ee8SDavid du Colombier 		uchar	pfl;
128*219b2ee8SDavid du Colombier 		uchar	inar;
129*219b2ee8SDavid du Colombier 		uchar	negfl;
130*219b2ee8SDavid du Colombier 	} r2;
131*219b2ee8SDavid du Colombier } ptrspace[PTRSIZE], *rep;
132*219b2ee8SDavid du Colombier 
133*219b2ee8SDavid du Colombier 
134*219b2ee8SDavid du Colombier uchar	respace[RESIZE];
135*219b2ee8SDavid du Colombier 
136*219b2ee8SDavid du Colombier struct label {
137*219b2ee8SDavid du Colombier 	uchar	asc[9];
138*219b2ee8SDavid du Colombier 	union reptr	*chain;
139*219b2ee8SDavid du Colombier 	union reptr	*address;
140*219b2ee8SDavid du Colombier } ltab[LABSIZE];
141*219b2ee8SDavid du Colombier 
142*219b2ee8SDavid du Colombier struct label	*lab;
143*219b2ee8SDavid du Colombier struct label	*labend;
144*219b2ee8SDavid du Colombier 
145*219b2ee8SDavid du Colombier int	f;
146*219b2ee8SDavid du Colombier int	depth;
147*219b2ee8SDavid du Colombier 
148*219b2ee8SDavid du Colombier int	eargc;
149*219b2ee8SDavid du Colombier uchar	**eargv;
150*219b2ee8SDavid du Colombier 
151*219b2ee8SDavid du Colombier uchar	*address(uchar *);
152*219b2ee8SDavid du Colombier int		advance(uchar *, uchar *);
153*219b2ee8SDavid du Colombier void	arout(void);
154*219b2ee8SDavid du Colombier extern	uchar	bittab[];
155*219b2ee8SDavid du Colombier uchar	bad;
156*219b2ee8SDavid du Colombier uchar	*badp;
157*219b2ee8SDavid du Colombier int		cmp(uchar *, uchar *);
158*219b2ee8SDavid du Colombier union reptr	**cmpend[DEPTH];
159*219b2ee8SDavid du Colombier void	command(union reptr *);
160*219b2ee8SDavid du Colombier uchar	compfl;
161*219b2ee8SDavid du Colombier uchar	*compile(uchar *);
162*219b2ee8SDavid du Colombier uchar	*compsub(uchar *);
163*219b2ee8SDavid du Colombier void	dechain(void);
164*219b2ee8SDavid du Colombier int	depth;
165*219b2ee8SDavid du Colombier void	dosub(uchar *);
166*219b2ee8SDavid du Colombier int		ecmp(uchar *, uchar *, int);
167*219b2ee8SDavid du Colombier void	execute(uchar *);
168*219b2ee8SDavid du Colombier void		fcomp(void);
169*219b2ee8SDavid du Colombier uchar	*gline(uchar *);
170*219b2ee8SDavid du Colombier uchar	*lformat(int, uchar *);
171*219b2ee8SDavid du Colombier int		match(uchar *, int);
172*219b2ee8SDavid du Colombier union reptr	*pending;
173*219b2ee8SDavid du Colombier uchar	*place(uchar *, uchar *, uchar *);
174*219b2ee8SDavid du Colombier int		rline(uchar *);
175*219b2ee8SDavid du Colombier struct label	*search(struct label *);
176*219b2ee8SDavid du Colombier int		substitute(union reptr *);
177*219b2ee8SDavid du Colombier uchar	*text(uchar *);
178*219b2ee8SDavid du Colombier uchar	*ycomp(uchar *);
179