Diff for /gforth/Attic/io.c between versions 1.3 and 1.4

version 1.3, 1994/06/17 12:35:05 version 1.4, 1994/07/08 15:00:45
Line 19 Line 19
 #endif  #endif
 #include <fcntl.h>  #include <fcntl.h>
 #include <sys/file.h>  #include <sys/file.h>
   #include <setjmp.h>
   #include "forth.h"
   #include "io.h"
   
 #if defined (__GNUC__)  #if defined (__GNUC__)
 #  define alloca __builtin_alloca  #  define alloca __builtin_alloca
Line 706  graceful_exit (int sig) Line 709  graceful_exit (int sig)
     fprintf (stderr, "\n\n%s.\n", sigmsg (sig));      fprintf (stderr, "\n\n%s.\n", sigmsg (sig));
   else    else
     fprintf (stderr, "\n\nSignal %d received, terminated.\n", sig);      fprintf (stderr, "\n\nSignal %d received, terminated.\n", sig);
   exit (sig);    exit (0x80|sig);
   }
   
   jmp_buf throw_jmp_buf;
   
   static void 
   signal_throw(int sig)
   {
     static int throw_codes[] = {
       -256,
       -28,
       -257,
       -258,
       -259,
       -260,
       -261,
       -55,
       -262,
       -23,
       -9,
       -263,
       -264,
       -265,
       -266,
       -267,
       -268,
     };
     signal(sig,signal_throw);
     longjmp(throw_jmp_buf,throw_codes[sig-1]); /* or use siglongjmp ? */
 }  }
   
 void  void
Line 731  install_signal_handlers (void) Line 762  install_signal_handlers (void)
     if (sigs_to_ignore [i])      if (sigs_to_ignore [i])
       signal (sigs_to_ignore [i], SIG_IGN);        signal (sigs_to_ignore [i], SIG_IGN);
   for (i = 0; i < DIM (sigs_to_abort); i++)    for (i = 0; i < DIM (sigs_to_abort); i++)
     signal (sigs_to_abort [i], graceful_exit); /* !! change to throw */      signal (sigs_to_abort [i], signal_throw); /* !! change to throw */
   for (i = 0; i < DIM (sigs_to_quit); i++)    for (i = 0; i < DIM (sigs_to_quit); i++)
     signal (sigs_to_quit [i], graceful_exit);      signal (sigs_to_quit [i], graceful_exit);
 }  }

Removed from v.1.3  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>