From 7b2283c28b1e10ef39a9780fb1abb789b95d5339 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 5 Jan 2018 21:39:27 +0100 Subject: [PATCH] configure.ac: autodetect sin_len member in struct sockaddr_in. This fixes a build issue on Haiku as it does have sin_len. Tested on Linux as well. For some reason AC_CHECK_MEMBER doesn't generate the proper define in config.h.in, so I used AC_CHECK_MEMBERS. --- configure.ac | 2 ++ src/net/IPv4Address.hxx | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 9e406764c..73fb3f51f 100644 --- a/configure.ac +++ b/configure.ac @@ -243,6 +243,8 @@ AC_CHECK_FUNCS(fnmatch) AC_CHECK_FUNCS(strndup) AC_CHECK_FUNCS(strcasestr) +AC_CHECK_MEMBERS([struct sockaddr_in.sin_len], [], [], [[#include ]]) + if test x$host_is_linux = xyes; then MPD_OPTIONAL_FUNC(eventfd, eventfd, USE_EVENTFD) MPD_OPTIONAL_FUNC(signalfd, signalfd, USE_SIGNALFD) diff --git a/src/net/IPv4Address.hxx b/src/net/IPv4Address.hxx index bba453a05..8a5aab1d5 100644 --- a/src/net/IPv4Address.hxx +++ b/src/net/IPv4Address.hxx @@ -81,8 +81,7 @@ class IPv4Address { static constexpr struct sockaddr_in Construct(struct in_addr address, uint16_t port) { return { -#if defined(__APPLE__) || \ - defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD__) +#ifdef HAVE_STRUCT_SOCKADDR_IN_SIN_LEN sizeof(struct sockaddr_in), #endif AF_INET,