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