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