]> granicus.if.org Git - icinga2/commitdiff
Make --version work with systemd
authorJean-Marcel Flach <jean-marcel.flach@netways.de>
Mon, 20 Apr 2015 10:51:19 +0000 (12:51 +0200)
committerJean-Marcel Flach <jean-marcel.flach@netways.de>
Mon, 20 Apr 2015 10:52:34 +0000 (12:52 +0200)
fixes #8888

lib/base/application.cpp

index 55d9f8367b12133d9b005f223c048ce38141df39..5ed6b38b4c515b22776bfb0522ffc6e2f64d076a 100644 (file)
@@ -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;
 }