home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / gnu / libnix-0.8-src.lha / libnix-0.8 / sources / nix / signal / signal.c < prev   
Encoding:
C/C++ Source or Header  |  1994-12-12  |  372 b   |  18 lines

  1. #include <signal.h>
  2.  
  3. extern void (*__signalfunc[])(int);
  4. extern int __signalmask,__signalpending;
  5.  
  6. void (*signal(int sig,void (*func)(int)))(int)
  7. {
  8.   void (*oldfunc)(int);
  9.   if(sig<1||sig>6)
  10.     return SIG_ERR;
  11.   oldfunc=__signalfunc[sig-1];
  12.   __signalfunc[sig-1]=func;
  13.   __signalmask&=~(1<<(sig-1));
  14.   if(__signalpending&(1<<(sig-1)))
  15.     raise(sig);
  16.   return oldfunc;
  17. }
  18.