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