Better macOS version report

This commit is contained in:
Martin Hrubý 2018-08-09 23:22:16 +02:00 committed by Martin Hrubý (hrubymar10)
parent be0bd05ab0
commit 0711e24d8e

View file

@ -124,26 +124,40 @@ std::string os_version()
//
// Standard Mac OS X version
//
std::string version_string = "Apple";
static const std::string version_plist = "/System/Library/CoreServices/SystemVersion.plist";
static const std::string defaults_bin = "/usr/bin/defaults";
if(filesystem::file_exists(defaults_bin) && filesystem::file_exists(version_plist)) {
static const std::string cmdline
= defaults_bin + " read " + version_plist + " ProductUserVisibleVersion";
static const std::string cmdline_version = defaults_bin + " read " + version_plist + " ProductUserVisibleVersion";
static const std::string cmdline_build = defaults_bin + " read " + version_plist + " ProductBuildVersion";
scoped_posix_pipe p(popen(cmdline.c_str(), "r"));
const std::string& ver = read_pipe_line(p);
scoped_posix_pipe p_version(popen(cmdline_version.c_str(), "r"));
const std::string& version = read_pipe_line(p_version);
scoped_posix_pipe p_build(popen(cmdline_build.c_str(), "r"));
const std::string& build = read_pipe_line(p_build);
if(!ver.empty()) {
const version_info version(ver);
if (version.major_version() == 10 && version.minor_version() < 12) {
return "Apple OS X " + ver;
if(!version.empty()) {
const version_info version_info(version);
if (version_info.major_version() == 10 && version_info.minor_version() < 12) {
version_string += " OS X ";
} else {
return "Apple macOS " + ver;
version_string += " macOS ";
}
version_string += version;
}
}
if(!build.empty()) {
version_string += " (" + build + ")";
}
}
return version_string;
#else