summaryrefslogtreecommitdiff
path: root/src/procman_pkexec.cpp
diff options
context:
space:
mode:
authormonsta <[email protected]>2016-10-25 14:33:23 +0300
committermonsta <[email protected]>2016-10-25 15:11:30 +0300
commited81e790565663f1ddbdf0777efbd01b8b0e00ad (patch)
tree7fd19e6c621ca1b7909a760eff5074f6230cab5a /src/procman_pkexec.cpp
parent257ffb3cc4b1eab35630a9e53b6c29dda0b899da (diff)
downloadmate-system-monitor-ed81e790565663f1ddbdf0777efbd01b8b0e00ad.tar.bz2
mate-system-monitor-ed81e790565663f1ddbdf0777efbd01b8b0e00ad.tar.xz
add pkexec support
closes https://github.com/mate-desktop/mate-system-monitor/issues/85 try pkexec before trying gksu for killing other users' processes or renicing a process. actual kill and renice commands are launched via helper tool (see discussion at https://bugzilla.gnome.org/491462). code is ported from gnome-system-monitor with some changes (e.g. helper tool code is in tools/ dir instead of scripts/ - it's not a script). for reference - relevant upstream commits: https://git.gnome.org/browse/gnome-system-monitor/commit/?id=ccbff2a4293e43d6ea24fbf13477b10f58cd5212 https://git.gnome.org/browse/gnome-system-monitor/commit/?id=2b4308d9fc2b2e367030629e79b531c4f9ae3d0a https://git.gnome.org/browse/gnome-system-monitor/commit/?id=971b3c704dea49b22c1038f200933c5b3b35ece1 https://git.gnome.org/browse/gnome-system-monitor/commit/?id=c234b2a75dac454b818f1f40d302cf12f1a33aa2 https://git.gnome.org/browse/gnome-system-monitor/commit/?id=4cda3529e418098b35f7444d79ba421eb5403afc https://git.gnome.org/browse/gnome-system-monitor/commit/?id=ab7bd8aef7300eeb3835fdef9a2a1eefe7281631 https://git.gnome.org/browse/gnome-system-monitor/commit/?id=79eccf0cecbca237f4f911681438c33932da63e2 https://git.gnome.org/browse/gnome-system-monitor/commit/?id=a3bf3a7f56cf02c6a127aa168c570230e9fad356
Diffstat (limited to 'src/procman_pkexec.cpp')
-rw-r--r--src/procman_pkexec.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/procman_pkexec.cpp b/src/procman_pkexec.cpp
new file mode 100644
index 0000000..f67be6a
--- /dev/null
+++ b/src/procman_pkexec.cpp
@@ -0,0 +1,33 @@
+#include <config.h>
+
+#include "procman_pkexec.h"
+
+gboolean
+procman_pkexec_create_root_password_dialog (const char *command)
+{
+ gchar *command_line;
+ gboolean success;
+ GError *error = NULL;
+
+ command_line = g_strdup_printf ("pkexec --disable-internal-agent %s/msm-%s",
+ LIBEXEC_DIR, command);
+ success = g_spawn_command_line_sync (command_line, NULL, NULL, NULL, &error);
+ g_free (command_line);
+
+ if (!success) {
+ g_critical ("Could not run pkexec (\"%s\") : %s\n",
+ command, error->message);
+ g_error_free (error);
+ return FALSE;
+ }
+
+ g_debug ("pkexec did fine\n");
+ return TRUE;
+}
+
+gboolean
+procman_has_pkexec (void)
+{
+ return g_file_test("/usr/bin/pkexec", G_FILE_TEST_EXISTS);
+}
+