From 550b78591c623f524c541055bb268680d54829f7 Mon Sep 17 00:00:00 2001
From: Aaron Bishop <[email protected]>
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/^([^_]+_)/;