[gnome-system-monitor] Fixed policykit kill and renice helpers to work with both old 0.104 and new >=0.107 policikit. https
- From: Robert Roth <robertroth src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-system-monitor] Fixed policykit kill and renice helpers to work with both old 0.104 and new >=0.107 policikit. https
- Date: Sat, 8 Dec 2012 00:31:29 +0000 (UTC)
commit 2b4308d9fc2b2e367030629e79b531c4f9ae3d0a
Author: Robert Roth <robert roth off gmail com>
Date: Sat Dec 8 02:29:57 2012 +0200
Fixed policykit kill and renice helpers to work with both old 0.104
and new >=0.107 policikit.
https://bugzilla.gnome.org/show_bug.cgi?id=491462
.gitignore | 4 ++++
Makefile.am | 14 ++++++++++++--
configure.ac | 3 +++
... => org.gnome.gnome-system-monitor.policy.in.in | 6 ++----
scripts/Makefile.am | 12 ++++++++++++
scripts/gsm_execute_helper.c | 16 ++++++++++++++++
src/Makefile.am | 3 ++-
src/procman_pkexec.cpp | 2 +-
8 files changed, 52 insertions(+), 8 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 4e61ba6..1428f0c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -36,6 +36,7 @@ m4/
missing
omf.make
org.gnome.gnome-system-monitor.policy
+org.gnome.gnome-system-monitor.policy.in
pixmaps/Makefile
pixmaps/Makefile.in
po/.intltool-merge-cache
@@ -67,3 +68,6 @@ src/org.gnome.gnome-system-monitor.gschema.xml
stamp-h1
xmldocs.make
*.patch
+scripts/.deps/
+scripts/gsm-kill
+scripts/gsm-renice
diff --git a/Makefile.am b/Makefile.am
index 7e828d8..24ebad7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,7 +1,7 @@
## Process this file with automake to produce Makefile.in
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-SUBDIRS = pixmaps po src help
+SUBDIRS = pixmaps po scripts src help
uidir = $(pkgdatadir)
ui_DATA = data/preferences.ui \
@@ -12,8 +12,14 @@ ui_DATA = data/preferences.ui \
data/menus.ui \
data/popups.ui
+
+runnabledir = $(pkglibexecdir)
+runnable_SCRIPTS = scripts/gsm-renice \
+ scripts/gsm-kill
+
EXTRA_DIST = \
$(ui_DATA) \
+ $(runnable_SCRIPTS) \
org.gnome.gnome-system-monitor.policy.in \
gnome-system-monitor.desktop.in \
gnome-system-monitor.doap \
@@ -21,6 +27,9 @@ EXTRA_DIST = \
intltool-merge.in \
intltool-update.in
+org.gnome.gnome-system-monitor.policy.in: org.gnome.gnome-system-monitor.policy.in.in Makefile
+ $(AM_V_GEN) sed -e "s|\ pkglibexecdir\@|$(pkglibexecdir)|" $< > $@
+
@INTLTOOL_POLICY_RULE@
polkit_policydir = $(datadir)/polkit-1/actions
polkit_policy_in_files = org.gnome.gnome-system-monitor.policy.in
@@ -59,6 +68,7 @@ DISTCLEANFILES = \
intltool-merge \
intltool-update \
gnome-system-monitor.desktop \
- org.gnome.gnome-system-monitor.policy
+ org.gnome.gnome-system-monitor.policy \
+ org.gnome.gnome-system-monitor.policy.in
DISTCHECK_CONFIGURE_FLAGS = --disable-scrollkeeper
diff --git a/configure.ac b/configure.ac
index ca10f50..b601a7d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,6 +43,8 @@ SYSTEMD_EXCLUDED=43
PKG_CHECK_MODULES(PROCMAN, glib-2.0 >= $GLIB_REQUIRED libgtop-2.0 >= $LIBGTOP_REQUIRED libwnck-3.0 >= $LIBWNCK_REQUIRED gtk+-3.0 >= $GTK_REQUIRED gnome-icon-theme >= $GNOME_ICON_THEME_REQUIRED gtkmm-3.0 >= $GTKMM_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED librsvg-2.0 >= $RSVG_REQUIRED glibmm-2.4 >= $GLIBMM_REQUIRED giomm-2.4 >= $GIOMM_REQUIRED gmodule-2.0)
+PKG_CHECK_MODULES(SCRIPTS, glib-2.0 >= $GLIB_REQUIRED)
+
have_systemd=no
AC_ARG_ENABLE(systemd, AS_HELP_STRING([--disable-systemd], [disable systemd support]),,enable_systemd=no)
if test "x$enable_systemd" != "xno"; then
@@ -102,6 +104,7 @@ YELP_HELP_INIT
AC_CONFIG_FILES([
Makefile
+scripts/Makefile
src/Makefile
pixmaps/Makefile
po/Makefile.in
diff --git a/org.gnome.gnome-system-monitor.policy.in b/org.gnome.gnome-system-monitor.policy.in.in
similarity index 76%
rename from org.gnome.gnome-system-monitor.policy.in
rename to org.gnome.gnome-system-monitor.policy.in.in
index 35db3cc..b0bdeb5 100644
--- a/org.gnome.gnome-system-monitor.policy.in
+++ b/org.gnome.gnome-system-monitor.policy.in.in
@@ -15,8 +15,7 @@
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
- <annotate key="org.freedesktop.policykit.exec.path">/bin/kill</annotate>
- <annotate key="org.freedesktop.policykit.exec.allow_gui">FALSE</annotate>
+ <annotate key="org.freedesktop.policykit.exec.path">@pkglibexecdir@/gsm-kill</annotate>
</action>
<action id="org.gnome.gnome-system-monitor.renice">
@@ -27,8 +26,7 @@
<allow_inactive>no</allow_inactive>
<allow_active>auth_admin</allow_active>
</defaults>
- <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/renice</annotate>
- <annotate key="org.freedesktop.policykit.exec.allow_gui">FALSE</annotate>
+ <annotate key="org.freedesktop.policykit.exec.path">@pkglibexecdir@/gsm-renice</annotate>
</action>
</policyconfig>
diff --git a/scripts/Makefile.am b/scripts/Makefile.am
new file mode 100644
index 0000000..d353005
--- /dev/null
+++ b/scripts/Makefile.am
@@ -0,0 +1,12 @@
+pkglibexec_PROGRAMS = gsm-renice gsm-kill
+
+INCLUDES = \
+ @SCRIPTS_CFLAGS@
+
+gsm_renice_SOURCES = gsm_execute_helper.c
+gsm_renice_LDADD = @SCRIPTS_LIBS@
+gsm_renice_CFLAGS = -DCOMMAND=\"renice\"
+
+gsm_kill_SOURCES = gsm_execute_helper.c
+gsm_kill_LDADD = @SCRIPTS_LIBS@
+gsm_kill_CFLAGS = -DCOMMAND=\"kill\"
diff --git a/scripts/gsm_execute_helper.c b/scripts/gsm_execute_helper.c
new file mode 100644
index 0000000..2f20a85
--- /dev/null
+++ b/scripts/gsm_execute_helper.c
@@ -0,0 +1,16 @@
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <glib.h>
+
+int main(int argc, char* argv[])
+{
+ gchar **argv_modified;
+ 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;
+}
diff --git a/src/Makefile.am b/src/Makefile.am
index eb6f665..0741165 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -52,7 +52,8 @@ gnome_system_monitor_SOURCES = \
gnome_system_monitor_LDADD = @PROCMAN_LIBS@ @SYSTEMD_LIBS@
-gnome_system_monitor_CPPFLAGS = -DGSM_DATA_DIR=\""$(pkgdatadir)"\"
+gnome_system_monitor_CPPFLAGS = -DGSM_DATA_DIR=\""$(pkgdatadir)"\" \
+ -DGSM_LIBEXEC_DIR=\""$(pkglibexecdir)"\"
specdir = $(datadir)/procman
diff --git a/src/procman_pkexec.cpp b/src/procman_pkexec.cpp
index 4dc4e67..355b16d 100644
--- a/src/procman_pkexec.cpp
+++ b/src/procman_pkexec.cpp
@@ -8,7 +8,7 @@ gboolean procman_pkexec_create_root_password_dialog(const char *command)
{
gint *exit_status = NULL;
GError *error = NULL;
- if (!g_spawn_command_line_sync( g_strdup_printf("pkexec %s", command), NULL, NULL, exit_status, &error)) {
+ if (!g_spawn_command_line_sync( g_strdup_printf("pkexec %s/gsm-%s", GSM_LIBEXEC_DIR, command), NULL, NULL, exit_status, &error)) {
g_critical("Could not run pkexec(\"%s\") : %s\n",
command, error->message);
g_error_free(error);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]