From: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> The definition and using of macro "USE_CURL_FOR_IMAP_SEND" are at different locations. It is defined in Makefile and is used in file "imap-send.c". Even though we have fixed the mismatched "curl_config" issue in Makefile in the previous commit, moving the definition of the macro "USE_CURL_FOR_IMAP_SEND" to souce code "imap-send.c" seems more nature and may help us to use curl in imap-send by force in future by removing "USE_CURL_FOR_IMAP_SEND". The side effect of this change is that the "git-imap-send" program may be larger than necessary if we have a lower version of libcurl installed. Signed-off-by: Jiang Xin <zhiyou.jx@xxxxxxxxxxxxxxx> --- Makefile | 11 ++--------- contrib/buildsystems/CMakeLists.txt | 3 --- imap-send.c | 29 +++++++++++++++++------------ 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index f4eaf22523..83721216fc 100644 --- a/Makefile +++ b/Makefile @@ -1621,15 +1621,8 @@ else ifndef NO_EXPAT PROGRAM_OBJS += http-push.o endif - curl_check := $(shell (echo 072200; $(CURL_CONFIG) --vernum | sed -e '/^70[BC]/s/^/0/') 2>/dev/null | sort -r | sed -ne 2p) - ifeq "$(curl_check)" "072200" - USE_CURL_FOR_IMAP_SEND = YesPlease - endif - ifdef USE_CURL_FOR_IMAP_SEND - BASIC_CFLAGS += -DUSE_CURL_FOR_IMAP_SEND - IMAP_SEND_BUILDDEPS = http.o - IMAP_SEND_LDFLAGS += $(CURL_LIBCURL) - endif + IMAP_SEND_BUILDDEPS = http.o + IMAP_SEND_LDFLAGS += $(CURL_LIBCURL) ifndef NO_EXPAT ifdef EXPATDIR BASIC_CFLAGS += -I$(EXPATDIR)/include diff --git a/contrib/buildsystems/CMakeLists.txt b/contrib/buildsystems/CMakeLists.txt index 2f6e0197ff..d508db4d29 100644 --- a/contrib/buildsystems/CMakeLists.txt +++ b/contrib/buildsystems/CMakeLists.txt @@ -622,9 +622,6 @@ if(NOT CURL_FOUND) message(WARNING "git-http-push and git-http-fetch will not be built") else() list(APPEND PROGRAMS_BUILT git-http-fetch git-http-push git-imap-send git-remote-http) - if(CURL_VERSION_STRING VERSION_GREATER_EQUAL 7.34.0) - add_compile_definitions(USE_CURL_FOR_IMAP_SEND) - endif() endif() if(NOT EXPAT_FOUND) diff --git a/imap-send.c b/imap-send.c index a50af56b82..c0a2c2b4e6 100644 --- a/imap-send.c +++ b/imap-send.c @@ -30,20 +30,25 @@ #if defined(NO_OPENSSL) && !defined(HAVE_OPENSSL_CSPRNG) typedef void *SSL; #endif -#ifdef USE_CURL_FOR_IMAP_SEND +#ifdef NO_CURL +#define USE_CURL_FOR_IMAP_SEND 0 +#else #include "http.h" -#endif - -#if defined(USE_CURL_FOR_IMAP_SEND) -/* Always default to curl if it's available. */ -#define USE_CURL_DEFAULT 1 +/* + * Since version 7.30.0, libcurl's API has been able to communicate with + * IMAP servers, and curl's CURLOPT_LOGIN_OPTIONS (enabling IMAP + * authentication) parameter is available if curl's version is >= 7.34.0, + * Always use curl if there is a matching libcurl. + */ +#if LIBCURL_VERSION_NUM >= 0x072200 +#define USE_CURL_FOR_IMAP_SEND 1 #else -/* We don't have curl, so continue to use the historical implementation */ -#define USE_CURL_DEFAULT 0 +#define USE_CURL_FOR_IMAP_SEND 0 +#endif #endif static int verbosity; -static int use_curl = USE_CURL_DEFAULT; +static int use_curl = USE_CURL_FOR_IMAP_SEND; static const char * const imap_send_usage[] = { "git imap-send [-v] [-q] [--[no-]curl] < <mbox>", NULL }; @@ -1396,7 +1401,7 @@ static int append_msgs_to_imap(struct imap_server_conf *server, return 0; } -#ifdef USE_CURL_FOR_IMAP_SEND +#if USE_CURL_FOR_IMAP_SEND static CURL *setup_curl(struct imap_server_conf *srvc, struct credential *cred) { CURL *curl; @@ -1531,7 +1536,7 @@ int cmd_main(int argc, const char **argv) if (argc) usage_with_options(imap_send_usage, imap_send_options); -#ifndef USE_CURL_FOR_IMAP_SEND +#if !USE_CURL_FOR_IMAP_SEND if (use_curl) { warning("--curl not supported in this build"); use_curl = 0; @@ -1580,7 +1585,7 @@ int cmd_main(int argc, const char **argv) if (server.tunnel) return append_msgs_to_imap(&server, &all_msgs, total); -#ifdef USE_CURL_FOR_IMAP_SEND +#if USE_CURL_FOR_IMAP_SEND if (use_curl) return curl_append_msgs_to_imap(&server, &all_msgs, total); #endif -- 2.38.2.109.g8b8c02ffae.agit.6.7.7.dev