aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/utils/version.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/utils/version.cpp')
-rw-r--r--src/lib/utils/version.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/lib/utils/version.cpp b/src/lib/utils/version.cpp
new file mode 100644
index 000000000..32679cf63
--- /dev/null
+++ b/src/lib/utils/version.cpp
@@ -0,0 +1,55 @@
+/*
+* Version Information
+* (C) 1999-2013 Jack Lloyd
+*
+* Distributed under the terms of the Botan license
+*/
+
+#include <botan/version.h>
+#include <botan/parsing.h>
+
+namespace Botan {
+
+/*
+ These are intentionally compiled rather than inlined, so an
+ application running against a shared library can test the true
+ version they are running against.
+*/
+
+/*
+* Return the version as a string
+*/
+std::string version_string()
+ {
+#define QUOTE(name) #name
+#define STR(macro) QUOTE(macro)
+
+ /*
+ It is intentional that this string is a compile-time constant;
+ it makes it much easier to find in binaries.
+ */
+
+ return "Botan " STR(BOTAN_VERSION_MAJOR) "."
+ STR(BOTAN_VERSION_MINOR) "."
+ STR(BOTAN_VERSION_PATCH) " ("
+ BOTAN_VERSION_RELEASE_TYPE
+#if (BOTAN_VERSION_DATESTAMP != 0)
+ ", dated " STR(BOTAN_VERSION_DATESTAMP)
+#endif
+ ", revision " BOTAN_VERSION_VC_REVISION
+ ", distribution " BOTAN_DISTRIBUTION_INFO ")";
+
+#undef STR
+#undef QUOTE
+ }
+
+u32bit version_datestamp() { return BOTAN_VERSION_DATESTAMP; }
+
+/*
+* Return parts of the version as integers
+*/
+u32bit version_major() { return BOTAN_VERSION_MAJOR; }
+u32bit version_minor() { return BOTAN_VERSION_MINOR; }
+u32bit version_patch() { return BOTAN_VERSION_PATCH; }
+
+}