date and time created 91/03/07 20:28:05 by bostic
[unix-history] / usr / src / bin / csh / init.c
CommitLineData
b79f4fa9
DF
1/*
2 * Copyright (c) 1980 Regents of the University of California.
094e80ed 3 * All rights reserved. The Berkeley Software License Agreement
b79f4fa9
DF
4 * specifies the terms and conditions for redistribution.
5 */
6
35371dec 7#ifndef lint
5fe577ad 8static char *sccsid = "@(#)init.c 5.4 (Berkeley) %G%";
094e80ed 9#endif
90503b97
BJ
10
11#include "sh.local.h"
12
13/*
14 * C shell
15 */
16
17extern int doalias();
18extern int dobg();
19extern int dobreak();
20extern int dochngd();
21extern int docontin();
22extern int dodirs();
23extern int doecho();
24extern int doelse();
25extern int doend();
26extern int doendif();
27extern int doendsw();
28extern int doeval();
29extern int doexit();
30extern int dofg();
31extern int doforeach();
32extern int doglob();
33extern int dogoto();
34extern int dohash();
35extern int dohist();
36extern int doif();
37extern int dojobs();
38extern int dokill();
39extern int dolet();
40extern int dolimit();
41extern int dologin();
42extern int dologout();
90503b97
BJ
43extern int donice();
44extern int donotify();
45extern int donohup();
46extern int doonintr();
47extern int dopopd();
48extern int dopushd();
49extern int dorepeat();
50extern int doset();
51extern int dosetenv();
52extern int dosource();
53extern int dostop();
54extern int dosuspend();
55extern int doswbrk();
56extern int doswitch();
57extern int dotime();
58extern int dounlimit();
59extern int doumask();
60extern int dowait();
61extern int dowhile();
62extern int dozip();
63extern int execash();
64extern int goodbye();
65#ifdef VFORK
66extern int hashstat();
67#endif
68extern int shift();
69extern int showall();
70extern int unalias();
71extern int dounhash();
72extern int unset();
73extern int dounsetenv();
74
75#define INF 1000
76
77struct biltins {
78 char *bname;
79 int (*bfunct)();
80 short minargs, maxargs;
81} bfunc[] = {
82 "@", dolet, 0, INF,
83 "alias", doalias, 0, INF,
90503b97 84 "alloc", showall, 0, 1,
90503b97
BJ
85 "bg", dobg, 0, INF,
86 "break", dobreak, 0, 0,
87 "breaksw", doswbrk, 0, 0,
90503b97
BJ
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,
90503b97
BJ
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,
90503b97
BJ
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,
90503b97
BJ
122 "rehash", dohash, 0, 0,
123 "repeat", dorepeat, 2, INF,
124 "set", doset, 0, INF,
c349da0d 125 "setenv", dosetenv, 0, 2,
90503b97 126 "shift", shift, 0, 1,
3d48fab8 127 "source", dosource, 1, 2,
90503b97
BJ
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,
90503b97 140};
35371dec 141int nbfunc = sizeof bfunc / sizeof *bfunc;
90503b97
BJ
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
163struct 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,
90503b97 184};
35371dec 185int nsrchn = sizeof srchn / sizeof *srchn;
90503b97
BJ
186
187struct 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",
35371dec 207 "URG", "Urgent I/O condition",
9c279653
KB
208 "STOP", "Suspended (signal)",
209 "TSTP", "Suspended",
90503b97
BJ
210 "CONT", "Continued",
211 "CHLD", "Child exited",
9c279653
KB
212 "TTIN", "Suspended (tty input)",
213 "TTOU", "Suspended (tty output)",
35371dec 214 "IO", "I/O possible",
90503b97
BJ
215 "XCPU", "Cputime limit exceeded",
216 "XFSZ", "Filesize limit exceeded",
35371dec
EW
217 "VTALRM","Virtual timer expired",
218 "PROF", "Profiling timer expired",
c65b8cef 219 "WINCH","Window size changed",
90503b97 220 0, "Signal 29",
2ec6024a
KM
221 "USR1", "User defined signal 1",
222 "USR2", "User defined signal 2",
90503b97
BJ
223 0, "Signal 32"
224};