1*17511Sedward #ifndef lint 2*17511Sedward static char *sccsid = "@(#)init.c 4.4 (Berkeley) 12/13/84"; 3*17511Sedward #endif 41298Sbill 51298Sbill #include "sh.local.h" 61298Sbill 71298Sbill /* 81298Sbill * C shell 91298Sbill */ 101298Sbill 111298Sbill extern int doalias(); 121298Sbill extern int dobg(); 131298Sbill extern int dobreak(); 141298Sbill extern int dochngd(); 151298Sbill extern int docontin(); 161298Sbill extern int dodirs(); 171298Sbill extern int doecho(); 181298Sbill extern int doelse(); 191298Sbill extern int doend(); 201298Sbill extern int doendif(); 211298Sbill extern int doendsw(); 221298Sbill extern int doeval(); 231298Sbill extern int doexit(); 241298Sbill extern int dofg(); 251298Sbill extern int doforeach(); 261298Sbill extern int doglob(); 271298Sbill extern int dogoto(); 281298Sbill extern int dohash(); 291298Sbill extern int dohist(); 301298Sbill extern int doif(); 311298Sbill extern int dojobs(); 321298Sbill extern int dokill(); 331298Sbill extern int dolet(); 341298Sbill extern int dolimit(); 351298Sbill extern int dologin(); 361298Sbill extern int dologout(); 3712999Ssam #ifdef NEWGRP 381298Sbill extern int donewgrp(); 3912999Ssam #endif 401298Sbill extern int donice(); 411298Sbill extern int donotify(); 421298Sbill extern int donohup(); 431298Sbill extern int doonintr(); 441298Sbill extern int dopopd(); 451298Sbill extern int dopushd(); 461298Sbill extern int dorepeat(); 471298Sbill extern int doset(); 481298Sbill extern int dosetenv(); 491298Sbill extern int dosource(); 501298Sbill extern int dostop(); 511298Sbill extern int dosuspend(); 521298Sbill extern int doswbrk(); 531298Sbill extern int doswitch(); 541298Sbill extern int dotime(); 551298Sbill extern int dounlimit(); 561298Sbill extern int doumask(); 571298Sbill extern int dowait(); 581298Sbill extern int dowhile(); 591298Sbill extern int dozip(); 601298Sbill extern int execash(); 611298Sbill extern int goodbye(); 621298Sbill #ifdef VFORK 631298Sbill extern int hashstat(); 641298Sbill #endif 651298Sbill extern int shift(); 661298Sbill extern int showall(); 671298Sbill extern int unalias(); 681298Sbill extern int dounhash(); 691298Sbill extern int unset(); 701298Sbill extern int dounsetenv(); 711298Sbill 721298Sbill #define INF 1000 731298Sbill 741298Sbill struct biltins { 751298Sbill char *bname; 761298Sbill int (*bfunct)(); 771298Sbill short minargs, maxargs; 781298Sbill } bfunc[] = { 791298Sbill "@", dolet, 0, INF, 801298Sbill "alias", doalias, 0, INF, 811298Sbill "alloc", showall, 0, 1, 821298Sbill "bg", dobg, 0, INF, 831298Sbill "break", dobreak, 0, 0, 841298Sbill "breaksw", doswbrk, 0, 0, 851298Sbill #ifdef IIASA 861298Sbill "bye", goodbye, 0, 0, 871298Sbill #endif 881298Sbill "case", dozip, 0, 1, 891298Sbill "cd", dochngd, 0, 1, 901298Sbill "chdir", dochngd, 0, 1, 911298Sbill "continue", docontin, 0, 0, 921298Sbill "default", dozip, 0, 0, 931298Sbill "dirs", dodirs, 0, 1, 941298Sbill "echo", doecho, 0, INF, 951298Sbill "else", doelse, 0, INF, 961298Sbill "end", doend, 0, 0, 971298Sbill "endif", dozip, 0, 0, 981298Sbill "endsw", dozip, 0, 0, 991298Sbill "eval", doeval, 0, INF, 1001298Sbill "exec", execash, 1, INF, 1011298Sbill "exit", doexit, 0, INF, 1021298Sbill "fg", dofg, 0, INF, 1031298Sbill "foreach", doforeach, 3, INF, 1041298Sbill #ifdef IIASA 1051298Sbill "gd", dopushd, 0, 1, 1061298Sbill #endif 1071298Sbill "glob", doglob, 0, INF, 1081298Sbill "goto", dogoto, 1, 1, 1091298Sbill #ifdef VFORK 1101298Sbill "hashstat", hashstat, 0, 0, 1111298Sbill #endif 1121298Sbill "history", dohist, 0, 2, 1131298Sbill "if", doif, 1, INF, 1141298Sbill "jobs", dojobs, 0, 1, 1151298Sbill "kill", dokill, 1, INF, 1161298Sbill "limit", dolimit, 0, 3, 1171298Sbill "login", dologin, 0, 1, 1181298Sbill "logout", dologout, 0, 0, 11912999Ssam #ifdef NEWGRP 1201298Sbill "newgrp", donewgrp, 1, 1, 12112999Ssam #endif 1221298Sbill "nice", donice, 0, INF, 1231298Sbill "nohup", donohup, 0, INF, 1241298Sbill "notify", donotify, 0, INF, 1251298Sbill "onintr", doonintr, 0, 2, 1261298Sbill "popd", dopopd, 0, 1, 1271298Sbill "pushd", dopushd, 0, 1, 1281298Sbill #ifdef IIASA 1291298Sbill "rd", dopopd, 0, 1, 1301298Sbill #endif 1311298Sbill "rehash", dohash, 0, 0, 1321298Sbill "repeat", dorepeat, 2, INF, 1331298Sbill "set", doset, 0, INF, 1341298Sbill "setenv", dosetenv, 2, 2, 1351298Sbill "shift", shift, 0, 1, 1364187Smckusic "source", dosource, 1, 2, 1371298Sbill "stop", dostop, 1, INF, 1381298Sbill "suspend", dosuspend, 0, 0, 1391298Sbill "switch", doswitch, 1, INF, 1401298Sbill "time", dotime, 0, INF, 1411298Sbill "umask", doumask, 0, 1, 1421298Sbill "unalias", unalias, 1, INF, 1431298Sbill "unhash", dounhash, 0, 0, 1441298Sbill "unlimit", dounlimit, 0, INF, 1451298Sbill "unset", unset, 1, INF, 1461298Sbill "unsetenv", dounsetenv, 1, INF, 1471298Sbill "wait", dowait, 0, 0, 1481298Sbill "while", dowhile, 1, INF, 1491298Sbill }; 150*17511Sedward int nbfunc = sizeof bfunc / sizeof *bfunc; 1511298Sbill 1521298Sbill #define ZBREAK 0 1531298Sbill #define ZBRKSW 1 1541298Sbill #define ZCASE 2 1551298Sbill #define ZDEFAULT 3 1561298Sbill #define ZELSE 4 1571298Sbill #define ZEND 5 1581298Sbill #define ZENDIF 6 1591298Sbill #define ZENDSW 7 1601298Sbill #define ZEXIT 8 1611298Sbill #define ZFOREACH 9 1621298Sbill #define ZGOTO 10 1631298Sbill #define ZIF 11 1641298Sbill #define ZLABEL 12 1651298Sbill #define ZLET 13 1661298Sbill #define ZSET 14 1671298Sbill #define ZSWITCH 15 1681298Sbill #define ZTEST 16 1691298Sbill #define ZTHEN 17 1701298Sbill #define ZWHILE 18 1711298Sbill 1721298Sbill struct srch { 1731298Sbill char *s_name; 1741298Sbill short s_value; 1751298Sbill } srchn[] = { 1761298Sbill "@", ZLET, 1771298Sbill "break", ZBREAK, 1781298Sbill "breaksw", ZBRKSW, 1791298Sbill "case", ZCASE, 1801298Sbill "default", ZDEFAULT, 1811298Sbill "else", ZELSE, 1821298Sbill "end", ZEND, 1831298Sbill "endif", ZENDIF, 1841298Sbill "endsw", ZENDSW, 1851298Sbill "exit", ZEXIT, 1861298Sbill "foreach", ZFOREACH, 1871298Sbill "goto", ZGOTO, 1881298Sbill "if", ZIF, 1891298Sbill "label", ZLABEL, 1901298Sbill "set", ZSET, 1911298Sbill "switch", ZSWITCH, 1921298Sbill "while", ZWHILE, 1931298Sbill }; 194*17511Sedward int nsrchn = sizeof srchn / sizeof *srchn; 1951298Sbill 1961298Sbill struct mesg { 1971298Sbill char *iname; 1981298Sbill char *pname; 1991298Sbill } mesg[] = { 2001298Sbill 0, 0, 2011298Sbill "HUP", "Hangup", 2021298Sbill "INT", "Interrupt", 2031298Sbill "QUIT", "Quit", 2041298Sbill "ILL", "Illegal instruction", 2051298Sbill "TRAP", "Trace/BPT trap", 2061298Sbill "IOT", "IOT trap", 2071298Sbill "EMT", "EMT trap", 2081298Sbill "FPE", "Floating exception", 2091298Sbill "KILL", "Killed", 2101298Sbill "BUS", "Bus error", 2111298Sbill "SEGV", "Segmentation fault", 2121298Sbill "SYS", "Bad system call", 2131298Sbill "PIPE", "Broken pipe", 2141298Sbill "ALRM", "Alarm clock", 2151298Sbill "TERM", "Terminated", 216*17511Sedward "URG", "Urgent I/O condition", 2171298Sbill "STOP", "Stopped (signal)", 2181298Sbill "TSTP", "Stopped", 2191298Sbill "CONT", "Continued", 2201298Sbill "CHLD", "Child exited", 2211298Sbill "TTIN", "Stopped (tty input)", 2221298Sbill "TTOU", "Stopped (tty output)", 223*17511Sedward "IO", "I/O possible", 2241298Sbill "XCPU", "Cputime limit exceeded", 2251298Sbill "XFSZ", "Filesize limit exceeded", 226*17511Sedward "VTALRM","Virtual timer expired", 227*17511Sedward "PROF", "Profiling timer expired", 2281298Sbill 0, "Signal 28", 2291298Sbill 0, "Signal 29", 2301298Sbill 0, "Signal 30", 2311298Sbill 0, "Signal 31", 2321298Sbill 0, "Signal 32" 2331298Sbill }; 234