From ea28a6cb2f168ce0b4e01c0f05e3675687dbd497 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 16 Aug 2019 15:32:05 +0200 Subject: [PATCH] ssh: add a generic Curl_ssh_version function for SSH backends Closes #4235 --- lib/ssh.h | 16 ++++++++++------ lib/version.c | 32 ++++++++------------------------ lib/vssh/libssh.c | 5 +++++ lib/vssh/libssh2.c | 4 ++++ 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/lib/ssh.h b/lib/ssh.h index 96bb64099..3213c5a52 100644 --- a/lib/ssh.h +++ b/lib/ssh.h @@ -239,12 +239,16 @@ extern const struct Curl_handler Curl_handler_sftp; extern const struct Curl_handler Curl_handler_scp; extern const struct Curl_handler Curl_handler_sftp; - -CURLcode Curl_ssh_init(void); -void Curl_ssh_cleanup(void); - -#else -#define Curl_ssh_cleanup() #endif /* USE_LIBSSH2 */ +#ifdef USE_SSH +/* generic SSH backend functions */ +CURLcode Curl_ssh_init(void); +void Curl_ssh_cleanup(void); +size_t Curl_ssh_version(char *buffer, size_t buflen); +#else +/* for non-SSH builds */ +#define Curl_ssh_cleanup() +#endif + #endif /* HEADER_CURL_SSH_H */ diff --git a/lib/version.c b/lib/version.c index afad726d8..ae2b09d31 100644 --- a/lib/version.c +++ b/lib/version.c @@ -54,18 +54,6 @@ #include #endif -#ifdef USE_LIBSSH2 -#include -#endif - -#ifdef HAVE_LIBSSH2_VERSION -/* get it run-time if possible */ -#define CURL_LIBSSH2_VERSION libssh2_version(0) -#else -/* use build-time if run-time not possible */ -#define CURL_LIBSSH2_VERSION LIBSSH2_VERSION -#endif - #ifdef HAVE_ZLIB_H #include #ifdef __SYMBIAN32__ @@ -173,13 +161,12 @@ char *curl_version(void) left -= len; ptr += len; #endif -#ifdef USE_LIBSSH2 - len = msnprintf(ptr, left, " libssh2/%s", CURL_LIBSSH2_VERSION); - left -= len; - ptr += len; -#endif -#ifdef USE_LIBSSH - len = msnprintf(ptr, left, " libssh/%s", CURL_LIBSSH_VERSION); +#ifdef USE_SSH + if(left) { + *ptr++=' '; + left--; + } + len = Curl_ssh_version(ptr, left); left -= len; ptr += len; #endif @@ -458,11 +445,8 @@ curl_version_info_data *curl_version_info(CURLversion stamp) #endif /* _LIBICONV_VERSION */ #endif -#if defined(USE_LIBSSH2) - msnprintf(ssh_buffer, sizeof(ssh_buffer), "libssh2/%s", LIBSSH2_VERSION); - version_info.libssh_version = ssh_buffer; -#elif defined(USE_LIBSSH) - msnprintf(ssh_buffer, sizeof(ssh_buffer), "libssh/%s", CURL_LIBSSH_VERSION); +#if defined(USE_SSH) + Curl_ssh_version(ssh_buffer, sizeof(ssh_buffer)); version_info.libssh_version = ssh_buffer; #endif diff --git a/lib/vssh/libssh.c b/lib/vssh/libssh.c index d8186e0b2..76956a3c1 100644 --- a/lib/vssh/libssh.c +++ b/lib/vssh/libssh.c @@ -2739,4 +2739,9 @@ void Curl_ssh_cleanup(void) (void)ssh_finalize(); } +size_t Curl_ssh_version(char *buffer, size_t buflen) +{ + return msnprintf(buffer, buflen, "libssh/%s", CURL_LIBSSH_VERSION); +} + #endif /* USE_LIBSSH */ diff --git a/lib/vssh/libssh2.c b/lib/vssh/libssh2.c index 011f1ecf3..2b25a514f 100644 --- a/lib/vssh/libssh2.c +++ b/lib/vssh/libssh2.c @@ -3338,5 +3338,9 @@ void Curl_ssh_cleanup(void) #endif } +size_t Curl_ssh_version(char *buffer, size_t buflen) +{ + return msnprintf(buffer, buflen, "libssh2/%s", LIBSSH2_VERSION); +} #endif /* USE_LIBSSH2 */