From 7f7d2ad5c69b1feca96ab68e18a635079d190d0b Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Wed, 22 Nov 2006 18:41:35 +0000 Subject: [PATCH] Added a check in configure that verifies if is available, defining HAVE_SIGNAL_H if the header is available. Added a check in configure that tests if the sig_atomic_t type is available, defining HAVE_SIG_ATOMIC_T if it is available. Providing a suitable default in setup_once.h if not available. Added a check in configure that tests if the sig_atomic_t type is already defined as volatile, defining HAVE_SIG_ATOMIC_T_VOLATILE if it is available and already defined as volatile. --- acinclude.m4 | 42 ++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 ++ setup_once.h | 10 ++++++++++ 3 files changed, 54 insertions(+) diff --git a/acinclude.m4 b/acinclude.m4 index 9a284040..7cfaec46 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1013,6 +1013,48 @@ AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [ ]) # AC_DEFUN +dnl TYPE_SIG_ATOMIC_T +dnl ------------------------------------------------- +dnl Check if the sig_atomic_t type is available, and +dnl verify if it is already defined as volatile. + +AC_DEFUN([TYPE_SIG_ATOMIC_T], [ + AC_CHECK_HEADERS(signal.h) + AC_CHECK_TYPE([sig_atomic_t],[ + AC_DEFINE(HAVE_SIG_ATOMIC_T, 1, + [Define to 1 if sig_atomic_t is an available typedef.]) + ], ,[ +#ifdef HAVE_SIGNAL_H +#include +#endif + ]) + case "$ac_cv_type_sig_atomic_t" in + yes) + # + AC_MSG_CHECKING([if sig_atomic_t is already defined as volatile]) + AC_TRY_LINK([ +#ifdef HAVE_SIGNAL_H +#include +#endif + ],[ + static volatile sig_atomic_t dummy = 0; + ],[ + AC_MSG_RESULT([no]) + ac_cv_sig_atomic_t_volatile="no" + ],[ + AC_MSG_RESULT([yes]) + ac_cv_sig_atomic_t_volatile="yes" + ]) + # + if test "$ac_cv_sig_atomic_t_volatile" = "yes"; then + AC_DEFINE(HAVE_SIG_ATOMIC_T_VOLATILE, 1, + [Define to 1 if sig_atomic_t is already defined as volatile.]) + fi + ;; + esac +]) # AC_DEFUN + + dnl CURL_CHECK_NONBLOCKING_SOCKET dnl ------------------------------------------------- dnl Check for how to set a socket to non-blocking state. There seems to exist diff --git a/configure.ac b/configure.ac index 79292ceb..71d4a015 100644 --- a/configure.ac +++ b/configure.ac @@ -297,6 +297,8 @@ TYPE_IN_ADDR_T TYPE_SOCKADDR_STORAGE +TYPE_SIG_ATOMIC_T + CURL_CHECK_FUNC_RECV CURL_CHECK_FUNC_SEND diff --git a/setup_once.h b/setup_once.h index 224ab692..23d75ca0 100644 --- a/setup_once.h +++ b/setup_once.h @@ -123,5 +123,15 @@ #define ISPRINT(x) (isprint((int) ((unsigned char)x))) +/* + * Typedef to 'int' if sig_atomic_t is not an available 'typedefed' type. + */ + +#ifndef HAVE_SIG_ATOMIC_T +typedef int sig_atomic_t; +#define HAVE_SIG_ATOMIC_T +#endif + + #endif /* __SETUP_ONCE_H */