--- ./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