75 lines
2.1 KiB
Diff
75 lines
2.1 KiB
Diff
|
--- ./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
|