Submitted By: Pierre Labastie Date: 2014-04-30 Initial Package Version: 1.7.2 Upstream Status: Submitted Origin: Ferran Selles in cups bug tracker Description: Remove dependency on avahi for CUPS --- a/scheduler/dirsvc.c 2014-04-24 16:45:32.000000000 +0200 +++ b/scheduler/dirsvc.c 2014-04-24 16:21:44.000000000 +0200 @@ -50,6 +50,9 @@ static int get_hostconfig(const char *n 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 @@ static cupsd_txt_t dnssdBuildTxtRecord(c # 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 @@ cupsdStartBrowsing(void) * Register the individual printers */ - dnssdRegisterAllPrinters(0); + register_all_printers(0); } @@ -259,7 +260,7 @@ cupsdStopBrowsing(void) * De-register the individual printers */ - dnssdDeregisterAllPrinters(0); + deregister_all_printers(0); /* * Shut down browsing sockets... @@ -540,7 +541,7 @@ dnssdClientCallback( * Register the individual printers */ - dnssdRegisterAllPrinters(1); + register_all_printers(1); break; case AVAHI_CLIENT_FAILURE: @@ -552,7 +553,7 @@ dnssdClientCallback( * Unregister everything and close the client... */ - dnssdDeregisterAllPrinters(1); + deregister_all_printers(1); dnssdDeregisterInstance(&WebIFSrv, 1); avahi_client_free(DNSSDClient); DNSSDClient = NULL; @@ -592,28 +593,6 @@ dnssdClientCallback( /* - * '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. */ @@ -819,27 +798,6 @@ dnssdFreeTxtRecord(cupsd_txt_t *txt) /* /* - * '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. */ @@ -1775,5 +1733,60 @@ update_smb(int onoff) /* I - 1 = turn /* + * '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 $". */