/*----------------------------------------------------------------*/ /* trap01.c assert/abort test Keven Miller 03/17/2011 */ /*----------------------------------------------------------------*/ #ifdef __mpexl #pragma list off #endif #include #include #include #include #include int test; jmp_buf trpbuf; void trapsig (int sig) { printf ("\nTrap sig %d -- do cleanup\n", sig); if (test == 2) longjmp (trpbuf, 1); } int main ( int ac, char *av[]) { int jmpval; printf ("---Trap01 assert(0) test.\n"); printf ("Run with no parm, let assert() do abort\n"); printf ("Run with parm 1, trap SIGABRT from abort()\n"); printf ("Run with parm 2, trap SIGABRT, longjmp back\n"); if (ac > 1) { signal (SIGABRT, &trapsig); test = atoi (av [1]); } printf ("\nAssert test %d\n", test); jmpval = setjmp (trpbuf); if (! jmpval) { assert (0); } printf ("Return from assert (0) --Done\n"); return 0; } /*----------------------------------------------------------------*/