From 14d4a896bd60d722aa6fed9bbedc39cc36036bef Mon Sep 17 00:00:00 2001 From: Jinoh Kang Date: Thu, 27 Jul 2023 22:39:50 +0900 Subject: [PATCH] ntdll: Avoid relying on linux/ipx.h to define SOL_IPX. musl libc doesn't supply any definitions for IPX, such as the SOL_IPX macro. However, it still provides linux/ipx.h from Linux uAPI header files if it exists. Linux kernel wouldn't drop linux/ipx.h from uAPI headers until 5.15, although IPX support has already been marked obsolete since 2018. Fix this by not defining HAS_IPX if linux/ipx.h has been included but nothing defines the SOL_IPX macro. Status of IPX support from other libcs are noted below: - bionic: netipx/ipx.h does not exist. linux/ipx.h may or may not exist. Note that sys/socket.h defines SOL_IPX even if linux/ipx.h is missing. - glibc: netipx/ipx.h exists. In this case, Wine assumes IPX support even if the operating system does not support it in runtime. - BSD variants: netipx/ipx.h may or may not exist. linux/ipx.h does not exist. Some BSDs supply SO_DEFAULT_HEADERS instead of SOL_IPX. Fixes: 954bf9e0505a7368c34047b311d613cff04393a1 --- dlls/ntdll/unix/socket.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index 6969f411955..e09bf34b07d 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -54,7 +54,9 @@ # include # endif # include -# define HAS_IPX +# ifdef SOL_IPX +# define HAS_IPX +# endif #endif #ifdef HAVE_LINUX_IRDA_H