[Talisman/North-Keys Thu Jul 23 04:54:11 CDT 1992] IRIS GL Life cellular automaton simulator (based on concept by Tim Conway) The trap section was originally to contain the following code, but for some bizarre reason signal failed while trying to call a local function by address from outside of the functions scope. Or something like that. Trapset *TrapInit() /* this compiles in gcc2 */ { static Trapset traps; static void TrapWinch() { traps.winch = 1; return;} static void TrapIntr() { traps.intr = 1; return;} static void TrapHup() { traps.hup = 1; return;} static void TrapTerm() { traps.term = 1; return;} static void TrapTstp() { traps.tstp = 1; return;} static void TrapCont() { traps.cont = 1; return;} signal(SIGWINCH, TrapWinch); signal(SIGINT, TrapIntr); signal(SIGHUP, TrapHup); signal(SIGTERM, TrapTerm); signal(SIGTSTP, TrapTstp); signal(SIGCONT, TrapCont); return &traps; } Signal TrapCheck(Trapset &traps) { if(traps->winch) { traps->winch = 0; return S_winch; } if(traps->intr ) { traps->intr = 0; return S_intr ; } if(traps->hup ) { traps->hup = 0; return S_hup ; } if(traps->term ) { traps->term = 0; return S_term ; } if(traps->tstp ) { traps->tstp = 0; return S_tstp ; } if(traps->cont ) { traps->cont = 0; return S_cont ; } return S_none; } /* in main */ Trapset traps = TrapInit(); ... while(sig = TrapCheck(traps)) { ... ------------------------------------------------------------eof