Added a check in configure that verifies if <signal.h> is available,
authorYang Tse <yangsita@gmail.com>
Wed, 22 Nov 2006 18:41:35 +0000 (18:41 +0000)
committerYang Tse <yangsita@gmail.com>
Wed, 22 Nov 2006 18:41:35 +0000 (18:41 +0000)
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
configure.ac
setup_once.h

index 9a28404..7cfaec4 100644 (file)
@@ -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 <signal.h>
+#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 <signal.h>
+#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
index 79292ce..71d4a01 100644 (file)
@@ -297,6 +297,8 @@ TYPE_IN_ADDR_T
 
 TYPE_SOCKADDR_STORAGE
 
+TYPE_SIG_ATOMIC_T
+
 CURL_CHECK_FUNC_RECV
 
 CURL_CHECK_FUNC_SEND
index 224ab69..23d75ca 100644 (file)
 #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 */