Blob Blame History Raw
--- ./src/configure.in	2004-01-04 22:35:44.000000000 -0800
+++ ./src/configure.in	2014-10-09 11:14:47.782210631 -0700
@@ -34,7 +34,7 @@ AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys
 dnl Checks for typedefs, structures, and compiler characteristics.
 
 dnl Checks for library functions.
-AC_CHECK_FUNCS(sigvec tgetnum setlocale)
+AC_CHECK_FUNCS(sigaction tgetnum setlocale)
 AC_FUNC_GETPGRP
 AC_PROG_GCC_TRADITIONAL
 AC_TYPE_SIGNAL
--- ./src/console.c	2004-01-04 23:27:46.000000000 -0800
+++ ./src/console.c	2014-10-09 11:16:59.627943378 -0700
@@ -158,9 +158,9 @@ private RETSIGTYPE InterruptHandler( int
 {
   kb_interrupted = TRUE;
 
-#ifndef HAVE_SIGVEC
+#ifndef HAVE_SIGACTION
   signal( SIGINT, InterruptHandler );
-#endif /* HAVE_SIGVEC */
+#endif /* HAVE_SIGACTION */
 }
 
 public void ConsoleEnableInterrupt()
@@ -235,9 +235,9 @@ private RETSIGTYPE WindowChangeHandler(
 
   ConsoleGetWindowSize();
 
-#ifndef HAVE_SIGVEC
+#ifndef HAVE_SIGACTION
   signal( SIGWINCH, WindowChangeHandler );
-#endif /* HAVE_SIGVEC */
+#endif /* HAVE_SIGACTION */
 }
 #endif /* UNIX */
 
@@ -388,24 +388,24 @@ public void ConsoleSetUp()
   signal( SIGINT, InterruptIgnoreHandler );
 #endif /* MSDOS */
 
-#ifdef HAVE_SIGVEC
-  struct sigvec sigVec;
+#ifdef HAVE_SIGACTION
+  struct sigaction sa;
 
-  sigVec.sv_handler = WindowChangeHandler;
-  sigVec.sv_mask = sigmask( SIGWINCH );
-  sigVec.sv_flags = SV_INTERRUPT;
-  sigvec( SIGWINCH, &sigVec, NULL );
-
-  sigVec.sv_handler = InterruptHandler;
-  sigVec.sv_mask = sigmask( SIGINT );
-  sigVec.sv_flags = SV_INTERRUPT;
-  sigvec( SIGINT, &sigVec, NULL );
+  sa.sa_handler = WindowChangeHandler;
+  sigemptyset( &sa.sa_mask );
+  sa.sa_flags = 0;           /* No SA_RESTART means interrupt syscalls.  */
+  sigaction( SIGWINCH, &sa, NULL );
+
+  sa.sa_handler = InterruptHandler;
+  sigemptyset( &sa.sa_mask );
+  sa.sa_flags = 0;           /* No SA_RESTART means interrupt syscalls.  */
+  sigaction( SIGINT, &sa, NULL );
 #else
 # ifdef SIGWINCH
   signal( SIGWINCH, WindowChangeHandler );
 # endif 
   signal( SIGINT, InterruptHandler );
-#endif /* HAVE_SIGVEC */
+#endif /* HAVE_SIGACTION */
 
 #ifdef UNIX
 #ifdef HAVE_TERMIOS_H