-diff -up cups-1.6.2/cups/http-support.c.avahi-address cups-1.6.2/cups/http-support.c
---- cups-1.6.2/cups/http-support.c.avahi-address 2013-03-11 18:44:36.000000000 +0000
-+++ cups-1.6.2/cups/http-support.c 2013-06-28 13:42:15.834715511 +0100
-@@ -2121,7 +2121,7 @@ http_resolve_cb(
+diff -up cups-2.0rc1/cups/http-support.c.avahi-address cups-2.0rc1/cups/http-support.c
+--- cups-2.0rc1/cups/http-support.c.avahi-address 2014-08-28 17:37:22.000000000 +0200
++++ cups-2.0rc1/cups/http-support.c 2014-09-12 15:31:45.062950696 +0200
+@@ -2342,7 +2342,7 @@ http_resolve_cb(
const char *type, /* I - Registration type */
const char *domain, /* I - Domain (unused) */
const char *hostTarget, /* I - Hostname */
uint16_t port, /* I - Port number */
AvahiStringList *txt, /* I - TXT record */
AvahiLookupResultFlags flags, /* I - Lookup flags (unused) */
-@@ -2248,41 +2248,59 @@ http_resolve_cb(
+@@ -2495,39 +2495,62 @@ http_resolve_cb(
* getting the IP address of the .local name and then do reverse-lookups...
*/
+
+ if (!error)
{
-- int error = getnameinfo(&(addr->addr.addr),
-- httpAddrLength(&(addr->addr)),
-- fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD);
+- int error = getnameinfo(&(addr->addr.addr), (socklen_t)httpAddrLength(&(addr->addr)), fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD);
+ DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn));
- if (!error)
+- {
+- DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn));
+ if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn ||
+ _cups_strcasecmp(hostptr, ".local"))
- {
-- DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn));
--
+
- if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn ||
- _cups_strcasecmp(hostptr, ".local"))
- {
- hostTarget = fqdn;
- break;
- }
++ {
+ hostTarget = fqdn;
}
+ } else {
+ avahi_address_snprint (fqdn, sizeof (fqdn), address);
+ hostTarget = fqdn;
++
#ifdef DEBUG
- else
- DEBUG_printf(("8http_resolve_cb: \"%s\" did not resolve: %d",
+ fqdn, error));
#endif /* DEBUG */
}
--
+
- httpAddrFreeList(addrlist);
}
+ } else {
-diff -up cups-1.7.2/scheduler/avahi.c.avahi-no-threaded cups-1.7.2/scheduler/avahi.c
---- cups-1.7.2/scheduler/avahi.c.avahi-no-threaded 2014-04-14 13:56:52.632617316 +0200
-+++ cups-1.7.2/scheduler/avahi.c 2014-04-14 13:56:52.631617331 +0200
+diff -up cups-2.0rc1/scheduler/avahi.c.avahi-no-threaded cups-2.0rc1/scheduler/avahi.c
+--- cups-2.0rc1/scheduler/avahi.c.avahi-no-threaded 2014-09-12 15:45:28.772280006 +0200
++++ cups-2.0rc1/scheduler/avahi.c 2014-09-12 15:45:28.772280006 +0200
@@ -0,0 +1,441 @@
+/*
+ * "$Id$"
+/*
+ * End of "$Id$".
+ */
-diff -up cups-1.7.2/scheduler/avahi.h.avahi-no-threaded cups-1.7.2/scheduler/avahi.h
---- cups-1.7.2/scheduler/avahi.h.avahi-no-threaded 2014-04-14 13:56:52.632617316 +0200
-+++ cups-1.7.2/scheduler/avahi.h 2014-04-14 13:56:52.632617316 +0200
+diff -up cups-2.0rc1/scheduler/avahi.h.avahi-no-threaded cups-2.0rc1/scheduler/avahi.h
+--- cups-2.0rc1/scheduler/avahi.h.avahi-no-threaded 2014-09-12 15:45:28.772280006 +0200
++++ cups-2.0rc1/scheduler/avahi.h 2014-09-12 15:45:28.772280006 +0200
@@ -0,0 +1,69 @@
+/*
+ * "$Id$"
+/*
+ * End of "$Id$".
+ */
-diff -up cups-1.7.2/scheduler/cupsd.h.avahi-no-threaded cups-1.7.2/scheduler/cupsd.h
---- cups-1.7.2/scheduler/cupsd.h.avahi-no-threaded 2013-05-29 13:51:34.000000000 +0200
-+++ cups-1.7.2/scheduler/cupsd.h 2014-04-14 13:56:52.632617316 +0200
+diff -up cups-2.0rc1/scheduler/cupsd.h.avahi-no-threaded cups-2.0rc1/scheduler/cupsd.h
+--- cups-2.0rc1/scheduler/cupsd.h.avahi-no-threaded 2014-03-21 17:42:53.000000000 +0100
++++ cups-2.0rc1/scheduler/cupsd.h 2014-09-12 15:47:02.886945551 +0200
@@ -119,6 +119,7 @@ extern const char *cups_hstrerror(int);
#include "colorman.h"
#include "conf.h"
/*
* Globals...
-@@ -165,6 +175,11 @@ VAR int Launchd VALUE(0);
- /* Running from launchd */
- #endif /* HAVE_LAUNCH_H */
+@@ -163,6 +173,10 @@ VAR int OnDemand VALUE(0);
+ /* Launched on demand */
+ #endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#ifdef HAVE_AVAHI
+VAR cups_array_t *Timeouts; /* Timed callbacks for main loop */
+#endif /* HAVE_AVAHI */
-+
+
/*
* Prototypes...
-@@ -229,6 +244,17 @@ extern void cupsdStopSelect(void);
+@@ -226,6 +240,17 @@ extern void cupsdStopSelect(void);
extern void cupsdStartServer(void);
extern void cupsdStopServer(void);
+#endif /* HAVE_AVAHI */
/*
- * End of "$Id: cupsd.h 10996 2013-05-29 11:51:34Z msweet $".
-diff -up cups-1.7.2/scheduler/dirsvc.c.avahi-no-threaded cups-1.7.2/scheduler/dirsvc.c
---- cups-1.7.2/scheduler/dirsvc.c.avahi-no-threaded 2014-03-05 22:11:32.000000000 +0100
-+++ cups-1.7.2/scheduler/dirsvc.c 2014-04-14 14:21:11.121344106 +0200
+ * End of "$Id: cupsd.h 11717 2014-03-21 16:42:53Z msweet $".
+diff -up cups-2.0rc1/scheduler/dirsvc.c.avahi-no-threaded cups-2.0rc1/scheduler/dirsvc.c
+--- cups-2.0rc1/scheduler/dirsvc.c.avahi-no-threaded 2014-05-09 22:57:11.000000000 +0200
++++ cups-2.0rc1/scheduler/dirsvc.c 2014-09-12 15:45:28.773279992 +0200
@@ -195,7 +195,7 @@ cupsdStartBrowsing(void)
cupsdUpdateDNSSDName();
}
# endif /* HAVE_DNSSD */
}
-@@ -606,7 +604,7 @@ dnssdClientCallback(
+@@ -608,7 +606,7 @@ dnssdClientCallback(
* Renew Avahi client...
*/
if (!DNSSDClient)
{
-@@ -670,13 +668,7 @@ dnssdDeregisterInstance(
+@@ -672,13 +670,7 @@ dnssdDeregisterInstance(
DNSServiceRefDeallocate(*srv);
# else /* HAVE_AVAHI */
# endif /* HAVE_DNSSD */
*srv = NULL;
-@@ -997,16 +989,10 @@ dnssdRegisterInstance(
+@@ -999,16 +991,10 @@ dnssdRegisterInstance(
(void)commit;
# else /* HAVE_AVAHI */
cupsdLogMessage(CUPSD_LOG_WARN, "DNS-SD registration of \"%s\" failed: %s",
name, dnssdErrorString(avahi_client_errno(DNSSDClient)));
return (0);
-@@ -1121,9 +1107,6 @@ dnssdRegisterInstance(
+@@ -1123,9 +1109,6 @@ dnssdRegisterInstance(
cupsdLogMessage(CUPSD_LOG_DEBUG, "DNS-SD commit of \"%s\" failed.",
name);
}
# endif /* HAVE_DNSSD */
if (error)
-@@ -1294,12 +1277,10 @@ dnssdStop(void)
+@@ -1296,12 +1279,10 @@ dnssdStop(void)
DNSSDMaster = NULL;
# else /* HAVE_AVAHI */
DNSSDMaster = NULL;
# endif /* HAVE_DNSSD */
-diff -up cups-1.7.2/scheduler/dirsvc.h.avahi-no-threaded cups-1.7.2/scheduler/dirsvc.h
---- cups-1.7.2/scheduler/dirsvc.h.avahi-no-threaded 2013-05-29 13:51:34.000000000 +0200
-+++ cups-1.7.2/scheduler/dirsvc.h 2014-04-14 13:56:52.633617302 +0200
+diff -up cups-2.0rc1/scheduler/dirsvc.h.avahi-no-threaded cups-2.0rc1/scheduler/dirsvc.h
+--- cups-2.0rc1/scheduler/dirsvc.h.avahi-no-threaded 2013-05-29 13:51:34.000000000 +0200
++++ cups-2.0rc1/scheduler/dirsvc.h 2014-09-12 15:45:28.773279992 +0200
@@ -51,7 +51,7 @@ VAR cups_array_t *DNSSDPrinters VALUE(NU
VAR DNSServiceRef DNSSDMaster VALUE(NULL);
/* Master DNS-SD service reference */
/* Master polling interface for Avahi */
VAR AvahiClient *DNSSDClient VALUE(NULL);
/* Client information */
-diff -up cups-1.7.2/scheduler/main.c.avahi-no-threaded cups-1.7.2/scheduler/main.c
---- cups-1.7.2/scheduler/main.c.avahi-no-threaded 2014-04-14 13:56:52.600617782 +0200
-+++ cups-1.7.2/scheduler/main.c 2014-04-14 13:56:52.634617287 +0200
-@@ -134,6 +134,10 @@ main(int argc, /* I - Number of comm
- int launchd_idle_exit;
+diff -up cups-2.0rc1/scheduler/main.c.avahi-no-threaded cups-2.0rc1/scheduler/main.c
+--- cups-2.0rc1/scheduler/main.c.avahi-no-threaded 2014-09-12 15:45:28.736280516 +0200
++++ cups-2.0rc1/scheduler/main.c 2014-09-12 15:47:43.433370643 +0200
+@@ -127,6 +127,10 @@ main(int argc, /* I - Number of comm
+ int service_idle_exit;
/* Idle exit on select timeout? */
- #endif /* HAVE_LAUNCHD */
+ #endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#ifdef HAVE_AVAHI
+ cupsd_timeout_t *tmo; /* Next scheduled timed callback */
+ long tmo_delay; /* Time before it must be called */
#ifdef HAVE_GETEUID
-@@ -583,6 +587,14 @@ main(int argc, /* I - Number of comm
+@@ -569,6 +573,14 @@ main(int argc, /* I - Number of comm
httpInitialize();
cupsdStartServer();
/*
-@@ -904,6 +916,16 @@ main(int argc, /* I - Number of comm
+@@ -871,6 +883,16 @@ main(int argc, /* I - Number of comm
}
#endif /* __APPLE__ */
#ifndef __APPLE__
/*
* Update the network interfaces once a minute...
-@@ -1884,6 +1906,10 @@ select_timeout(int fds) /* I - Number
+@@ -1562,6 +1584,10 @@ select_timeout(int fds) /* I - Number
cupsd_job_t *job; /* Job information */
cupsd_subscription_t *sub; /* Subscription information */
const char *why; /* Debugging aid */
cupsdLogMessage(CUPSD_LOG_DEBUG2, "select_timeout: JobHistoryUpdate=%ld",
-@@ -1929,6 +1955,19 @@ select_timeout(int fds) /* I - Number
+@@ -1607,6 +1633,19 @@ select_timeout(int fds) /* I - Number
}
#endif /* __APPLE__ */
/*
* Check whether we are accepting new connections...
*/
-diff -up cups-1.7.2/scheduler/Makefile.avahi-no-threaded cups-1.7.2/scheduler/Makefile
---- cups-1.7.2/scheduler/Makefile.avahi-no-threaded 2014-04-14 13:56:52.600617782 +0200
-+++ cups-1.7.2/scheduler/Makefile 2014-04-14 13:56:52.631617331 +0200
+diff -up cups-2.0rc1/scheduler/Makefile.avahi-no-threaded cups-2.0rc1/scheduler/Makefile
+--- cups-2.0rc1/scheduler/Makefile.avahi-no-threaded 2014-08-29 13:27:18.000000000 +0200
++++ cups-2.0rc1/scheduler/Makefile 2014-09-12 15:48:35.367634265 +0200
@@ -17,6 +17,7 @@ include ../Makedefs
CUPSDOBJS = \
banners.o \
cert.o \
classes.o \
-@@ -41,6 +42,7 @@ CUPSDOBJS = \
+@@ -40,7 +41,8 @@ CUPSDOBJS = \
+ server.o \
statbuf.o \
subscriptions.o \
- sysman.o \
-+ timeout.o \
- tls.o
+- sysman.o
++ sysman.o \
++ timeout.o
LIBOBJS = \
filter.o \
-diff -up cups-1.7.2/scheduler/timeout.c.avahi-no-threaded cups-1.7.2/scheduler/timeout.c
---- cups-1.7.2/scheduler/timeout.c.avahi-no-threaded 2014-04-14 13:56:52.634617287 +0200
-+++ cups-1.7.2/scheduler/timeout.c 2014-04-14 13:56:52.634617287 +0200
+ mime.o \
+diff -up cups-2.0rc1/scheduler/timeout.c.avahi-no-threaded cups-2.0rc1/scheduler/timeout.c
+--- cups-2.0rc1/scheduler/timeout.c.avahi-no-threaded 2014-09-12 15:45:28.775279963 +0200
++++ cups-2.0rc1/scheduler/timeout.c 2014-09-12 15:45:28.775279963 +0200
@@ -0,0 +1,235 @@
+/*
+ * "$Id$"
--- cups-1.2rc1/man/Makefile.wiget 2006-04-05 12:06:41.000000000 +0200
+++ cups-1.2rc1/man/Makefile 2006-04-05 12:07:50.000000000 +0200
-@@ -149,10 +149,10 @@
+@@ -140,13 +140,13 @@ install-data: all
done
for file in accept cupsreject reject; do \
$(RM) $(AMANDIR)/man$(MAN8DIR)/$$file.$(MAN8EXT); \
$(RM) $(AMANDIR)/man$(MAN8DIR)/cupsdisable.$(MAN8EXT)
- $(LN) cupsenable.$(MAN8EXT) $(AMANDIR)/man$(MAN8DIR)/cupsdisable.$(MAN8EXT)
+ echo ".so cupsenable.$(MAN8EXT)" > $(AMANDIR)/man$(MAN8DIR)/cupsdisable.$(MAN8EXT)
+ for file in cups-deviced cups-driverd cups-exec; do \
+ $(RM) $(AMANDIR)/man$(MAN8DIR)/$$file.$(MAN8EXT); \
+- $(LN) cupsd-helper.$(MAN8EXT) $(AMANDIR)/man$(MAN8DIR)/$$file.$(MAN8EXT); \
++ echo ".so cupsd-helper.$(MAN8EXT)" > $(AMANDIR)/man$(MAN8DIR)/$$file.$(MAN8EXT); \
+ done
- #
--- cups-1.4.0/config-scripts/cups-manpages.m4~ 2009-01-12 20:17:09.000000000 +0100
+++ cups-1.4.0/config-scripts/cups-manpages.m4 2009-08-29 22:32:49.346665192 +0200
@@ -69,10 +69,10 @@
-diff -up cups-1.7.2/config.h.in.systemd-socket cups-1.7.2/config.h.in
---- cups-1.7.2/config.h.in.systemd-socket 2014-02-27 16:57:59.000000000 +0100
-+++ cups-1.7.2/config.h.in 2014-04-17 14:05:04.104472016 +0200
-@@ -451,6 +451,13 @@
-
-
- /*
-+ * Do we have systemd support?
-+ */
-+
-+#undef HAVE_SYSTEMD
-+
-+
-+/*
- * Various scripting languages...
- */
-
-diff -up cups-1.7.2/config-scripts/cups-systemd.m4.systemd-socket cups-1.7.2/config-scripts/cups-systemd.m4
---- cups-1.7.2/config-scripts/cups-systemd.m4.systemd-socket 2014-04-17 14:05:04.104472016 +0200
-+++ cups-1.7.2/config-scripts/cups-systemd.m4 2014-04-17 14:05:04.104472016 +0200
-@@ -0,0 +1,36 @@
-+dnl
-+dnl "$Id$"
-+dnl
-+dnl systemd stuff for CUPS.
-+
-+dnl Find whether systemd is available
-+
-+SDLIBS=""
-+AC_ARG_WITH([systemdsystemunitdir],
-+ AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
-+ [], [with_systemdsystemunitdir=$($PKGCONFIG --variable=systemdsystemunitdir systemd)])
-+if test "x$with_systemdsystemunitdir" != xno; then
-+ AC_MSG_CHECKING(for libsystemd-daemon)
-+ if $PKGCONFIG --exists libsystemd-daemon; then
-+ AC_MSG_RESULT(yes)
-+ SDCFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
-+ SDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
-+ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
-+ AC_DEFINE(HAVE_SYSTEMD)
-+ else
-+ AC_MSG_RESULT(no)
-+ fi
-+fi
-+
-+if test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ; then
-+ SYSTEMD_UNITS="cups.service cups.socket cups.path"
-+else
-+ SYSTEMD_UNITS=""
-+fi
-+
-+AC_SUBST(SYSTEMD_UNITS)
-+AC_SUBST(SDLIBS)
-+
-+dnl
-+dnl "$Id$"
-+dnl
-diff -up cups-1.7.2/configure.in.systemd-socket cups-1.7.2/configure.in
---- cups-1.7.2/configure.in.systemd-socket 2013-07-08 23:15:13.000000000 +0200
-+++ cups-1.7.2/configure.in 2014-04-17 14:05:04.104472016 +0200
-@@ -33,6 +33,7 @@ sinclude(config-scripts/cups-pam.m4)
- sinclude(config-scripts/cups-largefile.m4)
- sinclude(config-scripts/cups-dnssd.m4)
- sinclude(config-scripts/cups-launchd.m4)
-+sinclude(config-scripts/cups-systemd.m4)
- sinclude(config-scripts/cups-defaults.m4)
- sinclude(config-scripts/cups-scripting.m4)
-
-@@ -67,6 +68,9 @@ AC_OUTPUT(Makedefs
- conf/snmp.conf
- cups-config
- data/testprint
-+ data/cups.service
-+ data/cups.socket
-+ data/cups.path
- desktop/cups.desktop
- doc/help/ref-cups-files-conf.html
- doc/help/ref-cupsd-conf.html
-diff -up cups-1.7.2/cups/usersys.c.systemd-socket cups-1.7.2/cups/usersys.c
---- cups-1.7.2/cups/usersys.c.systemd-socket 2014-03-05 22:22:12.000000000 +0100
-+++ cups-1.7.2/cups/usersys.c 2014-04-17 14:05:04.105472002 +0200
-@@ -1050,7 +1050,7 @@ cups_read_client_conf(
+diff -up cups-2.0.0/cups/usersys.c.systemd-socket cups-2.0.0/cups/usersys.c
+--- cups-2.0.0/cups/usersys.c.systemd-socket 2014-08-28 16:37:22.000000000 +0100
++++ cups-2.0.0/cups/usersys.c 2014-10-16 14:39:05.839530224 +0100
+@@ -1028,7 +1028,7 @@ cups_read_client_conf(
struct stat sockinfo; /* Domain socket information */
if (!stat(CUPS_DEFAULT_DOMAINSOCKET, &sockinfo) &&
cups_server = CUPS_DEFAULT_DOMAINSOCKET;
else
#endif /* CUPS_DEFAULT_DOMAINSOCKET */
-diff -up cups-1.7.2/data/cups.path.in.systemd-socket cups-1.7.2/data/cups.path.in
---- cups-1.7.2/data/cups.path.in.systemd-socket 2014-04-17 14:05:04.105472002 +0200
-+++ cups-1.7.2/data/cups.path.in 2014-04-17 14:05:04.105472002 +0200
-@@ -0,0 +1,8 @@
-+[Unit]
-+Description=CUPS Printer Service Spool
-+
-+[Path]
-+PathExistsGlob=@CUPS_REQUESTS@/d*
-+
-+[Install]
-+WantedBy=multi-user.target
-diff -up cups-1.7.2/data/cups.service.in.systemd-socket cups-1.7.2/data/cups.service.in
---- cups-1.7.2/data/cups.service.in.systemd-socket 2014-04-17 14:05:04.105472002 +0200
-+++ cups-1.7.2/data/cups.service.in 2014-04-17 14:05:04.105472002 +0200
-@@ -0,0 +1,11 @@
-+[Unit]
-+Description=CUPS Printing Service
-+
-+[Service]
-+Type=notify
-+ExecStart=@sbindir@/cupsd -f
-+PrivateTmp=true
-+
-+[Install]
-+Also=cups.socket cups.path
-+WantedBy=printer.target
-diff -up cups-1.7.2/data/cups.socket.in.systemd-socket cups-1.7.2/data/cups.socket.in
---- cups-1.7.2/data/cups.socket.in.systemd-socket 2014-04-17 14:05:04.105472002 +0200
-+++ cups-1.7.2/data/cups.socket.in 2014-04-17 14:05:04.105472002 +0200
-@@ -0,0 +1,8 @@
-+[Unit]
-+Description=CUPS Printing Service Sockets
-+
-+[Socket]
-+ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@
-+
-+[Install]
-+WantedBy=sockets.target
-diff -up cups-1.7.2/data/Makefile.systemd-socket cups-1.7.2/data/Makefile
---- cups-1.7.2/data/Makefile.systemd-socket 2013-05-29 13:51:34.000000000 +0200
-+++ cups-1.7.2/data/Makefile 2014-04-17 14:05:04.106471988 +0200
-@@ -100,6 +100,12 @@ install-data:
- $(INSTALL_DATA) $$file $(DATADIR)/ppdc; \
- done
- $(INSTALL_DIR) -m 755 $(DATADIR)/profiles
-+ if test "x$(SYSTEMD_UNITS)" != "x" ; then \
-+ $(INSTALL_DIR) -m 755 $(SYSTEMDUNITDIR); \
-+ for file in $(SYSTEMD_UNITS); do \
-+ $(INSTALL_DATA) $$file $(SYSTEMDUNITDIR); \
-+ done; \
-+ fi
-
-
- #
-@@ -143,6 +149,9 @@ uninstall:
- -$(RMDIR) $(DATADIR)/data
- -$(RMDIR) $(DATADIR)/banners
- -$(RMDIR) $(DATADIR)
-+ for file in $(SYSTEMD_UNITS); do \
-+ $(RM) $(SYSTEMDUNITDIR)/$$file; \
-+ done
-
-
- #
-diff -up cups-1.7.2/Makedefs.in.systemd-socket cups-1.7.2/Makedefs.in
---- cups-1.7.2/Makedefs.in.systemd-socket 2014-04-17 14:05:04.092472182 +0200
-+++ cups-1.7.2/Makedefs.in 2014-04-17 14:05:04.106471988 +0200
-@@ -134,6 +134,7 @@ CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@
- CXXLIBS = @CXXLIBS@
- DBUS_NOTIFIER = @DBUS_NOTIFIER@
- DBUS_NOTIFIERLIBS = @DBUS_NOTIFIERLIBS@
-+SYSTEMD_UNITS = @SYSTEMD_UNITS@
- DNSSD_BACKEND = @DNSSD_BACKEND@
- DSOFLAGS = -L../cups @DSOFLAGS@
- DSOLIBS = @DSOLIBS@ $(COMMONLIBS)
-@@ -141,6 +142,7 @@ DNSSDLIBS = @DNSSDLIBS@
- IPPFIND_BIN = @IPPFIND_BIN@
- IPPFIND_MAN = @IPPFIND_MAN@
- LAUNCHDLIBS = @LAUNCHDLIBS@
-+SDLIBS = @SDLIBS@
- LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \
- -L../scheduler @LDARCHFLAGS@ \
- @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
-@@ -232,6 +234,7 @@ PAMFILE = @PAMFILE@
-
- DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@
- DBUSDIR = @DBUSDIR@
-+SYSTEMDUNITDIR = $(BUILDROOT)@systemdsystemunitdir@
-
-
- #
-diff -up cups-1.7.2/scheduler/client.h.systemd-socket cups-1.7.2/scheduler/client.h
---- cups-1.7.2/scheduler/client.h.systemd-socket 2013-08-02 00:23:18.000000000 +0200
-+++ cups-1.7.2/scheduler/client.h 2014-04-17 14:05:04.106471988 +0200
-@@ -79,6 +79,9 @@ typedef struct
- int fd; /* File descriptor for this server */
- http_addr_t address; /* Bind address of socket */
- http_encryption_t encryption; /* To encrypt or not to encrypt... */
-+#ifdef HAVE_SYSTEMD
-+ int is_systemd; /* Is this a systemd socket? */
-+#endif /* HAVE_SYSTEMD */
- } cupsd_listener_t;
-
-
-diff -up cups-1.7.2/scheduler/listen.c.systemd-socket cups-1.7.2/scheduler/listen.c
---- cups-1.7.2/scheduler/listen.c.systemd-socket 2013-05-29 13:51:34.000000000 +0200
-+++ cups-1.7.2/scheduler/listen.c 2014-04-17 14:05:04.107471974 +0200
-@@ -401,7 +401,11 @@ cupsdStopListening(void)
- lis;
- lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
- {
-- if (lis->fd != -1)
-+ if (lis->fd != -1
-+#ifdef HAVE_SYSTEMD
-+ && !lis->is_systemd
-+#endif /* HAVE_SYSTEMD */
-+ )
- {
- #ifdef WIN32
- closesocket(lis->fd);
-diff -up cups-1.7.2/scheduler/main.c.systemd-socket cups-1.7.2/scheduler/main.c
---- cups-1.7.2/scheduler/main.c.systemd-socket 2014-04-17 14:05:04.052472738 +0200
-+++ cups-1.7.2/scheduler/main.c 2014-04-17 14:09:39.102634667 +0200
-@@ -39,6 +39,10 @@
- # endif /* !LAUNCH_JOBKEY_SERVICEIPC */
- #endif /* HAVE_LAUNCH_H */
-
-+#ifdef HAVE_SYSTEMD
-+#include <systemd/sd-daemon.h>
-+#endif /* HAVE_SYSTEMD */
-+
- #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
- # include <malloc.h>
- #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */
-@@ -64,6 +68,9 @@
- static void launchd_checkin(void);
- static void launchd_checkout(void);
- #endif /* HAVE_LAUNCHD */
-+#ifdef HAVE_SYSTEMD
-+static void systemd_checkin(void);
-+#endif /* HAVE_SYSTEMD */
- static void parent_handler(int sig);
- static void process_children(void);
- static void sigchld_handler(int sig);
-@@ -563,6 +570,13 @@ main(int argc, /* I - Number of comm
- }
- #endif /* HAVE_LAUNCHD */
-
-+#ifdef HAVE_SYSTEMD
-+ /*
-+ * If we were started by systemd get the listen sockets file descriptors...
-+ */
-+ systemd_checkin();
-+#endif /* HAVE_SYSTEMD */
-+
- /*
- * Startup the server...
- */
-@@ -654,6 +668,12 @@ main(int argc, /* I - Number of comm
- "Scheduler started via launchd.");
+diff -up cups-2.0.0/scheduler/main.c.systemd-socket cups-2.0.0/scheduler/main.c
+--- cups-2.0.0/scheduler/main.c.systemd-socket 2014-10-16 14:39:05.811530076 +0100
++++ cups-2.0.0/scheduler/main.c 2014-10-16 14:39:05.839530224 +0100
+@@ -653,6 +653,12 @@ main(int argc, /* I - Number of comm
+ cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started on demand.");
else
- #endif /* HAVE_LAUNCHD */
+ #endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#ifdef HAVE_SYSTEMD
+ sd_notifyf(0, "READY=1\n"
+ "STATUS=Scheduler is running...\n"
+ (unsigned long) getpid());
+#endif /* HAVE_SYSTEMD */
if (fg)
- cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL,
- "Scheduler started in foreground.");
-@@ -751,6 +771,15 @@ main(int argc, /* I - Number of comm
- }
- #endif /* HAVE_LAUNCHD */
-
-+#ifdef HAVE_SYSTEMD
-+ /*
-+ * If we were started by systemd get the listen sockets file
-+ * descriptors...
-+ */
-+
-+ systemd_checkin();
-+#endif /* HAVE_SYSTEMD */
-+
- /*
- * Startup the server...
- */
-@@ -1500,6 +1529,102 @@ launchd_checkout(void)
- }
- #endif /* HAVE_LAUNCHD */
-
-+#ifdef HAVE_SYSTEMD
-+static void
-+systemd_checkin(void)
-+{
-+ int n, fd;
-+
-+ n = sd_listen_fds(0);
-+ if (n < 0)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_ERROR,
-+ "systemd_checkin: Failed to acquire sockets from systemd - %s",
-+ strerror(-n));
-+ exit(EXIT_FAILURE);
-+ return;
-+ }
-+
-+ if (n == 0)
-+ return;
-+
-+ for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd ++)
-+ {
-+ http_addr_t addr;
-+ socklen_t addrlen = sizeof (addr);
-+ int r;
-+ cupsd_listener_t *lis;
-+ char s[256];
-+
-+ r = sd_is_socket(fd, AF_UNSPEC, SOCK_STREAM, 1);
-+ if (r < 0)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_ERROR,
-+ "systemd_checkin: Unable to verify socket type - %s",
-+ strerror(-r));
-+ continue;
-+ }
-+
-+ if (!r)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_ERROR,
-+ "systemd_checkin: Socket not of the right type");
-+ continue;
-+ }
-+
-+ if (getsockname(fd, (struct sockaddr*) &addr, &addrlen))
-+ {
-+ cupsdLogMessage(CUPSD_LOG_ERROR,
-+ "systemd_checkin: Unable to get local address - %s",
-+ strerror(errno));
-+ continue;
-+ }
-+
-+ /*
-+ * Try to match the systemd socket address to one of the listeners...
-+ */
-+
-+ for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
-+ lis;
-+ lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
-+ if (httpAddrEqual(&lis->address, &addr))
-+ break;
-+
-+ if (lis)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_DEBUG,
-+ "systemd_checkin: Matched existing listener %s with fd %d...",
-+ httpAddrString(&(lis->address), s, sizeof(s)), fd);
-+ }
-+ else
-+ {
-+ cupsdLogMessage(CUPSD_LOG_DEBUG,
-+ "systemd_checkin: Adding new listener %s with fd %d...",
-+ httpAddrString(&addr, s, sizeof(s)), fd);
-+
-+ if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_ERROR,
-+ "systemd_checkin: Unable to allocate listener - "
-+ "%s.", strerror(errno));
-+ exit(EXIT_FAILURE);
-+ }
-+
-+ cupsArrayAdd(Listeners, lis);
-+
-+ memcpy(&lis->address, &addr, sizeof(lis->address));
-+ }
-+
-+ lis->fd = fd;
-+ lis->is_systemd = 1;
-+
-+# ifdef HAVE_SSL
-+ if (_httpAddrPort(&(lis->address)) == 443)
-+ lis->encryption = HTTP_ENCRYPT_ALWAYS;
-+# endif /* HAVE_SSL */
-+ }
-+}
-+#endif /* HAVE_SYSTEMD */
-
- /*
- * 'parent_handler()' - Catch USR1/CHLD signals...
-diff -up cups-1.7.2/scheduler/Makefile.systemd-socket cups-1.7.2/scheduler/Makefile
---- cups-1.7.2/scheduler/Makefile.systemd-socket 2013-05-29 13:51:34.000000000 +0200
-+++ cups-1.7.2/scheduler/Makefile 2014-04-17 14:05:04.108471960 +0200
-@@ -381,7 +381,7 @@ cupsd: $(CUPSDOBJS) $(LIBCUPSMIME) ../cu
- $(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) -L. -lcupsmime \
- $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
- $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBS) \
-- $(LIBGSSAPI) $(LIBWRAP)
-+ $(LIBGSSAPI) $(LIBWRAP) $(SDLIBS)
-
- cupsd-static: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC)
- echo Linking $@...
-@@ -389,7 +389,7 @@ cupsd-static: $(CUPSDOBJS) libcupsmime.a
- $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
- ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \
- $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBGSSAPI) \
-- $(LIBWRAP)
-+ $(LIBWRAP) $(SDLIBS)
+ cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started in foreground.");
+ else
+diff -up cups-2.0.0/scheduler/org.cups.cupsd.path.in.systemd-socket cups-2.0.0/scheduler/org.cups.cupsd.path.in
+--- cups-2.0.0/scheduler/org.cups.cupsd.path.in.systemd-socket 2014-03-21 14:50:24.000000000 +0000
++++ cups-2.0.0/scheduler/org.cups.cupsd.path.in 2014-10-16 14:39:05.839530224 +0100
+@@ -2,7 +2,7 @@
+ Description=CUPS Scheduler
+
+ [Path]
+-PathExists=@CUPS_CACHEDIR@/org.cups.cupsd
++PathExistsGlob=@CUPS_REQUESTS@/d*
- tls.o: tls-darwin.c tls-gnutls.c tls-openssl.c
+ [Install]
+ WantedBy=multi-user.target
+diff -up cups-2.0.0/scheduler/org.cups.cupsd.service.in.systemd-socket cups-2.0.0/scheduler/org.cups.cupsd.service.in
+--- cups-2.0.0/scheduler/org.cups.cupsd.service.in.systemd-socket 2014-03-21 14:50:24.000000000 +0000
++++ cups-2.0.0/scheduler/org.cups.cupsd.service.in 2014-10-16 14:39:28.636650224 +0100
+@@ -2,9 +2,10 @@
+ Description=CUPS Scheduler
++After=network.target
+
+ [Service]
+-ExecStart=@sbindir@/cupsd -l
+-Type=simple
++ExecStart=@sbindir@/cupsd -f
++Type=notify
+ [Install]
+ Also=org.cups.cupsd.socket org.cups.cupsd.path
+ WantedBy=printer.target
Summary(pl.UTF-8): Ogólny system druku dla Uniksa
Summary(pt_BR.UTF-8): Sistema Unix de Impressão
Name: cups
-Version: 1.7.5
+Version: 2.0.0
Release: 1
Epoch: 1
License: LGPL v2 (libraries), GPL v2 (the rest) + openssl exception
Group: Applications/Printing
Source0: http://www.cups.org/software/%{version}/%{name}-%{version}-source.tar.bz2
-# Source0-md5: 5d893edc2957005f78e2b2423fdace2e
+# Source0-md5: 2cdd81fea23e9e29555c24bdfd0d7c89
Source1: %{name}.init
Source2: %{name}.pamd
Source3: %{name}.logrotate
Source5: %{name}-lpd.inetd
Source6: %{name}-modprobe.conf
Source7: %{name}.tmpfiles
-# svn diff http://svn.easysw.com/public/cups/tags/release-1.4.3/ http://svn.easysw.com/public/cups/branches/branch-1.4/ > cups-branch.diff
-# + drop config-scripts/cups-common.m4 change
Patch0: %{name}-config.patch
Patch2: %{name}-options.patch
Patch3: %{name}-man_pages_linking.patch
ln -s accept $RPM_BUILD_ROOT%{_sbindir}/enable
ln -s accept $RPM_BUILD_ROOT%{_sbindir}/disable
-# check-files cleanup
-%{__rm} -r $RPM_BUILD_ROOT/etc/{init.d,rc?.d}
-
# shipped in cups-filters
%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/cups/banners
%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/cups/data/testprint
/sbin/chkconfig --add cups
%service cups restart "cups daemon"
/sbin/rmmod usblp > /dev/null 2>&1 || :
-%systemd_post cups.service cups.socket cups.path
+%systemd_post org.cups.cupsd.service org.cups.cupd.socket org.cups.cupsd.path
%preun
if [ "$1" = "0" ]; then
%service cups stop
/sbin/chkconfig --del cups
fi
-%systemd_preun cups.service cups.socket cups.path
+%systemd_preun org.cups.cupsd.service org.cups.cupsd.socket org.cups.cupsd.path
%postun
%systemd_reload
%triggerpostun -- cups < 1:1.5.2-1
-%systemd_trigger cups.service cups.socket cups.path
+%systemd_trigger org.cups.cupsd.service org.cups.cupsd.socket org.cups.cupsd.path
%post lib -p /sbin/ldconfig
%postun lib -p /sbin/ldconfig
%attr(754,root,root) /etc/rc.d/init.d/cups
/etc/dbus-1/system.d/cups.conf
/etc/modprobe.d/cups.conf
-%{systemdunitdir}/cups.service
-%{systemdunitdir}/cups.socket
-%{systemdunitdir}/cups.path
+%{systemdunitdir}/org.cups.cupsd.service
+%{systemdunitdir}/org.cups.cupsd.socket
+%{systemdunitdir}/org.cups.cupsd.path
%{systemdtmpfilesdir}/%{name}.conf
%attr(600,root,lp) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/classes.conf
%attr(640,root,lp) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/cups-files.conf
%dir %{_sysconfdir}/%{name}/interfaces
%dir %attr(755,root,lp) %{_sysconfdir}/%{name}/ppd
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/%{name}
-%attr(4755,lp,root) %{_bindir}/lppasswd
%attr(755,root,root) %{_bindir}/cupstestppd
%attr(755,root,root) %{_bindir}/cupstestdsc
%attr(755,root,root) %{_bindir}/ppd*
%attr(755,root,root) %{_ulibdir}/cups/backend/mdns
%endif
%attr(755,root,root) %{_ulibdir}/cups/backend/http
-%attr(755,root,root) %{_ulibdir}/cups/backend/https
%attr(755,root,root) %{_ulibdir}/cups/backend/ipp
%attr(755,root,root) %{_ulibdir}/cups/backend/ipp14
-%attr(755,root,root) %{_ulibdir}/cups/backend/ipps
%attr(755,root,root) %{_ulibdir}/cups/backend/lpd
%attr(755,root,root) %{_ulibdir}/cups/backend/snmp
%attr(755,root,root) %{_ulibdir}/cups/backend/socket
%attr(755,root,root) %{_ulibdir}/cups/cgi-bin/*.cgi
%{_ulibdir}/cups/cgi-bin/*.css
%{_ulibdir}/cups/cgi-bin/*.html
+%{_ulibdir}/cups/cgi-bin/*.png
%{_ulibdir}/cups/cgi-bin/*.txt
-%lang(ca) %{_ulibdir}/cups/cgi-bin/ca
-%lang(cs) %{_ulibdir}/cups/cgi-bin/cs
-%lang(de) %{_ulibdir}/cups/cgi-bin/de
%lang(es) %{_ulibdir}/cups/cgi-bin/es
-%lang(fr) %{_ulibdir}/cups/cgi-bin/fr
-%lang(it) %{_ulibdir}/cups/cgi-bin/it
-%lang(ja) %{_ulibdir}/cups/cgi-bin/ja
-%lang(pt_BR) %{_ulibdir}/cups/cgi-bin/pt_BR
-%lang(ru) %{_ulibdir}/cups/cgi-bin/ru
%dir %{_ulibdir}/cups/daemon
%attr(755,root,root) %{_ulibdir}/cups/daemon/cups-deviced
%dir %{_datadir}/cups/templates
%{_datadir}/cups/templates/*.tmpl
-%lang(ca) %{_datadir}/cups/templates/ca
-%lang(cs) %{_datadir}/cups/templates/cs
-%lang(de) %{_datadir}/cups/templates/de
%lang(es) %{_datadir}/cups/templates/es
-%lang(fr) %{_datadir}/cups/templates/fr
-%lang(it) %{_datadir}/cups/templates/it
-%lang(ja) %{_datadir}/cups/templates/ja
-%lang(pt_BR) %{_datadir}/cups/templates/pt_BR
-%lang(ru) %{_datadir}/cups/templates/ru
+%{_mandir}/man1/cups.1*
%{_mandir}/man1/cupstestppd.1*
%{_mandir}/man1/cupstestdsc.1*
-%{_mandir}/man1/lppasswd.1*
%{_mandir}/man1/ppd*.1*
%{_mandir}/man7/backend.7*
%{_mandir}/man7/filter.7*
%{_mandir}/man5/subscriptions.conf.5*
%{_mandir}/man8/cups-deviced.8*
%{_mandir}/man8/cups-driverd.8*
+%{_mandir}/man8/cups-exec.8*
%{_mandir}/man8/cups-snmp.8*
%{_mandir}/man8/cupsctl.8*
%{_mandir}/man8/cupsd.8*
+%{_mandir}/man8/cupsd-helper.8*
+%{_mandir}/man8/cupsd-logs.8*
%{_mandir}/man8/cupsfilter.8*
%dir %attr(775,root,lp) /var/cache/cups
%dir %{_datadir}/cups
%lang(ca) %{_datadir}/locale/ca/cups_ca.po
%lang(cs) %{_datadir}/locale/cs/cups_cs.po
-%lang(de) %{_datadir}/locale/de/cups_de.po
%lang(es) %{_datadir}/locale/es/cups_es.po
%lang(fr) %{_datadir}/locale/fr/cups_fr.po
%lang(it) %{_datadir}/locale/it/cups_it.po
%lang(ja) %{_datadir}/locale/ja/cups_ja.po
-%lang(pt_BR) %{_datadir}/locale/pt_BR/cups_pt_BR.po
%lang(ru) %{_datadir}/locale/ru/cups_ru.po
%files clients