xref: /csrg-svn/bin/csh/init.c (revision 17511)
1*17511Sedward #ifndef lint
2*17511Sedward static	char *sccsid = "@(#)init.c	4.4 (Berkeley) 12/13/84";
3*17511Sedward #endif
41298Sbill 
51298Sbill #include "sh.local.h"
61298Sbill 
71298Sbill /*
81298Sbill  * C shell
91298Sbill  */
101298Sbill 
111298Sbill extern	int doalias();
121298Sbill extern	int dobg();
131298Sbill extern	int dobreak();
141298Sbill extern	int dochngd();
151298Sbill extern	int docontin();
161298Sbill extern	int dodirs();
171298Sbill extern	int doecho();
181298Sbill extern	int doelse();
191298Sbill extern	int doend();
201298Sbill extern	int doendif();
211298Sbill extern	int doendsw();
221298Sbill extern	int doeval();
231298Sbill extern	int doexit();
241298Sbill extern	int dofg();
251298Sbill extern	int doforeach();
261298Sbill extern	int doglob();
271298Sbill extern	int dogoto();
281298Sbill extern	int dohash();
291298Sbill extern	int dohist();
301298Sbill extern	int doif();
311298Sbill extern	int dojobs();
321298Sbill extern	int dokill();
331298Sbill extern	int dolet();
341298Sbill extern	int dolimit();
351298Sbill extern	int dologin();
361298Sbill extern	int dologout();
3712999Ssam #ifdef NEWGRP
381298Sbill extern	int donewgrp();
3912999Ssam #endif
401298Sbill extern	int donice();
411298Sbill extern	int donotify();
421298Sbill extern	int donohup();
431298Sbill extern	int doonintr();
441298Sbill extern	int dopopd();
451298Sbill extern	int dopushd();
461298Sbill extern	int dorepeat();
471298Sbill extern	int doset();
481298Sbill extern	int dosetenv();
491298Sbill extern	int dosource();
501298Sbill extern	int dostop();
511298Sbill extern	int dosuspend();
521298Sbill extern	int doswbrk();
531298Sbill extern	int doswitch();
541298Sbill extern	int dotime();
551298Sbill extern	int dounlimit();
561298Sbill extern	int doumask();
571298Sbill extern	int dowait();
581298Sbill extern	int dowhile();
591298Sbill extern	int dozip();
601298Sbill extern	int execash();
611298Sbill extern	int goodbye();
621298Sbill #ifdef VFORK
631298Sbill extern	int hashstat();
641298Sbill #endif
651298Sbill extern	int shift();
661298Sbill extern	int showall();
671298Sbill extern	int unalias();
681298Sbill extern	int dounhash();
691298Sbill extern	int unset();
701298Sbill extern	int dounsetenv();
711298Sbill 
721298Sbill #define	INF	1000
731298Sbill 
741298Sbill struct	biltins {
751298Sbill 	char	*bname;
761298Sbill 	int	(*bfunct)();
771298Sbill 	short	minargs, maxargs;
781298Sbill } bfunc[] = {
791298Sbill 	"@",		dolet,		0,	INF,
801298Sbill 	"alias",	doalias,	0,	INF,
811298Sbill 	"alloc",	showall,	0,	1,
821298Sbill 	"bg",		dobg,		0,	INF,
831298Sbill 	"break",	dobreak,	0,	0,
841298Sbill 	"breaksw",	doswbrk,	0,	0,
851298Sbill #ifdef IIASA
861298Sbill 	"bye",		goodbye,	0,	0,
871298Sbill #endif
881298Sbill 	"case",		dozip,		0,	1,
891298Sbill 	"cd",		dochngd,	0,	1,
901298Sbill 	"chdir",	dochngd,	0,	1,
911298Sbill 	"continue",	docontin,	0,	0,
921298Sbill 	"default",	dozip,		0,	0,
931298Sbill 	"dirs",		dodirs,		0,	1,
941298Sbill 	"echo",		doecho,		0,	INF,
951298Sbill 	"else",		doelse,		0,	INF,
961298Sbill 	"end",		doend,		0,	0,
971298Sbill 	"endif",	dozip,		0,	0,
981298Sbill 	"endsw",	dozip,		0,	0,
991298Sbill 	"eval",		doeval,		0,	INF,
1001298Sbill 	"exec",		execash,	1,	INF,
1011298Sbill 	"exit",		doexit,		0,	INF,
1021298Sbill 	"fg",		dofg,		0,	INF,
1031298Sbill 	"foreach",	doforeach,	3,	INF,
1041298Sbill #ifdef IIASA
1051298Sbill 	"gd",		dopushd,	0,	1,
1061298Sbill #endif
1071298Sbill 	"glob",		doglob,		0,	INF,
1081298Sbill 	"goto",		dogoto,		1,	1,
1091298Sbill #ifdef VFORK
1101298Sbill 	"hashstat",	hashstat,	0,	0,
1111298Sbill #endif
1121298Sbill 	"history",	dohist,		0,	2,
1131298Sbill 	"if",		doif,		1,	INF,
1141298Sbill 	"jobs",		dojobs,		0,	1,
1151298Sbill 	"kill",		dokill,		1,	INF,
1161298Sbill 	"limit",	dolimit,	0,	3,
1171298Sbill 	"login",	dologin,	0,	1,
1181298Sbill 	"logout",	dologout,	0,	0,
11912999Ssam #ifdef NEWGRP
1201298Sbill 	"newgrp",	donewgrp,	1,	1,
12112999Ssam #endif
1221298Sbill 	"nice",		donice,		0,	INF,
1231298Sbill 	"nohup",	donohup,	0,	INF,
1241298Sbill 	"notify",	donotify,	0,	INF,
1251298Sbill 	"onintr",	doonintr,	0,	2,
1261298Sbill 	"popd",		dopopd,		0,	1,
1271298Sbill 	"pushd",	dopushd,	0,	1,
1281298Sbill #ifdef IIASA
1291298Sbill 	"rd",		dopopd,		0,	1,
1301298Sbill #endif
1311298Sbill 	"rehash",	dohash,		0,	0,
1321298Sbill 	"repeat",	dorepeat,	2,	INF,
1331298Sbill 	"set",		doset,		0,	INF,
1341298Sbill 	"setenv",	dosetenv,	2,	2,
1351298Sbill 	"shift",	shift,		0,	1,
1364187Smckusic 	"source",	dosource,	1,	2,
1371298Sbill 	"stop",		dostop,		1,	INF,
1381298Sbill 	"suspend",	dosuspend,	0,	0,
1391298Sbill 	"switch",	doswitch,	1,	INF,
1401298Sbill 	"time",		dotime,		0,	INF,
1411298Sbill 	"umask",	doumask,	0,	1,
1421298Sbill 	"unalias",	unalias,	1,	INF,
1431298Sbill 	"unhash",	dounhash,	0,	0,
1441298Sbill 	"unlimit",	dounlimit,	0,	INF,
1451298Sbill 	"unset",	unset,		1,	INF,
1461298Sbill 	"unsetenv",	dounsetenv,	1,	INF,
1471298Sbill 	"wait",		dowait,		0,	0,
1481298Sbill 	"while",	dowhile,	1,	INF,
1491298Sbill };
150*17511Sedward int nbfunc = sizeof bfunc / sizeof *bfunc;
1511298Sbill 
1521298Sbill #define	ZBREAK		0
1531298Sbill #define	ZBRKSW		1
1541298Sbill #define	ZCASE		2
1551298Sbill #define	ZDEFAULT 	3
1561298Sbill #define	ZELSE		4
1571298Sbill #define	ZEND		5
1581298Sbill #define	ZENDIF		6
1591298Sbill #define	ZENDSW		7
1601298Sbill #define	ZEXIT		8
1611298Sbill #define	ZFOREACH	9
1621298Sbill #define	ZGOTO		10
1631298Sbill #define	ZIF		11
1641298Sbill #define	ZLABEL		12
1651298Sbill #define	ZLET		13
1661298Sbill #define	ZSET		14
1671298Sbill #define	ZSWITCH		15
1681298Sbill #define	ZTEST		16
1691298Sbill #define	ZTHEN		17
1701298Sbill #define	ZWHILE		18
1711298Sbill 
1721298Sbill struct srch {
1731298Sbill 	char	*s_name;
1741298Sbill 	short	s_value;
1751298Sbill } srchn[] = {
1761298Sbill 	"@",		ZLET,
1771298Sbill 	"break",	ZBREAK,
1781298Sbill 	"breaksw",	ZBRKSW,
1791298Sbill 	"case",		ZCASE,
1801298Sbill 	"default", 	ZDEFAULT,
1811298Sbill 	"else",		ZELSE,
1821298Sbill 	"end",		ZEND,
1831298Sbill 	"endif",	ZENDIF,
1841298Sbill 	"endsw",	ZENDSW,
1851298Sbill 	"exit",		ZEXIT,
1861298Sbill 	"foreach", 	ZFOREACH,
1871298Sbill 	"goto",		ZGOTO,
1881298Sbill 	"if",		ZIF,
1891298Sbill 	"label",	ZLABEL,
1901298Sbill 	"set",		ZSET,
1911298Sbill 	"switch",	ZSWITCH,
1921298Sbill 	"while",	ZWHILE,
1931298Sbill };
194*17511Sedward int nsrchn = sizeof srchn / sizeof *srchn;
1951298Sbill 
1961298Sbill struct	mesg {
1971298Sbill 	char	*iname;
1981298Sbill 	char	*pname;
1991298Sbill } mesg[] = {
2001298Sbill 	0,	0,
2011298Sbill 	"HUP",	"Hangup",
2021298Sbill 	"INT",	"Interrupt",
2031298Sbill 	"QUIT",	"Quit",
2041298Sbill 	"ILL",	"Illegal instruction",
2051298Sbill 	"TRAP",	"Trace/BPT trap",
2061298Sbill 	"IOT",	"IOT trap",
2071298Sbill 	"EMT",	"EMT trap",
2081298Sbill 	"FPE",	"Floating exception",
2091298Sbill 	"KILL",	"Killed",
2101298Sbill 	"BUS",	"Bus error",
2111298Sbill 	"SEGV",	"Segmentation fault",
2121298Sbill 	"SYS",	"Bad system call",
2131298Sbill 	"PIPE",	"Broken pipe",
2141298Sbill 	"ALRM",	"Alarm clock",
2151298Sbill 	"TERM",	"Terminated",
216*17511Sedward 	"URG",	"Urgent I/O condition",
2171298Sbill 	"STOP",	"Stopped (signal)",
2181298Sbill 	"TSTP",	"Stopped",
2191298Sbill 	"CONT",	"Continued",
2201298Sbill 	"CHLD",	"Child exited",
2211298Sbill 	"TTIN", "Stopped (tty input)",
2221298Sbill 	"TTOU", "Stopped (tty output)",
223*17511Sedward 	"IO",	"I/O possible",
2241298Sbill 	"XCPU",	"Cputime limit exceeded",
2251298Sbill 	"XFSZ", "Filesize limit exceeded",
226*17511Sedward 	"VTALRM","Virtual timer expired",
227*17511Sedward 	"PROF",	"Profiling timer expired",
2281298Sbill 	0,	"Signal 28",
2291298Sbill 	0,	"Signal 29",
2301298Sbill 	0,	"Signal 30",
2311298Sbill 	0,	"Signal 31",
2321298Sbill 	0,	"Signal 32"
2331298Sbill };
234