BSD 4 release
[unix-history] / usr / src / cmd / csh / sh.init.c
CommitLineData
31cef89c 1static char *sccsid = "@(#)sh.init.c 4.1 10/9/80";
90503b97
BJ
2
3#include "sh.local.h"
4
5/*
6 * C shell
7 */
8
9extern int doalias();
10extern int dobg();
11extern int dobreak();
12extern int dochngd();
13extern int docontin();
14extern int dodirs();
15extern int doecho();
16extern int doelse();
17extern int doend();
18extern int doendif();
19extern int doendsw();
20extern int doeval();
21extern int doexit();
22extern int dofg();
23extern int doforeach();
24extern int doglob();
25extern int dogoto();
26extern int dohash();
27extern int dohist();
28extern int doif();
29extern int dojobs();
30extern int dokill();
31extern int dolet();
32extern int dolimit();
33extern int dologin();
34extern int dologout();
35extern int donewgrp();
36extern int donice();
37extern int donotify();
38extern int donohup();
39extern int doonintr();
40extern int dopopd();
41extern int dopushd();
42extern int dorepeat();
43extern int doset();
44extern int dosetenv();
45extern int dosource();
46extern int dostop();
47extern int dosuspend();
48extern int doswbrk();
49extern int doswitch();
50extern int dotime();
51extern int dounlimit();
52extern int doumask();
53extern int dowait();
54extern int dowhile();
55extern int dozip();
56extern int execash();
57extern int goodbye();
58#ifdef VFORK
59extern int hashstat();
60#endif
61extern int shift();
62extern int showall();
63extern int unalias();
64extern int dounhash();
65extern int unset();
66extern int dounsetenv();
67
68#define INF 1000
69
70struct 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
168struct 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
192struct 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};