|
|
1.1 root 1: static char *sccsid = "@(#)sh.init.c 4.1 10/9/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: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.