home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume9 / elm2 / part01 / src / signals.c < prev    next >
C/C++ Source or Header  |  1987-03-08  |  1KB  |  76 lines

  1. /**            signals.c        **/
  2.  
  3. /** This set of routines traps various signals and informs the
  4.     user of the error, leaving the program in a nice, graceful
  5.     manner.
  6.  
  7.     (C) Copyright 1986 Dave Taylor
  8. **/
  9.  
  10. #include "headers.h"
  11. #include <signal.h>
  12.  
  13. extern int pipe_abort;        /* set to TRUE if receive SIGPIPE */
  14.  
  15. quit_signal()
  16. {
  17.     dprint0(2,"\n\n** Received SIGQUIT **\n\n\n\n");
  18.     leave();
  19. }
  20.  
  21. term_signal() 
  22. {
  23.     dprint0(2,"\n\n** Received SIGTERM **\n\n\n\n");
  24.     leave();
  25. }
  26.  
  27. ill_signal()
  28. {
  29.     dprint0(1,"\n\n** Received SIGILL **\n\n\n\n");
  30.     PutLine0(LINES, 0, "\n\nIllegal Instruction signal!\n\n");
  31.     emergency_exit();
  32. }
  33.  
  34. fpe_signal()  
  35. {
  36.     dprint0(1,"\n\n** Received SIGFPE **\n\n\n\n");
  37.     PutLine0(LINES, 0,"\n\nFloating Point Exception signal!\n\n");
  38.     emergency_exit();
  39. }
  40.  
  41. bus_signal()
  42. {
  43.     dprint0(1,"\n\n** Received SIGBUS **\n\n\n\n");
  44.     PutLine0(LINES, 0,"\n\nBus Error signal!\n\n");
  45.     emergency_exit();
  46. }
  47.  
  48. segv_signal()
  49. {
  50.     dprint0(1,"\n\n** Received SIGSEGV **\n\n\n\n");
  51.     PutLine0(LINES, 0,"\n\nSegment Violation signal!\n\n");
  52.     emergency_exit();
  53. }
  54.  
  55. alarm_signal()
  56. {    
  57.     /** silently process alarm signal for timeouts... **/
  58.  
  59.     int alarm_signal();
  60.  
  61.     signal(SIGALRM, alarm_signal);
  62. }
  63.  
  64. pipe_signal()
  65. {
  66.     /** silently process pipe signal... **/
  67.  
  68.     int pipe_signal();
  69.  
  70.     dprint0(2,"*** received SIGPIPE ***\n\n");
  71.     
  72.     pipe_abort = TRUE;    /* internal signal ... wheeee!  */
  73.  
  74.     signal(SIGPIPE, pipe_signal);
  75. }
  76.