xref: /original-bsd/bin/csh/init.c (revision e0399a72)
1 /*-
2  * Copyright (c) 1980, 1991 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  */
7 
8 #ifndef lint
9 static char sccsid[] = "@(#)init.c	5.7 (Berkeley) 04/04/91";
10 #endif /* not lint */
11 
12 #include "sh.h"
13 
14 /*
15  * C shell
16  */
17 
18 extern	int doalias();
19 extern	int dobg();
20 extern	int dobreak();
21 extern	int dochngd();
22 extern	int docontin();
23 extern	int dodirs();
24 extern	int doecho();
25 extern	int doelse();
26 extern	int doend();
27 extern	int doendif();
28 extern	int doendsw();
29 extern	int doeval();
30 extern	int doexit();
31 extern	int dofg();
32 extern	int doforeach();
33 extern	int doglob();
34 extern	int dogoto();
35 extern	int dohash();
36 extern	int dohist();
37 extern	int doif();
38 extern	int dojobs();
39 extern	int dokill();
40 extern	int dolet();
41 extern	int dolimit();
42 extern	int dologin();
43 extern	int dologout();
44 extern	int donice();
45 extern	int donotify();
46 extern	int donohup();
47 extern	int doonintr();
48 extern	int dopopd();
49 extern	int dopushd();
50 extern	int dorepeat();
51 extern	int doset();
52 extern	int dosetenv();
53 extern	int dosource();
54 extern	int dostop();
55 extern	int dosuspend();
56 extern	int doswbrk();
57 extern	int doswitch();
58 extern	int dotime();
59 extern	int dounlimit();
60 extern	int doumask();
61 extern	int dowait();
62 extern	int dowhile();
63 extern	int dozip();
64 extern	int execash();
65 extern	int goodbye();
66 #ifdef VFORK
67 extern	int hashstat();
68 #endif
69 extern	int shift();
70 extern	int showall();
71 extern	int unalias();
72 extern	int dounhash();
73 extern	int unset();
74 extern	int dounsetenv();
75 
76 #define	INF	1000
77 
78 struct biltins bfunc[] = {
79 	"@",		dolet,		0,	INF,
80 	"alias",	doalias,	0,	INF,
81 	"alloc",	showall,	0,	1,
82 	"bg",		dobg,		0,	INF,
83 	"break",	dobreak,	0,	0,
84 	"breaksw",	doswbrk,	0,	0,
85 	"case",		dozip,		0,	1,
86 	"cd",		dochngd,	0,	1,
87 	"chdir",	dochngd,	0,	1,
88 	"continue",	docontin,	0,	0,
89 	"default",	dozip,		0,	0,
90 	"dirs",		dodirs,		0,	1,
91 	"echo",		doecho,		0,	INF,
92 	"else",		doelse,		0,	INF,
93 	"end",		doend,		0,	0,
94 	"endif",	dozip,		0,	0,
95 	"endsw",	dozip,		0,	0,
96 	"eval",		doeval,		0,	INF,
97 	"exec",		execash,	1,	INF,
98 	"exit",		doexit,		0,	INF,
99 	"fg",		dofg,		0,	INF,
100 	"foreach",	doforeach,	3,	INF,
101 	"glob",		doglob,		0,	INF,
102 	"goto",		dogoto,		1,	1,
103 #ifdef VFORK
104 	"hashstat",	hashstat,	0,	0,
105 #endif
106 	"history",	dohist,		0,	2,
107 	"if",		doif,		1,	INF,
108 	"jobs",		dojobs,		0,	1,
109 	"kill",		dokill,		1,	INF,
110 	"limit",	dolimit,	0,	3,
111 	"login",	dologin,	0,	1,
112 	"logout",	dologout,	0,	0,
113 	"nice",		donice,		0,	INF,
114 	"nohup",	donohup,	0,	INF,
115 	"notify",	donotify,	0,	INF,
116 	"onintr",	doonintr,	0,	2,
117 	"popd",		dopopd,		0,	1,
118 	"pushd",	dopushd,	0,	1,
119 	"rehash",	dohash,		0,	0,
120 	"repeat",	dorepeat,	2,	INF,
121 	"set",		doset,		0,	INF,
122 	"setenv",	dosetenv,	0,	2,
123 	"shift",	shift,		0,	1,
124 	"source",	dosource,	1,	2,
125 	"stop",		dostop,		1,	INF,
126 	"suspend",	dosuspend,	0,	0,
127 	"switch",	doswitch,	1,	INF,
128 	"time",		dotime,		0,	INF,
129 	"umask",	doumask,	0,	1,
130 	"unalias",	unalias,	1,	INF,
131 	"unhash",	dounhash,	0,	0,
132 	"unlimit",	dounlimit,	0,	INF,
133 	"unset",	unset,		1,	INF,
134 	"unsetenv",	dounsetenv,	1,	INF,
135 	"wait",		dowait,		0,	0,
136 	"while",	dowhile,	1,	INF,
137 };
138 int nbfunc = sizeof bfunc / sizeof *bfunc;
139 
140 struct srch srchn[] = {
141 	"@",		T_LET,
142 	"break",	T_BREAK,
143 	"breaksw",	T_BRKSW,
144 	"case",		T_CASE,
145 	"default", 	T_DEFAULT,
146 	"else",		T_ELSE,
147 	"end",		T_END,
148 	"endif",	T_ENDIF,
149 	"endsw",	T_ENDSW,
150 	"exit",		T_EXIT,
151 	"foreach", 	T_FOREACH,
152 	"goto",		T_GOTO,
153 	"if",		T_IF,
154 	"label",	T_LABEL,
155 	"set",		T_SET,
156 	"switch",	T_SWITCH,
157 	"while",	T_WHILE,
158 };
159 int nsrchn = sizeof srchn / sizeof *srchn;
160 
161 struct mesg mesg[] = {
162 	0,	0,
163 	"HUP",	"Hangup",
164 	"INT",	"Interrupt",
165 	"QUIT",	"Quit",
166 	"ILL",	"Illegal instruction",
167 	"TRAP",	"Trace/BPT trap",
168 	"IOT",	"IOT trap",
169 	"EMT",	"EMT trap",
170 	"FPE",	"Floating exception",
171 	"KILL",	"Killed",
172 	"BUS",	"Bus error",
173 	"SEGV",	"Segmentation fault",
174 	"SYS",	"Bad system call",
175 	"PIPE",	"Broken pipe",
176 	"ALRM",	"Alarm clock",
177 	"TERM",	"Terminated",
178 	"URG",	"Urgent I/O condition",
179 	"STOP",	"Suspended (signal)",
180 	"TSTP",	"Suspended",
181 	"CONT",	"Continued",
182 	"CHLD",	"Child exited",
183 	"TTIN", "Suspended (tty input)",
184 	"TTOU", "Suspended (tty output)",
185 	"IO",	"I/O possible",
186 	"XCPU",	"Cputime limit exceeded",
187 	"XFSZ", "Filesize limit exceeded",
188 	"VTALRM","Virtual timer expired",
189 	"PROF",	"Profiling timer expired",
190 	"WINCH","Window size changed",
191 	0,	"Signal 29",
192 	"USR1",	"User defined signal 1",
193 	"USR2",	"User defined signal 2",
194 	0,	"Signal 32"
195 };
196