|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley Software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: #ifndef lint
8: static char *sccsid = "@(#)sh.init.c 5.4 (Berkeley) 2/15/89";
9: #endif
10:
11: #include "sh.local.h"
12:
13: /*
14: * C shell
15: */
16:
17: extern int doalias();
18: extern int dobg();
19: extern int dobreak();
20: extern int dochngd();
21: extern int docontin();
22: extern int dodirs();
23: extern int doecho();
24: extern int doelse();
25: extern int doend();
26: extern int doendif();
27: extern int doendsw();
28: extern int doeval();
29: extern int doexit();
30: extern int dofg();
31: extern int doforeach();
32: extern int doglob();
33: extern int dogoto();
34: extern int dohash();
35: extern int dohist();
36: extern int doif();
37: extern int dojobs();
38: extern int dokill();
39: extern int dolet();
40: extern int dolimit();
41: extern int dologin();
42: extern int dologout();
43: extern int donice();
44: extern int donotify();
45: extern int donohup();
46: extern int doonintr();
47: extern int dopopd();
48: extern int dopushd();
49: extern int dorepeat();
50: extern int doset();
51: extern int dosetenv();
52: extern int dosource();
53: extern int dostop();
54: extern int dosuspend();
55: extern int doswbrk();
56: extern int doswitch();
57: extern int dotime();
58: extern int dounlimit();
59: extern int doumask();
60: extern int dowait();
61: extern int dowhile();
62: extern int dozip();
63: extern int execash();
64: extern int goodbye();
65: #ifdef VFORK
66: extern int hashstat();
67: #endif
68: extern int shift();
69: extern int showall();
70: extern int unalias();
71: extern int dounhash();
72: extern int unset();
73: extern int dounsetenv();
74:
75: #define INF 1000
76:
77: struct biltins {
78: char *bname;
79: int (*bfunct)();
80: short minargs, maxargs;
81: } bfunc[] = {
82: "@", dolet, 0, INF,
83: "alias", doalias, 0, INF,
84: "alloc", showall, 0, 1,
85: "bg", dobg, 0, INF,
86: "break", dobreak, 0, 0,
87: "breaksw", doswbrk, 0, 0,
88: "case", dozip, 0, 1,
89: "cd", dochngd, 0, 1,
90: "chdir", dochngd, 0, 1,
91: "continue", docontin, 0, 0,
92: "default", dozip, 0, 0,
93: "dirs", dodirs, 0, 1,
94: "echo", doecho, 0, INF,
95: "else", doelse, 0, INF,
96: "end", doend, 0, 0,
97: "endif", dozip, 0, 0,
98: "endsw", dozip, 0, 0,
99: "eval", doeval, 0, INF,
100: "exec", execash, 1, INF,
101: "exit", doexit, 0, INF,
102: "fg", dofg, 0, INF,
103: "foreach", doforeach, 3, INF,
104: "glob", doglob, 0, INF,
105: "goto", dogoto, 1, 1,
106: #ifdef VFORK
107: "hashstat", hashstat, 0, 0,
108: #endif
109: "history", dohist, 0, 2,
110: "if", doif, 1, INF,
111: "jobs", dojobs, 0, 1,
112: "kill", dokill, 1, INF,
113: "limit", dolimit, 0, 3,
114: "login", dologin, 0, 1,
115: "logout", dologout, 0, 0,
116: "nice", donice, 0, INF,
117: "nohup", donohup, 0, INF,
118: "notify", donotify, 0, INF,
119: "onintr", doonintr, 0, 2,
120: "popd", dopopd, 0, 1,
121: "pushd", dopushd, 0, 1,
122: "rehash", dohash, 0, 0,
123: "repeat", dorepeat, 2, INF,
124: "set", doset, 0, INF,
125: "setenv", dosetenv, 0, 2,
126: "shift", shift, 0, 1,
127: "source", dosource, 1, 2,
128: "stop", dostop, 1, INF,
129: "suspend", dosuspend, 0, 0,
130: "switch", doswitch, 1, INF,
131: "time", dotime, 0, INF,
132: "umask", doumask, 0, 1,
133: "unalias", unalias, 1, INF,
134: "unhash", dounhash, 0, 0,
135: "unlimit", dounlimit, 0, INF,
136: "unset", unset, 1, INF,
137: "unsetenv", dounsetenv, 1, INF,
138: "wait", dowait, 0, 0,
139: "while", dowhile, 1, INF,
140: };
141: int nbfunc = sizeof bfunc / sizeof *bfunc;
142:
143: #define ZBREAK 0
144: #define ZBRKSW 1
145: #define ZCASE 2
146: #define ZDEFAULT 3
147: #define ZELSE 4
148: #define ZEND 5
149: #define ZENDIF 6
150: #define ZENDSW 7
151: #define ZEXIT 8
152: #define ZFOREACH 9
153: #define ZGOTO 10
154: #define ZIF 11
155: #define ZLABEL 12
156: #define ZLET 13
157: #define ZSET 14
158: #define ZSWITCH 15
159: #define ZTEST 16
160: #define ZTHEN 17
161: #define ZWHILE 18
162:
163: struct srch {
164: char *s_name;
165: short s_value;
166: } srchn[] = {
167: "@", ZLET,
168: "break", ZBREAK,
169: "breaksw", ZBRKSW,
170: "case", ZCASE,
171: "default", ZDEFAULT,
172: "else", ZELSE,
173: "end", ZEND,
174: "endif", ZENDIF,
175: "endsw", ZENDSW,
176: "exit", ZEXIT,
177: "foreach", ZFOREACH,
178: "goto", ZGOTO,
179: "if", ZIF,
180: "label", ZLABEL,
181: "set", ZSET,
182: "switch", ZSWITCH,
183: "while", ZWHILE,
184: };
185: int nsrchn = sizeof srchn / sizeof *srchn;
186:
187: struct mesg {
188: char *iname;
189: char *pname;
190: } mesg[] = {
191: 0, 0,
192: "HUP", "Hangup",
193: "INT", "Interrupt",
194: "QUIT", "Quit",
195: "ILL", "Illegal instruction",
196: "TRAP", "Trace/BPT trap",
197: "IOT", "IOT trap",
198: "EMT", "EMT trap",
199: "FPE", "Floating exception",
200: "KILL", "Killed",
201: "BUS", "Bus error",
202: "SEGV", "Segmentation fault",
203: "SYS", "Bad system call",
204: "PIPE", "Broken pipe",
205: "ALRM", "Alarm clock",
206: "TERM", "Terminated",
207: "URG", "Urgent I/O condition",
208: "STOP", "Suspended (signal)",
209: "TSTP", "Suspended",
210: "CONT", "Continued",
211: "CHLD", "Child exited",
212: "TTIN", "Suspended (tty input)",
213: "TTOU", "Suspended (tty output)",
214: "IO", "I/O possible",
215: "XCPU", "Cputime limit exceeded",
216: "XFSZ", "Filesize limit exceeded",
217: "VTALRM","Virtual timer expired",
218: "PROF", "Profiling timer expired",
219: "WINCH","Window size changed",
220: 0, "Signal 29",
221: "USR1", "User defined signal 1",
222: "USR2", "User defined signal 2",
223: 0, "Signal 32"
224: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.