xref: /csrg-svn/local/toolchest/ksh/sh/mode.h (revision 35155)
1*35155Smarc /*
2*35155Smarc 
3*35155Smarc  *      Copyright (c) 1984, 1985, 1986 AT&T
4*35155Smarc  *      All Rights Reserved
5*35155Smarc 
6*35155Smarc  *      THIS IS UNPUBLISHED PROPRIETARY SOURCE
7*35155Smarc  *      CODE OF AT&T.
8*35155Smarc  *      The copyright notice above does not
9*35155Smarc  *      evidence any actual or intended
10*35155Smarc  *      publication of such source code.
11*35155Smarc 
12*35155Smarc  */
13*35155Smarc /* @(#)mode.h	1.1 */
14*35155Smarc /*
15*35155Smarc  *	UNIX shell
16*35155Smarc  *	S. R. Bourne
17*35155Smarc  *	Rewritten by David Korn
18*35155Smarc  *
19*35155Smarc  */
20*35155Smarc 
21*35155Smarc 
22*35155Smarc 
23*35155Smarc /* command tree for tretyp */
24*35155Smarc #define COMBITS	4
25*35155Smarc #define COMMSK	((1<<COMBITS)-1)
26*35155Smarc #define COMSCAN	(01<<COMBITS)
27*35155Smarc #define FPRS	(01<<COMBITS)
28*35155Smarc #define FINT	(02<<COMBITS)
29*35155Smarc #define FAMP	(04<<COMBITS)
30*35155Smarc #define FTMP	(010<<COMBITS)
31*35155Smarc #define FPIN	(020<<COMBITS)
32*35155Smarc #define FPOU	(040<<COMBITS)
33*35155Smarc #define FPCL	(0100<<COMBITS)
34*35155Smarc #define FCMD	(0200<<COMBITS)
35*35155Smarc #define	FCOMSUB	(0400<<COMBITS)
36*35155Smarc 
37*35155Smarc #define TCOM	0
38*35155Smarc #define TPAR	1
39*35155Smarc #define TFIL	2
40*35155Smarc #define TLST	3
41*35155Smarc #define TIF	4
42*35155Smarc #define TWH	5
43*35155Smarc #define TUN	6
44*35155Smarc #define TSW	7
45*35155Smarc #define TAND	8
46*35155Smarc #define TORF	9
47*35155Smarc #define TFORK	10
48*35155Smarc #define TFOR	11
49*35155Smarc #define TSELECT	12
50*35155Smarc #define	TTIME	13
51*35155Smarc #define TSETIO	14
52*35155Smarc #define TPROC	15
53*35155Smarc 
54*35155Smarc 
55*35155Smarc /* heap storage */
56*35155Smarc /* this node is a proforma for those that follow */
57*35155Smarc struct trenod
58*35155Smarc {
59*35155Smarc 	int	tretyp;
60*35155Smarc 	IOPTR	treio;
61*35155Smarc };
62*35155Smarc 
63*35155Smarc 
64*35155Smarc struct dolnod
65*35155Smarc {
66*35155Smarc 	DOLPTR	dolnxt;
67*35155Smarc 	int	doluse;
68*35155Smarc 	char	*dolarg[1];
69*35155Smarc };
70*35155Smarc 
71*35155Smarc struct forknod
72*35155Smarc {
73*35155Smarc 	int	forktyp;
74*35155Smarc 	IOPTR	forkio;
75*35155Smarc 	TREPTR	forktre;
76*35155Smarc };
77*35155Smarc 
78*35155Smarc struct comnod
79*35155Smarc {
80*35155Smarc 	int	comtyp;
81*35155Smarc 	IOPTR	comio;
82*35155Smarc 	ARGPTR	comarg;
83*35155Smarc 	ARGPTR	comset;
84*35155Smarc 	int	comline;
85*35155Smarc };
86*35155Smarc 
87*35155Smarc struct ifnod
88*35155Smarc {
89*35155Smarc 	int	iftyp;
90*35155Smarc 	TREPTR	iftre;
91*35155Smarc 	TREPTR	thtre;
92*35155Smarc 	TREPTR	eltre;
93*35155Smarc };
94*35155Smarc 
95*35155Smarc struct whnod
96*35155Smarc {
97*35155Smarc 	int	whtyp;
98*35155Smarc 	TREPTR	whtre;
99*35155Smarc 	TREPTR	dotre;
100*35155Smarc };
101*35155Smarc 
102*35155Smarc struct fornod
103*35155Smarc {
104*35155Smarc 	int	fortyp;
105*35155Smarc 	TREPTR	fortre;
106*35155Smarc 	char *fornam;
107*35155Smarc 	COMPTR	forlst;
108*35155Smarc };
109*35155Smarc 
110*35155Smarc struct swnod
111*35155Smarc {
112*35155Smarc 	int	swtyp;
113*35155Smarc 	char *swarg;
114*35155Smarc 	REGPTR	swlst;
115*35155Smarc };
116*35155Smarc 
117*35155Smarc struct regnod
118*35155Smarc {
119*35155Smarc 	ARGPTR	regptr;
120*35155Smarc 	TREPTR	regcom;
121*35155Smarc 	REGPTR	regnxt;
122*35155Smarc };
123*35155Smarc 
124*35155Smarc struct parnod
125*35155Smarc {
126*35155Smarc 	int	partyp;
127*35155Smarc 	TREPTR	partre;
128*35155Smarc };
129*35155Smarc 
130*35155Smarc struct lstnod
131*35155Smarc {
132*35155Smarc 	int	lsttyp;
133*35155Smarc 	TREPTR	lstlef;
134*35155Smarc 	TREPTR	lstrit;
135*35155Smarc };
136*35155Smarc 
137*35155Smarc 
138*35155Smarc struct procnod
139*35155Smarc {
140*35155Smarc 	int	proctyp;
141*35155Smarc 	BLKPTR	proctre;
142*35155Smarc 	char	*procnam;
143*35155Smarc 	long	procloc;
144*35155Smarc };
145*35155Smarc 
146*35155Smarc 
147*35155Smarc #define	FORKTYPE	(sizeof(struct forknod))
148*35155Smarc #define	COMTYPE		(sizeof(struct comnod))
149*35155Smarc #define	IFTYPE		(sizeof(struct ifnod))
150*35155Smarc #define	WHTYPE		(sizeof(struct whnod))
151*35155Smarc #define	FORTYPE		(sizeof(struct fornod))
152*35155Smarc #define	SWTYPE		(sizeof(struct swnod))
153*35155Smarc #define	REGTYPE		(sizeof(struct regnod))
154*35155Smarc #define	PARTYPE		(sizeof(struct parnod))
155*35155Smarc #define	LSTTYPE		(sizeof(struct lstnod))
156*35155Smarc #define DOLTYPE		(sizeof(struct dolnod))
157*35155Smarc #define	PROCTYPE	(sizeof(struct procnod))
158