Commit | Line | Data |
---|---|---|
f866bfdf BJ |
1 | /* Copyright (c) 1979 Regents of the University of California */ |
2 | #include "sh.local.h" | |
3 | /* | |
4 | * C shell | |
5 | */ | |
6 | ||
7 | extern int await(); | |
8 | extern int chngd(); | |
9 | extern int doalias(); | |
10 | extern int dobreak(); | |
11 | extern int docontin(); | |
12 | extern int doecho(); | |
13 | extern int doelse(); | |
14 | extern int doend(); | |
15 | extern int doendif(); | |
16 | extern int doendsw(); | |
17 | extern int doexit(); | |
18 | extern int doforeach(); | |
19 | extern int doglob(); | |
20 | extern int dogoto(); | |
21 | extern int dohash(); | |
22 | extern int hashstat(); | |
23 | extern int dohist(); | |
24 | extern int doif(); | |
25 | extern int dolet(); | |
26 | extern int dologin(); | |
27 | extern int dologout(); | |
28 | extern int donewgrp(); | |
29 | extern int donice(); | |
30 | extern int donohup(); | |
31 | extern int doonintr(); | |
32 | extern int dorepeat(); | |
33 | extern int doset(); | |
34 | extern int dosetenv(); | |
35 | extern int dosource(); | |
36 | extern int doswbrk(); | |
37 | extern int doswitch(); | |
38 | extern int dotime(); | |
39 | #ifndef V6 | |
40 | extern int doumask(); | |
41 | #endif | |
42 | extern int dowhile(); | |
43 | extern int dozip(); | |
44 | extern int execash(); | |
45 | extern int goodbye(); | |
46 | extern int shift(); | |
47 | extern int showall(); | |
48 | extern int unalias(); | |
49 | extern int dounhash(); | |
50 | extern int unset(); | |
51 | ||
52 | #define INF 1000 | |
53 | ||
54 | struct biltins { | |
55 | char *bname; | |
56 | int (*bfunct)(); | |
57 | short minargs, maxargs; | |
58 | } bfunc[] = { | |
59 | "@", dolet, 0, INF, | |
60 | "alias", doalias, 0, INF, | |
61 | #ifdef debug | |
62 | "alloc", showall, 0, 1, | |
63 | #endif | |
64 | "break", dobreak, 0, 0, | |
65 | "breaksw", doswbrk, 0, 0, | |
66 | "case", dozip, 0, 1, | |
67 | "cd", chngd, 0, 1, | |
68 | "chdir", chngd, 0, 1, | |
69 | "continue", docontin, 0, 0, | |
70 | "default", dozip, 0, 0, | |
71 | "echo", doecho, 0, INF, | |
72 | "else", doelse, 0, INF, | |
73 | "end", doend, 0, 0, | |
74 | "endif", dozip, 0, 0, | |
75 | "endsw", dozip, 0, 0, | |
76 | "exec", execash, 1, INF, | |
77 | "exit", doexit, 0, INF, | |
78 | "foreach", doforeach, 3, INF, | |
79 | "glob", doglob, 0, INF, | |
80 | "goto", dogoto, 1, 1, | |
81 | "hashstat", hashstat, 0, 0, | |
82 | "history", dohist, 0, 0, | |
83 | "if", doif, 1, INF, | |
84 | "login", dologin, 0, 1, | |
85 | "logout", dologout, 0, 0, | |
86 | "newgrp", donewgrp, 1, 1, | |
87 | "nice", donice, 0, INF, | |
88 | "nohup", donohup, 0, INF, | |
89 | "onintr", doonintr, 0, 2, | |
90 | "rehash", dohash, 0, 0, | |
91 | "repeat", dorepeat, 2, INF, | |
92 | "set", doset, 0, INF, | |
93 | #ifndef V6 | |
94 | "setenv", dosetenv, 2, 2, | |
95 | #endif | |
96 | "shift", shift, 0, 1, | |
97 | "source", dosource, 1, 1, | |
98 | "switch", doswitch, 1, INF, | |
99 | "time", dotime, 0, INF, | |
100 | #ifndef V6 | |
101 | "umask", doumask, 0, 1, | |
102 | #endif | |
103 | "unalias", unalias, 1, INF, | |
104 | "unhash", dounhash, 0, 0, | |
105 | "unset", unset, 1, INF, | |
106 | "wait", await, 0, 0, | |
107 | "while", dowhile, 1, INF, | |
108 | 0, 0, 0, 0, | |
109 | }; | |
110 | ||
111 | #define ZBREAK 0 | |
112 | #define ZBRKSW 1 | |
113 | #define ZCASE 2 | |
114 | #define ZDEFAULT 3 | |
115 | #define ZELSE 4 | |
116 | #define ZEND 5 | |
117 | #define ZENDIF 6 | |
118 | #define ZENDSW 7 | |
119 | #define ZEXIT 8 | |
120 | #define ZFOREACH 9 | |
121 | #define ZGOTO 10 | |
122 | #define ZIF 11 | |
123 | #define ZLABEL 12 | |
124 | #define ZLET 13 | |
125 | #define ZSET 14 | |
126 | #define ZSWITCH 15 | |
127 | #define ZTEST 16 | |
128 | #define ZTHEN 17 | |
129 | #define ZWHILE 18 | |
130 | ||
131 | struct srch { | |
132 | char *s_name; | |
133 | short s_value; | |
134 | } srchn[] = { | |
135 | "@", ZLET, | |
136 | "break", ZBREAK, | |
137 | "breaksw", ZBRKSW, | |
138 | "case", ZCASE, | |
139 | "default", ZDEFAULT, | |
140 | "else", ZELSE, | |
141 | "end", ZEND, | |
142 | "endif", ZENDIF, | |
143 | "endsw", ZENDSW, | |
144 | "exit", ZEXIT, | |
145 | "foreach", ZFOREACH, | |
146 | "goto", ZGOTO, | |
147 | "if", ZIF, | |
148 | "label", ZLABEL, | |
149 | "set", ZSET, | |
150 | "switch", ZSWITCH, | |
151 | "while", ZWHILE, | |
152 | 0, 0, | |
153 | }; | |
154 | ||
155 | char *mesg[] = { | |
156 | 0, | |
157 | "Hangup", | |
158 | 0, | |
159 | "Quit", | |
160 | "Illegal instruction", | |
161 | "Trace/BPT trap", | |
162 | "IOT trap", | |
163 | "EMT trap", | |
164 | "Floating exception", | |
165 | "Killed", | |
166 | "Bus error", | |
167 | "Segmentation violation", | |
168 | "Bad system call", | |
169 | 0, | |
170 | "Alarm clock", | |
171 | "Terminated", | |
172 | }; |