0001-Remove-configure-probes-for-sockaddr_storage-members.patch

text/x-patch

Filename: 0001-Remove-configure-probes-for-sockaddr_storage-members.patch
Type: text/x-patch
Part: 0
Message: Re: Cleaning up historical portability baggage

Patch

Format: format-patch
Series: patch 0001
Subject: Remove configure probes for sockaddr_storage members.
File+
config/c-library.m4 6 12
configure 0 48
configure.ac 1 1
src/common/ip.c 1 1
src/include/libpq/pqcomm.h 0 13
src/include/pg_config.h.in 0 12
src/tools/msvc/Solution.pm 0 4
From a4cc14b0de234102bfe6312e793d515797fa572e Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.munro@gmail.com>
Date: Fri, 19 Aug 2022 16:16:34 +1200
Subject: [PATCH] Remove configure probes for sockaddr_storage members.

Previously we had to deal with implementation details of struct
sockaddr_storage in various replacement code, but now that we're able to
rely on newer standard facilities we don't need to do that.

We still need to keep a probe for sockaddr's sa_len, to use in a couple
of places.  In one place we previously assumed that the presence of
ss_len implied the presence sun_len, but it's no less justifiable to
test for sa_len there, since they all go together.
---
 config/c-library.m4        | 18 +++++---------
 configure                  | 48 --------------------------------------
 configure.ac               |  2 +-
 src/common/ip.c            |  2 +-
 src/include/libpq/pqcomm.h | 13 -----------
 src/include/pg_config.h.in | 12 ----------
 src/tools/msvc/Solution.pm |  4 ----
 7 files changed, 8 insertions(+), 91 deletions(-)

diff --git a/config/c-library.m4 b/config/c-library.m4
index 58453c4f76..c1dd804679 100644
--- a/config/c-library.m4
+++ b/config/c-library.m4
@@ -73,20 +73,14 @@ AC_DEFUN([PGAC_UNION_SEMUN],
 ])])# PGAC_UNION_SEMUN
 
 
-# PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS
-# --------------------------------------
-# Check the members of `struct sockaddr_storage'.  We need to know about
-# ss_family and ss_len.  (Some platforms follow RFC 2553 and call them
-# __ss_family and __ss_len.)  We also check struct sockaddr's sa_len.
-AC_DEFUN([PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS],
-[AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family,
-		   struct sockaddr_storage.__ss_family,
-		   struct sockaddr_storage.ss_len,
-		   struct sockaddr_storage.__ss_len,
-		   struct sockaddr.sa_len], [], [],
+# PGAC_STRUCT_SOCKADDR_MEMBERS
+# ----------------------------
+# Check if struct sockaddr and subtypes have 4.4BSD-style length.
+AC_DEFUN([PGAC_STRUCT_SOCKADDR_SA_LEN],
+[AC_CHECK_MEMBERS([struct sockaddr.sa_len], [], [],
 [#include <sys/types.h>
 #include <sys/socket.h>
-])])# PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS
+])])# PGAC_STRUCT_SOCKADDR_MEMBERS
 
 
 # PGAC_TYPE_LOCALE_T
diff --git a/configure b/configure
index b28fccbc47..4bd050008b 100755
--- a/configure
+++ b/configure
@@ -14990,54 +14990,6 @@ _ACEOF
 
 fi
 
-ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "ss_family" "ac_cv_member_struct_sockaddr_storage_ss_family" "#include <sys/types.h>
-#include <sys/socket.h>
-
-"
-if test "x$ac_cv_member_struct_sockaddr_storage_ss_family" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "__ss_family" "ac_cv_member_struct_sockaddr_storage___ss_family" "#include <sys/types.h>
-#include <sys/socket.h>
-
-"
-if test "x$ac_cv_member_struct_sockaddr_storage___ss_family" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "ss_len" "ac_cv_member_struct_sockaddr_storage_ss_len" "#include <sys/types.h>
-#include <sys/socket.h>
-
-"
-if test "x$ac_cv_member_struct_sockaddr_storage_ss_len" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
-_ACEOF
-
-
-fi
-ac_fn_c_check_member "$LINENO" "struct sockaddr_storage" "__ss_len" "ac_cv_member_struct_sockaddr_storage___ss_len" "#include <sys/types.h>
-#include <sys/socket.h>
-
-"
-if test "x$ac_cv_member_struct_sockaddr_storage___ss_len" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN 1
-_ACEOF
-
-
-fi
 ac_fn_c_check_member "$LINENO" "struct sockaddr" "sa_len" "ac_cv_member_struct_sockaddr_sa_len" "#include <sys/types.h>
 #include <sys/socket.h>
 
diff --git a/configure.ac b/configure.ac
index dd368290a6..6ff294d405 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1614,7 +1614,7 @@ PGAC_C_COMPUTED_GOTO
 PGAC_STRUCT_TIMEZONE
 PGAC_UNION_SEMUN
 AC_CHECK_TYPES(socklen_t, [], [], [#include <sys/socket.h>])
-PGAC_STRUCT_SOCKADDR_STORAGE_MEMBERS
+PGAC_STRUCT_SOCKADDR_SA_LEN
 
 PGAC_TYPE_LOCALE_T
 
diff --git a/src/common/ip.c b/src/common/ip.c
index 0149d07ae7..9b611cdc8c 100644
--- a/src/common/ip.c
+++ b/src/common/ip.c
@@ -227,7 +227,7 @@ getaddrinfo_unix(const char *path, const struct addrinfo *hintsp,
 	 * something with it.  To suppress the warning, clamp the struct size to
 	 * what will fit in sun_len.
 	 */
-#ifdef HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN
+#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
 	unp->sun_len = Min(sizeof(struct sockaddr_un),
 					   ((size_t) 1 << (sizeof(unp->sun_len) * BITS_PER_BYTE)) - 1);
 #endif
diff --git a/src/include/libpq/pqcomm.h b/src/include/libpq/pqcomm.h
index 7e2f1495f3..fcf68df39b 100644
--- a/src/include/libpq/pqcomm.h
+++ b/src/include/libpq/pqcomm.h
@@ -21,19 +21,6 @@
 #include <netdb.h>
 #include <netinet/in.h>
 
-#ifndef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
-#ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
-#define ss_family __ss_family
-#else
-#error struct sockaddr_storage does not provide an ss_family member
-#endif
-#endif
-
-#ifdef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN
-#define ss_len __ss_len
-#define HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 1
-#endif
-
 typedef struct
 {
 	struct sockaddr_storage addr;
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index 26eb6a2dfe..109776e465 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -442,18 +442,6 @@
 /* Define to 1 if `sa_len' is a member of `struct sockaddr'. */
 #undef HAVE_STRUCT_SOCKADDR_SA_LEN
 
-/* Define to 1 if `ss_family' is a member of `struct sockaddr_storage'. */
-#undef HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY
-
-/* Define to 1 if `ss_len' is a member of `struct sockaddr_storage'. */
-#undef HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN
-
-/* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */
-#undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
-
-/* Define to 1 if `__ss_len' is a member of `struct sockaddr_storage'. */
-#undef HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN
-
 /* Define to 1 if `tm_zone' is a member of `struct tm'. */
 #undef HAVE_STRUCT_TM_TM_ZONE
 
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index fead5c2a72..a3da3f748a 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -343,10 +343,6 @@ sub GenerateFiles
 		HAVE_STRUCT_CMSGCRED                     => undef,
 		HAVE_STRUCT_OPTION                       => undef,
 		HAVE_STRUCT_SOCKADDR_SA_LEN              => undef,
-		HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY   => 1,
-		HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN      => undef,
-		HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY => undef,
-		HAVE_STRUCT_SOCKADDR_STORAGE___SS_LEN    => undef,
 		HAVE_STRUCT_TM_TM_ZONE                   => undef,
 		HAVE_SYNC_FILE_RANGE                     => undef,
 		HAVE_SYNCFS                              => undef,
-- 
2.36.1