X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=platform%2Fexample%2Ffunctions%2Fsignal%2Fsignal.c;h=9d22275f14aa1253e17629fe79831e67986bb138;hb=e1c526e9bad3f6e69391e94059096145390508d3;hp=33722aceb65e5d14d38fd411af9f2b5c80a01d7f;hpb=702bdf4497a72b422c591f69c45aa0be0ee23731;p=pdclib diff --git a/platform/example/functions/signal/signal.c b/platform/example/functions/signal/signal.c index 33722ac..9d22275 100644 --- a/platform/example/functions/signal/signal.c +++ b/platform/example/functions/signal/signal.c @@ -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 +#include 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