#include "bus-dump.h"
static bool arg_no_pager = false;
+static bool arg_legend = true;
static char *arg_address = NULL;
static bool arg_unique = false;
static bool arg_acquired = false;
merged[n] = NULL;
strv_sort(merged);
- printf("%-*s %*s %-*s %-*s %-*s %-*s %-*s %-*s",
- (int) max_i, "NAME", 10, "PID", 15, "PROCESS", 16, "USER", 13, "CONNECTION", 25, "UNIT", 10, "SESSION", 19, "CONNECTION-NAME");
+ if (arg_legend) {
+ printf("%-*s %*s %-*s %-*s %-*s %-*s %-*s %-*s",
+ (int) max_i, "NAME", 10, "PID", 15, "PROCESS", 16, "USER", 13, "CONNECTION", 25, "UNIT", 10, "SESSION", 19, "CONNECTION-NAME");
- if (arg_show_machine)
- puts(" MACHINE");
- else
- putchar('\n');
+ if (arg_show_machine)
+ puts(" MACHINE");
+ else
+ putchar('\n');
+ }
STRV_FOREACH(i, merged) {
_cleanup_bus_creds_unref_ sd_bus_creds *creds = NULL;
if (r < 0)
r = sd_bus_get_owner(bus, argv[1], _SD_BUS_CREDS_ALL, &creds);
else
- r = sd_bus_creds_new_from_pid(pid, _SD_BUS_CREDS_ALL, &creds);
+ r = sd_bus_creds_new_from_pid(&creds, pid, _SD_BUS_CREDS_ALL);
if (r < 0) {
log_error("Failed to get credentials: %s", strerror(-r));
" -h --help Show this help\n"
" --version Show package version\n"
" --no-pager Do not pipe output into a pager\n"
+ " --no-legend Do not show the headers and footers\n"
" --system Connect to system bus\n"
" --user Connect to user bus\n"
" -H --host=[USER@]HOST Operate on remote host\n"
enum {
ARG_VERSION = 0x100,
ARG_NO_PAGER,
+ ARG_NO_LEGEND,
ARG_SYSTEM,
ARG_USER,
ARG_ADDRESS,
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, ARG_VERSION },
{ "no-pager", no_argument, NULL, ARG_NO_PAGER },
+ { "no-legend", no_argument, NULL, ARG_NO_LEGEND },
{ "system", no_argument, NULL, ARG_SYSTEM },
{ "user", no_argument, NULL, ARG_USER },
{ "address", required_argument, NULL, ARG_ADDRESS },
arg_no_pager = true;
break;
+ case ARG_NO_LEGEND:
+ arg_legend = false;
+ break;
+
case ARG_USER:
arg_user = true;
break;
if (r <= 0)
goto finish;
- if (arg_address) {
- r = sd_bus_new(&bus);
+ r = sd_bus_new(&bus);
+ if (r < 0) {
+ log_error("Failed to allocate bus: %s", strerror(-r));
+ goto finish;
+ }
+
+ if (streq_ptr(argv[optind], "monitor")) {
+
+ r = sd_bus_set_monitor(bus, true);
if (r < 0) {
- log_error("Failed to allocate bus: %s", strerror(-r));
+ log_error("Failed to set monitor mode: %s", strerror(-r));
goto finish;
}
- r = sd_bus_set_address(bus, arg_address);
+ r = sd_bus_negotiate_creds(bus, _SD_BUS_CREDS_ALL);
if (r < 0) {
- log_error("Failed to set address: %s", strerror(-r));
+ log_error("Failed to enable credentials: %s", strerror(-r));
goto finish;
}
- r = sd_bus_set_bus_client(bus, true);
+ r = sd_bus_negotiate_timestamp(bus, true);
if (r < 0) {
- log_error("Failed to set bus client: %s", strerror(-r));
+ log_error("Failed to enable timestamps: %s", strerror(-r));
goto finish;
}
- r = sd_bus_start(bus);
- } else
- r = bus_open_transport(arg_transport, arg_host, arg_user, &bus);
+ r = sd_bus_negotiate_fds(bus, true);
+ if (r < 0) {
+ log_error("Failed to enable fds: %s", strerror(-r));
+ goto finish;
+ }
+ }
+
+ if (arg_address)
+ r = sd_bus_set_address(bus, arg_address);
+ else {
+ switch (arg_transport) {
+
+ case BUS_TRANSPORT_LOCAL:
+ if (arg_user)
+ r = bus_set_address_user(bus);
+ else
+ r = bus_set_address_system(bus);
+ break;
+
+ case BUS_TRANSPORT_REMOTE:
+ r = bus_set_address_system_remote(bus, arg_host);
+ break;
+
+ case BUS_TRANSPORT_CONTAINER:
+ r = bus_set_address_system_container(bus, arg_host);
+ break;
+
+ default:
+ assert_not_reached("Hmm, unknown transport type.");
+ }
+ }
+ if (r < 0) {
+ log_error("Failed to set address: %s", strerror(-r));
+ goto finish;
+ }
+
+ r = sd_bus_set_bus_client(bus, true);
+ if (r < 0) {
+ log_error("Failed to set bus client: %s", strerror(-r));
+ goto finish;
+ }
+ r = sd_bus_start(bus);
if (r < 0) {
log_error("Failed to connect to bus: %s", strerror(-r));
goto finish;