Version Checking

The library has functions for checking compile-time and runtime versions.

All versions are of the tuple (major,minor,patch). Even minor versions indicate stable releases while odd minor versions indicate a development release.

The compile time version information is defined in botan/build.h

BOTAN_VERSION_MAJOR

The major version of the release.

BOTAN_VERSION_MINOR

The minor version of the release.

BOTAN_VERSION_PATCH

The patch version of the release.

BOTAN_VERSION_DATESTAMP

Expands to an integer of the form YYYYMMDD if this is an official release, or 0 otherwise. For instance, 1.10.1, which was released on July 11, 2011, has a BOTAN_VERSION_DATESTAMP of 20110711.

BOTAN_DISTRIBUTION_INFO

New in version 1.9.3.

A macro expanding to a string that is set at build time using the --distribution-info option. It allows a packager of the library to specify any distribution-specific patches. If no value is given at build time, the value is ‘unspecified’.

BOTAN_VERSION_VC_REVISION

New in version 1.10.1.

A macro expanding to a string that is set to a revision identifier cooresponding to the source, or ‘unknown’ if this could not be determined. It is set for all official releases and for builds that originated from within a Monotone workspace.

The runtime version information, and some helpers for compile time version checks, are included in botan/version.h

std::string version_string()

Returns a single-line string containing relevant information about this build and version of the library in an unspecified format.

u32bit version_major()

Returns the major part of the version.

u32bit version_minor()

Returns the minor part of the version.

u32bit version_patch()

Returns the patch part of the version.

u32bit version_datestamp()

Return the datestamp of the release (or 0 if the current version is not an official release).

BOTAN_VERSION_CODE_FOR(maj, min, patch)

Return a value that can be used to compare versions. The current (compile-time) version is available as the macro BOTAN_VERSION_CODE. For instance, to choose one code path for versions before 1.10 and another for 1.10 or later:

#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,10,0)
   // 1.10 code path
#else
   // pre-1.10 code path
#endif