Index: base/sys_info_ios.mm |
diff --git a/base/sys_info_ios.mm b/base/sys_info_ios.mm |
index 9a329b9f0924bbdefce908cd51de4a6488c574f0..9ffc525405ff1d5a81b631f416053800eb35c8a6 100644 |
--- a/base/sys_info_ios.mm |
+++ b/base/sys_info_ios.mm |
@@ -20,6 +20,23 @@ |
namespace base { |
+namespace { |
+ |
+// Queries sysctlbyname() for the given key and returns the value from the |
+// system or the empty string on failure. |
+std::string GetSysctlValue(const char* key_name) { |
+ char value[256]; |
+ size_t len = arraysize(value); |
+ if (sysctlbyname(key_name, &value, &len, nullptr, 0) == 0) { |
+ DCHECK_GE(len, 1u); |
+ DCHECK_EQ('\0', value[len - 1]); |
+ return std::string(value, len - 1); |
+ } |
+ return std::string(); |
+} |
+ |
+} // namespace |
+ |
// static |
std::string SysInfo::OperatingSystemName() { |
static dispatch_once_t get_system_name_once; |
@@ -94,11 +111,14 @@ int64_t SysInfo::AmountOfAvailablePhysicalMemory() { |
// static |
std::string SysInfo::CPUModelName() { |
- char name[256]; |
- size_t len = arraysize(name); |
- if (sysctlbyname("machdep.cpu.brand_string", &name, &len, NULL, 0) == 0) |
- return name; |
- return std::string(); |
+ return GetSysctlValue("machdep.cpu.brand_string"); |
+} |
+ |
+// static |
+std::string SysInfo::HardwareModelName() { |
+ // Note: This uses "hw.machine" instead of "hw.model" like the Mac code, |
Mark Mentovai
2017/05/04 21:11:33
You may want to bifurcate this so that it uses hw.
Alexei Svitkine (slow)
2017/05/04 21:23:14
Yuck. Done. Went with returning a fake "Simulator1
|
+ // because "hw.model" doesn't always return the right string on some devices. |
+ return GetSysctlValue("hw.machine"); |
} |
} // namespace base |