]> pd.if.org Git - pdclib/blobdiff - platform/example/functions/signal/signal.c
Removed SVN keyword tags.
[pdclib] / platform / example / functions / signal / signal.c
index 33722aceb65e5d14d38fd411af9f2b5c80a01d7f..9d22275f14aa1253e17629fe79831e67986bb138 100644 (file)
@@ -1,5 +1,3 @@
-/* $Id$ */
-
 /* signal( int sig, void (*func)( int ) )
 
    This file is part of the Public Domain C Library (PDCLib).
@@ -11,6 +9,7 @@
 #ifndef REGTEST
 
 #include <stdlib.h>
+#include <errno.h>
 
 void (*_PDCLIB_sigabrt)( int ) = SIG_DFL;
 void (*_PDCLIB_sigfpe)( int )  = SIG_DFL;
@@ -22,6 +21,10 @@ void (*_PDCLIB_sigterm)( int ) = SIG_DFL;
 void (*signal( int sig, void (*func)( int ) ) )( int )
 {
     void (*oldhandler)( int );
+    if ( sig <= 0 || func == SIG_ERR )
+    {
+        return SIG_ERR;
+    }
     switch ( sig )
     {
         case SIGABRT:
@@ -49,10 +52,7 @@ void (*signal( int sig, void (*func)( int ) ) )( int )
             _PDCLIB_sigterm = func;
             break;
         default:
-            /* The standard calls for an unspecified "positive value". You
-               will probably want to define a specific value for this.
-            */
-            _PDCLIB_errno = 1;
+            errno = EINVAL;
             return SIG_ERR;
     }
     return oldhandler;
@@ -65,7 +65,7 @@ void (*signal( int sig, void (*func)( int ) ) )( int )
 
 int main( void )
 {
-    TESTCASE( NO_TESTDRIVER );
+    /* Testing covered by raise.c */
     return TEST_RESULTS;
 }
 #endif