void setmode(int prof) { /* * decide whether interactive */ if ((flags & intflg) || ((flags&oneflg) == 0 && isatty(output) && isatty(input))) { dfault(&ps1nod, (geteuid() ? stdprompt : supprompt)); dfault(&ps2nod, readmsg); flags |= ttyflg | prompt; if (mailpnod.namflg != N_DEFAULT) setmail(mailpnod.namval); else setmail(mailnod.namval); startjobs(); } else { flags |= prof; flags &= ~prompt; } }
void assign(struct namnod *n, const unsigned char *v) { if (n->namflg & N_RDONLY) failed(n->namid, wtfailed); #ifndef RES else if (flags & rshflg) { if (n == &pathnod || eq(n->namid,"SHELL")) failed(n->namid, restricted); } #endif else if (n->namflg & N_FUNCTN) { func_unhash(n->namid); freefunc(n); n->namenv = 0; n->namflg = N_DEFAULT; } if (n == &mchknod) { mailchk = stoi(v); } replace(&n->namval, v); attrib(n, N_ENVCHG); if (n == &pathnod) { zaphash(); set_dotpath(); set_builtins_path(); return; } if (flags & prompt) { if ((n == &mailpnod) || (n == &mailnod && mailpnod.namflg == N_DEFAULT)) setmail(n->namval); } }