From f983196d446563ad53eef803428760af3f0be10d Mon Sep 17 00:00:00 2001 From: Andrew Zaborowski Date: Sat, 2 Apr 2016 01:05:42 +0200 Subject: [PATCH] client: Avoid obsolete src/kdbus.c functions Stop using the src/kdbus.c functions that duplicate ell functionality so they can be removed. Actually connect to dbus and for now just listen for signals. --- client/main.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/client/main.c b/client/main.c index e6ce5f6e..e93431f3 100644 --- a/client/main.c +++ b/client/main.c @@ -25,14 +25,56 @@ #endif #include +#include #include #include "src/kdbus.h" +static void signal_handler(struct l_signal *signal, uint32_t signo, + void *user_data) +{ + switch (signo) { + case SIGINT: + case SIGTERM: + l_info("Terminate"); + l_main_quit(); + break; + } +} + +static void signal_message(struct l_dbus_message *message, void *user_data) +{ + const char *path, *interface, *member, *destination, *sender; + + path = l_dbus_message_get_path(message); + destination = l_dbus_message_get_destination(message); + + l_info("path=%s destination=%s", path, destination); + + interface = l_dbus_message_get_interface(message); + member = l_dbus_message_get_member(message); + + l_info("interface=%s member=%s", interface, member); + + sender = l_dbus_message_get_sender(message); + + l_info("sender=%s", sender); +} + int main(int argc, char *argv[]) { char *bus_name; + char bus_address[64]; int exit_status; + struct l_dbus *dbus; + struct l_signal *signal; + sigset_t mask; + + sigemptyset(&mask); + sigaddset(&mask, SIGINT); + sigaddset(&mask, SIGTERM); + + signal = l_signal_create(&mask, signal_handler, NULL, NULL); l_log_set_stderr(); l_debug_enable("*"); @@ -45,18 +87,27 @@ int main(int argc, char *argv[]) l_debug("Bus location: %s", bus_name); - if (!kdbus_open_bus(bus_name, NULL, "iwctl")) { + snprintf(bus_address, sizeof(bus_address), "kernel:path=%s", bus_name); + + l_free(bus_name); + + dbus = l_dbus_new(bus_address); + if (!dbus) { exit_status = EXIT_FAILURE; - goto destroy; + goto done; } + l_dbus_add_signal_watch(dbus, "net.connman.iwd", NULL, NULL, NULL, + L_DBUS_MATCH_NONE, signal_message, NULL); + + l_main_run(); + exit_status = EXIT_SUCCESS; -destroy: - l_free(bus_name); - - kdbus_close_bus(); + l_dbus_destroy(dbus); done: + l_signal_remove(signal); + return exit_status; }