#ifdef WIN32
-#if !defined(__CYGWIN__)
-#define sclose(x) closesocket(x)
-
-#undef HAVE_ALARM
-#else
- /* gcc-for-win is still good :) */
-#define sclose(x) close(x)
-#define HAVE_ALARM
-#endif /* !GNU or mingw */
+# if !defined(__CYGWIN__)
+# define sclose(x) closesocket(x)
+# else
+# define sclose(x) close(x)
+# endif
-#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
-
-#else /* MSDOS */
+# ifdef MSDOS /* Watt-32 */
-#ifdef __BEOS__
-#define sclose(x) closesocket(x)
-#else /* __BEOS__ */
-#define sclose(x) close(x)
-#endif /* __BEOS__ */
+# 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
-#define HAVE_ALARM
+# else /* MSDOS */
-#endif /* MSDOS */
+# ifdef __BEOS__
+# define sclose(x) closesocket(x)
+# else /* __BEOS__ */
+# define sclose(x) close(x)
+# endif /* __BEOS__ */
-#ifdef _AMIGASF
-#undef HAVE_ALARM
-#undef sclose
-#define sclose(x) CloseSocket(x)
-#endif
+# endif /* MSDOS */
-#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 _AMIGASF
+# undef sclose
+# define sclose(x) CloseSocket(x)
+# endif
-#ifdef __SYMBIAN32__
-#undef HAVE_ALARM
-#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
-#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 */
#include <sys/bsdskt.h>
#include <sys/timeval.h>
#endif
-#undef HAVE_ALARM
#endif
#if defined(HAVE_LIBIDN) && defined(HAVE_TLD_H)
])
+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