From 550b78591c623f524c541055bb268680d54829f7 Mon Sep 17 00:00:00 2001
From: Aaron Bishop <erroneous@gmail.com>
Date: Thu, 25 Jun 2020 10:25:40 -0400
Subject: [PATCH] Fix issues with latest versions of curl

---
 Curl.xs     | 16 ++++++++++------
 Makefile.PL |  2 +-
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/Curl.xs b/Curl.xs
index cfa282d..3e10a8c 100644
--- a/Curl.xs
+++ b/Curl.xs
@@ -18,6 +18,10 @@
 #include <curl/easy.h>
 #include <curl/multi.h>
 
+#if defined(__CURL_MULTI_H) && !defined(CURLINC_MULTI_H)
+#   define CURLINC_MULTI_H
+#endif
+
 #define header_callback_func writeheader_callback_func
 
 /* Do a favor for older perl versions */
@@ -70,7 +74,7 @@ typedef struct {
 
 
 typedef struct {
-#ifdef __CURL_MULTI_H
+#ifdef CURLINC_MULTI_H
     struct CURLM *curlm;
 #else
     struct void *curlm;
@@ -232,7 +236,7 @@ static perl_curl_multi * perl_curl_multi_new()
 {
     perl_curl_multi *self;
     Newxz(self, 1, perl_curl_multi);
-#ifdef __CURL_MULTI_H
+#ifdef CURLINC_MULTI_H
     self->curlm=curl_multi_init();
 #else
     croak("curl version too old to support curl_multi_init()");
@@ -243,7 +247,7 @@ static perl_curl_multi * perl_curl_multi_new()
 /* delete the multi */
 static void perl_curl_multi_delete(perl_curl_multi *self)
 {
-#ifdef __CURL_MULTI_H
+#ifdef CURLINC_MULTI_H
     if (self->curlm) 
         curl_multi_cleanup(self->curlm);
     Safefree(self);
@@ -1053,7 +1057,7 @@ curl_multi_add_handle(curlm, curl)
     WWW::Curl::Multi curlm
     WWW::Curl::Easy curl
     CODE:
-#ifdef __CURL_MULTI_H
+#ifdef CURLINC_MULTI_H
         curl_multi_add_handle(curlm->curlm, curl->curl);
 #endif
 
@@ -1062,7 +1066,7 @@ curl_multi_remove_handle(curlm, curl)
     WWW::Curl::Multi curlm
     WWW::Curl::Easy curl
     CODE:
-#ifdef __CURL_MULTI_H
+#ifdef CURLINC_MULTI_H
         curl_multi_remove_handle(curlm->curlm, curl->curl);
 #endif
 
@@ -1137,7 +1141,7 @@ curl_multi_perform(self)
     PREINIT:
         int remaining;
     CODE:
-#ifdef __CURL_MULTI_H
+#ifdef CURLINC_MULTI_H
         while(CURLM_CALL_MULTI_PERFORM ==
             curl_multi_perform(self->curlm, &remaining));
 	    RETVAL = remaining;
diff --git a/Makefile.PL b/Makefile.PL
index 017f554..2036a9c 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -137,7 +137,7 @@ sub parse_constants {
         close H;
 
         for my $e (sort @syms) {
-            if ($e =~ /(OBSOLETE|^CURL_EXTERN|_LAST\z|_LASTENTRY\z)/) {
+            if ($e =~ /(OBSOLETE|^CURL_EXTERN|^CURL_WIN32\z|^CURLOPT\z|^CURL_STRICTER\z|^CURL_DID_MEMORY_FUNC_TYPEDEFS\z|_LAST\z|_LASTENTRY\z)/) {
                 next;
             }
             my ($group) = $e =~ m/^([^_]+_)/;