home *** CD-ROM | disk | FTP | other *** search
/ ftp.ncftp.com / ftp.ncftp.com.zip / ftp.ncftp.com / ncftp / older_versions / ncftp-3.2.2-src.tar.bz2 / ncftp-3.2.2-src.tar / ncftp-3.2.2 / libncftp / u_signal.c < prev    next >
C/C++ Source or Header  |  2005-01-01  |  679b  |  36 lines

  1. /* u_signal.c
  2.  *
  3.  * Copyright (c) 1996-2005 Mike Gleason, NcFTP Software.
  4.  * All rights reserved.
  5.  *
  6.  */
  7.  
  8. #include "syshdrs.h"
  9. #ifdef PRAGMA_HDRSTOP
  10. #    pragma hdrstop
  11. #endif
  12.  
  13. #ifdef HAVE_SIGACTION
  14. void (*NcSignal(int signum, void (*handler)(int)))(int)
  15. {
  16.     /* Thanks A.P.U.E. (W.R.S., R.I.P.) */
  17.     struct sigaction sa, osa;
  18.  
  19.     (void) sigemptyset(&sa.sa_mask);
  20.     sa.sa_flags = 0;
  21.     sa.sa_handler = handler;
  22.     if (signum == SIGALRM) {
  23. #ifdef SA_INTERRUPT
  24.         sa.sa_flags |= SA_INTERRUPT;
  25. #endif
  26.     } else {
  27. #ifdef SA_RESTART
  28.         sa.sa_flags |= SA_RESTART;
  29. #endif
  30.     }
  31.     if (sigaction(signum, &sa, &osa) < 0)
  32.         return ((FTPSigProc) SIG_ERR);
  33.     return (osa.sa_handler);
  34. }
  35. #endif    /* HAVE_SIGACTION */
  36.