1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-10-28 03:25:27 +03:00

Merge pull request #3546 from keszybz/systemctl-fixes

Systemctl fixes
This commit is contained in:
Lennart Poettering 2016-06-16 18:40:53 +02:00 committed by GitHub
commit 749a1d0684

View File

@ -588,7 +588,8 @@ static int get_unit_list(
return bus_log_create_error(r);
r = sd_bus_call(bus, m, 0, &error, &reply);
if (r < 0 && sd_bus_error_has_name(&error, SD_BUS_ERROR_UNKNOWN_METHOD)) {
if (r < 0 && (sd_bus_error_has_name(&error, SD_BUS_ERROR_UNKNOWN_METHOD) ||
sd_bus_error_has_name(&error, SD_BUS_ERROR_ACCESS_DENIED))) {
/* Fallback to legacy ListUnitsFiltered method */
fallback = true;
log_debug_errno(r, "Failed to list units: %s Falling back to ListUnitsFiltered method.", bus_error_message(&error, r));
@ -734,12 +735,12 @@ static int list_units(int argc, char *argv[], void *userdata) {
sd_bus *bus;
int r;
pager_open(arg_no_pager, false);
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
pager_open(arg_no_pager, false);
r = get_unit_list_recursive(bus, strv_skip(argv, 1), &unit_infos, &replies, &machines);
if (r < 0)
return r;
@ -946,12 +947,12 @@ static int list_sockets(int argc, char *argv[], void *userdata) {
int r = 0, n;
sd_bus *bus;
pager_open(arg_no_pager, false);
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
pager_open(arg_no_pager, false);
n = get_unit_list_recursive(bus, strv_skip(argv, 1), &unit_infos, &replies, &machines);
if (n < 0)
return n;
@ -1253,12 +1254,12 @@ static int list_timers(int argc, char *argv[], void *userdata) {
sd_bus *bus;
int r = 0;
pager_open(arg_no_pager, false);
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
pager_open(arg_no_pager, false);
n = get_unit_list_recursive(bus, strv_skip(argv, 1), &unit_infos, &replies, &machines);
if (n < 0)
return n;
@ -1424,8 +1425,6 @@ static int list_unit_files(int argc, char *argv[], void *userdata) {
int r;
bool fallback = false;
pager_open(arg_no_pager, false);
if (install_client_side()) {
Hashmap *h;
UnitFileList *u;
@ -1540,6 +1539,8 @@ static int list_unit_files(int argc, char *argv[], void *userdata) {
return bus_log_parse_error(r);
}
pager_open(arg_no_pager, false);
qsort_safe(units, c, sizeof(UnitFileList), compare_unit_file_list);
output_unit_file_list(units, c);
@ -1788,12 +1789,12 @@ static int list_dependencies(int argc, char *argv[], void *userdata) {
} else
u = SPECIAL_DEFAULT_TARGET;
pager_open(arg_no_pager, false);
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
pager_open(arg_no_pager, false);
puts(u);
return list_dependencies_one(bus, u, 0, &units, 0);
@ -2019,8 +2020,6 @@ static int list_machines(int argc, char *argv[], void *userdata) {
return -EPERM;
}
pager_open(arg_no_pager, false);
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
@ -2029,6 +2028,8 @@ static int list_machines(int argc, char *argv[], void *userdata) {
if (r < 0)
return r;
pager_open(arg_no_pager, false);
qsort_safe(machine_infos, r, sizeof(struct machine_info), compare_machine_info);
output_machines_list(machine_infos, r);
free_machines_list(machine_infos, r);
@ -2232,8 +2233,6 @@ static int list_jobs(int argc, char *argv[], void *userdata) {
int r;
bool skipped = false;
pager_open(arg_no_pager, false);
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
@ -2274,6 +2273,8 @@ static int list_jobs(int argc, char *argv[], void *userdata) {
if (r < 0)
return bus_log_parse_error(r);
pager_open(arg_no_pager, false);
output_jobs_list(jobs, c, skipped);
return 0;
}
@ -2286,12 +2287,12 @@ static int cancel_job(int argc, char *argv[], void *userdata) {
if (argc <= 1)
return trivial_method(argc, argv, userdata);
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
STRV_FOREACH(name, strv_skip(argv, 1)) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
uint32_t id;
@ -2827,13 +2828,13 @@ static int start_unit(int argc, char *argv[], void *userdata) {
char **name;
int r = 0;
ask_password_agent_open_if_enabled();
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
ask_password_agent_open_if_enabled();
polkit_agent_open_if_enabled();
if (arg_action == ACTION_SYSTEMCTL) {
enum action action;
@ -2953,9 +2954,6 @@ static int logind_reboot(enum action a) {
sd_bus *bus;
int r;
polkit_agent_open_if_enabled();
(void) logind_set_wall_message();
r = acquire_bus(BUS_FULL, &bus);
if (r < 0)
return r;
@ -2991,6 +2989,9 @@ static int logind_reboot(enum action a) {
return -EINVAL;
}
polkit_agent_open_if_enabled();
(void) logind_set_wall_message();
r = sd_bus_call_method(
bus,
"org.freedesktop.login1",
@ -3337,12 +3338,12 @@ static int kill_unit(int argc, char *argv[], void *userdata) {
sd_bus *bus;
int r, q;
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
if (!arg_kill_who)
arg_kill_who = "all";
@ -4854,6 +4855,10 @@ static int show(int argc, char *argv[], void *userdata) {
return -EINVAL;
}
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
pager_open(arg_no_pager, false);
if (show_status)
@ -4862,17 +4867,12 @@ static int show(int argc, char *argv[], void *userdata) {
* be split up into many files. */
setrlimit_closest(RLIMIT_NOFILE, &RLIMIT_MAKE_CONST(16384));
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
/* If no argument is specified inspect the manager itself */
if (show_properties && argc <= 1)
return show_one(argv[0], bus, "/org/freedesktop/systemd1", NULL, show_properties, &new_line, &ellipsized);
if (show_status && argc <= 1) {
pager_open(arg_no_pager, false);
show_system_status(bus);
new_line = true;
@ -5029,12 +5029,12 @@ static int set_property(int argc, char *argv[], void *userdata) {
char **i;
int r;
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
r = sd_bus_message_new_method_call(
bus,
&m,
@ -5081,12 +5081,12 @@ static int daemon_reload(int argc, char *argv[], void *userdata) {
sd_bus *bus;
int r;
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
switch (arg_action) {
case ACTION_RELOAD:
@ -5141,12 +5141,12 @@ static int trivial_method(int argc, char *argv[], void *userdata) {
sd_bus *bus;
int r;
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
method =
streq(argv[0], "clear-jobs") ||
streq(argv[0], "cancel") ? "ClearJobs" :
@ -5184,12 +5184,12 @@ static int reset_failed(int argc, char *argv[], void *userdata) {
if (argc <= 1)
return trivial_method(argc, argv, userdata);
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
r = expand_names(bus, strv_skip(argv, 1), NULL, &names);
if (r < 0)
return log_error_errno(r, "Failed to expand names: %m");
@ -5223,12 +5223,12 @@ static int show_environment(int argc, char *argv[], void *userdata) {
sd_bus *bus;
int r;
pager_open(arg_no_pager, false);
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
pager_open(arg_no_pager, false);
r = sd_bus_get_property(
bus,
"org.freedesktop.systemd1",
@ -5332,12 +5332,12 @@ static int set_environment(int argc, char *argv[], void *userdata) {
assert(argc > 1);
assert(argv);
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
method = streq(argv[0], "set-environment")
? "SetEnvironment"
: "UnsetEnvironment";
@ -5369,12 +5369,12 @@ static int import_environment(int argc, char *argv[], void *userdata) {
sd_bus *bus;
int r;
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
r = sd_bus_message_new_method_call(
bus,
&m,
@ -5666,12 +5666,12 @@ static int enable_unit(int argc, char *argv[], void *userdata) {
const char *method;
sd_bus *bus;
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
if (streq(verb, "enable")) {
method = "EnableUnitFiles";
expect_carries_install_info = true;
@ -5832,12 +5832,12 @@ static int add_dependency(int argc, char *argv[], void *userdata) {
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
sd_bus *bus;
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
r = sd_bus_message_new_method_call(
bus,
&m,
@ -5894,12 +5894,12 @@ static int preset_all(int argc, char *argv[], void *userdata) {
_cleanup_(sd_bus_message_unrefp) sd_bus_message *reply = NULL;
sd_bus *bus;
polkit_agent_open_if_enabled();
r = acquire_bus(BUS_MANAGER, &bus);
if (r < 0)
return r;
polkit_agent_open_if_enabled();
r = sd_bus_call_method(
bus,
"org.freedesktop.systemd1",
@ -7720,8 +7720,6 @@ static int logind_schedule_shutdown(void) {
sd_bus *bus;
int r;
(void) logind_set_wall_message();
r = acquire_bus(BUS_FULL, &bus);
if (r < 0)
return r;
@ -7748,6 +7746,8 @@ static int logind_schedule_shutdown(void) {
if (arg_dry)
action = strjoina("dry-", action);
(void) logind_set_wall_message();
r = sd_bus_call_method(
bus,
"org.freedesktop.login1",