void r_ev(int argc, Rune **argv) { int i; Env *e; if(argc == 1){ if(nevstack <= 0){ if(verbose) warn(".ev stack underflow"); return; } restoreenv(evstack[--nevstack]); return; } if(nevstack >= nelem(evstack)) sysfatal(".ev stack overflow"); i = eval(argv[1]); if(i < 0 || i > 2){ warn(".ev bad environment %d", i); i = 0; } e = &env[getnr(L(".ev"))]; saveenv(e); evstack[nevstack++] = e; restoreenv(&env[i]); }
function exit(io response, in errmsg="") { gosub restoreenv(); if (not errmsg) { response="OK"; return 1; } else { response=L"Error: select2: " ^ errmsg; return 0; } }