xref: /original-bsd/bin/csh/init.c (revision ba72ef4c)
1 static	char *sccsid = "@(#)init.c 4.1 10/09/80";
2 
3 #include "sh.local.h"
4 
5 /*
6  * C shell
7  */
8 
9 extern	int doalias();
10 extern	int dobg();
11 extern	int dobreak();
12 extern	int dochngd();
13 extern	int docontin();
14 extern	int dodirs();
15 extern	int doecho();
16 extern	int doelse();
17 extern	int doend();
18 extern	int doendif();
19 extern	int doendsw();
20 extern	int doeval();
21 extern	int doexit();
22 extern	int dofg();
23 extern	int doforeach();
24 extern	int doglob();
25 extern	int dogoto();
26 extern	int dohash();
27 extern	int dohist();
28 extern	int doif();
29 extern	int dojobs();
30 extern	int dokill();
31 extern	int dolet();
32 extern	int dolimit();
33 extern	int dologin();
34 extern	int dologout();
35 extern	int donewgrp();
36 extern	int donice();
37 extern	int donotify();
38 extern	int donohup();
39 extern	int doonintr();
40 extern	int dopopd();
41 extern	int dopushd();
42 extern	int dorepeat();
43 extern	int doset();
44 extern	int dosetenv();
45 extern	int dosource();
46 extern	int dostop();
47 extern	int dosuspend();
48 extern	int doswbrk();
49 extern	int doswitch();
50 extern	int dotime();
51 extern	int dounlimit();
52 extern	int doumask();
53 extern	int dowait();
54 extern	int dowhile();
55 extern	int dozip();
56 extern	int execash();
57 extern	int goodbye();
58 #ifdef VFORK
59 extern	int hashstat();
60 #endif
61 extern	int shift();
62 extern	int showall();
63 extern	int unalias();
64 extern	int dounhash();
65 extern	int unset();
66 extern	int dounsetenv();
67 
68 #define	INF	1000
69 
70 struct	biltins {
71 	char	*bname;
72 	int	(*bfunct)();
73 	short	minargs, maxargs;
74 } bfunc[] = {
75 	"@",		dolet,		0,	INF,
76 	"alias",	doalias,	0,	INF,
77 #ifdef debug
78 	"alloc",	showall,	0,	1,
79 #endif
80 	"bg",		dobg,		0,	INF,
81 	"break",	dobreak,	0,	0,
82 	"breaksw",	doswbrk,	0,	0,
83 #ifdef IIASA
84 	"bye",		goodbye,	0,	0,
85 #endif
86 	"case",		dozip,		0,	1,
87 	"cd",		dochngd,	0,	1,
88 	"chdir",	dochngd,	0,	1,
89 	"continue",	docontin,	0,	0,
90 	"default",	dozip,		0,	0,
91 	"dirs",		dodirs,		0,	1,
92 	"echo",		doecho,		0,	INF,
93 	"else",		doelse,		0,	INF,
94 	"end",		doend,		0,	0,
95 	"endif",	dozip,		0,	0,
96 	"endsw",	dozip,		0,	0,
97 	"eval",		doeval,		0,	INF,
98 	"exec",		execash,	1,	INF,
99 	"exit",		doexit,		0,	INF,
100 	"fg",		dofg,		0,	INF,
101 	"foreach",	doforeach,	3,	INF,
102 #ifdef IIASA
103 	"gd",		dopushd,	0,	1,
104 #endif
105 	"glob",		doglob,		0,	INF,
106 	"goto",		dogoto,		1,	1,
107 #ifdef VFORK
108 	"hashstat",	hashstat,	0,	0,
109 #endif
110 	"history",	dohist,		0,	2,
111 	"if",		doif,		1,	INF,
112 	"jobs",		dojobs,		0,	1,
113 	"kill",		dokill,		1,	INF,
114 	"limit",	dolimit,	0,	3,
115 	"login",	dologin,	0,	1,
116 	"logout",	dologout,	0,	0,
117 	"newgrp",	donewgrp,	1,	1,
118 	"nice",		donice,		0,	INF,
119 	"nohup",	donohup,	0,	INF,
120 	"notify",	donotify,	0,	INF,
121 	"onintr",	doonintr,	0,	2,
122 	"popd",		dopopd,		0,	1,
123 	"pushd",	dopushd,	0,	1,
124 #ifdef IIASA
125 	"rd",		dopopd,		0,	1,
126 #endif
127 	"rehash",	dohash,		0,	0,
128 	"repeat",	dorepeat,	2,	INF,
129 	"set",		doset,		0,	INF,
130 	"setenv",	dosetenv,	2,	2,
131 	"shift",	shift,		0,	1,
132 	"source",	dosource,	1,	1,
133 	"stop",		dostop,		1,	INF,
134 	"suspend",	dosuspend,	0,	0,
135 	"switch",	doswitch,	1,	INF,
136 	"time",		dotime,		0,	INF,
137 	"umask",	doumask,	0,	1,
138 	"unalias",	unalias,	1,	INF,
139 	"unhash",	dounhash,	0,	0,
140 	"unlimit",	dounlimit,	0,	INF,
141 	"unset",	unset,		1,	INF,
142 	"unsetenv",	dounsetenv,	1,	INF,
143 	"wait",		dowait,		0,	0,
144 	"while",	dowhile,	1,	INF,
145 	0,		0,		0,	0,
146 };
147 
148 #define	ZBREAK		0
149 #define	ZBRKSW		1
150 #define	ZCASE		2
151 #define	ZDEFAULT 	3
152 #define	ZELSE		4
153 #define	ZEND		5
154 #define	ZENDIF		6
155 #define	ZENDSW		7
156 #define	ZEXIT		8
157 #define	ZFOREACH	9
158 #define	ZGOTO		10
159 #define	ZIF		11
160 #define	ZLABEL		12
161 #define	ZLET		13
162 #define	ZSET		14
163 #define	ZSWITCH		15
164 #define	ZTEST		16
165 #define	ZTHEN		17
166 #define	ZWHILE		18
167 
168 struct srch {
169 	char	*s_name;
170 	short	s_value;
171 } srchn[] = {
172 	"@",		ZLET,
173 	"break",	ZBREAK,
174 	"breaksw",	ZBRKSW,
175 	"case",		ZCASE,
176 	"default", 	ZDEFAULT,
177 	"else",		ZELSE,
178 	"end",		ZEND,
179 	"endif",	ZENDIF,
180 	"endsw",	ZENDSW,
181 	"exit",		ZEXIT,
182 	"foreach", 	ZFOREACH,
183 	"goto",		ZGOTO,
184 	"if",		ZIF,
185 	"label",	ZLABEL,
186 	"set",		ZSET,
187 	"switch",	ZSWITCH,
188 	"while",	ZWHILE,
189 	0,		0,
190 };
191 
192 struct	mesg {
193 	char	*iname;
194 	char	*pname;
195 } mesg[] = {
196 	0,	0,
197 	"HUP",	"Hangup",
198 	"INT",	"Interrupt",
199 	"QUIT",	"Quit",
200 	"ILL",	"Illegal instruction",
201 	"TRAP",	"Trace/BPT trap",
202 	"IOT",	"IOT trap",
203 	"EMT",	"EMT trap",
204 	"FPE",	"Floating exception",
205 	"KILL",	"Killed",
206 	"BUS",	"Bus error",
207 	"SEGV",	"Segmentation fault",
208 	"SYS",	"Bad system call",
209 	"PIPE",	"Broken pipe",
210 	"ALRM",	"Alarm clock",
211 	"TERM",	"Terminated",
212 	0,	"Signal 16",
213 	"STOP",	"Stopped (signal)",
214 	"TSTP",	"Stopped",
215 	"CONT",	"Continued",
216 	"CHLD",	"Child exited",
217 	"TTIN", "Stopped (tty input)",
218 	"TTOU", "Stopped (tty output)",
219 	"TINT", "Tty input interrupt",
220 	"XCPU",	"Cputime limit exceeded",
221 	"XFSZ", "Filesize limit exceeded",
222 	0,	"Signal 26",
223 	0,	"Signal 27",
224 	0,	"Signal 28",
225 	0,	"Signal 29",
226 	0,	"Signal 30",
227 	0,	"Signal 31",
228 	0,	"Signal 32"
229 };
230