From ed81e790565663f1ddbdf0777efbd01b8b0e00ad Mon Sep 17 00:00:00 2001 From: monsta Date: Tue, 25 Oct 2016 14:33:23 +0300 Subject: 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 --- tools/Makefile.am | 12 ++++++++++++ tools/msm_execute_helper.c | 17 +++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 tools/Makefile.am create mode 100644 tools/msm_execute_helper.c (limited to 'tools') diff --git a/tools/Makefile.am b/tools/Makefile.am new file mode 100644 index 0000000..204a42b --- /dev/null +++ b/tools/Makefile.am @@ -0,0 +1,12 @@ +pkglibexec_PROGRAMS = msm-renice msm-kill + +AM_CPPFLAGS = $(TOOLS_CFLAGS) + +msm_renice_SOURCES = msm_execute_helper.c +msm_renice_LDADD = $(TOOLS_LIBS) +msm_renice_CFLAGS = -DCOMMAND=\"renice\" + +msm_kill_SOURCES = msm_execute_helper.c +msm_kill_LDADD = $(TOOLS_LIBS) +msm_kill_CFLAGS = -DCOMMAND=\"kill\" + diff --git a/tools/msm_execute_helper.c b/tools/msm_execute_helper.c new file mode 100644 index 0000000..eff687a --- /dev/null +++ b/tools/msm_execute_helper.c @@ -0,0 +1,17 @@ +#include +#include +#include +#include + +int main(int argc, char* argv[]) +{ + gchar **argv_modified = g_new0 (gchar *, argc + 1); + memcpy (argv_modified, argv, argc * sizeof (char*)); + argv_modified[0] = COMMAND; + + if (execvp (COMMAND, argv_modified) == -1) { + return errno; + } + + return 0; +} -- cgit v1.2.1