Lines Matching refs:shp

48 	register Shell_t *shp = ((Shbltin_t*)extra)->shp;
85 else if(*action=='+' && action[1]==0 && shp->st.self == &shp->global)
96 sig = sig_number(shp,arg);
113 if(arg=shp->st.trap[sig])
117 if(shp->st.trap[sig])
118 free(shp->st.trap[sig]);
119 shp->st.trap[sig] = 0;
121 shp->st.trap[sig] = strdup(action);
124 if(shp->st.trap[sig])
125 shp->trapnote |= SH_SIGTRAP;
127 shp->trapnote = 0;
131 if(sig>shp->gd->sigmax)
138 char **trapcom = (shp->st.otrapcom?shp->st.otrapcom:shp->st.trapcom);
150 if(sig >= shp->st.trapmax)
151 shp->st.trapmax = sig+1;
152 arg = shp->st.trapcom[sig];
154 shp->st.trapcom[sig] = (shp->sigflag[sig]&SH_SIGOFF) ? Empty : strdup(action);
161 sig_list(shp,-1);
169 register Shell_t *shp = ((Shbltin_t*)extra)->shp;
174 if((signame=argv[opt_info.index++]) && (sig=sig_number(shp,signame+1))>=0)
204 sig_list(shp,0);
208 sig_list(shp,((int)strtol(signame, (char**)0, 10)&0177)+1);
211 if((sig=sig_number(shp,signame))<0)
213 shp->exitval = 2;
219 return(shp->exitval);
223 if((sig=sig_number(shp,signame)) < 0 || sig > shp->gd->sigmax)
227 shp->exitval = 1;
228 return(shp->exitval);
235 static int sig_number(Shell_t *shp,const char *string)
281 n = shp->gd->sigruntime[(n&((1<<SH_SIGBITS)-1))-1];
288 if(n<0 && shp->gd->sigruntime[1] && (name=stakptr(o)) && *name++=='R' && *name++=='T')
293 n = shp->gd->sigruntime[SH_SIGRTMIN] + sig;
298 n = shp->gd->sigruntime[SH_SIGRTMAX] - sig;
301 n = shp->gd->sigruntime[SH_SIGRTMIN] + sig - 1;
302 if(n<shp->gd->sigruntime[SH_SIGRTMIN] || n>shp->gd->sigruntime[SH_SIGRTMAX])
313 static char* sig_name(Shell_t *shp,int sig, char* buf, int pfx)
318 if(sig>shp->gd->sigruntime[SH_SIGRTMIN] && sig<shp->gd->sigruntime[SH_SIGRTMAX])
323 if(sig>shp->gd->sigruntime[SH_SIGRTMIN]+(shp->gd->sigruntime[SH_SIGRTMAX]-shp->gd->sigruntime[SH_SIGRTMIN])/2)
328 sig = shp->gd->sigruntime[SH_SIGRTMAX]-sig;
335 sig = sig-shp->gd->sigruntime[SH_SIGRTMIN];
354 static void sig_list(register Shell_t *shp,register int flag)
366 for(sig=shp->gd->sigmax; sig>=0; sig--)
374 if (((tp->sh_number>>SH_SIGBITS) & SH_SIGRUNTIME) && (sig = shp->gd->sigruntime[sig-1]+1) == 1)
387 sfputr(sfstdout, sig_name(shp,flag-1,name,0), '\n');
392 sig = shp->st.trapmax;
394 trapcom = (shp->st.otrapcom?shp->st.otrapcom:shp->st.trapcom);
399 if(sig > shp->gd->sigmax || !(sname=(char*)names[sig]))
400 sname = sig_name(shp,sig,name,1);
405 if(!(trap=shp->st.trap[sig]))
413 for(sig=1; sig <= shp->gd->sigmax; sig++)
416 sname = sig_name(shp,sig,name,1);