diff options
-rw-r--r-- | data/org.freedesktop.PolicyKit1.service.in | 2 | ||||
-rw-r--r-- | src/polkitd/main.c | 27 |
2 files changed, 27 insertions, 2 deletions
diff --git a/data/org.freedesktop.PolicyKit1.service.in b/data/org.freedesktop.PolicyKit1.service.in index 5a54ca1..b6cd02b 100644 --- a/data/org.freedesktop.PolicyKit1.service.in +++ b/data/org.freedesktop.PolicyKit1.service.in @@ -1,4 +1,4 @@ [D-BUS Service] Name=org.freedesktop.PolicyKit1 -Exec=@libexecdir@/polkitd +Exec=@libexecdir@/polkitd --no-debug User=root diff --git a/src/polkitd/main.c b/src/polkitd/main.c index 33ea511..b21723f 100644 --- a/src/polkitd/main.c +++ b/src/polkitd/main.c @@ -22,6 +22,9 @@ #include "config.h" #include <signal.h> + +#include <glib-unix.h> + #include <polkit/polkit.h> #include <polkitbackend/polkitbackend.h> @@ -33,8 +36,10 @@ static PolkitBackendAuthority *authority = NULL; static gpointer registration_id = NULL; static GMainLoop *loop = NULL; static gboolean opt_replace = FALSE; +static gboolean opt_no_debug = FALSE; static GOptionEntry opt_entries[] = { - {"replace", 0, 0, G_OPTION_ARG_NONE, &opt_replace, "Replace existing daemon", NULL}, + {"replace", 'r', 0, G_OPTION_ARG_NONE, &opt_replace, "Replace existing daemon", NULL}, + {"no-debug", 'n', 0, G_OPTION_ARG_NONE, &opt_no_debug, "Don't print debug information", NULL}, {NULL } }; @@ -120,6 +125,26 @@ main (int argc, goto out; } + /* If --no-debug is requested don't clutter stdout/stderr etc. + */ + if (opt_no_debug) + { + gint dev_null_fd; + dev_null_fd = open ("/dev/null", O_RDWR); + if (dev_null_fd >= 0) + { + dup2 (dev_null_fd, STDIN_FILENO); + dup2 (dev_null_fd, STDOUT_FILENO); + dup2 (dev_null_fd, STDERR_FILENO); + close (dev_null_fd); + } + else + { + g_warning ("Error opening /dev/null: %m"); + } + } + + loop = g_main_loop_new (NULL, FALSE); sigint_id = _g_posix_signal_watch_add (SIGINT, |