Lines Matching refs:shp

101 void *sh_argopen(Shell_t *shp)
105 ap->sh = shp;
140 Shell_t *shp = (Shell_t*)context;
142 register Arg_t *ap = (Arg_t*)(shp->arg_context);
143 Lex_t *lp = (Lex_t*)(shp->lex_context);
385 void sh_applyopts(Shell_t* shp,Shopt_t newflags)
392 if(!sh_isstate(SH_INIT) && is_option(&newflags,SH_PRIVILEGED) != sh_isoption(SH_PRIVILEGED) || sh_isstate(SH_INIT) && is_option(&((Arg_t*)shp->arg_context)->sh->offoptions,SH_PRIVILEGED) && shp->userid!=shp->euserid)
396 setuid(shp->userid);
397 setgid(shp->groupid);
398 if(shp->euserid==0)
400 shp->euserid = shp->userid;
401 shp->egroupid = shp->groupid;
404 else if((shp->userid!=shp->euserid && setuid(shp->euserid)<0) ||
405 (shp->groupid!=shp->egroupid && setgid(shp->egroupid)<0) ||
406 (shp->userid==shp->euserid && shp->groupid==shp->egroupid))
438 shp->options = newflags;
481 struct dolnod *sh_argfree(Shell_t *shp, struct dolnod *blk,int flag)
485 register Arg_t *ap = (Arg_t*)shp->arg_context;
546 struct dolnod *sh_argnew(Shell_t *shp,char *argi[], struct dolnod **savargfor)
548 register Arg_t *ap = (Arg_t*)shp->arg_context;
560 void sh_argreset(Shell_t *shp,struct dolnod *blk, struct dolnod *afor)
562 register Arg_t *ap = (Arg_t*)shp->arg_context;
563 while(ap->argfor=sh_argfree(shp,ap->argfor,0));
567 shp->st.dolc = ap->dolh->dolnum-1;
568 shp->st.dolv = ap->dolh->dolval;
575 struct dolnod *sh_arguse(Shell_t* shp)
578 register Arg_t *ap = (Arg_t*)shp->arg_context;
699 char **sh_argbuild(Shell_t *shp,int *nargs, const struct comnod *comptr,int flag)
703 shp->xargmin = 0;
719 shp->lastpath = 0;
728 n = arg_expand(shp,argp,&arghead,flag);
731 if(shp->xargmin==0)
732 shp->xargmin = *nargs;
733 shp->xargmax = *nargs+n;
749 comargn=(char**)stkalloc(shp->stk,(unsigned)(argn+1)*sizeof(char*));
772 shp->last_table = 0;
797 struct argnod *sh_argprocsub(Shell_t *shp,struct argnod *argp)
802 int subshell = shp->subshell;
803 ap = (struct argnod*)stkseek(shp->stk,ARGVAL);
806 sfwrite(shp->stk,e_devfdNN,8);
809 sfputr(shp->stk,fmtbase((long)pv[fd],10,0),0);
810 ap = (struct argnod*)stkfreeze(shp->stk,0);
811 shp->inpipe = shp->outpipe = 0;
814 shp->subshell = 0;
817 shp->inpipe = pv;
822 shp->outpipe = pv;
825 shp->subshell = subshell;
829 sh_iosave(shp,-pv[fd], shp->topfd, (char*)0);
834 static int arg_expand(Shell_t *shp,register struct argnod *argp, struct argnod **argchain,int flag)
842 ap = sh_argprocsub(shp,argp);
867 count = sh_macexpand(shp,argp,argchain,flag);