build: assume POSIX select() is available

This change effectively changes an explicit compile-time #error with
a missing prototype error in environments not offering `select()`, and
save supported systems from performing an explicit feature check.

Refs:
https://pubs.opengroup.org/onlinepubs/009695399/
https://linux.die.net/man/2/select
This commit is contained in:
Viktor Szakats 2026-07-30 14:20:59 +02:00
parent 1d7b8e6c29
commit 6111aef702
No known key found for this signature in database
12 changed files with 1 additions and 80 deletions

View file

@ -226,7 +226,6 @@ set(HAVE_REALPATH 1)
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

View file

@ -128,7 +128,6 @@ set(HAVE_POLL_H 0)
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)

View file

@ -1640,7 +1640,6 @@ check_symbol_exists("recv" "${CURL_INCLUDES}" HAVE_RECV) # proto/bsd
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)

View file

@ -972,59 +972,6 @@ AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [
])
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

View file

@ -4178,8 +4178,6 @@ esac
TYPE_SOCKADDR_STORAGE
CURL_CHECK_FUNC_SELECT
CURL_CHECK_FUNC_RECV
CURL_CHECK_FUNC_SEND

View file

@ -52,7 +52,6 @@
#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

View file

@ -142,9 +142,6 @@
/* 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

View file

@ -69,9 +69,6 @@
/* 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

View file

@ -103,9 +103,6 @@
/* 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

View file

@ -460,9 +460,6 @@
/* 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

View file

@ -23,10 +23,6 @@
***************************************************************************/
#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)

View file

@ -23,10 +23,6 @@
***************************************************************************/
#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)
@ -40,7 +36,7 @@
#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