Work on systems without sa_sigaction.

This commit is contained in:
Ryan C. Gordon 2011-07-20 16:35:37 -07:00
parent 1a862ae6d3
commit 4b70200bf8
3 changed files with 12 additions and 0 deletions

View file

@ -236,6 +236,8 @@ if test x$enable_libc = xyes; then
AC_CHECK_LIB(iconv, iconv_open, [LIBS="$LIBS -liconv"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"]) AC_CHECK_LIB(iconv, iconv_open, [LIBS="$LIBS -liconv"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"])
AC_CHECK_FUNCS(iconv) AC_CHECK_FUNCS(iconv)
AC_CHECK_MEMBER(struct sigaction.sa_sigaction,[AC_DEFINE(HAVE_SA_SIGACTION)], ,[#include <signal.h>])
fi fi
AC_CHECK_SIZEOF(void*) AC_CHECK_SIZEOF(void*)

View file

@ -139,6 +139,7 @@
#undef HAVE_SINF #undef HAVE_SINF
#undef HAVE_SQRT #undef HAVE_SQRT
#undef HAVE_SIGACTION #undef HAVE_SIGACTION
#undef HAVE_SA_SIGACTION
#undef HAVE_SETJMP #undef HAVE_SETJMP
#undef HAVE_NANOSLEEP #undef HAVE_NANOSLEEP
#undef HAVE_SYSCONF #undef HAVE_SYSCONF

View file

@ -49,12 +49,21 @@ SDL_QuitInit(void)
#ifdef HAVE_SIGACTION #ifdef HAVE_SIGACTION
struct sigaction action; struct sigaction action;
sigaction(SIGINT, NULL, &action); sigaction(SIGINT, NULL, &action);
#ifdef HAVE_SA_SIGACTION
if ( action.sa_handler == SIG_DFL && action.sa_sigaction == (void*)SIG_DFL ) { if ( action.sa_handler == SIG_DFL && action.sa_sigaction == (void*)SIG_DFL ) {
#else
if ( action.sa_handler == SIG_DFL ) {
#endif
action.sa_handler = SDL_HandleSIG; action.sa_handler = SDL_HandleSIG;
sigaction(SIGINT, &action, NULL); sigaction(SIGINT, &action, NULL);
} }
sigaction(SIGTERM, NULL, &action); sigaction(SIGTERM, NULL, &action);
#ifdef HAVE_SA_SIGACTION
if ( action.sa_handler == SIG_DFL && action.sa_sigaction == (void*)SIG_DFL ) { if ( action.sa_handler == SIG_DFL && action.sa_sigaction == (void*)SIG_DFL ) {
#else
if ( action.sa_handler == SIG_DFL ) {
#endif
action.sa_handler = SDL_HandleSIG; action.sa_handler = SDL_HandleSIG;
sigaction(SIGTERM, &action, NULL); sigaction(SIGTERM, &action, NULL);
} }