--- src/lib/libthread_xu/thread/thr_sig.c 2005/02/01 12:38:27 1.1 +++ src/lib/libthread_xu/thread/thr_sig.c 2005/02/20 01:58:00 1.2 @@ -174,7 +174,6 @@ _sigsuspend(const sigset_t * set) return (ret); } -#if 0 __weak_reference(__sigwait, sigwait); __weak_reference(__sigtimedwait, sigtimedwait); __weak_reference(__sigwaitinfo, sigwaitinfo); @@ -226,22 +225,12 @@ __sigwaitinfo(const sigset_t *set, sigin int __sigwait(const sigset_t *set, int *sig) { - struct pthread *curthread = _get_curthread(); - sigset_t newset; - const sigset_t *pset; - int oldcancel; - int ret; - - if (SIGISMEMBER(*set, SIGCANCEL)) { - newset = *set; - SIGDELSET(newset, SIGCANCEL); - pset = &newset; - } else - pset = set; + int s; - oldcancel = _thr_cancel_enter(curthread); - ret = __sys_sigwait(pset, sig); - _thr_cancel_leave(curthread, oldcancel); - return (ret); + s = __sigwaitinfo(set, NULL); + if (s > 0) { + *sig = s; + return (0); + } + return (errno); } -#endif