]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common: FreeBSD does not have /etc/os-release 22825/head
authorWillem Jan Withagen <wjw@digiware.nl>
Tue, 3 Jul 2018 11:27:29 +0000 (13:27 +0200)
committerWillem Jan Withagen <wjw@digiware.nl>
Thu, 5 Jul 2018 20:47:32 +0000 (22:47 +0200)
But it does have uname() with lots of information.
So use that instead.

Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
src/common/util.cc
src/global/signal_handler.cc

index 10183507b335a5392006d13f7ed250ea65f6bf79..6caae671d3aedf2df4798cdf289c855564a24dfa 100644 (file)
@@ -93,6 +93,7 @@ static void file_values_parse(const map<string, string>& kvm, FILE *fp, map<stri
 
 static bool os_release_parse(map<string, string> *m, CephContext *cct)
 {
+#if defined(__linux__)
   static const map<string, string> kvm = {
     { "distro", "ID=" },
     { "distro_description", "PRETTY_NAME=" },
@@ -109,6 +110,15 @@ static bool os_release_parse(map<string, string> *m, CephContext *cct)
   file_values_parse(kvm, fp, m, cct);
 
   fclose(fp);
+#elif defined(__FreeBSD__)
+  struct utsname u;
+  int r = uname(&u);
+  if (!r) {
+     m->insert(std::make_pair("distro", u.sysname));
+     m->insert(std::make_pair("distro_description", u.version));
+     m->insert(std::make_pair("distro_version", u.release));
+  }
+#endif
 
   return true;
 }
index 5af31c28df236fd7d1a7cbca0692c5873fc0056e..9ea5a9d498ddba79d9826f1c64141153244c2c56 100644 (file)
@@ -207,8 +207,8 @@ static void handle_fatal_signal(int signum)
          jf.dump_string("utsname_version", u.version);
          jf.dump_string("utsname_machine", u.machine);
        }
-
-       // os-releaes
+#if defined(__linux__)
+       // os-release
        int in = ::open("/etc/os-release", O_RDONLY);
        if (in >= 0) {
          char buf[4096];
@@ -231,6 +231,7 @@ static void handle_fatal_signal(int signum)
          }
          ::close(in);
        }
+#endif
 
        // assert?
        if (g_assert_condition) {