|
|
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: #ifdef BSD4_2
95: #define shalloc malloc
96: #define shfree free
97: #endif
98:
99: extern char *shalloc();
100: extern char *make();
101: extern char *movstr();
102: extern char *movstrn();
103: extern char *quotedstring();
104: extern char *strf();
105: extern struct trenod *cmd();
106: extern struct trenod *makefork();
107: extern struct namnod *lookup();
108: extern struct namnod *findnam();
109: extern struct dolnod *useargs();
110: extern float expr();
111: extern char *catpath();
112: extern char *getpath();
113: extern char *nextpath();
114: extern char **scan();
115: extern char *mactrim();
116: extern char *macro();
117: extern char *execs();
118: extern char *copyto();
119: extern int exname();
120: extern char *staknam();
121: extern int printnam();
122: extern int printro();
123: extern int printexp();
124: extern char **setenv();
125: extern long time();
126: extern void prs_2buff();
127: extern void prc_buff();
128: extern void prs_buff();
129: extern void prn_buff();
130: extern void prs_cntl();
131: extern void flushb();
132: extern long lseek();
133:
134: #define attrib(n,f) (n->namflg |= f)
135: #ifdef CRAY
136: #define round(a,b) ((((a)+(b))-1)&~((b)-1))
137: #define sround(a,b) ((char *)((int)(a+(b-1))&077777777))
138: #else
139: #define round(a,b) (((int)(((char *)(a)+b)-1))&~((b)-1))
140: #define sround round
141: #endif
142: #define closepipe(x) (close(x[INPIPE]), close(x[OTPIPE]))
143: #define eq(a,b) (cf(a,b)==0)
144: #define max(a,b) ((a)>(b)?(a):(b))
145: #define assert(x) ;
146:
147: /* temp files and io */
148: extern int output;
149: extern int ioset;
150: extern struct ionod *iotemp; /* files to be deleted sometime */
151: extern struct ionod *fiotemp; /* function files to be deleted sometime */
152: extern struct ionod *iopend; /* documents waiting to be read at NL */
153: extern struct fdsave fdmap[];
154:
155:
156: /* substitution */
157: extern int dolc;
158: extern char **dolv;
159: extern struct dolnod *argfor;
160: extern struct argnod *gchain;
161:
162: /* stak stuff */
163: #include "stak.h"
164:
165: /* string constants */
166: extern char atline[];
167: extern char readmsg[];
168: extern char colon[];
169: extern char minus[];
170: extern char nullstr[];
171: extern char sptbnl[];
172: extern char unexpected[];
173: extern char endoffile[];
174: extern char synmsg[];
175:
176: /* name tree and words */
177: extern struct sysnod reserved[];
178: extern int no_reserved;
179: extern struct sysnod commands[];
180: extern int no_commands;
181:
182: extern int wdval;
183: extern int wdnum;
184: extern int fndef;
185: extern struct argnod *wdarg;
186: extern int wdset;
187: extern BOOL reserv;
188:
189: /* prompting */
190: extern char stdprompt[];
191: extern char supprompt[];
192: extern char profile[];
193:
194: /* built in names */
195: extern struct namnod fngnod;
196: extern struct namnod cdpnod;
197: extern struct namnod ifsnod;
198: extern struct namnod histnod;
199: extern struct namnod homenod;
200: extern struct namnod mailnod;
201: extern struct namnod pathnod;
202: extern struct namnod ps1nod;
203: extern struct namnod ps2nod;
204: extern struct namnod acctnod;
205:
206: /* special names */
207: extern char flagadr[];
208: extern char *pcsadr;
209: extern char *pidadr;
210: extern char *cmdadr;
211:
212: extern char defpath[];
213:
214: /* names always present */
215: extern char mailname[];
216: extern char homename[];
217: extern char pathname[];
218: extern char cdpname[];
219: extern char ifsname[];
220: extern char histname[];
221: extern char ps1name[];
222: extern char ps2name[];
223: extern char acctname[];
224:
225: /* transput */
226: extern char tmpout[];
227: extern char *tmpnam;
228: extern int serial;
229:
230: #define TMPNAM 7
231:
232: extern struct fileblk *standin;
233:
234: #define input (standin->fdes)
235: #define eof (standin->feof)
236:
237: extern int peekc;
238: extern int peekn;
239: extern int histfd;
240: extern char *comdiv;
241: extern char devnull[];
242:
243: /* flags */
244: #define noexec 01
245: #define sysflg 01
246: #define intflg 02
247: #define prompt 04
248: #define setflg 010
249: #define errflg 020
250: #define ttyflg 040
251: #define forked 0100
252: #define oneflg 0200
253: #define protflg 0400
254: #define waiting 01000
255: #define stdflg 02000
256: #define STDFLG 's'
257: #define execpr 04000
258: #define readpr 010000
259: #define keyflg 020000
260: #define nofngflg 0200000
261: #define exportflg 0400000
262:
263: extern long flags;
264: extern int rwait; /* flags read waiting */
265:
266: /* error exits from various parts of shell */
267: #include <setjmp.h>
268: extern jmp_buf subshell;
269: extern jmp_buf errshell;
270:
271: /* fault handling */
272: #include "brkincr.h"
273:
274: extern unsigned brkincr;
275: #define MINTRAP 0
276: #define MAXTRAP 32
277:
278: #define TRAPSET 2
279: #define SIGSET 4
280: #define SIGMOD 8
281: #define SIGCAUGHT 16
282:
283: extern int fault();
284: extern BOOL trapnote;
285: extern char *trapcom[];
286: extern BOOL trapflg[];
287:
288: /* name tree and words */
289: extern char **environ;
290: extern char numbuf[];
291: extern char export[];
292: extern char duperr[];
293:
294: /* execflgs */
295: extern int exitval;
296: extern int retval;
297: extern BOOL execbrk;
298: extern int loopcnt;
299: extern int breakcnt;
300: extern int funcnt;
301:
302: /* messages */
303: extern char mailmsg[];
304: extern char coredump[];
305: extern char badopt[];
306: extern char badparam[];
307: extern char unset[];
308: extern char badsub[];
309: extern char nospace[];
310: extern char nostack[];
311: extern char notfound[];
312: extern char notbltin[];
313: extern char badtrap[];
314: extern char baddir[];
315: extern char badshift[];
316: extern char execpmsg[];
317: extern char notid[];
318: extern char badcreate[];
319: extern char nofork[];
320: extern char noswap[];
321: extern char piperr[];
322: extern char badopen[];
323: extern char badnum[];
324: extern char arglist[];
325: extern char txtbsy[];
326: extern char toobig[];
327: extern char badexec[];
328: extern char badfile[];
329: extern char badreturn[];
330: extern char badexport[];
331: extern char badunset[];
332: extern char nohome[];
333: extern char badperm[];
334: extern char badfname[];
335:
336: /* 'builtin' error messages */
337:
338: extern char btest[];
339: extern char badop[];
340:
341: /* fork constant */
342:
343: #define FORKLIM 32
344:
345: extern address end[];
346:
347: #include "sctype.h"
348:
349: extern int wasintr; /* used to tell if break or delete is hit
350: * while executing a wait
351: */
352: extern int eflag;
353:
354:
355: /*
356: * Find out if it is time to go away.
357: * `trapnote' is set to SIGSET when fault is seen and
358: * no trap has been set.
359: */
360:
361: #define sigchk() if (trapnote & SIGSET) \
362: exitsh(exitval ? exitval : SIGFAIL)
363:
364: #define exitset() retval = exitval
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.