From 9dbbba997608f7c3c5de1c627c77c8cd2aa85b73 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sun, 9 Nov 2014 15:42:12 +0100 Subject: [PATCH] libssh2: detect features based on version, not configure checks ... so that non-configure builds get the correct functions too based on the libssh2 version used. --- configure.ac | 6 ------ lib/easy.c | 1 + lib/ssh.c | 7 ------- lib/ssh.h | 30 +++++++++++++++++++++--------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/configure.ac b/configure.ac index d37fd92fb..0ad8fc964 100644 --- a/configure.ac +++ b/configure.ac @@ -2332,12 +2332,6 @@ if test X"$OPT_LIBSSH2" != Xno; then dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH dnl to prevent further configure tests to fail due to this - dnl libssh2_version is a post 1.0 addition - dnl libssh2_init and libssh2_exit were added in 1.2.5 - dnl libssh2_scp_send64 was added in 1.2.6 - dnl libssh2_session_handshake was added in 1.2.8 - AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \ - libssh2_scp_send64 libssh2_session_handshake) if test "x$cross_compiling" != "xyes"; then LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2" export LD_LIBRARY_PATH diff --git a/lib/easy.c b/lib/easy.c index 5ce2d5827..5f14fede3 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -74,6 +74,7 @@ #include "conncache.h" #include "multiif.h" #include "sigpipe.h" +#include "ssh.h" #define _MPRINTF_REPLACE /* use our functions only */ #include diff --git a/lib/ssh.c b/lib/ssh.c index 6fefe8aee..ba26eef72 100644 --- a/lib/ssh.c +++ b/lib/ssh.c @@ -99,13 +99,6 @@ # endif #endif -/* Feature detection based on version numbers to better work with - non-configure platforms */ -#if LIBSSH2_VERSION_NUM >= 0x010206 -/* libssh2_knownhost_checkp was added in 1.2.6 */ -#define HAVE_LIBSSH2_KNOWNHOST_CHECKP -#endif - #ifndef PATH_MAX #define PATH_MAX 1024 /* just an extra precaution since there are systems that have their definition hidden well */ diff --git a/lib/ssh.h b/lib/ssh.h index ff2e16be9..1bc334857 100644 --- a/lib/ssh.h +++ b/lib/ssh.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2011, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2014, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -158,22 +158,34 @@ struct ssh_conn { #ifdef USE_LIBSSH2 +/* Feature detection based on version numbers to better work with + non-configure platforms */ + #if !defined(LIBSSH2_VERSION_NUM) || (LIBSSH2_VERSION_NUM < 0x001000) # error "SCP/SFTP protocols require libssh2 0.16 or later" #endif -#if defined(LIBSSH2_VERSION_NUM) && (LIBSSH2_VERSION_NUM >= 0x010000) -# define HAVE_LIBSSH2_SFTP_SEEK64 1 -#else -# undef HAVE_LIBSSH2_SFTP_SEEK64 +#if LIBSSH2_VERSION_NUM >= 0x010000 +#define HAVE_LIBSSH2_SFTP_SEEK64 1 #endif -#if defined(LIBSSH2_VERSION_NUM) && (LIBSSH2_VERSION_NUM >= 0x010206) -# define HAVE_LIBSSH2_SCP_SEND64 1 -#else -# undef HAVE_LIBSSH2_SCP_SEND64 +#if LIBSSH2_VERSION_NUM >= 0x010100 +#define HAVE_LIBSSH2_VERSION 1 #endif +#if LIBSSH2_VERSION_NUM >= 0x010205 +#define HAVE_LIBSSH2_INIT 1 +#define HAVE_LIBSSH2_EXIT 1 +#endif + +#if LIBSSH2_VERSION_NUM >= 0x010206 +#define HAVE_LIBSSH2_KNOWNHOST_CHECKP 1 +#define HAVE_LIBSSH2_SCP_SEND64 1 +#endif + +#if LIBSSH2_VERSION_NUM >= 0x010208 +#define HAVE_LIBSSH2_SESSION_HANDSHAKE 1 +#endif extern const struct Curl_handler Curl_handler_scp; extern const struct Curl_handler Curl_handler_sftp;