|
|
1.1 root 1: /* @(#)defs.h 1.7 */
2: /*
3: * UNIX shell
4: */
5:
6:
7: /* error exits from various parts of shell */
8: #define ERROR 1
9: #define SYNBAD 2
10: #define SIGFAIL 2000
11: #define SIGFLG 0200
12:
13: /* command tree */
14: #define FPRS 0x0100
15: #define FINT 0x0200
16: #define FAMP 0x0400
17: #define FPIN 0x0800
18: #define FPOU 0x1000
19: #define FPCL 0x2000
20: #define FCMD 0x4000
21: #define COMMSK 0x00F0
22: #define CNTMSK 0x000F
23:
24: #define TCOM 0x0000
25: #define TPAR 0x0010
26: #define TFIL 0x0020
27: #define TLST 0x0030
28: #define TIF 0x0040
29: #define TWH 0x0050
30: #define TUN 0x0060
31: #define TSW 0x0070
32: #define TAND 0x0080
33: #define TORF 0x0090
34: #define TFORK 0x00A0
35: #define TFOR 0x00B0
36: #define TFND 0x00C0
37:
38: /* execute table */
39: #define SYSSET 1
40: #define SYSCD 2
41: #define SYSEXEC 3
42: #define SYSNEWGRP 4
43: #define SYSTRAP 5
44: #define SYSEXIT 6
45: #define SYSSHFT 7
46: #define SYSWAIT 8
47: #define SYSCONT 9
48: #define SYSBREAK 10
49: #define SYSEVAL 11
50: #define SYSDOT 12
51: #define SYSTIMES 14
52: #define SYSXPORT 15
53: #define SYSNULL 16
54: #define SYSREAD 17
55:
56: #define SYSUMASK 20
57:
58: #define SYSECHO 22
59: #define SYSPWD 24
60: #define SYSRETURN 25
61: #define SYSUNS 26
62: #define SYSMEM 27
63: #define SYSWHATIS 28
64: #define SYSBLTIN 29
65:
66: /* used for input and output of shell */
67: #define INIO 19
68:
69: /*io nodes*/
70: #define USERIO 10
71: #define IOUFD 15
72: #define IODOC 16
73: #define IOPUT 32
74: #define IOAPP 64
75: #define IOMOV 128
76: #define IORDW 256
77: #define INPIPE 0
78: #define OTPIPE 1
79:
80: /* arg list terminator */
81: #define ENDARGS 0
82:
83: #include "mac.h"
84: #include "mode.h"
85: #include "name.h"
86: #include <signal.h>
87:
88:
89: /* error catching */
90: extern int errno;
91:
92: /* result type declarations */
93:
94: #define alloc malloc
95:
96: extern char *alloc();
97: extern char *make();
98: extern char *movstr();
99: extern char *movstrn();
100: extern char *quotedstring();
101: extern char *strf();
102: extern struct trenod *cmd();
103: extern struct trenod *makefork();
104: extern struct namnod *lookup();
105: extern struct namnod *findnam();
106: extern struct dolnod *useargs();
107: extern float expr();
108: extern char *catpath();
109: extern char *getpath();
110: extern char *nextpath();
111: extern char **scan();
112: extern char *mactrim();
113: extern char *macro();
114: extern char *execs();
115: extern char *copyto();
116: extern int exname();
117: extern char *staknam();
118: extern int printnam();
119: extern int printro();
120: extern int printexp();
121: extern char **setenv();
122: extern long time();
123:
124: #define attrib(n,f) (n->namflg |= f)
125: #define round(a,b) (((int)(((char *)(a)+b)-1))&~((b)-1))
126: #define closepipe(x) (close(x[INPIPE]), close(x[OTPIPE]))
127: #define eq(a,b) (cf(a,b)==0)
128: #define max(a,b) ((a)>(b)?(a):(b))
129: #define assert(x) ;
130:
131: /* temp files and io */
132: extern int output;
133: extern int ioset;
134: extern struct ionod *iotemp; /* files to be deleted sometime */
135: extern struct ionod *fiotemp; /* function files to be deleted sometime */
136: extern struct ionod *iopend; /* documents waiting to be read at NL */
137: extern struct fdsave fdmap[];
138:
139:
140: /* substitution */
141: extern int dolc;
142: extern char **dolv;
143: extern struct dolnod *argfor;
144: extern struct argnod *gchain;
145:
146: /* stak stuff */
147: #include "stak.h"
148:
149: /* string constants */
150: extern char atline[];
151: extern char readmsg[];
152: extern char colon[];
153: extern char minus[];
154: extern char nullstr[];
155: extern char sptbnl[];
156: extern char unexpected[];
157: extern char endoffile[];
158: extern char synmsg[];
159:
160: /* name tree and words */
161: extern struct sysnod reserved[];
162: extern int no_reserved;
163: extern struct sysnod commands[];
164: extern int no_commands;
165:
166: extern int wdval;
167: extern int wdnum;
168: extern int fndef;
169: extern struct argnod *wdarg;
170: extern int wdset;
171: extern BOOL reserv;
172:
173: /* prompting */
174: extern char stdprompt[];
175: extern char supprompt[];
176: extern char profile[];
177:
178: /* built in names */
179: extern struct namnod fngnod;
180: extern struct namnod cdpnod;
181: extern struct namnod ifsnod;
182: extern struct namnod histnod;
183: extern struct namnod homenod;
184: extern struct namnod mailnod;
185: extern struct namnod pathnod;
186: extern struct namnod ps1nod;
187: extern struct namnod ps2nod;
188: extern struct namnod acctnod;
189:
190: /* special names */
191: extern char flagadr[];
192: extern char *pcsadr;
193: extern char *pidadr;
194: extern char *cmdadr;
195:
196: extern char defpath[];
197:
198: /* names always present */
199: extern char mailname[];
200: extern char homename[];
201: extern char pathname[];
202: extern char cdpname[];
203: extern char ifsname[];
204: extern char histname[];
205: extern char ps1name[];
206: extern char ps2name[];
207: extern char acctname[];
208:
209: /* transput */
210: extern char tmpout[];
211: extern char *tmpnam;
212: extern int serial;
213:
214: #define TMPNAM 7
215:
216: extern struct fileblk *standin;
217:
218: #define input (standin->fdes)
219: #define eof (standin->feof)
220:
221: extern int peekc;
222: extern int peekn;
223: extern int histfd;
224: extern char *comdiv;
225: extern char devnull[];
226:
227: /* flags */
228: #define noexec 01
229: #define sysflg 01
230: #define intflg 02
231: #define prompt 04
232: #define setflg 010
233: #define errflg 020
234: #define ttyflg 040
235: #define forked 0100
236: #define oneflg 0200
237: #define protflg 0400
238: #define waiting 01000
239: #define stdflg 02000
240: #define STDFLG 's'
241: #define execpr 04000
242: #define readpr 010000
243: #define keyflg 020000
244: #define nofngflg 0200000
245: #define exportflg 0400000
246:
247: extern long flags;
248: extern int rwait; /* flags read waiting */
249:
250: /* error exits from various parts of shell */
251: #include <setjmp.h>
252: extern jmp_buf subshell;
253: extern jmp_buf errshell;
254:
255: /* fault handling */
256: #include "brkincr.h"
257:
258: extern unsigned brkincr;
259: #define MINTRAP 0
260: #define MAXTRAP 32
261:
262: #define TRAPSET 2
263: #define SIGSET 4
264: #define SIGMOD 8
265: #define SIGCAUGHT 16
266:
267: extern int fault();
268: extern BOOL trapnote;
269: extern char *trapcom[];
270: extern BOOL trapflg[];
271:
272: /* name tree and words */
273: extern char **environ;
274: extern char numbuf[];
275: extern char export[];
276: extern char duperr[];
277:
278: /* execflgs */
279: extern int exitval;
280: extern int retval;
281: extern BOOL execbrk;
282: extern int loopcnt;
283: extern int breakcnt;
284: extern int funcnt;
285:
286: /* messages */
287: extern char mailmsg[];
288: extern char coredump[];
289: extern char badopt[];
290: extern char badparam[];
291: extern char unset[];
292: extern char badsub[];
293: extern char nospace[];
294: extern char nostack[];
295: extern char notfound[];
296: extern char notbltin[];
297: extern char badtrap[];
298: extern char baddir[];
299: extern char badshift[];
300: extern char execpmsg[];
301: extern char notid[];
302: extern char badcreate[];
303: extern char nofork[];
304: extern char noswap[];
305: extern char piperr[];
306: extern char badopen[];
307: extern char badnum[];
308: extern char arglist[];
309: extern char txtbsy[];
310: extern char toobig[];
311: extern char badexec[];
312: extern char badfile[];
313: extern char badreturn[];
314: extern char badexport[];
315: extern char badunset[];
316: extern char nohome[];
317: extern char badperm[];
318: extern char badfname[];
319:
320: /* 'builtin' error messages */
321:
322: extern char btest[];
323: extern char badop[];
324:
325: /* fork constant */
326:
327: #define FORKLIM 32
328:
329: extern address end[];
330:
331: #include "ctype.h"
332:
333: extern int wasintr; /* used to tell if break or delete is hit
334: * while executing a wait
335: */
336: extern int eflag;
337:
338:
339: /*
340: * Find out if it is time to go away.
341: * `trapnote' is set to SIGSET when fault is seen and
342: * no trap has been set.
343: */
344:
345: #define sigchk() if (trapnote & SIGSET) \
346: exitsh(exitval ? exitval : SIGFAIL)
347:
348: #define exitset() retval = exitval
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.