From 44972017887901de0ff95a774bf358a2f2fa43d2 Mon Sep 17 00:00:00 2001 From: Olliver Schinagl Date: Fri, 8 May 2015 15:24:07 +0200 Subject: Add getFileHandlers from griffin, this patch breaks build Signed-off-by: Olliver Schinagl --- src/eulogium.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/eulogium.c b/src/eulogium.c index a8b9d99..60c465a 100644 --- a/src/eulogium.c +++ b/src/eulogium.c @@ -1247,26 +1247,28 @@ static void eulogium_printer_status_set(struct eulogium_data *eulogium, struct _ eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getError", _on_get_error_ret, eulogium, -1, ""); } -static void _on_get_status_ret(void *data, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED) +static void _on_get_file_handlers_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED) { const char *errname, *errmsg; - struct eulogium_data *eulogium = data; - Eldbus_Message_Iter *iter; - struct _status_msg status; + Eldbus_Message_Iter *array; + uint_fast8_t num_file_handlers, i; + char **file_handlers; if (eldbus_message_error_get(msg, &errname, &errmsg)) { EINA_LOG_ERR("%s %s", errname, errmsg); return; } - if (!eldbus_message_arguments_get(msg, "(ns)", &iter)) { - EINA_LOG_ERR("Failed to get printer status."); + if (!eldbus_message_arguments_get(msg, "yas", &num_file_handlers, &array)) { + EINA_LOG_ERR("Message content does not match expected \"as\" signature."); return; } - if (!eldbus_message_iter_arguments_get(iter, "ns", &status.i, &status.s)) { - EINA_LOG_ERR("Message content does not match expected \"ns\" signature."); - return; + file_handlers = malloc(num_file_handlers * sizeof(char *)); + for (i = 0; i < num_file_handlers; i++) { + if (!eldbus_message_iter_get_and_next(array, 's', &file_handlers[i])) + EINA_LOG_ERR("Message content does not match expected \"s\" signature."); + printf("fh: %s\n", file_handlers[i]); } - eulogium_printer_status_set(eulogium, &status); + free(file_handlers); /* TODO: Return filehandlers via data, free array after use there. Cache results during runtime prob. */ } static void _on_status_changed_ret(void *data, const Eldbus_Message *msg) @@ -1344,6 +1346,7 @@ static int eulogium_dbus_init(struct eulogium_data *eulogium) * and the statusChanged signal may not have been fired yet */ /* TODO: put signal/method name strings in macro/LUT */ + eldbus_proxy_call(eulogium->dbus.proxy[HARMA], "getFileHandlers", _on_get_file_handlers_ret, NULL, -1, ""); eldbus_proxy_call(eulogium->dbus.proxy[PRINTER], "getStatus", _on_get_status_ret, eulogium, -1, ""); eldbus_proxy_signal_handler_add(eulogium->dbus.proxy[PRINTER], "statusChanged", _on_status_changed_ret, eulogium); -- cgit v0.12