OSDN Git Service

* libc/signal/signal.c (__sigtramp_r): ISO C requires
authorgeoffk <geoffk>
Tue, 19 Sep 2000 19:39:45 +0000 (19:39 +0000)
committergeoffk <geoffk>
Tue, 19 Sep 2000 19:39:45 +0000 (19:39 +0000)
case labels to be integral constant expressions, so
use an if/else tree instead.
(_raise_r): Likewise.

newlib/ChangeLog
newlib/libc/signal/signal.c

index ea51457..55ecc35 100644 (file)
@@ -1,3 +1,10 @@
+2000-09-19  Geoffrey Keating  <geoffk@cygnus.com>
+
+       * 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  <jjohnstn@redhat.com>
 
        * libc/machine/v850/setjmp.S: Fixed tab problems caused by
index 56c7353..df005f1 100644 (file)
@@ -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;