[vlc-devel] [3.0 PATCH v2 17/20] contrib: upnp: Improve and generalize a patch for handling inet_pton

Steve Lhomme robux4 at ycbcr.xyz
Thu Apr 2 13:38:15 CEST 2020


From: Martin Storsjö <martin at martin.st>

libupnp locally overrides the version of _WIN32_WINNT via
configure.ac and autoconfig.h (which is disabled by a vlc contrib
patch when targeting winrt though).

Make sure that autoconfig.h is included everywhere necessary, to
show/hide the relevant parts of winsock headers depending on the
chosen version of _WIN32_WINNT (either default or overridden).

This avoids including the system declarations of these functions if
the default target is >= vista but the build tries to override it
to a lower version.

On the other hand, if the override of _WIN32_WINNT is removed (as
when targeting winrt) and the default is >= vista, skip the local
version of inet_pton.

This should have the same effect as the previous patch, but
evaluated by the preprocessor instead of hardcoding commenting out
of certain source files.

(cherry picked from commit fa05e80c6df9d307329ef1d125e4e671c64510ee)
---
 contrib/src/upnp/rules.mak                  |  2 +-
 contrib/src/upnp/windows-version-inet.patch | 49 +++++++++++++++++++++
 contrib/src/upnp/winrt-inet.patch           | 36 ---------------
 3 files changed, 50 insertions(+), 37 deletions(-)
 create mode 100644 contrib/src/upnp/windows-version-inet.patch
 delete mode 100644 contrib/src/upnp/winrt-inet.patch

diff --git a/contrib/src/upnp/rules.mak b/contrib/src/upnp/rules.mak
index e52f9f840a1..565bfede1fe 100644
--- a/contrib/src/upnp/rules.mak
+++ b/contrib/src/upnp/rules.mak
@@ -34,10 +34,10 @@ ifdef HAVE_WIN32
 	$(APPLY) $(SRC)/upnp/libupnp-win32.patch
 	$(APPLY) $(SRC)/upnp/libupnp-win64.patch
 	$(APPLY) $(SRC)/upnp/windows-random.patch
+	$(APPLY) $(SRC)/upnp/windows-version-inet.patch
 ifdef HAVE_WINSTORE
 	$(APPLY) $(SRC)/upnp/winrt-dont-force-win32-winnt.patch
 	$(APPLY) $(SRC)/upnp/no-getifinfo.patch
-	$(APPLY) $(SRC)/upnp/winrt-inet.patch
 endif
 endif
 	$(APPLY) $(SRC)/upnp/libpthread.patch
diff --git a/contrib/src/upnp/windows-version-inet.patch b/contrib/src/upnp/windows-version-inet.patch
new file mode 100644
index 00000000000..989a3d840ca
--- /dev/null
+++ b/contrib/src/upnp/windows-version-inet.patch
@@ -0,0 +1,49 @@
+diff -urN upnp-orig/upnp/src/inc/inet_pton.h upnp/upnp/src/inc/inet_pton.h
+--- upnp-orig/upnp/src/inc/inet_pton.h	2010-12-23 22:24:06.000000000 +0200
++++ upnp/upnp/src/inc/inet_pton.h	2018-02-24 23:44:22.359676036 +0200
+@@ -3,6 +3,8 @@
+ 
+ #ifdef WIN32
+ 
++#include "autoconfig.h"
++
+ #ifdef IPV6_
+ #define INET_IPV6
+ #endif
+@@ -13,6 +15,8 @@
+ #include <stdio.h>
+ #include <string.h>
+ 
++#if _WIN32_WINNT < 0x600
++
+ /*!
+  * \file
+  *
+@@ -45,6 +49,8 @@
+  */
+ extern int inet_pton(int af, const char *src, void *dst);
+ 
++#endif /* _WIN32_WINNT < 0x600 */
++
+ #endif /* WIN32 */
+ 
+ #endif /* INET_PTON */
+diff -urN upnp-orig/upnp/src/inet_pton.c upnp/upnp/src/inet_pton.c
+--- upnp-orig/upnp/src/inet_pton.c	2010-12-23 22:24:06.000000000 +0200
++++ upnp/upnp/src/inet_pton.c	2018-02-24 23:44:16.771807657 +0200
+@@ -24,6 +24,8 @@
+ 
+ #include "inet_pton.h"
+ 
++#if _WIN32_WINNT < 0x600
++
+ /*!
+  * \brief format an IPv4 address
+  *
+@@ -320,4 +322,6 @@
+ 	/* NOTREACHED */
+ }
+ 
++#endif /* _WIN32_WINNT < 0x600 */
++
+ #endif /* WIN32 */
diff --git a/contrib/src/upnp/winrt-inet.patch b/contrib/src/upnp/winrt-inet.patch
deleted file mode 100644
index 32003bbcf77..00000000000
--- a/contrib/src/upnp/winrt-inet.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- upnp/upnp/Makefile.am	2013-11-15 17:01:35.000000000 +0100
-+++ upnp.new/upnp/Makefile.am	2016-05-09 19:16:43.909558923 +0200
-@@ -148,9 +148,9 @@
- 
- 
- # inet_pton (needed on Win32, compiles to nothing elsewhere)
--libupnp_la_SOURCES += \
--	src/inet_pton.c \
--	src/inc/inet_pton.h
-+#libupnp_la_SOURCES += \
-+#	src/inet_pton.c \
-+#	src/inc/inet_pton.h
- 
- 
- # check / distcheck tests
-diff -ruN upnp.new/upnp/src/inc/inet_pton.h upnp/upnp/src/inc/inet_pton.h
---- upnp.new/upnp/src/inc/inet_pton.h	2010-12-23 21:24:06.000000000 +0100
-+++ upnp/upnp/src/inc/inet_pton.h	2016-05-09 20:25:37.765374740 +0200
-@@ -31,6 +31,11 @@
-  * \return
-  *	pointer to presentation format address (`dst'), or NULL (see errno).
-  */
-+#define inet_ntop InetNtopA
-+
-+#define inet_pton InetPtonA
-+
-+#if 0
- extern const char *inet_ntop(int af, const void *src, char *dst,
- 			     socklen_t size);
- 
-@@ -47,4 +52,5 @@
- 
- #endif /* WIN32 */
- 
-+#endif
- #endif /* INET_PTON */
-- 
2.17.1



More information about the vlc-devel mailing list