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