1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-21 23:58:49 -05:00

configure script now checks availability of the alarm() function

This commit is contained in:
Yang Tse 2008-09-19 18:39:24 +00:00
parent 459e67b2a7
commit 4e4f6c1ec8
4 changed files with 136 additions and 58 deletions

View File

@ -6,6 +6,9 @@
Changelog
Yang Tse (19 Sep 2008)
- configure script now checks availability of the alarm() function.
Daniel Fandrich (18 Sep 2008)
- Don't bother to install a SIGALRM handler unless alarm() is available.
Also, leave the existing SIGALRM handler alone if the timeout is too small

View File

@ -2045,6 +2045,7 @@ CURL_CHECK_FUNC_RECVFROM
CURL_CHECK_FUNC_SEND
CURL_CHECK_MSG_NOSIGNAL
CURL_CHECK_FUNC_ALARM
CURL_CHECK_FUNC_FDOPEN
CURL_CHECK_FUNC_FTRUNCATE
CURL_CHECK_FUNC_GETHOSTBYADDR_R

View File

@ -338,76 +338,66 @@
#ifdef WIN32
#if !defined(__CYGWIN__)
#define sclose(x) closesocket(x)
# if !defined(__CYGWIN__)
# define sclose(x) closesocket(x)
# else
# define sclose(x) close(x)
# endif
#undef HAVE_ALARM
#else
/* gcc-for-win is still good :) */
#define sclose(x) close(x)
#define HAVE_ALARM
#endif /* !GNU or mingw */
#define DIR_CHAR "\\"
#define DOT_CHAR "_"
# define DIR_CHAR "\\"
# define DOT_CHAR "_"
#else /* WIN32 */
#ifdef MSDOS /* Watt-32 */
#include <sys/ioctl.h>
#define sclose(x) close_s(x)
#define select(n,r,w,x,t) select_s(n,r,w,x,t)
#define ioctl(x,y,z) ioctlsocket(x,y,(char *)(z))
#define IOCTL_3_ARGS
#include <tcp.h>
#ifdef word
#undef word
#endif
#ifdef byte
#undef byte
#endif
# ifdef MSDOS /* Watt-32 */
#else /* MSDOS */
# include <sys/ioctl.h>
# define sclose(x) close_s(x)
# define select(n,r,w,x,t) select_s(n,r,w,x,t)
# define ioctl(x,y,z) ioctlsocket(x,y,(char *)(z))
# define IOCTL_3_ARGS
# include <tcp.h>
# ifdef word
# undef word
# endif
# ifdef byte
# undef byte
# endif
#ifdef __BEOS__
#define sclose(x) closesocket(x)
#else /* __BEOS__ */
#define sclose(x) close(x)
#endif /* __BEOS__ */
# else /* MSDOS */
#define HAVE_ALARM
# ifdef __BEOS__
# define sclose(x) closesocket(x)
# else /* __BEOS__ */
# define sclose(x) close(x)
# endif /* __BEOS__ */
#endif /* MSDOS */
# endif /* MSDOS */
#ifdef _AMIGASF
#undef HAVE_ALARM
#undef sclose
#define sclose(x) CloseSocket(x)
#endif
# ifdef _AMIGASF
# undef sclose
# define sclose(x) CloseSocket(x)
# endif
#ifdef __minix
/* Minix 3 versions up to at least 3.1.3 are missing these prototypes */
extern char * strtok_r(char *s, const char *delim, char **last);
extern struct tm * gmtime_r(const time_t * const timep, struct tm *tmp);
#endif
# ifdef __minix
/* Minix 3 versions up to at least 3.1.3 are missing these prototypes */
extern char * strtok_r(char *s, const char *delim, char **last);
extern struct tm * gmtime_r(const time_t * const timep, struct tm *tmp);
# endif
#ifdef __SYMBIAN32__
#undef HAVE_ALARM
#endif
# define DIR_CHAR "/"
# ifndef DOT_CHAR
# define DOT_CHAR "."
# endif
#define DIR_CHAR "/"
#ifndef DOT_CHAR
#define DOT_CHAR "."
#endif
# ifdef MSDOS
# undef DOT_CHAR
# define DOT_CHAR "_"
# endif
#ifdef MSDOS
#undef DOT_CHAR
#define DOT_CHAR "_"
#endif
#ifndef fileno /* sunos 4 have this as a macro! */
int fileno( FILE *stream);
#endif
# ifndef fileno /* sunos 4 have this as a macro! */
int fileno( FILE *stream);
# endif
#endif /* WIN32 */
@ -450,7 +440,6 @@ int netware_init(void);
#include <sys/bsdskt.h>
#include <sys/timeval.h>
#endif
#undef HAVE_ALARM
#endif
#if defined(HAVE_LIBIDN) && defined(HAVE_TLD_H)

View File

@ -204,6 +204,91 @@ curl_includes_unistd="\
])
dnl CURL_CHECK_FUNC_ALARM
dnl -------------------------------------------------
dnl Verify if alarm 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_alarm, then
dnl HAVE_ALARM will be defined.
AC_DEFUN([CURL_CHECK_FUNC_ALARM], [
AC_REQUIRE([CURL_INCLUDES_UNISTD])dnl
#
tst_links_alarm="unknown"
tst_proto_alarm="unknown"
tst_compi_alarm="unknown"
tst_allow_alarm="unknown"
#
AC_MSG_CHECKING([if alarm can be linked])
AC_LINK_IFELSE([
AC_LANG_FUNC_LINK_TRY([alarm])
],[
AC_MSG_RESULT([yes])
tst_links_alarm="yes"
],[
AC_MSG_RESULT([no])
tst_links_alarm="no"
])
#
if test "$tst_links_alarm" = "yes"; then
AC_MSG_CHECKING([if alarm is prototyped])
AC_EGREP_CPP([alarm],[
$curl_includes_unistd
],[
AC_MSG_RESULT([yes])
tst_proto_alarm="yes"
],[
AC_MSG_RESULT([no])
tst_proto_alarm="no"
])
fi
#
if test "$tst_proto_alarm" = "yes"; then
AC_MSG_CHECKING([if alarm is compilable])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([[
$curl_includes_unistd
]],[[
if(0 != alarm(0))
return 1;
]])
],[
AC_MSG_RESULT([yes])
tst_compi_alarm="yes"
],[
AC_MSG_RESULT([no])
tst_compi_alarm="no"
])
fi
#
if test "$tst_compi_alarm" = "yes"; then
AC_MSG_CHECKING([if alarm usage allowed])
if test "x$curl_disallow_alarm" != "xyes"; then
AC_MSG_RESULT([yes])
tst_allow_alarm="yes"
else
AC_MSG_RESULT([no])
tst_allow_alarm="no"
fi
fi
#
AC_MSG_CHECKING([if alarm might be used])
if test "$tst_links_alarm" = "yes" &&
test "$tst_proto_alarm" = "yes" &&
test "$tst_compi_alarm" = "yes" &&
test "$tst_allow_alarm" = "yes"; then
AC_MSG_RESULT([yes])
AC_DEFINE_UNQUOTED(HAVE_ALARM, 1,
[Define to 1 if you have the alarm function.])
ac_cv_func_alarm="yes"
else
AC_MSG_RESULT([no])
ac_cv_func_alarm="no"
fi
])
dnl CURL_CHECK_FUNC_FDOPEN
dnl -------------------------------------------------
dnl Verify if fdopen is available, prototyped, and