changeset 693:84f5e9e9c297

In most parts implemented the distribution detection as described on the Novell web site. git-svn-id: svn://svn.code.sf.net/p/universalindent/code/trunk@962 59b1889a-e5ac-428c-b0c7-476e01d41282
author thomas_-_s <thomas_-_s@59b1889a-e5ac-428c-b0c7-476e01d41282>
date Fri, 29 May 2009 14:39:42 +0000
parents e3ff3c85d271
children 3ddadbeaebf1
files src/UiGuiSystemInfo.cpp
diffstat 1 files changed, 90 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/UiGuiSystemInfo.cpp	Fri May 29 11:47:10 2009 +0000
+++ b/src/UiGuiSystemInfo.cpp	Fri May 29 14:39:42 2009 +0000
@@ -21,6 +21,8 @@
 
 #include <QString>
 #include <QSysInfo>
+#include <QProcess>
+#include <QFile>
 
 UiGuiSystemInfo::UiGuiSystemInfo() {
 }
@@ -117,7 +119,94 @@
     }
 #else
     //TODO: Detect Unix, Linux etc. distro as described on http://www.novell.com/coolsolutions/feature/11251.html
+    operatingSystemString = "Linux";
+    QProcess process;
+
+    process.start("uname -s");
+    bool result = process.waitForFinished(1000);
+    QString os = process.readAllStandardOutput().trimmed();
+
+    process.start("uname -r");
+    result = process.waitForFinished(1000);
+    QString kernel = process.readAllStandardOutput().trimmed();
+
+    process.start("uname -m");
+    result = process.waitForFinished(1000);
+    QString mach = process.readAllStandardOutput().trimmed();
+
+    if ( os == "SunOS" ) {
+        os = "Solaris";
+
+        process.start("uname -p");
+        result = process.waitForFinished(1000);
+        QString arch = process.readAllStandardOutput().trimmed();
+
+        process.start("uname -v");
+        result = process.waitForFinished(1000);
+        QString timestamp = process.readAllStandardOutput().trimmed();
+
+        operatingSystemString = os + "" + kernel + "" + arch + "" + timestamp;
+    }
+    else if ( os == "AIX" ) {
+        process.start("oslevel -r");
+        result = process.waitForFinished(1000);
+        QString oslevel = process.readAllStandardOutput().trimmed();
+
+        operatingSystemString = os + "oslevel " + oslevel;
+    }
+    else if ( os == "Linux" ) {
+        QString dist;
+        QString pseudoname;
+        QString rev;
+
+        if ( QFile::exists("/etc/redhat-release") ) {
+            dist = "RedHat";
+
+            process.start("cat /etc/redhat-release | sed s/.*\\(// | sed s/\\)//");
+            result = process.waitForFinished(1000);
+            pseudoname = process.readAllStandardOutput().trimmed();
+
+            process.start("cat /etc/redhat-release | sed s/.*release\\ // | sed s/\\ .*//");
+            result = process.waitForFinished(1000);
+            rev = process.readAllStandardOutput().trimmed();
+        }
+        else if ( QFile::exists("/etc/SUSE-release") ) {
+            process.start("cat /etc/SUSE-release | tr \"\n\" ' '| sed s/VERSION.*//");
+            result = process.waitForFinished(1000);
+            dist = process.readAllStandardOutput().trimmed();
+
+            process.start("cat /etc/SUSE-release | tr \"\n\" ' ' | sed s/.*=\\ //");
+            result = process.waitForFinished(1000);
+            rev = process.readAllStandardOutput().trimmed();
+        }
+        else if ( QFile::exists("/etc/mandrake-release") ) {
+            dist = "Mandrake";
+
+            process.start("cat /etc/mandrake-release | sed s/.*\\(// | sed s/\\)//");
+            result = process.waitForFinished(1000);
+            pseudoname = process.readAllStandardOutput().trimmed();
+
+            process.start("cat /etc/mandrake-release | sed s/.*release\\ // | sed s/\\ .*//");
+            result = process.waitForFinished(1000);
+            rev = process.readAllStandardOutput().trimmed();
+        }
+        else if ( QFile::exists("/etc/debian_version") ) {
+            dist = "Debian";
+
+            process.start("cat /etc/debian_version");
+            result = process.waitForFinished(1000);
+            dist += process.readAllStandardOutput().trimmed();
+
+            rev = "";
+        }
+
+        if ( QFile::exists("/etc/UnitedLinux-release") ) {
+            process.start("cat /etc/UnitedLinux-release | tr \"\n\" ' ' | sed s/VERSION.*//");
+            result = process.waitForFinished(1000);
+            dist += process.readAllStandardOutput().trimmed();
+        }
+    }
 #endif
 
     return operatingSystemString;
-}
\ No newline at end of file
+}