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);
324 sh_trace(shp,argv,1);
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->gd->userid!=shp->gd->euserid)
396 setuid(shp->gd->userid);
397 setgid(shp->gd->groupid);
398 if(shp->gd->euserid==0)
400 shp->gd->euserid = shp->gd->userid;
401 shp->gd->egroupid = shp->gd->groupid;
404 else if((shp->gd->userid!=shp->gd->euserid && setuid(shp->gd->euserid)<0) ||
405 (shp->gd->groupid!=shp->gd->egroupid && setgid(shp->gd->egroupid)<0) ||
406 (shp->gd->userid==shp->gd->euserid && shp->gd->groupid==shp->gd->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;
781 struct argnod *sh_argprocsub(Shell_t *shp,struct argnod *argp)
786 int subshell = shp->subshell;
787 ap = (struct argnod*)stkseek(shp->stk,ARGVAL);
791 if(fd==0 && shp->subshell)
792 sh_subtmpfile(shp);
794 sfwrite(shp->stk,e_devfdNN,8);
799 shp->fifo = pathtemp(0,0,0,"ksh.fifo",0);
800 mkfifo(shp->fifo,S_IRUSR|S_IWUSR);
801 sfputr(shp->stk,shp->fifo,0);
803 sfputr(shp->stk,fmtbase((long)pv[fd],10,0),0);
804 ap = (struct argnod*)stkfreeze(shp->stk,0);
805 shp->inpipe = shp->outpipe = 0;
808 shp->subshell = 0;
811 shp->inpipe = pv;
816 shp->outpipe = pv;
819 shp->subshell = subshell;
824 sh_iosave(shp,-pv[fd], shp->topfd, (char*)0);
826 free(shp->fifo);
827 shp->fifo = 0;
833 static int arg_expand(Shell_t *shp,register struct argnod *argp, struct argnod **argchain,int flag)
840 ap = sh_argprocsub(shp,argp);
864 count = sh_macexpand(shp,argp,argchain,flag);