Mercurial > hg > forks > UniversalIndentGUI
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 +}