From 0eead93c69ef6e693b9676ef53e4192d452a84bd Mon Sep 17 00:00:00 2001 From: Jean-Marcel Flach Date: Mon, 20 Apr 2015 12:51:19 +0200 Subject: [PATCH] Make --version work with systemd fixes #8888 --- lib/base/application.cpp | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/lib/base/application.cpp b/lib/base/application.cpp index 55d9f8367..5ed6b38b4 100644 --- a/lib/base/application.cpp +++ b/lib/base/application.cpp @@ -489,18 +489,37 @@ static String UnameHelper(char type) static String LsbReleaseHelper(void) { + String result = "Could not get release string"; FILE *fp = popen("lsb_release -s -d 2>&1", "r"); - - char line[1024]; std::ostringstream msgbuf; - while (fgets(line, sizeof(line), fp) != NULL) - msgbuf << line; + if (fp != NULL) { + char line[1024]; - pclose(fp); + while (fgets(line, sizeof(line), fp) != NULL) + msgbuf << line; - String result = msgbuf.str(); - result.Trim(); + int status = pclose(fp); + + if (WEXITSTATUS(status) == 0) { + result = msgbuf.str(); + result.Trim(); + return result; + } + } + + std::ifstream release("/etc/os-release"); + if (!release.is_open()) + return result; + std::string release_line; + + while (getline(release, release_line)) { + if (release_line.find("PRETTY_NAME") != std::string::npos) { + result = release_line.substr(13, release_line.length()-14); + break; + } + } + release.close(); return result; } -- 2.40.0