| 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 | }; |