summaryrefslogtreecommitdiff
path: root/freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch')
-rw-r--r--freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch116
1 files changed, 116 insertions, 0 deletions
diff --git a/freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch b/freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch
new file mode 100644
index 0000000..50d5942
--- /dev/null
+++ b/freefilesync/debian/patches/libcurl_improve_supported_error_codes.patch
@@ -0,0 +1,116 @@
+Description: extend the versions of libcurl that can be used to build ffs
+ .
+ Minimal version supported by this patch is libcurl >= 7.66
+ .
+ FreeFileSync makes an 'assert' that it supports all error codes of the curl
+ version that it links to. Since FreeFileSync code is shipped to build
+ with a specific version of curl, there is a hard coded assertion.
+ .
+ To avoid a build failure when curl is not in line with the one used upstream
+ we make conditional checks on the curl version to determine which assertion
+ should be made.
+ .
+ While this works fine to build with any old version of curl > 7.66, there
+ will be a build fairure as soon as a new error code appears in a newer version
+ of curl. In that case it is required to add it here.
+ .
+ Error codes can be found in the 'enum' named 'CURLcode' at
+ https://github.com/curl/curl/blob/master/include/curl/curl.h
+ .
+Author: Brulhart
+Author: bgstack15
+Author: Fab Stz <fabstz-it@yahoo.fr>
+Origin: multiple sources
+Forwarded: https://freefilesync.org/forum/viewtopic.php?t=9687
+Last-Update: 2024-02-05
+
+--- a/libcurl/curl_wrap.cpp
++++ b/libcurl/curl_wrap.cpp
+@@ -350,7 +350,11 @@
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE46);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TOO_MANY_REDIRECTS);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_UNKNOWN_OPTION);
++#if LIBCURL_VERSION_NUM >= 0x074E00 // 7.78.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SETOPT_OPTION_SYNTAX);
++#else
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TELNET_OPTION_SYNTAX);
++#endif
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE50);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE51);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_GOT_NOTHING);
+@@ -363,7 +367,11 @@
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_CIPHER);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_PEER_FAILED_VERIFICATION);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_BAD_CONTENT_ENCODING);
++#if LIBCURL_VERSION_NUM >= 0x075200 // 7.82.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE62);
++#else
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_LDAP_INVALID_URL);
++#endif
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_FILESIZE_EXCEEDED);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_USE_SSL_FAILED);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SEND_FAIL_REWIND);
+@@ -376,8 +384,16 @@
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TFTP_UNKNOWNID);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_REMOTE_FILE_EXISTS);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TFTP_NOSUCHUSER);
++#if LIBCURL_VERSION_NUM >= 0x075500 // 7.85.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE75);
++#else
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_CONV_FAILED);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x075200 // 7.82.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_OBSOLETE76);
++#else
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_CONV_REQD);
++#endif
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_CACERT_BADFILE);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_REMOTE_FILE_NOT_FOUND);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSH);
+@@ -395,15 +411,46 @@
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_INVALIDCERTSTATUS);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_HTTP2_STREAM);
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_RECURSIVE_API_CALL);
++#if LIBCURL_VERSION_NUM >= 0x074200 // 7.66.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_AUTH_ERROR);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x074400 // 7.68.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_HTTP3);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x074500 // 7.69.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_QUIC_CONNECT_ERROR);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x074900 // 7.73.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_PROXY);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x074D00 // 7.77.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_SSL_CLIENTCERT);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x075400 // 7.84.0
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_UNRECOVERABLE_POLL);
++#endif
++#if LIBCURL_VERSION_NUM >= 0x080600 // 8.6.0
++ ZEN_CHECK_CASE_FOR_CONSTANT(CURLE_TOO_LARGE);
++#endif
+ ZEN_CHECK_CASE_FOR_CONSTANT(CURL_LAST);
+ }
++#if LIBCURL_VERSION_NUM >= 0x080600 // 8.6.0
++ static_assert(CURL_LAST == CURLE_TOO_LARGE + 1);
++#elif LIBCURL_VERSION_NUM >= 0x075400 // 7.84.0
+ static_assert(CURL_LAST == CURLE_UNRECOVERABLE_POLL + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074D00 // 7.77.0
++ static_assert(CURL_LAST == CURLE_SSL_CLIENTCERT + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074900 // 7.73.0
++ static_assert(CURL_LAST == CURLE_PROXY + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074500 // 7.69.0
++ static_assert(CURL_LAST == CURLE_QUIC_CONNECT_ERROR + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074400 // 7.68.0
++ static_assert(CURL_LAST == CURLE_HTTP3 + 1);
++#elif LIBCURL_VERSION_NUM >= 0x074200 // 7.66.0
++ static_assert(CURL_LAST == CURLE_AUTH_ERROR + 1);
++#else
++ static_assert(CURL_LAST == CURLE_RECURSIVE_API_CALL + 1);
++#endif
+
+ return replaceCpy<std::wstring>(L"Curl status %x", L"%x", numberTo<std::wstring>(static_cast<int>(sc)));
+ }
bgstack15