Home | History | Annotate | Download | only in csh
      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