X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fsystemctl%2Fsystemctl.c;h=c20a82b8b45ad0c2938f1613341993418f711719;hb=58684be9a781be9797142bce442bbac6fb6a7738;hp=d1f68754a91a5c957eb45c7ceb73ba8e838ae615;hpb=a669d6226da35d8689898b57bcb6a449046e7a3c;p=elogind.git diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index d1f68754a..c20a82b8b 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3678,6 +3678,7 @@ static int get_unit_dbus_path_by_pid( _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + char *u; int r; r = sd_bus_call_method( @@ -3694,10 +3695,15 @@ static int get_unit_dbus_path_by_pid( return r; } - r = sd_bus_message_read(reply, "o", unit); + r = sd_bus_message_read(reply, "o", &u); if (r < 0) return bus_log_parse_error(r); + u = strdup(u); + if (!u) + return log_oom(); + + *unit = u; return 0; } @@ -3817,9 +3823,11 @@ static int cat(sd_bus *bus, char **args) { } STRV_FOREACH(path, dropin_paths) { - printf("%s# %s\n", + printf("%s%s# %s%s\n", isempty(fragment_path) && path == dropin_paths ? "" : "\n", - *path); + ansi_highlight_blue(), + *path, + ansi_highlight_off()); fflush(stdout); r = sendfile_full(STDOUT_FILENO, *path); @@ -3880,8 +3888,10 @@ static int show(sd_bus *bus, char **args) { } else { /* Interpret as PID */ r = get_unit_dbus_path_by_pid(bus, id, &unit); - if (r < 0) + if (r < 0) { ret = r; + continue; + } } show_one(args[0], bus, unit, show_properties, &new_line, &ellipsized);