|
|
1.1 root 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: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.