home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / gnu / groff-1.09-src.lha / src / amiga / groff-1.09 / indxbib / signal.c < prev   
C/C++ Source or Header  |  1993-01-04  |  2KB  |  64 lines

  1. /* Copyright (C) 1992 Free Software Foundation, Inc.
  2.      Written by James Clark (jjc@jclark.com)
  3.  
  4. This file is part of groff.
  5.  
  6. groff is free software; you can redistribute it and/or modify it under
  7. the terms of the GNU General Public License as published by the Free
  8. Software Foundation; either version 2, or (at your option) any later
  9. version.
  10.  
  11. groff is distributed in the hope that it will be useful, but WITHOUT ANY
  12. WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14. for more details.
  15.  
  16. You should have received a copy of the GNU General Public License along
  17. with groff; see the file COPYING.  If not, write to the Free Software
  18. Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
  19.  
  20. /* Unfortunately vendors seem to have problems writing a <signal.h>
  21. that is correct for C++, so we implement all signal handling in C. */
  22.  
  23. #include <sys/types.h>
  24. #include <signal.h>
  25. #ifdef HAVE_UNISTD_H
  26. #include <unistd.h>
  27. #endif
  28.  
  29. #ifndef RETSIGTYPE
  30. #define RETSIGTYPE void
  31. #endif
  32.  
  33. extern void cleanup();
  34.  
  35. static RETSIGTYPE handle_fatal_signal(signum)
  36.      int signum;
  37. {
  38.   signal(signum, SIG_DFL);
  39.   cleanup();
  40.   kill(getpid(), signum);
  41. }
  42.  
  43. void catch_fatal_signals()
  44. {
  45. #ifdef SIGHUP
  46.   signal(SIGHUP, handle_fatal_signal);
  47. #endif
  48.   signal(SIGINT, handle_fatal_signal);
  49.   signal(SIGTERM, handle_fatal_signal);
  50. }
  51.  
  52. #ifndef HAVE_RENAME
  53.  
  54. void ignore_fatal_signals()
  55. {
  56. #ifdef SIGHUP
  57.   signal(SIGHUP, SIG_IGN);
  58. #endif
  59.   signal(SIGINT, SIG_IGN);
  60.   signal(SIGTERM, SIG_IGN);
  61. }
  62.  
  63. #endif /* not HAVE_RENAME */
  64.