Lines Matching refs:shp
59 Shell_t *shp; /* pointer to shell interpreter */ member
114 void *sh_macopen(Shell_t *shp) in sh_macopen() argument
118 mp->shp = shp; in sh_macopen()
125 char *sh_mactry(Shell_t *shp,register char *string) in sh_mactry() argument
130 int savexit = shp->savexit; in sh_mactry()
135 string = sh_mactrim(shp,string,0); in sh_mactry()
137 shp->savexit = savexit; in sh_mactry()
150 char *sh_mactrim(Shell_t *shp, char *str, register int mode) in sh_mactrim() argument
152 register Mac_t *mp = (Mac_t*)shp->mac_context; in sh_mactrim()
153 Stk_t *stkp = shp->stk; in sh_mactrim()
159 shp->argaddr = 0; in sh_mactrim()
167 if(mp->ifsp=nv_getval(sh_scoped(shp,IFSNOD))) in sh_mactrim()
192 int sh_macexpand(Shell_t* shp, register struct argnod *argp, struct argnod **arghead,int flag) in sh_macexpand() argument
196 register Mac_t *mp = (Mac_t*)shp->mac_context; in sh_macexpand()
197 char **saveargaddr = shp->argaddr; in sh_macexpand()
199 Stk_t *stkp = shp->stk; in sh_macexpand()
202 if(mp->ifsp=nv_getval(sh_scoped(shp,IFSNOD))) in sh_macexpand()
206 if((flag&ARG_OPTIMIZE) && !shp->indebug) in sh_macexpand()
207 shp->argaddr = (char**)&argp->argchn.ap; in sh_macexpand()
209 shp->argaddr = 0; in sh_macexpand()
239 if(shp->argaddr) in sh_macexpand()
246 if(flags==1 && shp->argaddr) in sh_macexpand()
249 shp->argaddr = saveargaddr; in sh_macexpand()
258 void sh_machere(Shell_t *shp,Sfio_t *infile, Sfio_t *outfile, char *string) in sh_machere() argument
263 register Mac_t *mp = (Mac_t*)shp->mac_context; in sh_machere()
264 Lex_t *lp = (Lex_t*)mp->shp->lex_context; in sh_machere()
267 Stk_t *stkp = shp->stk; in sh_machere()
270 shp->argaddr = 0; in sh_machere()
274 mp->ifsp = nv_getval(sh_scoped(shp,IFSNOD)); in sh_machere()
402 char *sh_macpat(Shell_t *shp,register struct argnod *arg, int flags) in sh_macpat() argument
412 sh_macexpand(shp,arg,NIL(struct argnod**),flags|ARG_ARRAYOK); in sh_macpat()
431 Lex_t *lp = (Lex_t*)mp->shp->lex_context; in copyto()
439 Stk_t *stkp = mp->shp->stk; in copyto()
614 tilde_expand2(mp->shp,tilde); in copyto()
749 tilde_expand2(mp->shp,tilde); in copyto()
798 Stk_t *stkp = mp->shp->stk; in mac_substitute()
842 #define MAX_OFFSETS (sizeof(shp->offsets)/sizeof(shp->offsets[0]))
849 static char *getdolarg(Shell_t *shp, int n, int *size) in getdolarg() argument
851 register int c=S_DELIM, d=shp->ifstable['\\']; in getdolarg()
852 register unsigned char *first,*last,*cp = (unsigned char*)shp->cur_line; in getdolarg()
853 register int m=shp->offsets[0],delim=0; in getdolarg()
864 cp += shp->offsets[m+1]; in getdolarg()
866 shp->ifstable['\\'] = 0; in getdolarg()
867 shp->ifstable[0] = S_EOF; in getdolarg()
871 while(shp->ifstable[*cp++]==S_SPACE); in getdolarg()
874 shp->offsets[m] = (first-(unsigned char*)shp->cur_line); in getdolarg()
875 while((c=shp->ifstable[*cp++])==0); in getdolarg()
878 while((c=shp->ifstable[*cp++])==S_SPACE); in getdolarg()
890 shp->ifstable['\\'] = d; in getdolarg()
891 if(m > shp->offsets[0]) in getdolarg()
892 shp->offsets[0] = m; in getdolarg()
904 static char *prefix(Shell_t *shp, char *id) in prefix() argument
911 np = nv_search(id, shp->var_tree,0); in prefix()
919 shp->argaddr = 0; in prefix()
950 int loc = stktell(mp->shp->stk); in subcopy()
972 int sh_macfun(Shell_t *shp, const char *name, int offset) in sh_macfun() argument
975 np = nv_bfsearch(name,shp->fun_tree,&nq,(char**)0); in sh_macfun()
987 tp->com.comline = shp->inlineno; in sh_macfun()
990 stkseek(shp->stk,offset); in sh_macfun()
991 comsubst((Mac_t*)shp->mac_context,tp,2); in sh_macfun()
1032 Lex_t *lp = (Lex_t*)mp->shp->lex_context; in varsub()
1037 Stk_t *stkp = mp->shp->stk; in varsub()
1082 v = special(mp->shp,c); in varsub()
1087 if(mp->shp->cur_line) in varsub()
1094 dolmax = mp->shp->st.dolc+1; in varsub()
1111 mp->shp->argaddr = 0; in varsub()
1121 v = special(mp->shp,c); in varsub()
1123 else if(mp->shp->cur_line) in varsub()
1125 mp->shp->used_pos = 1; in varsub()
1129 else if(c <= mp->shp->st.dolc) in varsub()
1131 mp->shp->used_pos = 1; in varsub()
1132 v = mp->shp->st.dolv[c]; in varsub()
1149 mp->shp->argaddr=0; in varsub()
1226 if(mp->shp->cur_line && *id=='R' && strcmp(id,"REPLY")==0) in varsub()
1228 mp->shp->argaddr=0; in varsub()
1234 if(mp->shp->argaddr) in varsub()
1236 np = nv_open(id,mp->shp->var_tree,flag|NV_NOFAIL); in varsub()
1242 if(sh_macfun(mp->shp,id,offset)) in varsub()
1304 if((type==M_VNAME||type==M_SUBNAME) && mp->shp->argaddr && strcmp(nv_name(np),id)) in varsub()
1305 mp->shp->argaddr = 0; in varsub()
1325 nv_typename(nq,mp->shp->strbuf); in varsub()
1327 nv_attribute(np,mp->shp->strbuf,"typeset",1); in varsub()
1328 v = sfstruse(mp->shp->strbuf); in varsub()
1332 else if(mp->shp->cur_line && np==REPLYNOD) in varsub()
1333 v = mp->shp->cur_line; in varsub()
1372 if(mp->shp->argaddr) in varsub()
1393 mp->shp->last_root = mp->shp->var_tree; in varsub()
1394 id = prefix(mp->shp,id); in varsub()
1431 if(mp->shp->cur_line) in varsub()
1434 c = mp->shp->offsets[0]; in varsub()
1438 c = mp->shp->st.dolc; in varsub()
1539 v = special(mp->shp,dolg=0); in varsub()
1541 else if(mp->shp->cur_line) in varsub()
1549 v = mp->shp->st.dolv[dolg=type]; in varsub()
1734 sfprintf(mp->shp->strbuf,"[%s]",nv_getsub(np)); in varsub()
1735 v = sfstruse(mp->shp->strbuf); in varsub()
1764 if(mp->shp->cur_line) in varsub()
1776 v = mp->shp->st.dolv[dolg]; in varsub()
1843 if(mp->shp->subshell) in varsub()
1861 sfprintf(mp->shp->strbuf,"%s[%s]\0",nv_name(np),nv_getsub(np)); in varsub()
1862 id = sfstruse(mp->shp->strbuf); in varsub()
1897 Stk_t *stkp = mp->shp->stk; in comsubst()
1899 struct slnod *saveslp = mp->shp->st.staklist; in comsubst()
1908 mp->shp->argaddr = 0; in comsubst()
1910 mp->shp->st.staklist=0; in comsubst()
1916 t = sh_dolparen((Lex_t*)mp->shp->lex_context); in comsubst()
1923 num = sh_arith(sh_mactrim(mp->shp,t->ar.arexpr->argval,3)); in comsubst()
1928 sfprintf(mp->shp->strbuf,"%.*Lg",LDBL_DIG,num); in comsubst()
1930 sfprintf(mp->shp->strbuf,"%lld",(Sflong_t)num); in comsubst()
1932 sfprintf(mp->shp->strbuf,"%Lg",num); in comsubst()
1933 str = sfstruse(mp->shp->strbuf); in comsubst()
1935 mp->shp->st.staklist = saveslp; in comsubst()
1961 c = mp->shp->inlineno; in comsubst()
1962 mp->shp->inlineno = error_info.line+mp->shp->st.firstline; in comsubst()
1963 t = (Shnode_t*)sh_parse(mp->shp, sp,SH_EOF|SH_NL); in comsubst()
1964 mp->shp->inlineno = c; in comsubst()
1983 fd = sh_redirect(mp->shp,ip,3); in comsubst()
1989 if(sp=mp->shp->sftable[fd]) in comsubst()
2004 sh_freeup(mp->shp); in comsubst()
2005 mp->shp->st.staklist = saveslp; in comsubst()
2014 np = sh_scoped(mp->shp,IFSNOD); in comsubst()
2063 else if(!mp->quote && mp->split && mp->shp->ifstable['\n']) in comsubst()
2086 if(mp->shp->spid) in comsubst()
2087 job_wait(mp->shp->spid); in comsubst()
2088 if(--newlines>0 && mp->shp->ifstable['\n']==S_DELIM) in comsubst()
2112 Stk_t *stkp=mp->shp->stk; in mac_copy()
2166 state = mp->shp->ifstable; in mac_copy()
2265 if(mp->shp->ifstable[ESCAPE]==S_ESC) in mac_copy()
2266 mp->shp->ifstable[ESCAPE] = 0; in mac_copy()
2282 Stk_t *stkp = mp->shp->stk; in endfield()
2290 mp->shp->argaddr = 0; in endfield()
2416 Shell_t *shp = ((Shbltin_t*)context)->shp; in sh_btilde() local
2417 char *cp = sh_tilde(shp,argv[1]); in sh_btilde()
2428 static void tilde_expand2(Shell_t *shp, register int offset) in tilde_expand2() argument
2430 char shtilde[10], *av[3], *ptr=stkfreeze(shp->stk,1); in tilde_expand2()
2435 np = nv_open(shtilde,shp->fun_tree, NV_VARNAME|NV_NOARRAY|NV_NOASSIGN|NV_NOFAIL); in tilde_expand2()
2453 stkset(shp->stk,ptr, offset); in tilde_expand2()
2464 sfwrite(shp->stk,ptr,n); in tilde_expand2()
2467 sfputr(shp->stk,av[1],0); in tilde_expand2()
2480 static char *sh_tilde(Shell_t *shp,register const char *string) in sh_tilde() argument
2491 if(!(cp=nv_getval(sh_scoped(shp,HOME)))) in sh_tilde()
2498 cp = nv_getval(sh_scoped(shp,PWDNOD)); in sh_tilde()
2500 cp = nv_getval(sh_scoped(shp,OLDPWDNOD)); in sh_tilde()
2517 static char *special(Shell_t *shp,register int c) in special() argument
2520 shp->argaddr = 0; in special()
2525 return(shp->st.dolc>0?shp->st.dolv[1]:NIL(char*)); in special()
2528 if(shp->cur_line) in special()
2530 getdolarg(shp,MAX_ARGN,(int*)0); in special()
2531 return(ltos(shp->offsets[0])); in special()
2534 return(ltos(shp->st.dolc)); in special()
2536 if(shp->bckpid) in special()
2537 return(ltos(shp->bckpid)); in special()
2541 return(ltos(shp->pid)); in special()
2544 return(sh_argdolminus(shp->arg_context)); in special()
2546 return(ltos(shp->savexit)); in special()
2548 if(sh_isstate(SH_PROFILE) || shp->fn_depth==0 || !shp->st.cmdname) in special()
2549 return(shp->shname); in special()
2551 return(shp->st.cmdname); in special()