int Kandas::Daemon::Engine::addDevice(const QString &deviceName, const QList<QString> &readKey, const QString &writeKey) { //only register new device if no device with this name exists if (m_devices.device(deviceName)) return Kandas::DeviceExistsAlready; //validate input if (deviceName.contains('/') || deviceName.contains(' ')) //spaces in the device name are possible, but interfere with the parsing of /proc/ndas/devs return Kandas::InvalidDeviceName; if (readKey.count() != 4) return Kandas::InvalidDeviceKey; foreach (const QString &keyBlock, readKey) if (!validateKeyBlock(keyBlock)) return Kandas::InvalidDeviceKey; if (!validateKeyBlock(writeKey, true)) return Kandas::InvalidDeviceKey; //build key string QString keyString = QStringList(readKey).join(QChar('-')); if (!writeKey.isEmpty()) keyString += '-' + writeKey; //call ndasadmin QStringList args; args << "register" << keyString << "-n" << deviceName << "-b"; KProcess process; process.setProgram("ndasadmin", args); process.setOutputChannelMode(KProcess::OnlyStderrChannel); process.start(); process.waitForFinished(); const QString errorOutput = QString::fromUtf8(process.readAllStandardError()).simplified(); if (errorOutput.isEmpty()) return Kandas::DeviceAdded; else if (errorOutput.contains(QLatin1String("register: invalid NDAS ID."))) return Kandas::InvalidDeviceKey; else return Kandas::DeviceAdditionFailed; // }
void KBlueTray::showManager() { // DeviceMan manager; kDebug() << "Starting Device Manager"; KProcess process; process.setProgram("kbluetooth-devicemanager"); process.startDetached(); // manager.exec(); }
void QtHelpQtDoc::registerDocumentations() { const QString qmake = qmakeCandidate(); if (!qmake.isEmpty()) { KProcess *p = new KProcess; p->setOutputChannelMode(KProcess::MergedChannels); p->setProgram(qmake, QStringList("-query") << "QT_INSTALL_DOCS"); p->start(); connect(p, static_cast<void(KProcess::*)(int)>(&KProcess::finished), this, &QtHelpQtDoc::lookupDone); } }
/** * @brief check if GnuPG returns an error for this arguments * @param executable the GnuPG executable to call * @param arguments the arguments to pass to executable * * The arguments will be used together with "--version", so they should not * be any commands. */ static bool checkGnupgArguments(const QString &executable, const QStringList &arguments) { KProcess gpg; // We ignore the output anyway, just make sure it doesn't clutter the output of // the parent process. Simplify the handling by putting all trash in one can. gpg.setOutputChannelMode(KProcess::MergedChannels); QStringList allArguments = arguments; allArguments << QLatin1String("--version"); gpg.setProgram(executable, allArguments); return (gpg.execute() == 0); }
bool LldbDebugger::checkVersion() { KProcess process; process.setProgram(debuggerBinary_, {"--versionLong"}); process.setOutputChannelMode(KProcess::MergedChannels); process.start(); process.waitForFinished(5000); auto output = QString::fromLatin1(process.readAll()); qCDebug(DEBUGGERLLDB) << output; QRegularExpression rx("^Version: (\\d+).(\\d+).(\\d+).(\\d+)$", QRegularExpression::MultilineOption); auto match = rx.match(output); int version[] = {0, 0, 0, 0}; if (match.hasMatch()) { for (int i = 0; i != 4; ++i) { version[i] = match.captured(i+1).toInt(); } } // minimal version is 1.0.0.9 bool ok = true; const int min_ver[] = {1, 0, 0, 9}; for (int i = 0; i < 4; ++i) { if (version[i] < min_ver[i]) { ok = false; break; } else if (version[i] > min_ver[i]) { ok = true; break; } } if (!ok) { if (!qobject_cast<QGuiApplication*>(qApp)) { //for unittest qFatal("You need a graphical application."); } KMessageBox::error( qApp->activeWindow(), i18n("<b>You need lldb-mi 1.0.0.9 or higher.</b><br />" "You are using: %1", output), i18n("LLDB Error")); } return ok; }
//Copied from CMakeManager QString executeProcess(const QString& execName, const QStringList& args=QStringList()) { KProcess p; p.setOutputChannelMode(KProcess::MergedChannels); p.setProgram(execName, args); p.start(); if(!p.waitForFinished()) { qCDebug(CMAKE) << "failed to execute:" << execName; } QByteArray b = p.readAllStandardOutput(); QString t; t.prepend(b.trimmed()); return t; }
ActionReply Helper::executeCommand(const QStringList &command) { KProcess process; process.setProgram(command); process.setOutputChannelMode(KProcess::MergedChannels); qDebug() << "Executing" << command.join(" "); int exitCode = process.execute(); ActionReply reply; if (exitCode != 0) { reply = ActionReply::HelperErrorReply(); //TO BE FIXED reply.setErrorCode(ActionReply::Error::InvalidActionError); } reply.addData("command", command); reply.addData("output", process.readAll()); return reply; }
QString CMakeBuildDirCreator::executeProcess(const QString& execName, const QStringList& args) { kDebug(9042) << "Executing:" << execName << "::" << args /*<< "into" << *m_vars*/; KProcess p; p.setOutputChannelMode(KProcess::MergedChannels); p.setProgram(execName, args); p.start(); if(!p.waitForFinished()) { kDebug(9042) << "failed to execute:" << execName; } QByteArray b = p.readAllStandardOutput(); QString t; t.prepend(b.trimmed()); kDebug(9042) << "executed" << execName << "<" << t; return t; }
// static int KProcess::execute(const QStringList &argv, int msecs) { KProcess p; p.setProgram(argv); return p.execute(msecs); }
// static int KProcess::execute(const QString &exe, const QStringList &args, int msecs) { KProcess p; p.setProgram(exe, args); return p.execute(msecs); }