From c59e2ec6961e6ce1acb97bb2cdb7499dc23bc23d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 15 Nov 2019 11:11:52 +0100 Subject: [PATCH] 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(). --- src/shared/spawn-ask-password-agent.c | 13 +++++++++++++ src/shared/spawn-ask-password-agent.h | 6 ++++++ src/systemctl/systemctl.c | 12 +++--------- 3 files changed, 22 insertions(+), 9 deletions(-) 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) { -- 2.47.3