Commit | Line | Data |
---|---|---|
6f07513c | 1 | /* defs.h 4.4 85/03/19 */ |
92b4c148 KM |
2 | |
3 | # | |
4 | /* | |
5 | * UNIX shell | |
6 | */ | |
7 | ||
8 | /* error exits from various parts of shell */ | |
9 | #define ERROR 1 | |
10 | #define SYNBAD 2 | |
11 | #define SIGFAIL 3 | |
12 | #define SIGFLG 0200 | |
13 | ||
14 | /* command tree */ | |
15 | #define FPRS 020 | |
16 | #define FINT 040 | |
17 | #define FAMP 0100 | |
18 | #define FPIN 0400 | |
19 | #define FPOU 01000 | |
20 | #define FPCL 02000 | |
21 | #define FCMD 04000 | |
22 | #define COMMSK 017 | |
23 | ||
24 | #define TCOM 0 | |
25 | #define TPAR 1 | |
26 | #define TFIL 2 | |
27 | #define TLST 3 | |
28 | #define TIF 4 | |
29 | #define TWH 5 | |
30 | #define TUN 6 | |
31 | #define TSW 7 | |
32 | #define TAND 8 | |
33 | #define TORF 9 | |
34 | #define TFORK 10 | |
35 | #define TFOR 11 | |
36 | ||
37 | /* execute table */ | |
38 | #define SYSSET 1 | |
39 | #define SYSCD 2 | |
40 | #define SYSEXEC 3 | |
41 | #define SYSLOGIN 4 | |
42 | #define SYSTRAP 5 | |
43 | #define SYSEXIT 6 | |
44 | #define SYSSHFT 7 | |
45 | #define SYSWAIT 8 | |
46 | #define SYSCONT 9 | |
47 | #define SYSBREAK 10 | |
48 | #define SYSEVAL 11 | |
49 | #define SYSDOT 12 | |
50 | #define SYSRDONLY 13 | |
51 | #define SYSTIMES 14 | |
52 | #define SYSXPORT 15 | |
53 | #define SYSNULL 16 | |
54 | #define SYSREAD 17 | |
55 | #define SYSTST 18 | |
56 | #define SYSUMASK 19 | |
57 | ||
58 | /* used for input and output of shell */ | |
59 | #define INIO 10 | |
60 | #define OTIO 11 | |
61 | ||
62 | /*io nodes*/ | |
63 | #define USERIO 10 | |
64 | #define IOUFD 15 | |
65 | #define IODOC 16 | |
66 | #define IOPUT 32 | |
67 | #define IOAPP 64 | |
68 | #define IOMOV 128 | |
69 | #define IORDW 256 | |
70 | #define INPIPE 0 | |
71 | #define OTPIPE 1 | |
72 | ||
73 | /* arg list terminator */ | |
74 | #define ENDARGS 0 | |
75 | ||
76 | #include "mac.h" | |
77 | #include "mode.h" | |
78 | #include "name.h" | |
79 | ||
80 | ||
81 | /* result type declarations */ | |
82 | #define alloc malloc | |
83 | ADDRESS alloc(); | |
84 | VOID addblok(); | |
85 | STRING make(); | |
86 | STRING movstr(); | |
87 | TREPTR cmd(); | |
88 | TREPTR makefork(); | |
89 | NAMPTR lookup(); | |
90 | VOID setname(); | |
91 | VOID setargs(); | |
92 | DOLPTR useargs(); | |
93 | REAL expr(); | |
94 | STRING catpath(); | |
95 | STRING getpath(); | |
96 | STRING *scan(); | |
97 | STRING mactrim(); | |
98 | STRING macro(); | |
99 | STRING execs(); | |
100 | VOID await(); | |
101 | VOID post(); | |
102 | STRING copyto(); | |
103 | VOID exname(); | |
104 | STRING staknam(); | |
105 | VOID printnam(); | |
106 | VOID printflg(); | |
107 | VOID prs(); | |
108 | VOID prc(); | |
6f07513c | 109 | VOID setupenv(); |
92b4c148 KM |
110 | STRING *setenv(); |
111 | ||
112 | #define attrib(n,f) (n->namflg |= f) | |
113 | #define round(a,b) (((int)((ADR(a)+b)-1))&~((b)-1)) | |
114 | #define closepipe(x) (close(x[INPIPE]), close(x[OTPIPE])) | |
115 | #define eq(a,b) (cf(a,b)==0) | |
116 | #define max(a,b) ((a)>(b)?(a):(b)) | |
117 | #define assert(x) ; | |
118 | ||
119 | /* temp files and io */ | |
120 | UFD output; | |
121 | INT ioset; | |
122 | IOPTR iotemp; /* files to be deleted sometime */ | |
123 | IOPTR iopend; /* documents waiting to be read at NL */ | |
124 | ||
125 | /* substitution */ | |
126 | INT dolc; | |
127 | STRING *dolv; | |
128 | DOLPTR argfor; | |
129 | ARGPTR gchain; | |
130 | ||
131 | /* stack */ | |
132 | #define BLK(x) ((BLKPTR)(x)) | |
133 | #define BYT(x) ((BYTPTR)(x)) | |
134 | #define STK(x) ((STKPTR)(x)) | |
135 | #define ADR(x) ((char*)(x)) | |
136 | ||
137 | /* stak stuff */ | |
138 | #include "stak.h" | |
139 | ||
140 | /* string constants */ | |
141 | MSG atline; | |
142 | MSG readmsg; | |
143 | MSG colon; | |
144 | MSG minus; | |
145 | MSG nullstr; | |
146 | MSG sptbnl; | |
147 | MSG unexpected; | |
148 | MSG endoffile; | |
149 | MSG synmsg; | |
150 | ||
151 | /* name tree and words */ | |
152 | SYSTAB reserved; | |
153 | INT wdval; | |
154 | INT wdnum; | |
155 | ARGPTR wdarg; | |
156 | INT wdset; | |
157 | BOOL reserv; | |
158 | ||
159 | /* prompting */ | |
160 | MSG stdprompt; | |
161 | MSG supprompt; | |
162 | MSG profile; | |
163 | ||
164 | /* built in names */ | |
165 | NAMNOD fngnod; | |
166 | NAMNOD ifsnod; | |
167 | NAMNOD homenod; | |
168 | NAMNOD mailnod; | |
169 | NAMNOD pathnod; | |
170 | NAMNOD ps1nod; | |
171 | NAMNOD ps2nod; | |
172 | ||
173 | /* special names */ | |
174 | MSG flagadr; | |
175 | STRING cmdadr; | |
176 | STRING exitadr; | |
177 | STRING dolladr; | |
178 | STRING pcsadr; | |
179 | STRING pidadr; | |
180 | ||
181 | MSG defpath; | |
182 | ||
183 | /* names always present */ | |
184 | MSG mailname; | |
185 | MSG homename; | |
186 | MSG pathname; | |
187 | MSG fngname; | |
188 | MSG ifsname; | |
189 | MSG ps1name; | |
190 | MSG ps2name; | |
191 | ||
192 | /* transput */ | |
193 | CHAR tmpout[]; | |
194 | STRING tmpnam; | |
195 | INT serial; | |
196 | #define TMPNAM 7 | |
197 | FILE standin; | |
198 | #define input (standin->fdes) | |
199 | #define eof (standin->feof) | |
200 | INT peekc; | |
201 | STRING comdiv; | |
202 | MSG devnull; | |
203 | ||
204 | /* flags */ | |
205 | #define noexec 01 | |
206 | #define intflg 02 | |
207 | #define prompt 04 | |
208 | #define setflg 010 | |
209 | #define errflg 020 | |
210 | #define ttyflg 040 | |
211 | #define forked 0100 | |
212 | #define oneflg 0200 | |
213 | #define rshflg 0400 | |
214 | #define waiting 01000 | |
215 | #define stdflg 02000 | |
216 | #define execpr 04000 | |
217 | #define readpr 010000 | |
218 | #define keyflg 020000 | |
4827954d | 219 | #define batchflg 040000 |
92b4c148 KM |
220 | INT flags; |
221 | ||
222 | /* error exits from various parts of shell */ | |
223 | #include <setjmp.h> | |
224 | jmp_buf subshell; | |
225 | jmp_buf errshell; | |
22674779 | 226 | jmp_buf INTbuf; |
92b4c148 KM |
227 | |
228 | /* fault handling */ | |
229 | #include "brkincr.h" | |
230 | POS brkincr; | |
231 | ||
232 | #define MINTRAP 0 | |
6f07513c | 233 | #define MAXTRAP 32 |
92b4c148 KM |
234 | |
235 | #define INTR 2 | |
236 | #define QUIT 3 | |
237 | #define MEMF 11 | |
238 | #define ALARM 14 | |
239 | #define KILL 15 | |
240 | #define TRAPSET 2 | |
241 | #define SIGSET 4 | |
242 | #define SIGMOD 8 | |
243 | ||
244 | VOID fault(); | |
245 | BOOL trapnote; | |
246 | STRING trapcom[]; | |
247 | BOOL trapflg[]; | |
22674779 | 248 | BOOL trapjmp[]; |
92b4c148 KM |
249 | |
250 | /* name tree and words */ | |
251 | STRING *environ; | |
252 | CHAR numbuf[]; | |
253 | MSG export; | |
254 | MSG readonly; | |
255 | ||
256 | /* execflgs */ | |
257 | INT exitval; | |
258 | BOOL execbrk; | |
259 | INT loopcnt; | |
260 | INT breakcnt; | |
261 | ||
262 | /* messages */ | |
263 | MSG mailmsg; | |
264 | MSG coredump; | |
265 | MSG badopt; | |
266 | MSG badparam; | |
267 | MSG badsub; | |
268 | MSG nospace; | |
269 | MSG notfound; | |
270 | MSG badtrap; | |
271 | MSG baddir; | |
272 | MSG badshift; | |
273 | MSG illegal; | |
274 | MSG restricted; | |
275 | MSG execpmsg; | |
276 | MSG notid; | |
277 | MSG wtfailed; | |
278 | MSG badcreate; | |
279 | MSG piperr; | |
280 | MSG badopen; | |
281 | MSG badnum; | |
282 | MSG arglist; | |
283 | MSG txtbsy; | |
284 | MSG toobig; | |
285 | MSG badexec; | |
286 | MSG notfound; | |
287 | MSG badfile; | |
288 | ||
289 | address end[]; | |
290 | ||
291 | #include "ctype.h" | |
292 |