JSON-102: read package version from file

JSON-102
Claudio Luck 5 years ago
parent 8f180cb41b
commit 4f0b7c1dce

@ -1,14 +1,16 @@
#include "server_version.hh"
#include "inout.hh"
#include <fstream>
#include <sstream>
#include <pEp/pEpEngine.h> // for PEP_VERSION and get_engine_version()
namespace {
#ifdef PACKAGE_VERSION
const char* const PackageVersion = PACKAGE_VERSION;
char* PackageVersion = PACKAGE_VERSION;
#else
const char* const PackageVersion = nullptr;
char* PackageVersion = nullptr;
#endif
@ -78,7 +80,21 @@ ServerVersion::ServerVersion(unsigned maj, unsigned min, unsigned p)
, patch{p}
, name {VersionName}
, package_version{PackageVersion}
{}
{
if (!PackageVersion) {
std::ifstream packver("PackageVersion");
if (packver.is_open() && packver.good()) {
std::stringstream sstr;
sstr << packver.rdbuf();
std::string contents = sstr.str();
contents.erase(std::remove(contents.begin(), contents.end(), '\n'), contents.end());
contents.erase(std::remove(contents.begin(), contents.end(), '\r'), contents.end());
PackageVersion = new char[contents.length() + 1];
strcpy(PackageVersion, contents.c_str());
this->package_version = PackageVersion;
}
}
}
const ServerVersion& server_version()
{

@ -17,7 +17,7 @@ struct ServerVersion
// The version name is of the form "(##) name" where ## is a monotonic increasing number.
std::string name;
const char* const package_version; // must be set via -D, e.g. -D'PACKAGE_VERSION="deb9-0.1"'
const char* package_version; // must be set via -D, e.g. -D'PACKAGE_VERSION="deb9-0.1"'
// returns "major.minor.patch"
std::string major_minor_patch() const;

Loading…
Cancel
Save