X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsystemctl%2Fsystemctl.c;h=7e9b6eacf188a56bd3bab2d36f1ba82aacd1fcc5;hb=0d95178e49eaf70fce9882d2a1277a9cd3555f34;hp=7a2431986dfd8b650d754e1c37f434d28927acae;hpb=a9616cd17fb0a57ac92d39e1ad261caa1039d7b1;p=elogind.git diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 7a2431986..7e9b6eacf 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -532,7 +532,7 @@ static int get_triggered_units( static int get_listening( sd_bus *bus, const char* unit_path, - char*** listen, + char*** listening, unsigned *c) { _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; @@ -560,11 +560,11 @@ static int get_listening( while ((r = sd_bus_message_read(reply, "(ss)", &type, &path)) > 0) { - r = strv_extend(listen, type); + r = strv_extend(listening, type); if (r < 0) return log_oom(); - r = strv_extend(listen, path); + r = strv_extend(listening, path); if (r < 0) return log_oom(); @@ -687,7 +687,7 @@ static int list_sockets(sd_bus *bus, char **args) { cu = (unsigned) r; for (u = unit_infos; u < unit_infos + cu; u++) { - _cleanup_strv_free_ char **listen = NULL, **triggered = NULL; + _cleanup_strv_free_ char **listening = NULL, **triggered = NULL; unsigned c = 0, i; if (!output_show_unit(u)) @@ -700,7 +700,7 @@ static int list_sockets(sd_bus *bus, char **args) { if (r < 0) goto cleanup; - r = get_listening(bus, u->unit_path, &listen, &c); + r = get_listening(bus, u->unit_path, &listening, &c); if (r < 0) goto cleanup; @@ -712,16 +712,16 @@ static int list_sockets(sd_bus *bus, char **args) { for (i = 0; i < c; i++) socket_infos[cs + i] = (struct socket_info) { .id = u->id, - .type = listen[i*2], - .path = listen[i*2 + 1], + .type = listening[i*2], + .path = listening[i*2 + 1], .triggered = triggered, .own_triggered = i==0, }; /* from this point on we will cleanup those socket_infos */ cs += c; - free(listen); - listen = triggered = NULL; /* avoid cleanup */ + free(listening); + listening = triggered = NULL; /* avoid cleanup */ } qsort_safe(socket_infos, cs, sizeof(struct socket_info), @@ -1936,11 +1936,11 @@ static int check_inhibitors(sd_bus *bus, enum action a) { /* If logind is not around, then there are no inhibitors... */ return 0; - r = sd_bus_message_enter_container(reply, SD_BUS_TYPE_ARRAY, "ssssuu"); + r = sd_bus_message_enter_container(reply, SD_BUS_TYPE_ARRAY, "(ssssuu)"); if (r < 0) return bus_log_parse_error(r); - while ((r = sd_bus_message_read(reply, "ssssuu", &what, &who, &why, &mode, &uid, &pid)) > 0) { + while ((r = sd_bus_message_read(reply, "(ssssuu)", &what, &who, &why, &mode, &uid, &pid)) > 0) { _cleanup_free_ char *comm = NULL, *user = NULL; _cleanup_strv_free_ char **sv = NULL; @@ -5354,7 +5354,7 @@ static int talk_initctl(void) { return 1; } -static int systemctl_main(sd_bus *bus, int argc, char *argv[], const int r) { +static int systemctl_main(sd_bus *bus, int argc, char *argv[], int bus_error) { static const struct { const char* verb; @@ -5505,14 +5505,14 @@ static int systemctl_main(sd_bus *bus, int argc, char *argv[], const int r) { if (((!streq(verbs[i].verb, "reboot") && !streq(verbs[i].verb, "halt") && !streq(verbs[i].verb, "poweroff")) || arg_force <= 0) && !bus) { - log_error("Failed to get D-Bus connection: %s", strerror (-r)); + log_error("Failed to get D-Bus connection: %s", strerror (-bus_error)); return -EIO; } } else { if (!bus && !avoid_bus()) { - log_error("Failed to get D-Bus connection: %s", strerror (-r)); + log_error("Failed to get D-Bus connection: %s", strerror (-bus_error)); return -EIO; } } @@ -5764,13 +5764,11 @@ int main(int argc, char*argv[]) { goto finish; } - if (!avoid_bus()) { - r = bus_open_transport(arg_transport, arg_host, arg_scope != UNIT_FILE_SYSTEM, &bus); - if (r < 0) { - log_error("Failed to create bus connection: %s", strerror(-r)); - goto finish; - } - } + if (!avoid_bus()) + r = bus_open_transport_systemd(arg_transport, arg_host, arg_scope != UNIT_FILE_SYSTEM, &bus); + + /* systemctl_main() will print an error message for the bus + * connection, but only if it needs to */ switch (arg_action) {