]> Pileus Git - ~andy/gtk/commitdiff
Bug 670373: modules/printing/cups/gtkprintbackendcups.c won't build with CUPS 1.6
authorJohn Ralls <jralls@ceridwen.us>
Sun, 19 Feb 2012 21:48:19 +0000 (13:48 -0800)
committerJohn Ralls <jralls@ceridwen.us>
Mon, 23 Apr 2012 19:44:06 +0000 (12:44 -0700)
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.

modules/printbackends/cups/gtkprintbackendcups.c

index 0b2e2c27a5fe0e68dbc1ec2d60580840c3f03368..b17f94ccb443e922f706aae60d7539bc37716b18 100644 (file)
@@ -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))