On SCO OpenServer 5.0.7, sys/socket.h does not define either SHUT_RDWR,
SHUT_RD, and SHUT_WR.  This causes a problem when running `make test`.

May I suggest a patch similar to the following patch that improves the
workarounds for missing SHUT_RD, SHUT_WR, and SHUT_RDWR definitions?

$ cat curl-7.76.0-i686-pc-sco3.2v5.0.7-3.patch
--- curl-7.76.0/lib/curl_setup.h.orig   2021-03-30 07:39:12.000000000 -0500
+++ curl-7.76.0/lib/curl_setup.h        2021-04-19 15:37:51.000000000 -0500
@@ -715,10 +715,12 @@
 #endif

 /*
- * Portable symbolic names for Winsock shutdown() mode flags.
+ * Portable symbolic names for Winsock shutdown() mode flags and other
+ * systems that do not define them.
  */

-#ifdef USE_WINSOCK
+#if defined(USE_WINSOCK) || \
+   !defined(SHUT_RD) && (defined(HAVE_SOCKET_H) || defined(HAVE_SYS_SOCKET_H))
 #  define SHUT_RD   0x00
 #  define SHUT_WR   0x01
 #  define SHUT_RDWR 0x02

Justification:

$ grep shutdown /usr/include/sys/socket.h
int     shutdown __P((int, int));

On these systems, `man SSC shutdown` mentions use of -lsocket
and documents the values to use when calling shutdown().  The
man page indicates 0 shuts off reads, 1 shuts off sends, and,
2 disallows both sends and receives.

The only /usr/include reference to SHUT_* defines appears in the
system's /usr/include/php/main/php_network.h file:

/* These are here, rather than with the win32 counterparts above,
 * since <sys/socket.h> defines them. */
#ifndef SHUT_RD
# define SHUT_RD 0
# define SHUT_WR 1
# define SHUT_RDWR 2
#endif

--

Kevin R. Bulgrien
-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html

Reply via email to