From: Willem Jan Withagen Date: Tue, 3 Jul 2018 11:27:29 +0000 (+0200) Subject: common: FreeBSD does not have /etc/os-release X-Git-Tag: v14.0.1~718^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e4770cfc0e72c1939753ee6d8e0ffd826bd8a717;p=ceph.git common: FreeBSD does not have /etc/os-release But it does have uname() with lots of information. So use that instead. Signed-off-by: Willem Jan Withagen --- diff --git a/src/common/util.cc b/src/common/util.cc index 10183507b335..6caae671d3ae 100644 --- a/src/common/util.cc +++ b/src/common/util.cc @@ -93,6 +93,7 @@ static void file_values_parse(const map& kvm, FILE *fp, map *m, CephContext *cct) { +#if defined(__linux__) static const map kvm = { { "distro", "ID=" }, { "distro_description", "PRETTY_NAME=" }, @@ -109,6 +110,15 @@ static bool os_release_parse(map *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; } diff --git a/src/global/signal_handler.cc b/src/global/signal_handler.cc index 5af31c28df23..9ea5a9d498dd 100644 --- a/src/global/signal_handler.cc +++ b/src/global/signal_handler.cc @@ -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) {