aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuy Harris <gharris@sonic.net>2020-07-15 23:37:20 -0700
committerAnders Broman <a.broman58@gmail.com>2020-07-16 08:18:58 +0000
commita1d2d18cb8367cc62395be1bbfa9fee6433e4386 (patch)
treed8ca44b7fea25b110b7dd7c8658bb6cafabeb204
parent48237f77aaec85def2200cb16d249fdc38b6eb2a (diff)
extcap: get the libssh version string from the libssh.h header.
Thanks, libssh developers, for making it so straightforward! This means we don't need to construct it in the CMake module that finds libssh. Change-Id: I6c173bf7c0671dfdfac423a7d01ecced7b69e851 Reviewed-on: https://code.wireshark.org/review/37878 Petri-Dish: Guy Harris <gharris@sonic.net> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--cmake/modules/FindLIBSSH.cmake1
-rw-r--r--cmakeconfig.h.in1
-rw-r--r--extcap/ssh-base.h19
3 files changed, 19 insertions, 2 deletions
diff --git a/cmake/modules/FindLIBSSH.cmake b/cmake/modules/FindLIBSSH.cmake
index 29368bc1c5..9afec5d7a8 100644
--- a/cmake/modules/FindLIBSSH.cmake
+++ b/cmake/modules/FindLIBSSH.cmake
@@ -73,7 +73,6 @@ else ()
REGEX "#define[ ]+LIBSSH_VERSION_MICRO[ ]+[0-9]+")
string(REGEX MATCH "[0-9]+" LIBSSH_VERSION_PATCH ${LIBSSH_VERSION_PATCH})
set(LIBSSH_VERSION ${LIBSSH_VERSION_MAJOR}.${LIBSSH_VERSION_MINOR}.${LIBSSH_VERSION_PATCH})
- set(LIBSSH_VERSION_STRING "${LIBSSH_VERSION}")
endif()
#
diff --git a/cmakeconfig.h.in b/cmakeconfig.h.in
index e671388fb7..b16baa11e3 100644
--- a/cmakeconfig.h.in
+++ b/cmakeconfig.h.in
@@ -60,7 +60,6 @@
/* Define if LIBSSH support is enabled */
#cmakedefine HAVE_LIBSSH 1
-#cmakedefine LIBSSH_VERSION_STRING "@LIBSSH_VERSION_STRING@"
/* Define to 1 if you have the `ssh_version' function. */
#cmakedefine HAVE_SSH_VERSION 1
diff --git a/extcap/ssh-base.h b/extcap/ssh-base.h
index 55565646d9..6a2f523a01 100644
--- a/extcap/ssh-base.h
+++ b/extcap/ssh-base.h
@@ -15,6 +15,25 @@
#include <libssh/libssh.h>
+/*
+ * Sigh.
+ *
+ * libssh 1.0 and 2.0 define LIBSSH_VERSION as a string.
+ *
+ * libssh 3.0 and later define it as three numbers with periods
+ * between them, so that you have to do SSH_STRINGIFY(LIBSSH_VERSION)
+ * to get the SSH version as a string.
+ *
+ * Fortunately, "needs SSH_STRINGIFY()" is true iff SSH_STRINGIFY is
+ * defined, so we can define LIBSSH_VERSION_STRING differently,
+ * depending on whether SSH_STRINGIFY is defined.
+ */
+#ifdef SSH_STRINGIFY
+#define LIBSSH_VERSION_STRING SSH_STRINGIFY(LIBSSH_VERSION)
+#else
+#define LIBSSH_VERSION_STRING LIBSSH_VERSION
+#endif
+
#include <glib.h>
#ifndef STDERR_FILENO