aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac4
-rw-r--r--m4/curl-functions.m4218
2 files changed, 218 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac
index 89ea54afb..1729dc5f3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2035,6 +2035,8 @@ CURL_CHECK_FUNC_SEND
CURL_CHECK_MSG_NOSIGNAL
CURL_CHECK_FUNC_GMTIME_R
+CURL_CHECK_FUNC_SIGACTION
+CURL_CHECK_FUNC_STRTOK_R
CURL_CHECK_FUNC_STRTOLL
dnl Checks for library functions.
@@ -2070,7 +2072,6 @@ AC_CHECK_FUNCS([basename \
setlocale \
setmode \
setrlimit \
- sigaction \
siginterrupt \
signal \
sigsetjmp \
@@ -2082,7 +2083,6 @@ AC_CHECK_FUNCS([basename \
stricmp \
strlcat \
strstr \
- strtok_r \
uname \
utime
],[
diff --git a/m4/curl-functions.m4 b/m4/curl-functions.m4
index abe52a0cd..f59963983 100644
--- a/m4/curl-functions.m4
+++ b/m4/curl-functions.m4
@@ -25,6 +25,27 @@
# serial 1
+dnl CURL_INCLUDES_SIGNAL
+dnl -------------------------------------------------
+dnl Set up variable with list of headers that must be
+dnl included when signal.h is to be included.
+
+AC_DEFUN([CURL_INCLUDES_SIGNAL], [
+curl_includes_signal="\
+/* includes start */
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SIGNAL_H
+# include <signal.h>
+#endif
+/* includes end */"
+ AC_CHECK_HEADERS(
+ sys/types.h signal.h,
+ [], [], [$curl_includes_signal])
+])
+
+
dnl CURL_INCLUDES_STDLIB
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
@@ -46,6 +67,27 @@ curl_includes_stdlib="\
])
+dnl CURL_INCLUDES_STRING
+dnl -------------------------------------------------
+dnl Set up variable with list of headers that must be
+dnl included when string.h is to be included.
+
+AC_DEFUN([CURL_INCLUDES_STRING], [
+curl_includes_string="\
+/* includes start */
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_STRING_H
+# include <string.h>
+#endif
+/* includes end */"
+ AC_CHECK_HEADERS(
+ sys/types.h string.h,
+ [], [], [$curl_includes_string])
+])
+
+
dnl CURL_INCLUDES_TIME
dnl -------------------------------------------------
dnl Set up variable with list of headers that must be
@@ -122,7 +164,8 @@ AC_DEFUN([CURL_CHECK_FUNC_GMTIME_R], [
AC_LANG_PROGRAM([[
$curl_includes_time
]],[[
- gmtime_r(0, 0);
+ if(0 != gmtime_r(0, 0))
+ return 1;
]])
],[
AC_MSG_RESULT([yes])
@@ -187,6 +230,176 @@ AC_DEFUN([CURL_CHECK_FUNC_GMTIME_R], [
])
+dnl CURL_CHECK_FUNC_SIGACTION
+dnl -------------------------------------------------
+dnl Verify if sigaction is available, prototyped, and
+dnl can be compiled. If all of these are true, and
+dnl usage has not been previously disallowed with
+dnl shell variable curl_disallow_sigaction, then
+dnl HAVE_SIGACTION will be defined.
+
+AC_DEFUN([CURL_CHECK_FUNC_SIGACTION], [
+ AC_REQUIRE([CURL_INCLUDES_SIGNAL])dnl
+ #
+ tst_links_sigaction="unknown"
+ tst_proto_sigaction="unknown"
+ tst_compi_sigaction="unknown"
+ tst_allow_sigaction="unknown"
+ #
+ AC_MSG_CHECKING([if sigaction can be linked])
+ AC_LINK_IFELSE([
+ AC_LANG_FUNC_LINK_TRY([sigaction])
+ ],[
+ AC_MSG_RESULT([yes])
+ tst_links_sigaction="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ tst_links_sigaction="no"
+ ])
+ #
+ if test "$tst_links_sigaction" = "yes"; then
+ AC_MSG_CHECKING([if sigaction is prototyped])
+ AC_EGREP_CPP([sigaction],[
+ $curl_includes_signal
+ ],[
+ AC_MSG_RESULT([yes])
+ tst_proto_sigaction="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ tst_proto_sigaction="no"
+ ])
+ fi
+ #
+ if test "$tst_proto_sigaction" = "yes"; then
+ AC_MSG_CHECKING([if sigaction is compilable])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ $curl_includes_signal
+ ]],[[
+ if(0 != sigaction(0, 0, 0))
+ return 1;
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ tst_compi_sigaction="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ tst_compi_sigaction="no"
+ ])
+ fi
+ #
+ if test "$tst_compi_sigaction" = "yes"; then
+ AC_MSG_CHECKING([if sigaction usage allowed])
+ if test "x$curl_disallow_sigaction" != "xyes"; then
+ AC_MSG_RESULT([yes])
+ tst_allow_sigaction="yes"
+ else
+ AC_MSG_RESULT([no])
+ tst_allow_sigaction="no"
+ fi
+ fi
+ #
+ AC_MSG_CHECKING([if sigaction might be used])
+ if test "$tst_links_sigaction" = "yes" &&
+ test "$tst_proto_sigaction" = "yes" &&
+ test "$tst_compi_sigaction" = "yes" &&
+ test "$tst_allow_sigaction" = "yes"; then
+ AC_MSG_RESULT([yes])
+ AC_DEFINE_UNQUOTED(HAVE_SIGACTION, 1,
+ [Define to 1 if you have the sigaction function.])
+ ac_cv_func_sigaction="yes"
+ else
+ AC_MSG_RESULT([no])
+ ac_cv_func_sigaction="no"
+ fi
+])
+
+
+dnl CURL_CHECK_FUNC_STRTOK_R
+dnl -------------------------------------------------
+dnl Verify if strtok_r is available, prototyped, and
+dnl can be compiled. If all of these are true, and
+dnl usage has not been previously disallowed with
+dnl shell variable curl_disallow_strtok_r, then
+dnl HAVE_STRTOK_R will be defined.
+
+AC_DEFUN([CURL_CHECK_FUNC_STRTOK_R], [
+ AC_REQUIRE([CURL_INCLUDES_STRING])dnl
+ #
+ tst_links_strtok_r="unknown"
+ tst_proto_strtok_r="unknown"
+ tst_compi_strtok_r="unknown"
+ tst_allow_strtok_r="unknown"
+ #
+ AC_MSG_CHECKING([if strtok_r can be linked])
+ AC_LINK_IFELSE([
+ AC_LANG_FUNC_LINK_TRY([strtok_r])
+ ],[
+ AC_MSG_RESULT([yes])
+ tst_links_strtok_r="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ tst_links_strtok_r="no"
+ ])
+ #
+ if test "$tst_links_strtok_r" = "yes"; then
+ AC_MSG_CHECKING([if strtok_r is prototyped])
+ AC_EGREP_CPP([strtok_r],[
+ $curl_includes_string
+ ],[
+ AC_MSG_RESULT([yes])
+ tst_proto_strtok_r="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ tst_proto_strtok_r="no"
+ ])
+ fi
+ #
+ if test "$tst_proto_strtok_r" = "yes"; then
+ AC_MSG_CHECKING([if strtok_r is compilable])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ $curl_includes_string
+ ]],[[
+ if(0 != strtok_r(0, 0, 0))
+ return 1;
+ ]])
+ ],[
+ AC_MSG_RESULT([yes])
+ tst_compi_strtok_r="yes"
+ ],[
+ AC_MSG_RESULT([no])
+ tst_compi_strtok_r="no"
+ ])
+ fi
+ #
+ if test "$tst_compi_strtok_r" = "yes"; then
+ AC_MSG_CHECKING([if strtok_r usage allowed])
+ if test "x$curl_disallow_strtok_r" != "xyes"; then
+ AC_MSG_RESULT([yes])
+ tst_allow_strtok_r="yes"
+ else
+ AC_MSG_RESULT([no])
+ tst_allow_strtok_r="no"
+ fi
+ fi
+ #
+ AC_MSG_CHECKING([if strtok_r might be used])
+ if test "$tst_links_strtok_r" = "yes" &&
+ test "$tst_proto_strtok_r" = "yes" &&
+ test "$tst_compi_strtok_r" = "yes" &&
+ test "$tst_allow_strtok_r" = "yes"; then
+ AC_MSG_RESULT([yes])
+ AC_DEFINE_UNQUOTED(HAVE_STRTOK_R, 1,
+ [Define to 1 if you have the strtok_r function.])
+ ac_cv_func_strtok_r="yes"
+ else
+ AC_MSG_RESULT([no])
+ ac_cv_func_strtok_r="no"
+ fi
+])
+
+
dnl CURL_CHECK_FUNC_STRTOLL
dnl -------------------------------------------------
dnl Verify if strtoll is available, prototyped, and
@@ -233,7 +446,8 @@ AC_DEFUN([CURL_CHECK_FUNC_STRTOLL], [
AC_LANG_PROGRAM([[
$curl_includes_stdlib
]],[[
- strtoll(0, 0, 0);
+ if(0 != strtoll(0, 0, 0))
+ return 1;
]])
],[
AC_MSG_RESULT([yes])