@@ -883,23 +883,26 @@ void KsMainWindow::_pluginAdd()
void KsMainWindow::_record()
{
-#ifndef DO_AS_ROOT
+ bool canDoAsRoot(false);
- QErrorMessage *em = new QErrorMessage(this);
- QString message;
-
- message = "Record is currently not supported.";
- message += " Install \"pkexec\" and then do:<br>";
- message += " cd build <br> sudo ./cmake_uninstall.sh <br>";
- message += " ./cmake_clean.sh <br> cmake .. <br> make <br>";
- message += " sudo make install";
+#ifdef DO_AS_ROOT
+ canDoAsRoot = true;
+#endif
- em->showMessage(message);
- qCritical() << "ERROR: " << message;
+ if (geteuid() && !canDoAsRoot) {
+ QErrorMessage *em = new QErrorMessage(this);
+ QString message;
- return;
+ message = "Record is currently not supported.";
+ message += " Install \"pkexec\" and then do:<br>";
+ message += " cd build <br> sudo ./cmake_uninstall.sh <br>";
+ message += " ./cmake_clean.sh <br> cmake .. <br> make <br>";
+ message += " sudo make install";
-#endif
+ em->showMessage(message);
+ qCritical() << "ERROR: " << message;
+ return;
+ }
_capture.start();
}
@@ -1134,9 +1137,24 @@ void KsMainWindow::loadSession(const QString &fileName)
void KsMainWindow::_initCapture()
{
+ bool canDoAsRoot(false);
+
#ifdef DO_AS_ROOT
+ canDoAsRoot = true;
+#endif
+
+ if (geteuid() && !canDoAsRoot)
+ return;
- _capture.setProgram("kshark-su-record");
+ if (geteuid()) {
+ _capture.setProgram("kshark-su-record");
+ } else {
+ QStringList argv;
+
+ _capture.setProgram("kshark-record");
+ argv << QString("-o") << QDir::homePath() + "/trace.dat";
+ _capture.setArguments(argv);
+ }
connect(&_capture, &QProcess::started,
this, &KsMainWindow::_captureStarted);
@@ -1155,7 +1173,6 @@ void KsMainWindow::_initCapture()
connect(&_captureLocalServer, &QLocalServer::newConnection,
this, &KsMainWindow::_readSocket);
-#endif
}
void KsMainWindow::_captureStarted()
If KernelShark GUI has been started as Root we do not need to use "pkexec" when starting the Record dialog. Note that the actual place where "pkexec" gets used is in the script "kshark-su-record". Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com> --- kernel-shark/src/KsMainWindow.cpp | 47 +++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 15 deletions(-)