summaryrefslogtreecommitdiff
path: root/src/login/elogind-dbus.c
diff options
context:
space:
mode:
authorSven Eden <yamakuzure@gmx.net>2018-06-19 23:29:56 +0200
committerSven Eden <yamakuzure@gmx.net>2018-06-29 07:12:51 +0200
commitf126109b3cdd134469fb1d976e81f943c90a8d4f (patch)
tree13433c913d63960569a6262dcbea88f0d1d7561d /src/login/elogind-dbus.c
parentc647cf78c414606c821acd74f2db73f1b11e2ec4 (diff)
Prep v238: fix forking of the poweroff programs in run_helper()
Diffstat (limited to 'src/login/elogind-dbus.c')
-rw-r--r--src/login/elogind-dbus.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/login/elogind-dbus.c b/src/login/elogind-dbus.c
index fe580696b..715b28b17 100644
--- a/src/login/elogind-dbus.c
+++ b/src/login/elogind-dbus.c
@@ -75,23 +75,21 @@ static int bus_manager_log_shutdown(
/* elogind specific helper to make HALT and REBOOT possible. */
static int run_helper(const char *helper) {
- pid_t pid = 0;
int r = 0;
- r = safe_fork_full(helper, NULL, 0, FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_CLOSE_ALL_FDS|FORK_WAIT, &pid);
+ r = safe_fork_full(helper, NULL, 0, FORK_RESET_SIGNALS|FORK_REOPEN_LOG, NULL);
if (r < 0)
return log_error_errno(errno, "Failed to fork run %s: %m", helper);
- if (pid == 0) {
+ if (0 == r) {
/* Child */
-
execlp(helper, helper, NULL);
log_error_errno(errno, "Failed to execute %s: %m", helper);
_exit(EXIT_FAILURE);
}
- return r;
+ return 0;
}
/* elogind specific executor */
@@ -152,7 +150,7 @@ int execute_shutdown_or_sleep(
}
/* This comes from our patched update-utmp/update-utmp.c */
- update_utmp(2, argv_utmp, m->bus);
+ update_utmp(2, argv_utmp);
strv_free(argv_utmp);
}