
jmp_buf env;
int valid_env = 0;

void
sig_handler(sig)
int sig;
{
    assert(sig >= 0 && sig < NSIG);

    if (!signals[sig].action) {
        /* always an error except when sig == 0 */
        if (sig == 0) return;
        fprintf(stderr,"unexpected signal delivered - %s (%d)\n",
            signal_to_string(sig),sig);
    } else {
        signal(sig, sig_handler);   
        eval(signals[sig].action);
    }

    if (valid_env) longjmp(env,1);
}



