diff options
Diffstat (limited to 'usr/src/lib/libshell/common/include/defs.h')
-rw-r--r-- | usr/src/lib/libshell/common/include/defs.h | 465 |
1 files changed, 0 insertions, 465 deletions
diff --git a/usr/src/lib/libshell/common/include/defs.h b/usr/src/lib/libshell/common/include/defs.h deleted file mode 100644 index 4520e31988..0000000000 --- a/usr/src/lib/libshell/common/include/defs.h +++ /dev/null @@ -1,465 +0,0 @@ -/*********************************************************************** -* * -* This software is part of the ast package * -* Copyright (c) 1982-2010 AT&T Intellectual Property * -* and is licensed under the * -* Common Public License, Version 1.0 * -* by AT&T Intellectual Property * -* * -* A copy of the License is available at * -* http://www.opensource.org/licenses/cpl1.0.txt * -* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * -* * -* Information and Software Systems Research * -* AT&T Research * -* Florham Park NJ * -* * -* David Korn <dgk@research.att.com> * -* * -***********************************************************************/ -#pragma prototyped -/* - * David Korn - * AT&T Labs - * - * Shell interface private definitions - * - */ -#ifndef defs_h_defined -#define defs_h_defined - -#include <ast.h> -#include <sfio.h> -#include <error.h> -#include "FEATURE/externs" -#include "FEATURE/options" -#include <cdt.h> -#include <history.h> -#include "fault.h" -#include "argnod.h" -#include "name.h" -#include <ctype.h> -#define _SH_PRIVATE -#include <shcmd.h> -#undef _SH_PRIVATE - -#ifndef pointerof -#define pointerof(x) ((void*)((char*)0+(x))) -#endif - -#define Empty ((char*)(e_sptbnl+3)) - -#define env_change() (++ast.env_serial) -#if SHOPT_ENV -# include <env.h> -#else -# define Env_t void -# define sh_envput(e,p) env_change() -# define env_delete(e,p) env_change() -#endif - -extern char* sh_getenv(const char*); -extern char* sh_setenviron(const char*); - -/* - * note that the first few fields have to be the same as for - * Shscoped_t in <shell.h> - */ - - -struct sh_scoped -{ - struct sh_scoped *prevst; /* pointer to previous state */ - int dolc; - char **dolv; - char *cmdname; - char *filename; - char *funname; - int lineno; - Dt_t *save_tree; /* var_tree for calling function */ - struct sh_scoped *self; /* pointer to copy of this scope*/ - Dt_t *var_local; /* local level variables for name() */ - struct slnod *staklist; /* link list of function stacks */ - int states; - int breakcnt; - int execbrk; - int loopcnt; - int firstline; - int32_t optindex; - int32_t optnum; - int32_t tmout; /* value for TMOUT */ - short optchar; - short opterror; - int ioset; - unsigned short trapmax; - char *trap[SH_DEBUGTRAP+1]; - char **trapcom; - char **otrapcom; - void *timetrap; - struct Ufunction *real_fun; /* current 'function name' function */ -}; - -struct limits -{ - long arg_max; /* max arg+env exec() size */ - int open_max; /* maximum number of file descriptors */ - int clk_tck; /* number of ticks per second */ - int child_max; /* maxumum number of children */ - int ngroups_max; /* maximum number of process groups */ - unsigned char posix_version; /* posix version number */ - unsigned char posix_jobcontrol;/* non-zero for job control systems */ - unsigned char fs3d; /* non-zero for 3-d file system */ -}; - -#define _SH_PRIVATE \ - struct sh_scoped st; /* scoped information */ \ - struct limits lim; /* run time limits */ \ - Stk_t *stk; /* stack poiter */ \ - Sfio_t *heredocs; /* current here-doc temp file */ \ - Sfio_t *funlog; /* for logging function definitions */ \ - int **fdptrs; /* pointer to file numbers */ \ - int savexit; \ - char *lastarg; \ - char *lastpath; /* last alsolute path found */ \ - int path_err; /* last error on path search */ \ - Dt_t *track_tree; /* for tracked aliases*/ \ - Dt_t *var_base; /* global level variables */ \ - Namval_t *namespace; /* current active namespace*/ \ - Namval_t *last_table; /* last table used in last nv_open */ \ - Namval_t *prev_table; /* previous table used in nv_open */ \ - Sfio_t *outpool; /* ouput stream pool */ \ - long timeout; /* read timeout */ \ - short curenv; /* current subshell number */ \ - short jobenv; /* subshell number for jobs */ \ - int infd; /* input file descriptor */ \ - int nextprompt; /* next prompt is PS<nextprompt> */ \ - int bltin_nnodes; /* number of bltins nodes */ \ - Namval_t *bltin_nodes; /* pointer to built-in variables */ \ - Namval_t *bltin_cmds; /* pointer to built-in commands */ \ - Namval_t *posix_fun; /* points to last name() function */ \ - char *outbuff; /* pointer to output buffer */ \ - char *errbuff; /* pointer to stderr buffer */ \ - char *prompt; /* pointer to prompt string */ \ - char *shname; /* shell name */ \ - char *shpath; /* path name of shell */ \ - char *user; /* name of real user for pfsh */ \ - char *comdiv; /* points to sh -c argument */ \ - char *prefix; /* prefix for compound assignment */ \ - sigjmp_buf *jmplist; /* longjmp return stack */ \ - char **sigmsg; /* points to signal messages */ \ - int oldexit; \ - uid_t userid,euserid; /* real and effective user id */ \ - gid_t groupid,egroupid;/* real and effective group id */ \ - pid_t pid; /* process id of shell */ \ - pid_t bckpid; /* background process id */ \ - pid_t cpid; \ - pid_t spid; /* subshell process id */ \ - pid_t pipepid; \ - int32_t ppid; /* parent process id of shell */ \ - int topfd; \ - int sigmax; /* maximum number of signals */ \ - int savesig; \ - unsigned char *sigflag; /* pointer to signal states */ \ - char intrap; \ - char login_sh; \ - char lastbase; \ - char forked; \ - char binscript; \ - char deftype; \ - char funload; \ - char used_pos; /* used postional parameter */\ - char universe; \ - char winch; \ - char indebug; /* set when in debug trap */ \ - unsigned char lastsig; /* last signal received */ \ - char subshare; /* set when in ${..} comsub */ \ - char toomany; /* set when out of fd's */ \ - char instance; /* in set_instance */ \ - char decomma; /* decimal_point=',' */ \ - char *readscript; /* set before reading a script */ \ - int *inpipe; /* input pipe pointer */ \ - int *outpipe; /* output pipe pointer */ \ - int cpipe[2]; \ - int coutpipe; \ - int inuse_bits; \ - struct argnod *envlist; \ - struct dolnod *arglist; \ - int fn_depth; \ - int fn_reset; \ - int dot_depth; \ - int hist_depth; \ - int xargmin; \ - int xargmax; \ - int xargexit; \ - int nenv; \ - mode_t mask; \ - long nforks; \ - Env_t *env; \ - void *init_context; \ - void *mac_context; \ - void *lex_context; \ - void *arg_context; \ - void *ed_context; \ - void *job_context; \ - void *pathlist; \ - void *defpathlist; \ - void *cdpathlist; \ - char **argaddr; \ - void *optlist; \ - struct sh_scoped global; \ - struct checkpt checkbase; \ - Shinit_f userinit; \ - Shbltin_f bltinfun; \ - Shbltin_t bltindata; \ - Shwait_f waitevent; \ - char *cur_line; \ - char *rcfile; \ - char **login_files; \ - int offsets[10]; \ - Sfio_t **sftable; \ - unsigned char *fdstatus; \ - const char *pwd; \ - History_t *hist_ptr; \ - void *jmpbuffer; \ - void *mktype; \ - Sfio_t *strbuf; \ - Sfio_t *strbuf2; \ - Dt_t *last_root; \ - Dt_t *prev_root; \ - Dt_t *fpathdict; \ - Dt_t *typedict; \ - char ifstable[256]; \ - unsigned char sigruntime[2]; \ - unsigned long test; \ - Shopt_t offoptions; \ - Shopt_t glob_options; \ - Namval_t *typeinit; \ - int *stats; \ - Namfun_t nvfun; \ - struct Regress_s*regress; - -#include <shell.h> - -#include "regress.h" - -/* error exits from various parts of shell */ -#define NIL(type) ((type)0) - -#define new_of(type,x) ((type*)malloc((unsigned)sizeof(type)+(x))) - -#define exitset() (sh.savexit=sh.exitval) - -#ifndef SH_DICT -#define SH_DICT (void*)e_dict -#endif - -#ifndef SH_CMDLIB_DIR -#define SH_CMDLIB_DIR "/opt/ast/bin" -#endif - -/* states */ -/* low numbered states are same as options */ -#define SH_NOFORK 0 /* set when fork not necessary */ -#define SH_FORKED 7 /* set when process has been forked */ -#define SH_PROFILE 8 /* set when processing profiles */ -#define SH_NOALIAS 9 /* do not expand non-exported aliases */ -#define SH_NOTRACK 10 /* set to disable sftrack() function */ -#define SH_STOPOK 11 /* set for stopable builtins */ -#define SH_GRACE 12 /* set for timeout grace period */ -#define SH_TIMING 13 /* set while timing pipelines */ -#define SH_DEFPATH 14 /* set when using default path */ -#define SH_INIT 15 /* set when initializing the shell */ -#define SH_TTYWAIT 16 /* waiting for keyboard input */ -#define SH_FCOMPLETE 17 /* set for filename completion */ -#define SH_PREINIT 18 /* set with SH_INIT before parsing options */ -#define SH_COMPLETE 19 /* set for command completion */ - -#define SH_BASH 41 -#define SH_BRACEEXPAND 42 -#define SH_POSIX 46 -#define SH_MULTILINE 47 - -#define SH_NOPROFILE 78 -#define SH_NOUSRPROFILE 79 -#define SH_LOGIN_SHELL 67 -#define SH_COMMANDLINE 0x100 -#define SH_BASHEXTRA 0x200 -#define SH_BASHOPT 0x400 - -#define SH_ID "ksh" /* ksh id */ -#define SH_STD "sh" /* standard sh id */ - -/* defines for sh_type() */ - -#define SH_TYPE_SH 001 -#define SH_TYPE_KSH 002 -#define SH_TYPE_BASH 004 -#define SH_TYPE_LOGIN 010 -#define SH_TYPE_PROFILE 020 -#define SH_TYPE_RESTRICTED 040 - -#if SHOPT_BASH -# ifndef SHOPT_HISTEXPAND -# define SHOPT_HISTEXPAND 1 -# endif -/* - * define for all the bash options - */ -# define SH_CDABLE_VARS 51 -# define SH_CDSPELL 52 -# define SH_CHECKHASH 53 -# define SH_CHECKWINSIZE 54 -# define SH_CMDHIST 55 -# define SH_DOTGLOB 56 -# define SH_EXECFAIL 57 -# define SH_EXPAND_ALIASES 58 -# define SH_EXTGLOB 59 -# define SH_HOSTCOMPLETE 63 -# define SH_HUPONEXIT 64 -# define SH_INTERACTIVE_COMM 65 -# define SH_LITHIST 66 -# define SH_MAILWARN 68 -# define SH_NOEMPTYCMDCOMPL 69 -# define SH_NOCASEGLOB 70 -# define SH_NULLGLOB 71 -# define SH_PHYSICAL 45 -# define SH_PROGCOMP 72 -# define SH_PROMPTVARS 73 -# define SH_RESTRICTED2 74 -# define SH_SHIFT_VERBOSE 75 -# define SH_SOURCEPATH 76 -# define SH_XPG_ECHO 77 -#endif - -#if SHOPT_HISTEXPAND -# define SH_HISTAPPEND 60 -# define SH_HISTEXPAND 43 -# define SH_HISTORY2 44 -# define SH_HISTREEDIT 61 -# define SH_HISTVERIFY 62 -#endif - -#ifndef PIPE_BUF -# define PIPE_BUF 512 -#endif - -#if SHOPT_PFSH && ( !_lib_getexecuser || !_lib_free_execattr ) -# undef SHOPT_PFSH -#endif - -#define MATCH_MAX 64 - -#define SH_READEVAL 0x4000 /* for sh_eval */ -#define SH_FUNEVAL 0x10000 /* for sh_eval for function load */ - -extern Shell_t *nv_shell(Namval_t*); -extern int sh_addlib(void*); -extern void sh_applyopts(Shell_t*,Shopt_t); -extern char **sh_argbuild(Shell_t*,int*,const struct comnod*,int); -extern struct dolnod *sh_argfree(Shell_t *, struct dolnod*,int); -extern struct dolnod *sh_argnew(Shell_t*,char*[],struct dolnod**); -extern void *sh_argopen(Shell_t*); -extern struct argnod *sh_argprocsub(Shell_t*,struct argnod*); -extern void sh_argreset(Shell_t*,struct dolnod*,struct dolnod*); -extern Namval_t *sh_assignok(Namval_t*,int); -extern struct dolnod *sh_arguse(Shell_t*); -extern char *sh_checkid(char*,char*); -extern int sh_debug(Shell_t *shp,const char*,const char*,const char*,char *const[],int); -extern int sh_echolist(Sfio_t*, int, char**); -extern struct argnod *sh_endword(Shell_t*,int); -extern char **sh_envgen(void); -#if SHOPT_ENV -extern void sh_envput(Env_t*, Namval_t*); -#endif -extern void sh_envnolocal(Namval_t*,void*); -extern Sfdouble_t sh_arith(const char*); -extern void *sh_arithcomp(char*); -extern pid_t sh_fork(int,int*); -extern pid_t _sh_fork(pid_t, int ,int*); -extern char *sh_mactrim(Shell_t*,char*,int); -extern int sh_macexpand(Shell_t*,struct argnod*,struct argnod**,int); -extern int sh_macfun(Shell_t*,const char*,int); -extern void sh_machere(Shell_t*,Sfio_t*, Sfio_t*, char*); -extern void *sh_macopen(Shell_t*); -extern char *sh_macpat(Shell_t*,struct argnod*,int); -extern char *sh_mactry(Shell_t*,char*); -extern void sh_printopts(Shopt_t,int,Shopt_t*); -extern int sh_readline(Shell_t*,char**,int,int,long); -extern Sfio_t *sh_sfeval(char*[]); -extern void sh_setmatch(const char*,int,int,int[]); -extern Dt_t *sh_subaliastree(int); -extern void sh_scope(Shell_t*, struct argnod*, int); -extern Namval_t *sh_scoped(Shell_t*, Namval_t*); -extern Dt_t *sh_subfuntree(int); -extern void sh_subjobcheck(pid_t); -extern int sh_subsavefd(int); -extern void sh_subtmpfile(int); -extern char *sh_substitute(const char*,const char*,char*); -extern const char *_sh_translate(const char*); -extern int sh_trace(char*[],int); -extern void sh_trim(char*); -extern int sh_type(const char*); -extern void sh_unscope(Shell_t*); -extern void sh_utol(const char*, char*); -extern int sh_whence(char**,int); - -#ifndef ERROR_dictionary -# define ERROR_dictionary(s) (s) -#endif -#define sh_translate(s) _sh_translate(ERROR_dictionary(s)) - -#define WBITS (sizeof(long)*8) -#define WMASK (0xff) - -#define is_option(s,x) ((s)->v[((x)&WMASK)/WBITS] & (1L << ((x) % WBITS))) -#define on_option(s,x) ((s)->v[((x)&WMASK)/WBITS] |= (1L << ((x) % WBITS))) -#define off_option(s,x) ((s)->v[((x)&WMASK)/WBITS] &= ~(1L << ((x) % WBITS))) -#define sh_isoption(x) is_option(&sh.options,x) -#define sh_onoption(x) on_option(&sh.options,x) -#define sh_offoption(x) off_option(&sh.options,x) - - -#define sh_state(x) ( 1<<(x)) -#define sh_isstate(x) (sh.st.states&sh_state(x)) -#define sh_onstate(x) (sh.st.states |= sh_state(x)) -#define sh_offstate(x) (sh.st.states &= ~sh_state(x)) -#define sh_getstate() (sh.st.states) -#define sh_setstate(x) (sh.st.states = (x)) - -#define sh_sigcheck() do{if(sh.trapnote&SH_SIGSET)sh_exit(SH_EXITSIG);} while(0) - -extern int32_t sh_mailchk; -extern const char e_dict[]; - -/* sh_printopts() mode flags -- set --[no]option by default */ - -#define PRINT_VERBOSE 0x01 /* option on|off list */ -#define PRINT_ALL 0x02 /* list unset options too */ -#define PRINT_NO_HEADER 0x04 /* omit listing header */ -#define PRINT_SHOPT 0x08 /* shopt -s|-u */ -#define PRINT_TABLE 0x10 /* table of all options */ - -#ifdef SHOPT_STATS - /* performance statistics */ -# define STAT_ARGHITS 0 -# define STAT_ARGEXPAND 1 -# define STAT_COMSUB 2 -# define STAT_FORKS 3 -# define STAT_FUNCT 4 -# define STAT_GLOBS 5 -# define STAT_READS 6 -# define STAT_NVHITS 7 -# define STAT_NVOPEN 8 -# define STAT_PATHS 9 -# define STAT_SVFUNCT 10 -# define STAT_SCMDS 11 -# define STAT_SPAWN 12 -# define STAT_SUBSHELL 13 - extern const Shtable_t shtab_stats[]; -# define sh_stats(x) (sh.stats[(x)]++) -#else -# define sh_stats(x) -#endif /* SHOPT_STATS */ - - -#endif |