void SystemInformation::lsbReleaseFinished() { KProcess *process = qobject_cast<KProcess*>(sender()); Q_ASSERT(process); m_lsbRelease = QString::fromLocal8Bit(process->readAllStandardOutput().trimmed()); process->deleteLater(); //Guess distro string QString platform = guessBugzillaPlatform(m_lsbRelease); // if lsb_release doesn't work well, turn to the /etc/os-release file if (platform == PLATFORM_UNSPECIFIED) { const QString& osReleaseInfo = fetchOSReleaseInformation(); platform = guessBugzillaPlatform(osReleaseInfo); } setBugzillaPlatform(platform); }
void SystemInformation::tryToSetBugzillaPlatform() { QString platform = PLATFORM_UNSPECIFIED; // first, try to guess bugzilla platfrom from the internal OS information // this should work for BSDs, solaris and windows. platform = guessBugzillaPlatform(m_bugzillaOperatingSystem); // if the internal information is not enough, refer to external information if (platform == PLATFORM_UNSPECIFIED) { tryToSetBugzillaPlatformFromExternalInfo(); } else { setBugzillaPlatform(platform); } }
void SystemInformation::tryToSetBugzillaPlatformFromExternalInfo() { //Run lsb_release async QString lsb_release = KStandardDirs::findExe(QLatin1String("lsb_release")); if ( !lsb_release.isEmpty() ) { kDebug() << "found lsb_release"; KProcess *process = new KProcess(); process->setOutputChannelMode(KProcess::OnlyStdoutChannel); process->setEnv("LC_ALL", "C"); *process << lsb_release << "-sd"; connect(process, SIGNAL(finished(int,QProcess::ExitStatus)), SLOT(lsbReleaseFinished())); process->start(); } else { // when lsb_release is unavailable, turn to /etc/os-release const QString& osReleaseInfo = fetchOSReleaseInformation(); const QString& platform = guessBugzillaPlatform(osReleaseInfo); setBugzillaPlatform(platform); } }
void SystemInformation::tryToSetBugzillaPlatformFromExternalInfo() { //Run lsb_release async QString lsb_release = QStandardPaths::findExecutable(QLatin1String("lsb_release")); if ( !lsb_release.isEmpty() ) { qDebug() << "found lsb_release"; KProcess *process = new KProcess(); process->setOutputChannelMode(KProcess::OnlyStdoutChannel); process->setEnv(QStringLiteral("LC_ALL"), QStringLiteral("C")); *process << lsb_release << QStringLiteral("-sd"); connect(process, static_cast<void (KProcess::*)(int, QProcess::ExitStatus)>(&KProcess::finished), this, &SystemInformation::lsbReleaseFinished); process->start(); } else { // when lsb_release is unavailable, turn to /etc/os-release const QString& osReleaseInfo = fetchOSReleaseInformation(); const QString& platform = guessBugzillaPlatform(osReleaseInfo); setBugzillaPlatform(platform); } }