One issue I had is in the following function.  How can I easily find the
current signal value without causing possible signal loss during
testing, or possible abort if signals were previously ignored.  I could
use sigblock, and I think that would exist on a system that doesn't have
sigaction, but is it worth the portability issue?  Does any platform
have threads and not sigaction?

---------------------------------------------------------------------------

> + 
> + pqsigfunc
> + pqsignalinquire(int signo)
> + {
> + #if !defined(HAVE_POSIX_SIGNALS)
> +     pqsigfunc old;
> + 
> +     /*
> +      *      We could lose a signal during this test.
> +      *      In a multi-threaded application, this might
> +      *      be a problem.  Do any non-threaded platforms
> +      *      lack sigaction()?
> +      */
> +     old = signal(signo, SIG_IGN);
> +     signal(signo, old);
> +     return old;
> + #else
> +     struct sigaction oact;
> + 
> +     if (sigaction(signo, NULL, &oact) < 0)
> +        return SIG_ERR;
> +     return oact.sa_handler;
> + #endif   /* !HAVE_POSIX_SIGNALS */
> + }

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to