home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / LIBSRC.ZOO / libsrc / local / sigpmask.c < prev    next >
Text File  |  1992-02-24  |  777b  |  37 lines

  1. #include <signal.h>
  2. #include <errno.h>
  3. extern int __signal_mask;
  4.  
  5. int sigprocmask (int how, const sigset_t *set, sigset_t *oset)
  6. {
  7.    if (set)
  8.    {
  9.       switch (how)
  10.       {
  11.          case SIG_BLOCK:
  12.             if (oset)
  13.                *oset = __signal_mask;
  14.             __signal_mask |= *set & 0xFFFAFEFF;
  15.             return (0);
  16.  
  17.          case SIG_UNBLOCK:
  18.             if (oset)
  19.                *oset = __signal_mask;
  20.             __signal_mask &= *set & 0xFFFAFEFF;
  21.             return (0);
  22.  
  23.          case SIG_SETMASK:
  24.             if (oset)
  25.                *oset = __signal_mask;
  26.             __signal_mask = *set & 0xFFFAFEFF;
  27.             return (0);
  28.  
  29.          default:
  30.             errno = EINVAL;
  31.             return (-1);
  32.       }
  33.    }
  34. }
  35.  
  36.  
  37.