18462SApril.Chin@Sun.COM /*********************************************************************** 28462SApril.Chin@Sun.COM * * 38462SApril.Chin@Sun.COM * This software is part of the ast package * 4*12068SRoger.Faulkner@Oracle.COM * Copyright (c) 1985-2010 AT&T Intellectual Property * 58462SApril.Chin@Sun.COM * and is licensed under the * 68462SApril.Chin@Sun.COM * Common Public License, Version 1.0 * 78462SApril.Chin@Sun.COM * by AT&T Intellectual Property * 88462SApril.Chin@Sun.COM * * 98462SApril.Chin@Sun.COM * A copy of the License is available at * 108462SApril.Chin@Sun.COM * http://www.opensource.org/licenses/cpl1.0.txt * 118462SApril.Chin@Sun.COM * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 128462SApril.Chin@Sun.COM * * 138462SApril.Chin@Sun.COM * Information and Software Systems Research * 148462SApril.Chin@Sun.COM * AT&T Research * 158462SApril.Chin@Sun.COM * Florham Park NJ * 168462SApril.Chin@Sun.COM * * 178462SApril.Chin@Sun.COM * Glenn Fowler <gsf@research.att.com> * 188462SApril.Chin@Sun.COM * David Korn <dgk@research.att.com> * 198462SApril.Chin@Sun.COM * Phong Vo <kpv@research.att.com> * 208462SApril.Chin@Sun.COM * * 218462SApril.Chin@Sun.COM ***********************************************************************/ 228462SApril.Chin@Sun.COM #pragma prototyped 238462SApril.Chin@Sun.COM 248462SApril.Chin@Sun.COM /* 258462SApril.Chin@Sun.COM * ksh builtin command api 268462SApril.Chin@Sun.COM */ 278462SApril.Chin@Sun.COM 288462SApril.Chin@Sun.COM #ifndef _SHCMD_H 298462SApril.Chin@Sun.COM #define _SHCMD_H 1 308462SApril.Chin@Sun.COM 318462SApril.Chin@Sun.COM #ifndef SH_VERSION 328462SApril.Chin@Sun.COM # define Shell_t void 338462SApril.Chin@Sun.COM #endif 348462SApril.Chin@Sun.COM #ifndef NV_DEFAULT 358462SApril.Chin@Sun.COM # define Namval_t void 368462SApril.Chin@Sun.COM #endif 378462SApril.Chin@Sun.COM #ifndef ERROR_NOTIFY 388462SApril.Chin@Sun.COM # define ERROR_NOTIFY 1 398462SApril.Chin@Sun.COM #endif 408462SApril.Chin@Sun.COM 418462SApril.Chin@Sun.COM typedef int (*Shbltin_f)(int, char**, void*); 428462SApril.Chin@Sun.COM 438462SApril.Chin@Sun.COM #undef Shbltin_t 448462SApril.Chin@Sun.COM typedef struct Shbltin_s 458462SApril.Chin@Sun.COM { 468462SApril.Chin@Sun.COM Shell_t *shp; 478462SApril.Chin@Sun.COM void *ptr; 488462SApril.Chin@Sun.COM int version; 498462SApril.Chin@Sun.COM int (*shrun)(int, char**); 508462SApril.Chin@Sun.COM int (*shtrap)(const char*, int); 518462SApril.Chin@Sun.COM void (*shexit)(int); 528462SApril.Chin@Sun.COM Namval_t *(*shbltin)(const char*, Shbltin_f, void*); 538462SApril.Chin@Sun.COM unsigned char notify; 548462SApril.Chin@Sun.COM unsigned char sigset; 558462SApril.Chin@Sun.COM unsigned char nosfio; 568462SApril.Chin@Sun.COM Namval_t *bnode; 578462SApril.Chin@Sun.COM Namval_t *vnode; 588462SApril.Chin@Sun.COM char *data; 598462SApril.Chin@Sun.COM int flags; 608462SApril.Chin@Sun.COM char *(*shgetenv)(const char*); 618462SApril.Chin@Sun.COM char *(*shsetenv)(const char*); 628462SApril.Chin@Sun.COM int invariant; 638462SApril.Chin@Sun.COM } Shbltin_t; 648462SApril.Chin@Sun.COM 658462SApril.Chin@Sun.COM #if defined(SH_VERSION) || defined(_SH_PRIVATE) 668462SApril.Chin@Sun.COM # undef Shell_t 678462SApril.Chin@Sun.COM # undef Namval_t 688462SApril.Chin@Sun.COM #else 6910898Sroland.mainz@nrubsig.org # define sh_context(c) ((Shbltin_t*)(c)) 7010898Sroland.mainz@nrubsig.org # define sh_run(c, ac, av) ((c)?(*sh_context(c)->shrun)(ac,av):-1) 7110898Sroland.mainz@nrubsig.org # define sh_system(c,str) ((c)?(*sh_context(c)->shtrap)(str,0):system(str)) 7210898Sroland.mainz@nrubsig.org # define sh_exit(c,n) ((c)?(*sh_context(c)->shexit)(n):exit(n)) 7310898Sroland.mainz@nrubsig.org # define sh_checksig(c) ((c) && sh_context(c)->sigset) 748462SApril.Chin@Sun.COM # if defined(SFIO_VERSION) || defined(_AST_H) 758462SApril.Chin@Sun.COM # define LIB_INIT(c) 768462SApril.Chin@Sun.COM # else 7710898Sroland.mainz@nrubsig.org # define LIB_INIT(c) ((c) && (sh_context(c)->nosfio = 1)) 788462SApril.Chin@Sun.COM # endif 798462SApril.Chin@Sun.COM # ifndef _CMD_H 808462SApril.Chin@Sun.COM # define cmdinit(ac,av,c,cat,flg) do { if((ac)<=0) return(0); \ 8110898Sroland.mainz@nrubsig.org (sh_context(c)->notify = ((flg)&ERROR_NOTIFY)?1:0);} while(0) 828462SApril.Chin@Sun.COM # endif 838462SApril.Chin@Sun.COM #endif 848462SApril.Chin@Sun.COM 858462SApril.Chin@Sun.COM #if _BLD_ast && defined(__EXPORT__) 868462SApril.Chin@Sun.COM #define extern __EXPORT__ 878462SApril.Chin@Sun.COM #endif 888462SApril.Chin@Sun.COM 898462SApril.Chin@Sun.COM extern int astintercept(Shbltin_t*, int); 908462SApril.Chin@Sun.COM 918462SApril.Chin@Sun.COM #undef extern 928462SApril.Chin@Sun.COM 938462SApril.Chin@Sun.COM #endif 94