1 /* 2 * Copyright 1997 Sun Microsystems, Inc. All rights reserved. 3 * Use is subject to license terms. 4 */ 5 6 /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ 7 /* All Rights Reserved */ 8 9 /* 10 * Copyright (c) 1980 Regents of the University of California. 11 * All rights reserved. The Berkeley Software License Agreement 12 * specifies the terms and conditions for redistribution. 13 */ 14 15 #pragma ident "%Z%%M% %I% %E% SMI" 16 17 #include "sh.h" 18 #include "sh.tconst.h" 19 20 /* 21 * C shell 22 */ 23 24 extern int doalias(); 25 extern int dobg(); 26 extern int dobreak(); 27 extern int dochngd(); 28 extern int docontin(); 29 extern int dodirs(); 30 extern int doecho(); 31 extern int doelse(); 32 extern int doend(); 33 extern int doendif(); 34 extern int doendsw(); 35 extern int doeval(); 36 extern int doexit(); 37 extern int dofg(); 38 extern int doforeach(); 39 extern int doglob(); 40 extern int dogoto(); 41 extern int dohash(); 42 extern int dorehash(); 43 extern int dohist(); 44 extern int doif(); 45 extern int dojobs(); 46 extern int dokill(); 47 extern int dolet(); 48 extern int dolimit(); 49 extern int dologin(); 50 extern int dologout(); 51 #ifdef NEWGRP 52 extern int donewgrp(); 53 #endif 54 extern int donice(); 55 extern int donotify(); 56 extern int donohup(); 57 extern int doonintr(); 58 extern int dopopd(); 59 extern int dopushd(); 60 extern int dorepeat(); 61 extern int doset(); 62 extern int dosetenv(); 63 extern int dosource(); 64 extern int dostop(); 65 extern int dosuspend(); 66 extern int doswbrk(); 67 extern int doswitch(); 68 extern int dotime(); 69 extern int dounlimit(); 70 extern int doumask(); 71 extern int dowait(); 72 extern int dowhile(); 73 extern int dozip(); 74 extern int execash(); 75 extern int goodbye(); 76 #ifdef VFORK 77 extern int hashstat(); 78 #endif 79 extern int shift(); 80 #ifdef OLDMALLOC 81 extern int showall(); 82 #endif 83 extern int unalias(); 84 extern int dounhash(); 85 extern int unset(); 86 extern int dounsetenv(); 87 88 #define INF 1000 89 90 struct biltins bfunc[] = { 91 S_AT, dolet, 0, INF, 92 S_alias, doalias, 0, INF, 93 #ifdef OLDMALLOC 94 S_alloc, showall, 0, 1, 95 #endif 96 S_bg, dobg, 0, INF, 97 S_break, dobreak, 0, 0, 98 S_breaksw, doswbrk, 0, 0, 99 #ifdef IIASA 100 S_bye, goodbye, 0, 0, 101 #endif 102 S_case, dozip, 0, 1, 103 S_cd, dochngd, 0, 1, 104 S_chdir, dochngd, 0, 1, 105 S_continue, docontin, 0, 0, 106 S_default, dozip, 0, 0, 107 S_dirs, dodirs, 0, 1, 108 S_echo, doecho, 0, INF, 109 S_else, doelse, 0, INF, 110 S_end, doend, 0, 0, 111 S_endif, dozip, 0, 0, 112 S_endsw, dozip, 0, 0, 113 S_eval, doeval, 0, INF, 114 S_exec, execash, 1, INF, 115 S_exit, doexit, 0, INF, 116 S_fg, dofg, 0, INF, 117 S_foreach, doforeach, 3, INF, 118 #ifdef IIASA 119 S_gd, dopushd, 0, 1, 120 #endif 121 S_glob, doglob, 0, INF, 122 S_goto, dogoto, 1, 1, 123 #ifdef VFORK 124 S_hashstat, hashstat, 0, 0, 125 #endif 126 S_history, dohist, 0, 2, 127 S_if, doif, 1, INF, 128 S_jobs, dojobs, 0, 1, 129 S_kill, dokill, 1, INF, 130 S_limit, dolimit, 0, 3, 131 S_login, dologin, 0, 1, 132 S_logout, dologout, 0, 0, 133 #ifdef NEWGRP 134 S_newgrp, donewgrp, 1, 1, 135 #endif 136 S_nice, donice, 0, INF, 137 S_nohup, donohup, 0, INF, 138 S_notify, donotify, 0, INF, 139 S_onintr, doonintr, 0, 2, 140 S_popd, dopopd, 0, 1, 141 S_pushd, dopushd, 0, 1, 142 #ifdef IIASA 143 S_rd, dopopd, 0, 1, 144 #endif 145 S_rehash, dorehash, 0, 0, 146 S_repeat, dorepeat, 2, INF, 147 S_set, doset, 0, INF, 148 S_setenv, dosetenv, 0, 2, 149 S_shift, shift, 0, 1, 150 S_source, dosource, 1, 2, 151 S_stop, dostop, 1, INF, 152 S_suspend, dosuspend, 0, 0, 153 S_switch, doswitch, 1, INF, 154 S_time, dotime, 0, INF, 155 S_umask, doumask, 0, 1, 156 S_unalias, unalias, 1, INF, 157 S_unhash, dounhash, 0, 0, 158 S_unlimit, dounlimit, 0, INF, 159 S_unset, unset, 1, INF, 160 S_unsetenv, dounsetenv, 1, INF, 161 S_wait, dowait, 0, 0, 162 S_while, dowhile, 1, INF, 163 }; 164 int nbfunc = sizeof bfunc / sizeof *bfunc; 165 166 #define ZBREAK 0 167 #define ZBRKSW 1 168 #define ZCASE 2 169 #define ZDEFAULT 3 170 #define ZELSE 4 171 #define ZEND 5 172 #define ZENDIF 6 173 #define ZENDSW 7 174 #define ZEXIT 8 175 #define ZFOREACH 9 176 #define ZGOTO 10 177 #define ZIF 11 178 #define ZLABEL 12 179 #define ZLET 13 180 #define ZSET 14 181 #define ZSWITCH 15 182 #define ZTEST 16 183 #define ZTHEN 17 184 #define ZWHILE 18 185 186 struct srch srchn[] = { 187 S_AT, ZLET, 188 S_break, ZBREAK, 189 S_breaksw, ZBRKSW, 190 S_case, ZCASE, 191 S_default, ZDEFAULT, 192 S_else, ZELSE, 193 S_end, ZEND, 194 S_endif, ZENDIF, 195 S_endsw, ZENDSW, 196 S_exit, ZEXIT, 197 S_foreach, ZFOREACH, 198 S_goto, ZGOTO, 199 S_if, ZIF, 200 S_label, ZLABEL, 201 S_set, ZSET, 202 S_switch, ZSWITCH, 203 S_while, ZWHILE 204 }; 205 int nsrchn = sizeof srchn / sizeof *srchn; 206 207