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