diff options
Diffstat (limited to 'notifier/dbus.c')
-rw-r--r-- | notifier/dbus.c | 118 |
1 files changed, 75 insertions, 43 deletions
diff --git a/notifier/dbus.c b/notifier/dbus.c index 13e3840..08449d3 100644 --- a/notifier/dbus.c +++ b/notifier/dbus.c @@ -1,5 +1,5 @@ /* - * "$Id: dbus.c 10178 2012-01-13 23:00:22Z mike $" + * "$Id: dbus.c 11173 2013-07-23 12:31:34Z msweet $" * * D-Bus notifier for CUPS. * @@ -32,13 +32,14 @@ #include <sys/types.h> #include <unistd.h> -#include <dbus/dbus.h> -#ifdef HAVE_DBUS_MESSAGE_ITER_INIT_APPEND -# define dbus_message_append_iter_init dbus_message_iter_init_append -# define dbus_message_iter_append_string(i,v) dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, v) -# define dbus_message_iter_append_uint32(i,v) dbus_message_iter_append_basic(i, DBUS_TYPE_UINT32, v) -# define dbus_message_iter_append_boolean(i,v) dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, v) -#endif /* HAVE_DBUS_MESSAGE_ITER_INIT_APPEND */ +#ifdef HAVE_DBUS +# include <dbus/dbus.h> +# ifdef HAVE_DBUS_MESSAGE_ITER_INIT_APPEND +# define dbus_message_append_iter_init dbus_message_iter_init_append +# define dbus_message_iter_append_string(i,v) dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, v) +# define dbus_message_iter_append_uint32(i,v) dbus_message_iter_append_basic(i, DBUS_TYPE_UINT32, v) +# define dbus_message_iter_append_boolean(i,v) dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, v) +# endif /* HAVE_DBUS_MESSAGE_ITER_INIT_APPEND */ /* @@ -283,11 +284,11 @@ main(int argc, /* I - Number of command-line args */ continue; attr = ippFindAttribute(msg, "notify-subscribed-event", - IPP_TAG_KEYWORD); + IPP_TAG_KEYWORD); if (!attr) continue; - event = attr->values[0].string.text; + event = ippGetString(attr, 0, NULL); if (!strncmp(event, "server-", 7)) { const char *word2 = event + 7; /* Second word */ @@ -363,9 +364,13 @@ main(int argc, /* I - Number of command-line args */ dbus_message_append_iter_init(message, &iter); attr = ippFindAttribute(msg, "notify-text", IPP_TAG_TEXT); - if (!attr) - goto bail; - if (!dbus_message_iter_append_string(&iter, &(attr->values[0].string.text))) + if (attr) + { + const char *val = ippGetString(attr, 0, NULL); + if (!dbus_message_iter_append_string(&iter, &val)) + goto bail; + } + else goto bail; if (params >= PARAMS_PRINTER) @@ -379,9 +384,9 @@ main(int argc, /* I - Number of command-line args */ attr = ippFindAttribute(msg, "notify-printer-uri", IPP_TAG_URI); if (attr) { - if (!dbus_message_iter_append_string(&iter, - &(attr->values[0].string.text))) - goto bail; + const char *val = ippGetString(attr, 0, NULL); + if (!dbus_message_iter_append_string(&iter, &val)) + goto bail; } else { @@ -393,14 +398,14 @@ main(int argc, /* I - Number of command-line args */ if (have_printer_params) { attr = ippFindAttribute(msg, "printer-name", IPP_TAG_NAME); - if (attr) - { - if (!dbus_message_iter_append_string(&iter, - &(attr->values[0].string.text))) - goto bail; - } - else - goto bail; + if (attr) + { + const char *val = ippGetString(attr, 0, NULL); + if (!dbus_message_iter_append_string(&iter, &val)) + goto bail; + } + else + goto bail; } else dbus_message_iter_append_string(&iter, &nul); @@ -410,7 +415,10 @@ main(int argc, /* I - Number of command-line args */ { attr = ippFindAttribute(msg, "printer-state", IPP_TAG_ENUM); if (attr) - dbus_message_iter_append_uint32(&iter, &(attr->values[0].integer)); + { + dbus_uint32_t val = ippGetInteger(attr, 0); + dbus_message_iter_append_uint32(&iter, &val); + } else goto bail; } @@ -424,19 +432,20 @@ main(int argc, /* I - Number of command-line args */ IPP_TAG_KEYWORD); if (attr) { - for (reasons_length = 0, i = 0; i < attr->num_values; i++) + int num_values = ippGetCount(attr); + for (reasons_length = 0, i = 0; i < num_values; i++) /* All need commas except the last, which needs a nul byte. */ - reasons_length += 1 + strlen(attr->values[i].string.text); + reasons_length += 1 + strlen(ippGetString(attr, i, NULL)); printer_reasons = malloc(reasons_length); if (!printer_reasons) goto bail; p = printer_reasons; - for (i = 0; i < attr->num_values; i++) + for (i = 0; i < num_values; i++) { if (i) *p++ = ','; - strcpy(p, attr->values[i].string.text); + strcpy(p, ippGetString(attr, i, NULL)); p += strlen(p); } if (!dbus_message_iter_append_string(&iter, &printer_reasons)) @@ -454,7 +463,10 @@ main(int argc, /* I - Number of command-line args */ attr = ippFindAttribute(msg, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN); if (attr) - dbus_message_iter_append_boolean(&iter, &(attr->values[0].boolean)); + { + dbus_bool_t val = ippGetBoolean(attr, 0); + dbus_message_iter_append_boolean(&iter, &val); + } else goto bail; } @@ -470,33 +482,42 @@ main(int argc, /* I - Number of command-line args */ /* UINT32 job-id */ attr = ippFindAttribute(msg, "notify-job-id", IPP_TAG_INTEGER); - if (!attr) + if (attr) + { + dbus_uint32_t val = ippGetInteger(attr, 0); + dbus_message_iter_append_uint32(&iter, &val); + } + else goto bail; - dbus_message_iter_append_uint32(&iter, &(attr->values[0].integer)); /* UINT32 job-state */ attr = ippFindAttribute(msg, "job-state", IPP_TAG_ENUM); - if (!attr) + if (attr) + { + dbus_uint32_t val = ippGetInteger(attr, 0); + dbus_message_iter_append_uint32(&iter, &val); + } + else goto bail; - dbus_message_iter_append_uint32(&iter, &(attr->values[0].integer)); /* STRING job-state-reasons */ attr = ippFindAttribute(msg, "job-state-reasons", IPP_TAG_KEYWORD); if (attr) { - for (reasons_length = 0, i = 0; i < attr->num_values; i++) + int num_values = ippGetCount(attr); + for (reasons_length = 0, i = 0; i < num_values; i++) /* All need commas except the last, which needs a nul byte. */ - reasons_length += 1 + strlen(attr->values[i].string.text); + reasons_length += 1 + strlen(ippGetString(attr, i, NULL)); job_reasons = malloc(reasons_length); if (!job_reasons) goto bail; p = job_reasons; - for (i = 0; i < attr->num_values; i++) + for (i = 0; i < num_values; i++) { if (i) *p++ = ','; - strcpy(p, attr->values[i].string.text); + strcpy(p, ippGetString(attr, i, NULL)); p += strlen(p); } if (!dbus_message_iter_append_string(&iter, &job_reasons)) @@ -509,8 +530,8 @@ main(int argc, /* I - Number of command-line args */ attr = ippFindAttribute(msg, "job-name", IPP_TAG_NAME); if (attr) { - if (!dbus_message_iter_append_string(&iter, - &(attr->values[0].string.text))) + const char *val = ippGetString(attr, 0, NULL); + if (!dbus_message_iter_append_string(&iter, &val)) goto bail; } else @@ -519,9 +540,13 @@ main(int argc, /* I - Number of command-line args */ /* UINT32 job-impressions-completed */ attr = ippFindAttribute(msg, "job-impressions-completed", IPP_TAG_INTEGER); - if (!attr) + if (attr) + { + dbus_uint32_t val = ippGetInteger(attr, 0); + dbus_message_iter_append_uint32(&iter, &val); + } + else goto bail; - dbus_message_iter_append_uint32(&iter, &(attr->values[0].integer)); } dbus_connection_send(con, message, NULL); @@ -588,8 +613,15 @@ acquire_lock(int *fd, /* O - Lock file descriptor */ else return (0); } +#else /* !HAVE_DBUS */ +int +main(void) +{ + return (1); +} +#endif /* HAVE_DBUS */ /* - * End of "$Id: dbus.c 10178 2012-01-13 23:00:22Z mike $". + * End of "$Id: dbus.c 11173 2013-07-23 12:31:34Z msweet $". */ |