File curl-8.16.patch of Package virtualbox

References: https://bugzilla.suse.com/1249448
From: Gianfranco Costamagna <locutusofborg@debian.org>
From: Jan Engelhardt <ej@inai.de>
Date: 2025-09-09 12:22:00 +0200
Subject: [PATCH] Fix build with new curl version
References: https://github.com/curl/curl/pull/18054
References: https://bugs.debian.org/1114436
References: https://salsa.debian.org/pkg-virtualbox-team/virtualbox/-/commit/dbf9a6ef75380ebd2705df0198c6ac8073d0b4cb#f28811e0ca565091f1d341d90b8ba208319492f5
References: https://bugzilla.suse.com/1249448

curl 8.16 changed CURLPROXY_* definitions from enum{int} to long.
C++ has more rules than C, preventing some implicit conversions
involving enums. Debian patch changed to instead use an explicit
conversion. [-jengelh]

http-curl.cpp: In function ‘int rtHttpUpdateAutomaticProxyDisable(PRTHTTPINTERNAL)’:
http-curl.cpp:702:27: error: invalid conversion from ‘long int’ to ‘curl_proxytype’ [-fpermissive]
  702 |     pThis->enmProxyType = CURLPROXY_HTTP;

diff --git a/src/VBox/Runtime/generic/http-curl.cpp b/src/VBox/Runtime/generic/http-curl.cpp
index 4cf51049d..a76bf14f8 100644
--- a/src/VBox/Runtime/generic/http-curl.cpp
+++ b/src/VBox/Runtime/generic/http-curl.cpp
@@ -188,7 +188,7 @@ typedef struct RTHTTPINTERNAL
     /** Proxy port number (UINT32_MAX if not specified). */
     uint32_t            uProxyPort;
     /** The proxy type (CURLPROXY_HTTP, CURLPROXY_SOCKS5, ++). */
-    curl_proxytype      enmProxyType;
+    long      enmProxyType;
     /** Proxy username (RTStrFree). */
     char               *pszProxyUsername;
     /** Proxy password (RTStrFree). */
@@ -591,7 +591,7 @@ RTR3DECL(int) RTHttpUseSystemProxySettings(RTHTTP hHttp)
  * @param   pszUsername     The proxy username, or NULL if none.
  * @param   pszPassword     The proxy password, or NULL if none.
  */
-static int rtHttpUpdateProxyConfig(PRTHTTPINTERNAL pThis, curl_proxytype enmProxyType, const char *pszHost,
+static int rtHttpUpdateProxyConfig(PRTHTTPINTERNAL pThis, long enmProxyType, const char *pszHost,
                                    uint32_t uPort, const char *pszUsername, const char *pszPassword)
 {
     CURLcode rcCurl;
@@ -871,7 +871,7 @@ static int rtHttpConfigureProxyFromUrl(PRTHTTPINTERNAL pThis, const char *pszPro
             char    *pszPassword = RTUriParsedAuthorityPassword(pszProxyUrl, &Parsed);
             uint32_t uProxyPort  = RTUriParsedAuthorityPort(pszProxyUrl, &Parsed);
             bool     fUnknownProxyType = false;
-            curl_proxytype enmProxyType;
+            long enmProxyType;
             if (RTUriIsSchemeMatch(pszProxyUrl, "http"))
             {
                 enmProxyType  = CURLPROXY_HTTP;
@@ -1352,7 +1352,7 @@ static int rtHttpDarwinTryConfigProxy(PRTHTTPINTERNAL pThis, CFDictionaryRef hDi
      * Determine the proxy type (not entirely sure about type == proxy type and
      * not scheme/protocol)...
      */
-    curl_proxytype  enmProxyType      = CURLPROXY_HTTP;
+    long  enmProxyType      = (long)CURLPROXY_HTTP;
     uint32_t        uDefaultProxyPort = 8080;
     if (   CFEqual(hStrProxyType, kCFProxyTypeHTTP)
         || CFEqual(hStrProxyType, kCFProxyTypeHTTPS))
openSUSE Build Service is sponsored by