xref: /csrg-svn/old/sh/defs.h (revision 37678)
1*37678Sbostic /*	defs.h	4.5	89/05/08	*/
26688Smckusick 
36688Smckusick #
46688Smckusick /*
56688Smckusick  *	UNIX shell
66688Smckusick  */
76688Smckusick 
86688Smckusick /* error exits from various parts of shell */
96688Smckusick #define ERROR	1
106688Smckusick #define SYNBAD	2
116688Smckusick #define SIGFAIL 3
126688Smckusick #define SIGFLG	0200
136688Smckusick 
146688Smckusick /* command tree */
156688Smckusick #define FPRS	020
166688Smckusick #define FINT	040
176688Smckusick #define FAMP	0100
186688Smckusick #define FPIN	0400
196688Smckusick #define FPOU	01000
206688Smckusick #define FPCL	02000
216688Smckusick #define FCMD	04000
226688Smckusick #define COMMSK	017
236688Smckusick 
246688Smckusick #define TCOM	0
256688Smckusick #define TPAR	1
266688Smckusick #define TFIL	2
276688Smckusick #define TLST	3
286688Smckusick #define TIF	4
296688Smckusick #define TWH	5
306688Smckusick #define TUN	6
316688Smckusick #define TSW	7
326688Smckusick #define TAND	8
336688Smckusick #define TORF	9
346688Smckusick #define TFORK	10
356688Smckusick #define TFOR	11
366688Smckusick 
376688Smckusick /* execute table */
386688Smckusick #define SYSSET	1
396688Smckusick #define SYSCD	2
406688Smckusick #define SYSEXEC	3
416688Smckusick #define SYSLOGIN 4
426688Smckusick #define SYSTRAP	5
436688Smckusick #define SYSEXIT	6
446688Smckusick #define SYSSHFT 7
456688Smckusick #define SYSWAIT	8
466688Smckusick #define SYSCONT 9
476688Smckusick #define SYSBREAK 10
486688Smckusick #define SYSEVAL 11
496688Smckusick #define SYSDOT	12
506688Smckusick #define SYSRDONLY 13
516688Smckusick #define SYSTIMES 14
526688Smckusick #define SYSXPORT 15
536688Smckusick #define SYSNULL 16
546688Smckusick #define SYSREAD 17
556688Smckusick #define SYSTST	18
566688Smckusick #define	SYSUMASK	19
576688Smckusick 
586688Smckusick /* used for input and output of shell */
596688Smckusick #define INIO 10
606688Smckusick #define OTIO 11
616688Smckusick 
626688Smckusick /*io nodes*/
636688Smckusick #define USERIO	10
646688Smckusick #define IOUFD	15
656688Smckusick #define IODOC	16
666688Smckusick #define IOPUT	32
676688Smckusick #define IOAPP	64
686688Smckusick #define IOMOV	128
696688Smckusick #define IORDW	256
706688Smckusick #define INPIPE	0
716688Smckusick #define OTPIPE	1
726688Smckusick 
736688Smckusick /* arg list terminator */
746688Smckusick #define ENDARGS	0
756688Smckusick 
766688Smckusick #include	"mac.h"
776688Smckusick #include	"mode.h"
786688Smckusick #include	"name.h"
796688Smckusick 
806688Smckusick 
816688Smckusick /* result type declarations */
826688Smckusick #define alloc malloc
836688Smckusick ADDRESS		alloc();
846688Smckusick VOID		addblok();
856688Smckusick STRING		make();
866688Smckusick STRING		movstr();
876688Smckusick TREPTR		cmd();
886688Smckusick TREPTR		makefork();
896688Smckusick NAMPTR		lookup();
906688Smckusick VOID		setname();
916688Smckusick VOID		setargs();
926688Smckusick DOLPTR		useargs();
936688Smckusick REAL		expr();
946688Smckusick STRING		catpath();
956688Smckusick STRING		getpath();
966688Smckusick STRING		*scan();
976688Smckusick STRING		mactrim();
986688Smckusick STRING		macro();
996688Smckusick STRING		execs();
1006688Smckusick VOID		await();
1016688Smckusick VOID		post();
1026688Smckusick STRING		copyto();
1036688Smckusick VOID		exname();
1046688Smckusick STRING		staknam();
1056688Smckusick VOID		printnam();
1066688Smckusick VOID		printflg();
1076688Smckusick VOID		prs();
1086688Smckusick VOID		prc();
10918429Smckusick VOID		setupenv();
1106688Smckusick STRING		*setenv();
1116688Smckusick 
1126688Smckusick #define attrib(n,f)	(n->namflg |= f)
1136688Smckusick #define round(a,b)	(((int)((ADR(a)+b)-1))&~((b)-1))
1146688Smckusick #define closepipe(x)	(close(x[INPIPE]), close(x[OTPIPE]))
1156688Smckusick #define eq(a,b)		(cf(a,b)==0)
1166688Smckusick #define max(a,b)	((a)>(b)?(a):(b))
1176688Smckusick #define assert(x)	;
1186688Smckusick 
1196688Smckusick /* temp files and io */
1206688Smckusick UFD		output;
1216688Smckusick INT		ioset;
1226688Smckusick IOPTR		iotemp;		/* files to be deleted sometime */
1236688Smckusick IOPTR		iopend;		/* documents waiting to be read at NL */
1246688Smckusick 
1256688Smckusick /* substitution */
1266688Smckusick INT		dolc;
1276688Smckusick STRING		*dolv;
1286688Smckusick DOLPTR		argfor;
1296688Smckusick ARGPTR		gchain;
1306688Smckusick 
1316688Smckusick /* stack */
1326688Smckusick #define		BLK(x)	((BLKPTR)(x))
1336688Smckusick #define		BYT(x)	((BYTPTR)(x))
1346688Smckusick #define		STK(x)	((STKPTR)(x))
1356688Smckusick #define		ADR(x)	((char*)(x))
1366688Smckusick 
1376688Smckusick /* stak stuff */
1386688Smckusick #include	"stak.h"
1396688Smckusick 
1406688Smckusick /* string constants */
1416688Smckusick MSG		atline;
1426688Smckusick MSG		readmsg;
1436688Smckusick MSG		colon;
1446688Smckusick MSG		minus;
1456688Smckusick MSG		nullstr;
1466688Smckusick MSG		sptbnl;
1476688Smckusick MSG		unexpected;
1486688Smckusick MSG		endoffile;
1496688Smckusick MSG		synmsg;
1506688Smckusick 
1516688Smckusick /* name tree and words */
1526688Smckusick SYSTAB		reserved;
1536688Smckusick INT		wdval;
1546688Smckusick INT		wdnum;
1556688Smckusick ARGPTR		wdarg;
1566688Smckusick INT		wdset;
1576688Smckusick BOOL		reserv;
1586688Smckusick 
1596688Smckusick /* prompting */
1606688Smckusick MSG		stdprompt;
1616688Smckusick MSG		supprompt;
1626688Smckusick MSG		profile;
1636688Smckusick 
1646688Smckusick /* built in names */
1656688Smckusick NAMNOD		fngnod;
1666688Smckusick NAMNOD		ifsnod;
1676688Smckusick NAMNOD		homenod;
1686688Smckusick NAMNOD		mailnod;
1696688Smckusick NAMNOD		pathnod;
1706688Smckusick NAMNOD		ps1nod;
1716688Smckusick NAMNOD		ps2nod;
1726688Smckusick 
1736688Smckusick /* special names */
1746688Smckusick MSG		flagadr;
1756688Smckusick STRING		cmdadr;
1766688Smckusick STRING		exitadr;
1776688Smckusick STRING		dolladr;
1786688Smckusick STRING		pcsadr;
1796688Smckusick STRING		pidadr;
1806688Smckusick 
1816688Smckusick /* names always present */
1826688Smckusick MSG		mailname;
1836688Smckusick MSG		homename;
1846688Smckusick MSG		pathname;
1856688Smckusick MSG		fngname;
1866688Smckusick MSG		ifsname;
1876688Smckusick MSG		ps1name;
1886688Smckusick MSG		ps2name;
1896688Smckusick 
1906688Smckusick /* transput */
1916688Smckusick CHAR		tmpout[];
1926688Smckusick STRING		tmpnam;
1936688Smckusick INT		serial;
1946688Smckusick #define		TMPNAM 7
1956688Smckusick FILE		standin;
1966688Smckusick #define input	(standin->fdes)
1976688Smckusick #define eof	(standin->feof)
1986688Smckusick INT		peekc;
1996688Smckusick STRING		comdiv;
2006688Smckusick MSG		devnull;
2016688Smckusick 
2026688Smckusick /* flags */
2036688Smckusick #define		noexec	01
2046688Smckusick #define		intflg	02
2056688Smckusick #define		prompt	04
2066688Smckusick #define		setflg	010
2076688Smckusick #define		errflg	020
2086688Smckusick #define		ttyflg	040
2096688Smckusick #define		forked	0100
2106688Smckusick #define		oneflg	0200
2116688Smckusick #define		rshflg	0400
2126688Smckusick #define		waiting	01000
2136688Smckusick #define		stdflg	02000
2146688Smckusick #define		execpr	04000
2156688Smckusick #define		readpr	010000
2166688Smckusick #define		keyflg	020000
21717956Sserge #define		batchflg	040000
2186688Smckusick INT		flags;
2196688Smckusick 
2206688Smckusick /* error exits from various parts of shell */
2216688Smckusick #include	<setjmp.h>
2226688Smckusick jmp_buf		subshell;
2236688Smckusick jmp_buf		errshell;
22412992Ssam jmp_buf		INTbuf;
2256688Smckusick 
2266688Smckusick /* fault handling */
2276688Smckusick #include	"brkincr.h"
2286688Smckusick POS		brkincr;
2296688Smckusick 
2306688Smckusick #define MINTRAP	0
23118429Smckusick #define MAXTRAP	32
2326688Smckusick 
2336688Smckusick #define INTR	2
2346688Smckusick #define QUIT	3
2356688Smckusick #define MEMF	11
2366688Smckusick #define ALARM	14
2376688Smckusick #define KILL	15
2386688Smckusick #define TRAPSET	2
2396688Smckusick #define SIGSET	4
2406688Smckusick #define SIGMOD	8
2416688Smckusick 
2426688Smckusick VOID		fault();
2436688Smckusick BOOL		trapnote;
2446688Smckusick STRING		trapcom[];
2456688Smckusick BOOL		trapflg[];
24612992Ssam BOOL		trapjmp[];
2476688Smckusick 
2486688Smckusick /* name tree and words */
2496688Smckusick STRING		*environ;
2506688Smckusick CHAR		numbuf[];
2516688Smckusick MSG		export;
2526688Smckusick MSG		readonly;
2536688Smckusick 
2546688Smckusick /* execflgs */
2556688Smckusick INT		exitval;
2566688Smckusick BOOL		execbrk;
2576688Smckusick INT		loopcnt;
2586688Smckusick INT		breakcnt;
2596688Smckusick 
2606688Smckusick /* messages */
2616688Smckusick MSG		mailmsg;
2626688Smckusick MSG		coredump;
2636688Smckusick MSG		badopt;
2646688Smckusick MSG		badparam;
2656688Smckusick MSG		badsub;
2666688Smckusick MSG		nospace;
2676688Smckusick MSG		notfound;
2686688Smckusick MSG		badtrap;
2696688Smckusick MSG		baddir;
2706688Smckusick MSG		badshift;
2716688Smckusick MSG		illegal;
2726688Smckusick MSG		restricted;
2736688Smckusick MSG		execpmsg;
2746688Smckusick MSG		notid;
2756688Smckusick MSG		wtfailed;
2766688Smckusick MSG		badcreate;
2776688Smckusick MSG		piperr;
2786688Smckusick MSG		badopen;
2796688Smckusick MSG		badnum;
2806688Smckusick MSG		arglist;
2816688Smckusick MSG		txtbsy;
2826688Smckusick MSG		toobig;
2836688Smckusick MSG		badexec;
2846688Smckusick MSG		notfound;
2856688Smckusick MSG		badfile;
2866688Smckusick 
2876688Smckusick address	end[];
2886688Smckusick 
2896688Smckusick #include	"ctype.h"
2906688Smckusick 
291