cups: fix for cups not building without avahi
authorSaul Wold <sgw@linux.intel.com>
Mon, 19 May 2014 20:43:40 +0000 (13:43 -0700)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 21 May 2014 08:09:03 +0000 (09:09 +0100)
Backport upstream patch for CUPS issue: STR #4402

[YOCTO #6325]

(From OE-Core rev: 7decf9dce56868e39902dac5957eb72f6e1e9acd)

Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/recipes-extended/cups/cups/cups-str4402.patch [new file with mode: 0644]

diff --git a/meta/recipes-extended/cups/cups/cups-str4402.patch b/meta/recipes-extended/cups/cups/cups-str4402.patch
new file mode 100644 (file)
index 0000000..69d349c
--- /dev/null
@@ -0,0 +1,190 @@
+
+
+Upstream CUPS issue when building with out dnssd/avahi
+
+https://www.cups.org/str.php?L4408+P-1+S-2+C0+I0+E0+Q
+
+Upstream-Status: Backport [STR #4402]
+
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+
+--- a/scheduler/dirsvc.c       2014-03-05 13:11:32.000000000 -0800
++++ b/shceduler/dirsvc.c       2014-05-19 11:33:51.743124614 -0700
+@@ -50,6 +50,9 @@
+ static void           update_lpd(int onoff);
+ static void           update_smb(int onoff);
++static void           deregister_all_printers(int from_callback);
++static void           register_all_printers(int from_callback);
++
+ #if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+ #  ifdef __APPLE__
+@@ -60,12 +63,10 @@
+ #  ifdef HAVE_AVAHI
+ static void           dnssdClientCallback(AvahiClient *c, AvahiClientState state, void *userdata);
+ #  endif /* HAVE_AVAHI */
+-static void           dnssdDeregisterAllPrinters(int from_callback);
+ static void           dnssdDeregisterInstance(cupsd_srv_t *srv, int from_callback);
+ static void           dnssdDeregisterPrinter(cupsd_printer_t *p, int clear_name, int from_callback);
+ static const char     *dnssdErrorString(int error);
+ static void           dnssdFreeTxtRecord(cupsd_txt_t *txt);
+-static void           dnssdRegisterAllPrinters(int from_callback);
+ #  ifdef HAVE_DNSSD
+ static void           dnssdRegisterCallback(DNSServiceRef sdRef,
+                                             DNSServiceFlags flags,
+@@ -241,7 +242,7 @@
+   * Register the individual printers
+   */
+-  dnssdRegisterAllPrinters(0);
++  register_all_printers(0);
+ }
+@@ -259,7 +260,7 @@
+   * De-register the individual printers
+   */
+-  dnssdDeregisterAllPrinters(0);
++  deregister_all_printers(0);
+  /*
+   * Shut down browsing sockets...
+@@ -579,7 +580,7 @@
+       * Register the individual printers
+       */
+-      dnssdRegisterAllPrinters(1);
++      register_all_printers(1);
+       break;
+     case AVAHI_CLIENT_FAILURE:
+@@ -591,7 +592,7 @@
+         * Unregister everything and close the client...
+         */
+-        dnssdDeregisterAllPrinters(1);
++        deregister_all_printers(1);
+         dnssdDeregisterInstance(&WebIFSrv, 1);
+         avahi_client_free(DNSSDClient);
+         DNSSDClient = NULL;
+@@ -631,28 +632,6 @@
+ /*
+- * 'dnssdDeregisterAllPrinters()' - Deregister all printers.
+- */
+-
+-static void
+-dnssdDeregisterAllPrinters(
+-    int             from_callback)    /* I - Deregistering because of callback? */
+-{
+-  cupsd_printer_t     *p;             /* Current printer */
+-
+-
+-  if (!DNSSDMaster)
+-    return;
+-
+-  for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
+-       p;
+-       p = (cupsd_printer_t *)cupsArrayNext(Printers))
+-    if (!(p->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_SCANNER)))
+-      dnssdDeregisterPrinter(p, 1, from_callback);
+-}
+-
+-
+-/*
+  * 'dnssdDeregisterInstance()' - Deregister a DNS-SD service instance.
+  */
+@@ -858,27 +837,6 @@
+ /*
+- * 'dnssdRegisterAllPrinters()' - Register all printers.
+- */
+-
+-static void
+-dnssdRegisterAllPrinters(int from_callback)   /* I - Called from callback? */
+-{
+-  cupsd_printer_t     *p;                     /* Current printer */
+-
+-
+-  if (!DNSSDMaster)
+-    return;
+-
+-  for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
+-       p;
+-       p = (cupsd_printer_t *)cupsArrayNext(Printers))
+-    if (!(p->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_SCANNER)))
+-      dnssdRegisterPrinter(p, from_callback);
+-}
+-
+-
+-/*
+  * 'dnssdRegisterCallback()' - DNSServiceRegister callback.
+  */
+@@ -1813,6 +1771,61 @@
+ }
++/*
++ * 'deregister_all_printers()' - Deregister all printers.
++ */
++
++static void
++deregister_all_printers(
++    int             from_callback)    /* I - Deregistering because of callback? */
++{
++  cupsd_printer_t     *p;             /* Current printer */
++
++
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
++  if (!DNSSDMaster)
++    return;
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
++
++  for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
++       p;
++       p = (cupsd_printer_t *)cupsArrayNext(Printers))
++    if (!(p->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_SCANNER)))
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
++      dnssdDeregisterPrinter(p, 1, from_callback);
++#else
++      cupsdDeregisterPrinter(p, 1);
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
++}
++
++
++/*
++ * 'register_all_printers()' - Register all printers.
++ */
++
++static void
++register_all_printers(int from_callback)      /* I - Called from callback? */
++{
++  cupsd_printer_t     *p;                     /* Current printer */
++
++
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
++  if (!DNSSDMaster)
++    return;
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
++
++  for (p = (cupsd_printer_t *)cupsArrayFirst(Printers);
++       p;
++       p = (cupsd_printer_t *)cupsArrayNext(Printers))
++    if (!(p->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_SCANNER)))
++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
++      dnssdRegisterPrinter(p, from_callback);
++#else
++      cupsdRegisterPrinter(p);
++#endif /* HAVE_DNSSD || HAVE_AVAHI */
++}
++
++
+ /*
+  * End of "$Id: dirsvc.c 11688 2014-03-05 21:11:32Z msweet $".
+  */