summaryrefslogtreecommitdiffstats
path: root/base/sys_info_posix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/sys_info_posix.cc')
-rw-r--r--base/sys_info_posix.cc59
1 files changed, 59 insertions, 0 deletions
diff --git a/base/sys_info_posix.cc b/base/sys_info_posix.cc
index 28c8bd6..b39457d 100644
--- a/base/sys_info_posix.cc
+++ b/base/sys_info_posix.cc
@@ -8,6 +8,7 @@
#include <errno.h>
#include <string.h>
#include <sys/statvfs.h>
+#include <sys/utsname.h>
#include <unistd.h>
#if defined(OS_MACOSX)
@@ -70,4 +71,62 @@ int64 SysInfo::AmountOfFreeDiskSpace(const std::wstring& path) {
return static_cast<int64>(stats.f_bavail) * stats.f_frsize;
}
+// static
+bool SysInfo::HasEnvVar(const wchar_t* var) {
+ std::string var_utf8 = WideToUTF8(std::wstring(var));
+ return getenv(var_utf8.c_str()) != NULL;
+}
+
+// static
+std::wstring SysInfo::GetEnvVar(const wchar_t* var) {
+ std::string var_utf8 = WideToUTF8(std::wstring(var));
+ char* value = getenv(var_utf8.c_str());
+ if (!value) {
+ return L"";
+ } else {
+ return UTF8ToWide(value);
+ }
+}
+
+// static
+std::string SysInfo::OperatingSystemName() {
+ utsname info;
+ if (uname(&info) < 0) {
+ NOTREACHED();
+ return "";
+ }
+ return std::string(info.sysname);
+}
+
+// static
+std::string SysInfo::OperatingSystemVersion() {
+ utsname info;
+ if (uname(&info) < 0) {
+ NOTREACHED();
+ return "";
+ }
+ return std::string(info.release);
+}
+
+// static
+std::string SysInfo::CPUArchitecture() {
+ utsname info;
+ if (uname(&info) < 0) {
+ NOTREACHED();
+ return "";
+ }
+ return std::string(info.machine);
+}
+
+// static
+void SysInfo::GetPrimaryDisplayDimensions(int* width, int* height) {
+ NOTIMPLEMENTED();
+}
+
+// static
+int SysInfo::DisplayCount() {
+ NOTIMPLEMENTED();
+ return 1;
+}
+
} // namespace base