diff options
author | John Ralls <jralls@ceridwen.us> | 2012-02-19 13:48:19 -0800 |
---|---|---|
committer | John Ralls <jralls@ceridwen.us> | 2012-04-23 12:44:06 -0700 |
commit | 02f57f96427bc91a72a40ba39b6a806402b64d21 (patch) | |
tree | fe032692181523594e06c752ad81b85b44c23821 /modules/printbackends | |
parent | 3e354a17efbaea9374a54ae0de0745392f72c2d5 (diff) | |
download | gtk+-02f57f96427bc91a72a40ba39b6a806402b64d21.tar.gz |
Bug 670373: modules/printing/cups/gtkprintbackendcups.c won't build with CUPS 1.6
Having refactored cups_request_printer_list_cb so that the cups
version-dependent block size is small enough to be handled in a single ifdef,
make the ifdef HAVE_CUPS_API_1_6 block.
Diffstat (limited to 'modules/printbackends')
-rw-r--r-- | modules/printbackends/cups/gtkprintbackendcups.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/modules/printbackends/cups/gtkprintbackendcups.c b/modules/printbackends/cups/gtkprintbackendcups.c index 0b2e2c27a5..b17f94ccb4 100644 --- a/modules/printbackends/cups/gtkprintbackendcups.c +++ b/modules/printbackends/cups/gtkprintbackendcups.c @@ -2007,7 +2007,29 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend, removed_printer_checklist = gtk_print_backend_get_printer_list (backend); response = gtk_cups_result_get_response (result); +#ifdef HAVE_CUPS_API_1_6 + for (attr = ippFirstAttribute (response); attr != NULL; + attr = ippNextAttribute (response)) + { + GtkPrinter *printer; + gboolean status_changed = FALSE; + GList *node; + gint i; + PrinterSetupInfo *info = g_slice_new0 (PrinterSetupInfo); + + /* Skip leading attributes until we hit a printer... + */ + while (attr != NULL && ippGetGroupTag (attr) != IPP_TAG_PRINTER) + attr = ippNextAttribute (response); + if (attr == NULL) + break; + while (attr != NULL && ippGetGroupTag (attr) == IPP_TAG_PRINTER) + { + cups_printer_handle_attribute (cups_backend, attr, info); + attr = ippNextAttribute (response); + } +#else for (attr = response->attrs; attr != NULL; attr = attr->next) { GtkPrinter *printer; @@ -2024,12 +2046,12 @@ cups_request_printer_list_cb (GtkPrintBackendCups *cups_backend, if (attr == NULL) break; - while (attr != NULL && ippGetGroupTag (attr) == IPP_TAG_PRINTER) { cups_printer_handle_attribute (cups_backend, attr, info); attr = attr->next; } +#endif if (info->printer_name == NULL || (info->printer_uri == NULL && info->member_uris == NULL)) |