]> pd.if.org Git - pdclib/blob - platform/example_cygwin/functions/signal/signal.c
Comment cleanups.
[pdclib] / platform / example_cygwin / functions / signal / signal.c
1 /* signal( int, void (*)( int ) )
2
3    This file is part of the Public Domain C Library (PDCLib).
4    Permission is granted to use, modify, and / or redistribute at will.
5 */
6
7 #include <signal.h>
8
9 #ifndef REGTEST
10
11 #include <stdlib.h>
12
13 void (*_PDCLIB_sigabrt)( int ) = SIG_DFL;
14 void (*_PDCLIB_sigfpe)( int )  = SIG_DFL;
15 void (*_PDCLIB_sigill)( int )  = SIG_DFL;
16 void (*_PDCLIB_sigint)( int )  = SIG_DFL;
17 void (*_PDCLIB_sigsegv)( int ) = SIG_DFL;
18 void (*_PDCLIB_sigterm)( int ) = SIG_DFL;
19
20 void (*signal( int sig, void (*func)( int ) ) )( int )
21 {
22     void (*oldhandler)( int );
23     switch ( sig )
24     {
25         case SIGABRT:
26             oldhandler = _PDCLIB_sigabrt;
27             _PDCLIB_sigabrt = func;
28             break;
29         case SIGFPE:
30             oldhandler = _PDCLIB_sigfpe;
31             _PDCLIB_sigfpe = func;
32             break;
33         case SIGILL:
34             oldhandler = _PDCLIB_sigill;
35             _PDCLIB_sigill = func;
36             break;
37         case SIGINT:
38             oldhandler = _PDCLIB_sigint;
39             _PDCLIB_sigint = func;
40             break;
41         case SIGSEGV:
42             oldhandler = _PDCLIB_sigsegv;
43             _PDCLIB_sigsegv = func;
44             break;
45         case SIGTERM:
46             oldhandler = _PDCLIB_sigterm;
47             _PDCLIB_sigterm = func;
48             break;
49         default:
50             /* The standard calls for an unspecified "positive value". You
51                will probably want to define a specific value for this.
52             */
53             _PDCLIB_errno = 1;
54             return SIG_ERR;
55     }
56     return oldhandler;
57 }
58
59 #endif
60
61 #ifdef TEST
62 #include <_PDCLIB_test.h>
63
64 int main( void )
65 {
66     TESTCASE( NO_TESTDRIVER );
67     return TEST_RESULTS;
68 }
69 #endif