From: geoffk Date: Tue, 19 Sep 2000 19:39:45 +0000 (+0000) Subject: * libc/signal/signal.c (__sigtramp_r): ISO C requires X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d73cfdd79c26473a969219c499d1e5b251ec14a1;p=pf3gnuchains%2Fpf3gnuchains3x.git * libc/signal/signal.c (__sigtramp_r): ISO C requires case labels to be integral constant expressions, so use an if/else tree instead. (_raise_r): Likewise. --- diff --git a/newlib/ChangeLog b/newlib/ChangeLog index ea51457e89..55ecc35209 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,10 @@ +2000-09-19 Geoffrey Keating + + * libc/signal/signal.c (__sigtramp_r): ISO C requires + case labels to be integral constant expressions, so + use an if/else tree instead. + (_raise_r): Likewise. + 2000-09-13 Jeff Johnston * libc/machine/v850/setjmp.S: Fixed tab problems caused by diff --git a/newlib/libc/signal/signal.c b/newlib/libc/signal/signal.c index 56c7353729..df005f1b9e 100644 --- a/newlib/libc/signal/signal.c +++ b/newlib/libc/signal/signal.c @@ -167,7 +167,6 @@ _raise_r (ptr, sig) int sig; { _sig_func_ptr func; - int result = 0; if (sig < 0 || sig >= NSIG) { @@ -178,27 +177,22 @@ _raise_r (ptr, sig) if (ptr->_sig_func == NULL && _init_signal_r (ptr) != 0) return -1; - switch ((_POINTER_INT) ptr->_sig_func[sig]) + func = ptr->_sig_func[sig]; + if (func == SIG_DFL) + return _kill_r (ptr, _getpid_r (ptr), sig); + else if (func == SIG_IGN) + return 0; + else if (func == SIG_ERR) { - case SIG_DFL: - return _kill_r (ptr, _getpid_r (ptr), sig); - - case SIG_IGN: - break; - - case SIG_ERR: ptr->_errno = EINVAL; - result = 1; - break; - - default: - func = ptr->_sig_func[sig]; + return 1; + } + else + { ptr->_sig_func[sig] = SIG_DFL; func (sig); - break; + return 0; } - - return result; } int @@ -215,20 +209,16 @@ __sigtramp_r (ptr, sig) if (ptr->_sig_func == NULL && _init_signal_r (ptr) != 0) return -1; - - switch ((_POINTER_INT) ptr->_sig_func[sig]) - { - case SIG_DFL: - return 1; - case SIG_ERR: - return 2; - - case SIG_IGN: - return 3; - - default: - func = ptr->_sig_func[sig]; + func = ptr->_sig_func[sig]; + if (func == SIG_DFL) + return 1; + else if (func == SIG_ERR) + return 2; + else if (func == SIG_IGN) + return 3; + else + { ptr->_sig_func[sig] = SIG_DFL; func (sig); return 0;