#include "build.h"
#include "strv.h"
+#define UNIX_BUS_PATH "unix:path=/run/dbus/system_bus_socket"
+#define KERNEL_BUS_PATH "kernel:path=/dev/kdbus/0-system/bus"
+
#ifdef ENABLE_KDBUS
-static const char *arg_address = "kernel:path=/dev/kdbus/0-system/bus;unix:path=/run/dbus/system_bus_socket";
+# define DEFAULT_BUS_PATH KERNEL_BUS_PATH ";" UNIX_BUS_PATH
#else
-static const char *arg_address = "unix:path=/run/dbus/system_bus_socket";
+# define DEFAULT_BUS_PATH UNIX_BUS_PATH
#endif
+static const char *arg_address = DEFAULT_BUS_PATH;
static char *arg_command_line_buffer = NULL;
static int help(void) {
"Connect STDIO or a socket to a given bus address.\n\n"
" -h --help Show this help\n"
" --version Show package version\n"
- " --address=ADDRESS Connect to bus specified by address\n",
+ " --address=ADDRESS Connect to the bus specified by ADDRESS\n"
+ " (default: " DEFAULT_BUS_PATH ")\n",
program_invocation_short_name);
return 0;
assert(argc >= 0);
assert(argv);
- while ((c = getopt_long(argc, argv, "hsup:", options, NULL)) >= 0) {
+ while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) {
switch (c) {
int events_a, events_b, fd;
uint64_t timeout_a, timeout_b, t;
struct timespec _ts, *ts;
+ struct pollfd *pollfd;
int k;
r = sd_bus_process(a, &m);
ts = timespec_store(&_ts, t);
}
- {
- struct pollfd p[3] = {
- {.fd = fd, .events = events_a, },
- {.fd = STDIN_FILENO, .events = events_b & POLLIN, },
- {.fd = STDOUT_FILENO, .events = events_b & POLLOUT, }};
+ pollfd = (struct pollfd[3]) {
+ {.fd = fd, .events = events_a, },
+ {.fd = in_fd, .events = events_b & POLLIN, },
+ {.fd = out_fd, .events = events_b & POLLOUT, }
+ };
- r = ppoll(p, ELEMENTSOF(p), ts, NULL);
- }
+ r = ppoll(pollfd, 3, ts, NULL);
if (r < 0) {
log_error("ppoll() failed: %m");
goto finish;