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().
This commit is contained in:
Lennart Poettering 2019-11-15 11:11:52 +01:00
parent 385d581b74
commit c59e2ec696
3 changed files with 22 additions and 9 deletions

View file

@ -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();
}

View file

@ -1,5 +1,11 @@
/* SPDX-License-Identifier: LGPL-2.1+ */
#pragma once
#include <stdbool.h>
#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);

View file

@ -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) {