This change effectively replaces an explicit compile-time #error with
a missing prototype error in environments not offering `select()`, and
saves curl-compatible systems from performing an explicit feature check.
Refs:
https://pubs.opengroup.org/onlinepubs/
009695399/functions/pselect.html
https://linux.die.net/man/2/select
Closes #22448
set(HAVE_RECV 1)
set(HAVE_SA_FAMILY_T 1)
set(HAVE_SCHED_YIELD 1)
-set(HAVE_SELECT 1)
set(HAVE_SEND 1)
if(APPLE OR
CYGWIN OR
set(HAVE_POSIX_STRERROR_R 0)
set(HAVE_PWD_H 0)
set(HAVE_RECV 1)
-set(HAVE_SELECT 1)
set(HAVE_SEND 1)
set(HAVE_SENDMMSG 0)
set(HAVE_SENDMSG 0)
check_symbol_exists("send" "${CURL_INCLUDES}" HAVE_SEND) # proto/bsdsocket.h sys/types.h sys/socket.h
check_function_exists("sendmsg" HAVE_SENDMSG)
check_function_exists("sendmmsg" HAVE_SENDMMSG)
-check_symbol_exists("select" "${CURL_INCLUDES}" HAVE_SELECT) # proto/bsdsocket.h sys/select.h sys/socket.h
check_symbol_exists("memrchr" "string.h" HAVE_MEMRCHR)
check_symbol_exists("alarm" "unistd.h" HAVE_ALARM)
check_symbol_exists("fcntl" "fcntl.h" HAVE_FCNTL)
])
-dnl CURL_CHECK_FUNC_SELECT
-dnl -------------------------------------------------
-dnl Test if the socket select() function is available.
-
-AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
- AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])
- AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])
- AC_CHECK_HEADERS(sys/select.h)
-
- AC_MSG_CHECKING([for select])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- #undef inline
- #ifdef _WIN32
- #ifndef WIN32_LEAN_AND_MEAN
- #define WIN32_LEAN_AND_MEAN
- #endif
- #include <winsock2.h>
- #else
- #include <sys/socket.h>
- #include <sys/time.h>
- #endif
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
- #endif
- #include <time.h>
- #ifndef _WIN32
- #ifdef HAVE_SYS_SELECT_H
- #include <sys/select.h>
- #elif defined(HAVE_UNISTD_H)
- #include <unistd.h>
- #endif
- $curl_includes_bsdsocket
- #endif
- ]],[[
- select(0, 0, 0, 0, 0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_select="yes"
- ],[
- AC_MSG_RESULT([no])
- curl_cv_select="no"
- ])
-
- if test "$curl_cv_select" = "yes"; then
- AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
- [Define to 1 if you have the select function.])
- curl_cv_func_select="yes"
- fi
-])
-
-
dnl CURL_VERIFY_RUNTIMELIBS
dnl -------------------------------------------------
dnl Verify that the shared libs found so far can be used when running
TYPE_SOCKADDR_STORAGE
-CURL_CHECK_FUNC_SELECT
-
CURL_CHECK_FUNC_RECV
CURL_CHECK_FUNC_SEND
#define HAVE_SYS_IOCTL_H 1
#define HAVE_ALARM 1
#define HAVE_UTIME 1
-#define HAVE_SELECT 1
#define HAVE_SOCKET 1
#define HAVE_STRUCT_TIMEVAL 1
/* Define to 1 if symbol `sa_family_t' exists */
#define HAVE_SA_FAMILY_T 1
-/* Define to 1 if you have the select function. */
-#define HAVE_SELECT 1
-
/* Define to 1 if you have the send function. */
#define HAVE_SEND 1
/* Define if you have the <net/if.h> header file. */
#define HAVE_NET_IF_H
-/* Define if you have the `select' function. */
-#define HAVE_SELECT
-
/* Define if you have the `signal' function. */
#define HAVE_SIGNAL
/* Define if you have a working ioctlsocket FIONBIO function. */
#define HAVE_IOCTLSOCKET_FIONBIO 1
-/* Define if you have the select function. */
-#define HAVE_SELECT 1
-
/* Define if you have the setlocale function. */
#define HAVE_SETLOCALE 1
/* Define to 1 if you have the recv function. */
#cmakedefine HAVE_RECV 1
-/* Define to 1 if you have the select function. */
-#cmakedefine HAVE_SELECT 1
-
/* Define to 1 if you have the sched_yield function. */
#cmakedefine HAVE_SCHED_YIELD 1
***************************************************************************/
#include "curl_setup.h"
-#ifndef HAVE_SELECT
-#error "We cannot compile without select() support."
-#endif
-
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
***************************************************************************/
#include "curl_setup.h"
-#if !defined(HAVE_SELECT) && !defined(HAVE_POLL)
-#error "We cannot compile without select() or poll() support."
-#endif
-
#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#elif defined(HAVE_UNISTD_H)
#include "curlx/timediff.h"
#include "curlx/wait.h"
-#ifndef HAVE_POLL
+#ifndef HAVE_POLL /* use select() */
/*
* This is a wrapper around select() to aid in Windows compatibility. A
* negative timeout value makes this function wait indefinitely, unless no