pub fn execrestore()Expand description
Port of void execrestore(void) from Src/exec.c:6470.
C body:
struct execstack *en = exstack;
DPUTS(!exstack, "BUG: execrestore() without execsave()");
queue_signals();
exstack = exstack->next;
list_pipe_pid = en->list_pipe_pid;
nowait = en->nowait;
pline_level = en->pline_level;
list_pipe_child = en->list_pipe_child;
list_pipe_job = en->list_pipe_job;
strcpy(list_pipe_text, en->list_pipe_text);
lastval = en->lastval;
noeval = en->noeval;
badcshglob = en->badcshglob;
cmdoutpid = en->cmdoutpid;
cmdoutval = en->cmdoutval;
use_cmdoutval = en->use_cmdoutval;
procsubstpid = en->procsubstpid;
trap_return = en->trap_return;
trap_state = en->trap_state;
trapisfunc = en->trapisfunc;
traplocallevel = en->traplocallevel;
noerrs = en->noerrs;
this_noerrexit = en->this_noerrexit;
setunderscore(en->underscore);
zsfree(en->underscore);
free(en);
unqueue_signals();Pop the top execstack frame and restore every transient
exec-context global. Inverse of execsave.