summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sysinfo.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/sysinfo.cpp b/src/sysinfo.cpp
index 273f2f9..27b00b0 100644
--- a/src/sysinfo.cpp
+++ b/src/sysinfo.cpp
@@ -75,9 +75,15 @@ namespace {
/* Translators: The first string parameter is release version (codename),
* the second one is the architecture, 32 or 64-bit */
+#ifdef __linux__
char* markup = g_strdup_printf(_("Release %s %s"),
this->distro_release.c_str(),
this->get_os_type().c_str());
+#else
+ char* markup = g_strdup_printf(_("Release %s"),
+ this->distro_release.c_str());
+#endif
+
g_object_set(G_OBJECT(release),
"label",
markup,
@@ -86,6 +92,11 @@ namespace {
g_free(markup);
}
+ static string release()
+ {
+ return uname().release;
+ }
+
static string system()
{
return uname().sysname;
@@ -287,7 +298,11 @@ namespace {
void load_uname_info()
{
this->hostname = uname().nodename;
+#ifdef __linux__
this->kernel = string(uname().sysname) + ' ' + uname().release + ' ' + uname().machine;
+#else
+ this->kernel = string(uname().version) + ' ' + uname().machine;
+#endif
}
@@ -325,7 +340,22 @@ namespace {
}
};
+ class FreeBSDSysInfo
+ : public SysInfo
+ {
+ public:
+ FreeBSDSysInfo()
+ {
+ this->load_freebsd_info();
+ }
+ private:
+ void load_freebsd_info()
+ {
+ this->distro_name = "FreeBSD";
+ this->distro_release = release();
+ }
+ };
class SolarisSysInfo
: public SysInfo
@@ -618,6 +648,9 @@ namespace {
g_free(p);
return new LSBSysInfo;
}
+ else if (SysInfo::system() == "FreeBSD") {
+ return new FreeBSDSysInfo;
+ }
else if (SysInfo::system() == "SunOS") {
return new SolarisSysInfo;
}