From: Lennart Poettering Date: Fri, 15 Nov 2019 10:11:52 +0000 (+0100) Subject: ask-password-agent: introduce ask_password_agent_open_if_enabled() X-Git-Tag: v244-rc1~46^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c59e2ec6961e6ce1acb97bb2cdb7499dc23bc23d;p=thirdparty%2Fsystemd.git ask-password-agent: introduce ask_password_agent_open_if_enabled() This makes the ask-password agent handling more alike the polkit agent handling again, and introduces ask_password_agent_open_if_enabled() that works just like the already existing polkit_agent_open_if_enabled(). --- diff --git a/src/shared/spawn-ask-password-agent.c b/src/shared/spawn-ask-password-agent.c index 309071c89db..ddaebf0f61a 100644 --- a/src/shared/spawn-ask-password-agent.c +++ b/src/shared/spawn-ask-password-agent.c @@ -46,3 +46,16 @@ void ask_password_agent_close(void) { (void) wait_for_terminate(agent_pid, NULL); agent_pid = 0; } + +int ask_password_agent_open_if_enabled(BusTransport transport, bool ask_password) { + + /* Open the ask password agent as a child process if necessary */ + + if (transport != BUS_TRANSPORT_LOCAL) + return 0; + + if (!ask_password) + return 0; + + return ask_password_agent_open(); +} diff --git a/src/shared/spawn-ask-password-agent.h b/src/shared/spawn-ask-password-agent.h index 97e73bda44c..97b12fe2685 100644 --- a/src/shared/spawn-ask-password-agent.h +++ b/src/shared/spawn-ask-password-agent.h @@ -1,5 +1,11 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ #pragma once +#include + +#include "bus-util.h" + int ask_password_agent_open(void); void ask_password_agent_close(void); + +int ask_password_agent_open_if_enabled(BusTransport transport, bool ask_password); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 4be695d5b64..012867fbb0e 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -236,22 +236,16 @@ static void release_busses(void) { buses[w] = sd_bus_flush_close_unref(buses[w]); } -static void ask_password_agent_open_if_enabled(void) { +static void ask_password_agent_open_maybe(void) { /* Open the password agent as a child process if necessary */ if (arg_dry_run) return; - if (!arg_ask_password) - return; - if (arg_scope != UNIT_FILE_SYSTEM) return; - if (arg_transport != BUS_TRANSPORT_LOCAL) - return; - - ask_password_agent_open(); + ask_password_agent_open_if_enabled(arg_transport, arg_ask_password); } static void polkit_agent_open_maybe(void) { @@ -3071,7 +3065,7 @@ static int start_unit(int argc, char *argv[], void *userdata) { if (r < 0) return r; - ask_password_agent_open_if_enabled(); + ask_password_agent_open_maybe(); polkit_agent_open_maybe(); if (arg_action == ACTION_SYSTEMCTL) {