Commit | Line | Data |
---|---|---|
90503b97 BJ |
1 | static char *sccsid = "@(#)init.c 4.1 %G%"; |
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 | }; |