From cb06f24a89d652ffb0f2e7741b2d11eff6b98164 Mon Sep 17 00:00:00 2001 From: Tim Waugh Date: Wed, 12 Nov 2008 16:09:54 +0000 Subject: [PATCH] - 1.4b1. - No longer need ext, includeifexists, foomatic-recommended, getnameddest, str2101, str2536 patches. - Require poppler-utils at runtime and for build. No longer need pdftops.conf. - Obsolete cupsddk. --- cups-eggcups.patch | 34 +- cups-ext.patch | 50 -- cups-foomatic-recommended.patch | 27 - cups-getnameddest.patch | 1007 ------------------------------- cups-includeifexists.patch | 20 - cups-lpr-help.patch | 22 +- cups-lspp.patch | 412 +++++++------ cups-paps.patch | 23 +- cups-serverbin-compat.patch | 70 +-- cups-str2101.patch | 30 - cups-str2536.patch | 810 ------------------------- cups-usb-paperout.patch | 14 +- cups-wbuffer.patch | 11 +- cups.spec | 90 +-- pdftops.conf | 4 - 15 files changed, 361 insertions(+), 2263 deletions(-) delete mode 100644 cups-ext.patch delete mode 100644 cups-foomatic-recommended.patch delete mode 100644 cups-getnameddest.patch delete mode 100644 cups-includeifexists.patch delete mode 100644 cups-str2101.patch delete mode 100644 cups-str2536.patch delete mode 100644 pdftops.conf diff --git a/cups-eggcups.patch b/cups-eggcups.patch index 7a5f8f6..fde1e07 100644 --- a/cups-eggcups.patch +++ b/cups-eggcups.patch @@ -1,7 +1,7 @@ -diff -up cups-1.3.7/backend/ipp.c.eggcups cups-1.3.7/backend/ipp.c ---- cups-1.3.7/backend/ipp.c.eggcups 2008-07-15 13:34:01.000000000 +0100 -+++ cups-1.3.7/backend/ipp.c 2008-07-15 13:34:01.000000000 +0100 -@@ -58,6 +58,70 @@ static char pstmpname[1024] = ""; /* Tem +diff -up cups-1.4b1/backend/ipp.c.eggcups cups-1.4b1/backend/ipp.c +--- cups-1.4b1/backend/ipp.c.eggcups 2008-10-15 19:27:45.000000000 +0100 ++++ cups-1.4b1/backend/ipp.c 2008-11-11 15:43:30.000000000 +0000 +@@ -51,6 +51,70 @@ static char pstmpname[1024] = ""; /* Tem static char tmpfilename[1024] = ""; /* Temporary spool file name */ static int job_cancelled = 0; /* Job cancelled? */ @@ -72,7 +72,7 @@ diff -up cups-1.3.7/backend/ipp.c.eggcups cups-1.3.7/backend/ipp.c /* * Local functions... -@@ -1004,6 +1068,15 @@ main(int argc, /* I - Number of comm +@@ -1058,6 +1122,15 @@ main(int argc, /* I - Number of comm job_id); } @@ -88,22 +88,22 @@ diff -up cups-1.3.7/backend/ipp.c.eggcups cups-1.3.7/backend/ipp.c ippDelete(response); if (job_cancelled) -diff -up cups-1.3.7/backend/Makefile.eggcups cups-1.3.7/backend/Makefile ---- cups-1.3.7/backend/Makefile.eggcups 2007-08-08 20:27:51.000000000 +0100 -+++ cups-1.3.7/backend/Makefile 2008-07-15 13:34:01.000000000 +0100 -@@ -131,7 +131,7 @@ ieee1394-linux.o: ieee1394.h +diff -up cups-1.4b1/backend/Makefile.eggcups cups-1.4b1/backend/Makefile +--- cups-1.4b1/backend/Makefile.eggcups 2008-10-06 22:08:27.000000000 +0100 ++++ cups-1.4b1/backend/Makefile 2008-11-11 15:45:31.000000000 +0000 +@@ -188,7 +188,7 @@ dnssd: dnssd.o ../cups/$(LIBCUPS) libbac - ipp: ipp.o ../cups/$(LIBCUPS) + ipp: ipp.o ../cups/$(LIBCUPS) libbackend.a echo Linking $@... -- $(CC) $(LDFLAGS) -o ipp ipp.o $(LIBS) -+ $(CC) $(LDFLAGS) -o ipp ipp.o $(LIBS) $(CUPSDLIBS) +- $(CC) $(LDFLAGS) -o ipp ipp.o libbackend.a $(LIBS) ++ $(CC) $(LDFLAGS) -o ipp ipp.o libbackend.a $(LIBS) $(CUPSDLIBS) $(RM) http $(LN) ipp http -diff -up cups-1.3.7/scheduler/subscriptions.c.eggcups cups-1.3.7/scheduler/subscriptions.c ---- cups-1.3.7/scheduler/subscriptions.c.eggcups 2008-01-23 22:23:42.000000000 +0000 -+++ cups-1.3.7/scheduler/subscriptions.c 2008-07-15 13:34:01.000000000 +0100 -@@ -1295,13 +1295,13 @@ cupsd_send_dbus(cupsd_eventmask_t event, +diff -up cups-1.4b1/scheduler/subscriptions.c.eggcups cups-1.4b1/scheduler/subscriptions.c +--- cups-1.4b1/scheduler/subscriptions.c.eggcups 2008-08-01 22:11:55.000000000 +0100 ++++ cups-1.4b1/scheduler/subscriptions.c 2008-11-11 15:43:30.000000000 +0000 +@@ -1302,13 +1302,13 @@ cupsd_send_dbus(cupsd_eventmask_t event, what = "PrinterAdded"; else if (event & CUPSD_EVENT_PRINTER_DELETED) what = "PrinterRemoved"; @@ -119,7 +119,7 @@ diff -up cups-1.3.7/scheduler/subscriptions.c.eggcups cups-1.3.7/scheduler/subsc else return; -@@ -1337,7 +1337,7 @@ cupsd_send_dbus(cupsd_eventmask_t event, +@@ -1344,7 +1344,7 @@ cupsd_send_dbus(cupsd_eventmask_t event, dbus_message_append_iter_init(message, &iter); if (dest) dbus_message_iter_append_string(&iter, dest->name); diff --git a/cups-ext.patch b/cups-ext.patch deleted file mode 100644 index 878a492..0000000 --- a/cups-ext.patch +++ /dev/null @@ -1,50 +0,0 @@ ---- cups-1.1.22/pdftops/gfile.cxx.ext 2003-11-19 18:17:03.000000000 +0000 -+++ cups-1.1.22/pdftops/gfile.cxx 2004-11-29 17:58:13.250694162 +0000 -@@ -487,32 +487,14 @@ - char *s; - int fd; - -- if (ext) { --#if HAVE_MKSTEMPS -- if ((s = getenv("TMPDIR"))) { -- *name = new GString(s); -- } else { -- *name = new GString("/tmp"); -- } -- (*name)->append("/XXXXXX")->append(ext); -- fd = mkstemps((*name)->getCString(), strlen(ext)); --#else -- if (!(s = tmpnam(NULL))) { -- return gFalse; -- } -+#if HAVE_MKSTEMP -+ if ((s = getenv("TMPDIR"))) { - *name = new GString(s); -- (*name)->append(ext); -- fd = open((*name)->getCString(), O_WRONLY | O_CREAT | O_EXCL, 0600); --#endif - } else { --#if HAVE_MKSTEMP -- if ((s = getenv("TMPDIR"))) { -- *name = new GString(s); -- } else { -- *name = new GString("/tmp"); -- } -- (*name)->append("/XXXXXX"); -- fd = mkstemp((*name)->getCString()); -+ *name = new GString("/tmp"); -+ } -+ (*name)->append("/XXXXXX"); -+ fd = mkstemp((*name)->getCString()); - #else // HAVE_MKSTEMP - if (!(s = tmpnam(NULL))) { - return gFalse; -@@ -520,7 +502,7 @@ - *name = new GString(s); - fd = open((*name)->getCString(), O_WRONLY | O_CREAT | O_EXCL, 0600); - #endif // HAVE_MKSTEMP -- } -+ - if (fd < 0 || !(*f = fdopen(fd, mode))) { - delete *name; - return gFalse; diff --git a/cups-foomatic-recommended.patch b/cups-foomatic-recommended.patch deleted file mode 100644 index a5081ca..0000000 --- a/cups-foomatic-recommended.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff -up cups-1.3.2/scheduler/cups-driverd.c.foomatic-recommended cups-1.3.2/scheduler/cups-driverd.c ---- cups-1.3.2/scheduler/cups-driverd.c.foomatic-recommended 2007-09-25 10:33:29.000000000 +0100 -+++ cups-1.3.2/scheduler/cups-driverd.c 2007-09-25 10:34:03.000000000 +0100 -@@ -180,7 +180,6 @@ add_ppd(const char *name, /* I - PPD na - int type) /* I - Driver type */ - { - ppd_info_t *ppd; /* PPD */ -- char *recommended; /* Foomatic driver string */ - - - /* -@@ -238,15 +237,6 @@ add_ppd(const char *name, /* I - PPD na - strlcpy(ppd->record.device_id, device_id, sizeof(ppd->record.device_id)); - - /* -- * Strip confusing (and often wrong) "recommended" suffix added by -- * Foomatic drivers... -- */ -- -- if ((recommended = strstr(ppd->record.make_and_model, -- " (recommended)")) != NULL) -- *recommended = '\0'; -- -- /* - * Return the new PPD pointer... - */ - diff --git a/cups-getnameddest.patch b/cups-getnameddest.patch deleted file mode 100644 index 262395d..0000000 --- a/cups-getnameddest.patch +++ /dev/null @@ -1,1007 +0,0 @@ -diff -up cups-1.3.9/berkeley/lpr.c.getnameddest cups-1.3.9/berkeley/lpr.c ---- cups-1.3.9/berkeley/lpr.c.getnameddest 2008-10-10 09:35:05.000000000 +0100 -+++ cups-1.3.9/berkeley/lpr.c 2008-10-10 09:35:05.000000000 +0100 -@@ -92,9 +92,7 @@ main(int argc, /* I - Number of comm - int num_copies; /* Number of copies per file */ - int num_files; /* Number of files to print */ - const char *files[1000]; /* Files to print */ -- int num_dests; /* Number of destinations */ -- cups_dest_t *dests, /* Destinations */ -- *dest; /* Selected destination */ -+ cups_dest_t *dest; /* Selected destination */ - int num_options; /* Number of options */ - cups_option_t *options; /* Options */ - int deletefile; /* Delete file after print? */ -@@ -112,8 +110,7 @@ main(int argc, /* I - Number of comm - - deletefile = 0; - printer = NULL; -- num_dests = 0; -- dests = NULL; -+ dest = NULL; - num_options = 0; - options = NULL; - num_files = 0; -@@ -282,10 +279,7 @@ main(int argc, /* I - Number of comm - if ((instance = strrchr(printer, '/')) != NULL) - *instance++ = '\0'; - -- if (num_dests == 0) -- num_dests = cupsGetDests(&dests); -- -- if ((dest = cupsGetDest(printer, instance, num_dests, dests)) != NULL) -+ if ((dest = cupsGetNamedDest(NULL, printer, instance)) != NULL) - { - for (j = 0; j < dest->num_options; j ++) - if (cupsGetOption(dest->options[j].name, num_options, -@@ -385,10 +379,7 @@ main(int argc, /* I - Number of comm - - if (printer == NULL) - { -- if (num_dests == 0) -- num_dests = cupsGetDests(&dests); -- -- if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) != NULL) -+ if ((dest = cupsGetNamedDest(NULL, NULL, NULL)) != NULL) - { - printer = dest->name; - -@@ -417,7 +408,7 @@ main(int argc, /* I - Number of comm - else - val = "LPDEST"; - -- if (printer && !cupsGetDest(printer, NULL, num_dests, dests)) -+ if (printer && !cupsGetNamedDest(NULL, printer, NULL)) - _cupsLangPrintf(stderr, - _("%s: Error - %s environment variable names " - "non-existent destination \"%s\"!\n"), -diff -up cups-1.3.9/cups/cups.h.getnameddest cups-1.3.9/cups/cups.h ---- cups-1.3.9/cups/cups.h.getnameddest 2008-07-23 01:06:46.000000000 +0100 -+++ cups-1.3.9/cups/cups.h 2008-10-10 09:35:05.000000000 +0100 -@@ -248,6 +248,9 @@ extern void cupsSetDefaultDest(const ch - int num_dests, - cups_dest_t *dests); - -+/**** New in CUPS 1.4 ****/ -+extern cups_dest_t *cupsGetNamedDest(http_t *http, const char *name, -+ const char *instance); - - # ifdef __cplusplus - } -diff -up cups-1.3.9/cups/dest.c.getnameddest cups-1.3.9/cups/dest.c ---- cups-1.3.9/cups/dest.c.getnameddest 2008-09-17 00:37:56.000000000 +0100 -+++ cups-1.3.9/cups/dest.c 2008-10-10 09:36:02.000000000 +0100 -@@ -25,6 +25,7 @@ - * server. - * cupsGetDests2() - Get the list of destinations from the - * specified server. -+ * cupsGetNamedDest() - Get options for the named destination. - * cupsRemoveDest() - Remove a destination from the destination list. - * cupsDestSetDefaultDest() - Set the default destination. - * cupsSetDests() - Set the list of destinations for the default -@@ -39,6 +40,7 @@ - * Include necessary headers... - */ - -+#include "debug.h" - #include "globals.h" - #include - #include -@@ -53,10 +55,13 @@ - * Local functions... - */ - --static int cups_get_dests(const char *filename, int num_dests, -+static const char *cups_get_default(const char *filename, char *namebuf, -+ size_t namesize, const char **instance); -+static int cups_get_dests(const char *filename, const char *match_name, -+ const char *match_inst, int num_dests, - cups_dest_t **dests); --static int cups_get_sdests(http_t *http, ipp_op_t op, int num_dests, -- cups_dest_t **dests); -+static int cups_get_sdests(http_t *http, ipp_op_t op, const char *name, -+ int num_dests, cups_dest_t **dests); - - - /* -@@ -263,19 +268,17 @@ int /* O - Number of destinations */ - cupsGetDests(cups_dest_t **dests) /* O - Destinations */ - { - int num_dests; /* Number of destinations */ -- http_t *http; /* HTTP connection */ -+ _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */ - - - /* - * Connect to the CUPS server and get the destination list and options... - */ - -- http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption()); -+ if (!cg->http) -+ cg->http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption()); - -- num_dests = cupsGetDests2(http, dests); -- -- if (http) -- httpClose(http); -+ num_dests = cupsGetDests2(cg->http, dests); - - return (num_dests); - } -@@ -330,9 +333,9 @@ cupsGetDests2(http_t *http, /* I - - * Grab the printers and classes... - */ - -- num_dests = cups_get_sdests(http, CUPS_GET_PRINTERS, num_dests, dests); -+ num_dests = cups_get_sdests(http, CUPS_GET_PRINTERS, NULL, num_dests, dests); - if (cupsLastError() < IPP_REDIRECTION_OTHER_SITE) -- num_dests = cups_get_sdests(http, CUPS_GET_CLASSES, num_dests, dests); -+ num_dests = cups_get_sdests(http, CUPS_GET_CLASSES, NULL, num_dests, dests); - - if (cupsLastError() >= IPP_REDIRECTION_OTHER_SITE) - { -@@ -398,7 +401,7 @@ cupsGetDests2(http_t *http, /* I - - */ - - snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot); -- num_dests = cups_get_dests(filename, num_dests, dests); -+ num_dests = cups_get_dests(filename, NULL, NULL, num_dests, dests); - - if ((home = getenv("HOME")) != NULL) - { -@@ -406,7 +409,7 @@ cupsGetDests2(http_t *http, /* I - - if (access(filename, 0)) - snprintf(filename, sizeof(filename), "%s/.lpoptions", home); - -- num_dests = cups_get_dests(filename, num_dests, dests); -+ num_dests = cups_get_dests(filename, NULL, NULL, num_dests, dests); - } - - /* -@@ -460,6 +463,136 @@ cupsGetDests2(http_t *http, /* I - - - - /* -+ * 'cupsGetNamedDest()' - Get options for the named destination. -+ * -+ * This function is optimized for retrieving a single destination and should -+ * be used instead of cupsGetDests() and cupsGetDest() when you either know -+ * the name of the destination or want to print to the default destination. -+ * If NULL is returned, the destination does not exist or there is no default -+ * destination. -+ * -+ * If "http" is NULL, the connection to the default print server will be used. -+ * -+ * If "name" is NULL, the default printer for the current user will be returned. -+ * -+ * The returned destination must be freed using cupsFreeDests() with a -+ * "num_dests" of 1. -+ * -+ * @since CUPS 1.4@ -+ */ -+ -+cups_dest_t * /* O - Destination or NULL */ -+cupsGetNamedDest(http_t *http, /* I - HTTP connection or NULL */ -+ const char *name, /* I - Destination name or NULL */ -+ const char *instance) /* I - Instance name or NULL */ -+{ -+ cups_dest_t *dest; /* Destination */ -+ char filename[1024], /* Path to lpoptions */ -+ defname[256]; /* Default printer name */ -+ const char *home = getenv("HOME"); /* Home directory */ -+ ipp_op_t op = IPP_GET_PRINTER_ATTRIBUTES; -+ /* IPP operation to get server ops */ -+ _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */ -+ -+ -+ /* -+ * Connect to the server as needed... -+ */ -+ -+ if (!http) -+ { -+ if (!cg->http && -+ (cg->http = httpConnectEncrypt(cupsServer(), ippPort(), -+ cupsEncryption())) == NULL) -+ return (NULL); -+ -+ http = cg->http; -+ } -+ -+ /* -+ * If "name" is NULL, find the default destination... -+ */ -+ -+ if (!name) -+ { -+ if ((name = getenv("LPDEST")) == NULL) -+ if ((name = getenv("PRINTER")) != NULL && !strcmp(name, "lp")) -+ name = NULL; -+ -+ if (!name && home) -+ { -+ /* -+ * No default in the environment, try the user's lpoptions files... -+ */ -+ -+ snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home); -+ -+ if ((name = cups_get_default(filename, defname, sizeof(defname), -+ &instance)) == NULL) -+ { -+ snprintf(filename, sizeof(filename), "%s/.lpoptions", home); -+ name = cups_get_default(filename, defname, sizeof(defname), -+ &instance); -+ } -+ } -+ -+ if (!name) -+ { -+ /* -+ * Still not there? Try the system lpoptions file... -+ */ -+ -+ snprintf(filename, sizeof(filename), "%s/lpoptions", -+ cg->cups_serverroot); -+ name = cups_get_default(filename, defname, sizeof(defname), &instance); -+ } -+ -+ if (!name) -+ { -+ /* -+ * No locally-set default destination, ask the server... -+ */ -+ -+ op = CUPS_GET_DEFAULT; -+ } -+ } -+ -+ /* -+ * Get the printer's attributes... -+ */ -+ -+ if (!cups_get_sdests(http, op, name, 0, &dest)) -+ return (NULL); -+ -+ if (instance) -+ dest->instance = _cupsStrAlloc(instance); -+ -+ /* -+ * Then add local options... -+ */ -+ -+ snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot); -+ cups_get_dests(filename, name, instance, 1, &dest); -+ -+ if (home) -+ { -+ snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home); -+ -+ if (access(filename, 0)) -+ snprintf(filename, sizeof(filename), "%s/.lpoptions", home); -+ -+ cups_get_dests(filename, name, instance, 1, &dest); -+ } -+ -+ /* -+ * Return the result... -+ */ -+ -+ return (dest); -+} -+ -+ -+/* - * 'cupsRemoveDest()' - Remove a destination from the destination list. - * - * Removing a destination/instance does not delete the class or printer -@@ -556,19 +689,17 @@ void - cupsSetDests(int num_dests, /* I - Number of destinations */ - cups_dest_t *dests) /* I - Destinations */ - { -- http_t *http; /* HTTP connection */ -+ _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */ - - - /* - * Connect to the CUPS server and save the destination list and options... - */ - -- http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption()); -- -- cupsSetDests2(http, num_dests, dests); -+ if (!cg->http) -+ cg->http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption()); - -- if (http) -- httpClose(http); -+ cupsSetDests2(cg->http, num_dests, dests); - } - - -@@ -614,8 +745,8 @@ cupsSetDests2(http_t *http, /* I - - * Get the server destinations... - */ - -- num_temps = cups_get_sdests(http, CUPS_GET_PRINTERS, 0, &temps); -- num_temps = cups_get_sdests(http, CUPS_GET_CLASSES, num_temps, &temps); -+ num_temps = cups_get_sdests(http, CUPS_GET_PRINTERS, NULL, 0, &temps); -+ num_temps = cups_get_sdests(http, CUPS_GET_CLASSES, NULL, num_temps, &temps); - - /* - * Figure out which file to write to... -@@ -630,7 +761,7 @@ cupsSetDests2(http_t *http, /* I - - * Merge in server defaults... - */ - -- num_temps = cups_get_dests(filename, num_temps, &temps); -+ num_temps = cups_get_dests(filename, NULL, NULL, num_temps, &temps); - - /* - * Point to user defaults... -@@ -797,24 +928,88 @@ cupsSetDests2(http_t *http, /* I - - - - /* -+ * 'cups_get_default()' - Get the default destination from an lpoptions file. -+ */ -+ -+static const char * /* O - Default destination or NULL */ -+cups_get_default(const char *filename, /* I - File to read */ -+ char *namebuf, /* I - Name buffer */ -+ size_t namesize, /* I - Size of name buffer */ -+ const char **instance) /* I - Instance */ -+{ -+ cups_file_t *fp; /* lpoptions file */ -+ char line[8192], /* Line from file */ -+ *value, /* Value for line */ -+ *nameptr; /* Pointer into name */ -+ int linenum; /* Current line */ -+ -+ -+ *namebuf = '\0'; -+ -+ if ((fp = cupsFileOpen(filename, "r")) != NULL) -+ { -+ linenum = 0; -+ -+ while (cupsFileGetConf(fp, line, sizeof(line), &value, &linenum)) -+ { -+ if (!strcasecmp(line, "default") && value) -+ { -+ strlcpy(namebuf, value, namesize); -+ -+ if ((nameptr = strchr(namebuf, ' ')) != NULL) -+ *nameptr = '\0'; -+ if ((nameptr = strchr(namebuf, '\t')) != NULL) -+ *nameptr = '\0'; -+ -+ if ((nameptr = strchr(namebuf, '/')) != NULL) -+ *nameptr++ = '\0'; -+ -+ *instance = nameptr; -+ break; -+ } -+ } -+ -+ cupsFileClose(fp); -+ } -+ -+ return (*namebuf ? namebuf : NULL); -+} -+ -+ -+/* - * 'cups_get_dests()' - Get destinations from a file. - */ - - static int /* O - Number of destinations */ - cups_get_dests(const char *filename, /* I - File to read from */ -+ const char *match_name, /* I - Destination name we want */ -+ const char *match_inst, /* I - Instance name we want */ - int num_dests, /* I - Number of destinations */ - cups_dest_t **dests) /* IO - Destinations */ - { - int i; /* Looping var */ - cups_dest_t *dest; /* Current destination */ -- FILE *fp; /* File pointer */ -+ cups_file_t *fp; /* File pointer */ - char line[8192], /* Line from file */ - *lineptr, /* Pointer into line */ - *name, /* Name of destination/option */ - *instance; /* Instance of destination */ -+ int linenum; /* Current line number */ - const char *printer; /* PRINTER or LPDEST */ - - -+ DEBUG_printf(("cups_get_dests(filename=\"%s\", match_name=\"%s\", " -+ "match_inst=\"%s\", num_dests=%d, dests=%p)\n", filename, -+ match_name ? match_name : "(null)", -+ match_inst ? match_inst : "(null)", num_dests, dests)); -+ -+ /* -+ * Try to open the file... -+ */ -+ -+ if ((fp = cupsFileOpen(filename, "r")) == NULL) -+ return (num_dests); -+ - /* - * Check environment variables... - */ -@@ -824,12 +1019,8 @@ cups_get_dests(const char *filename, /* - if (strcmp(printer, "lp") == 0) - printer = NULL; - -- /* -- * Try to open the file... -- */ -- -- if ((fp = fopen(filename, "r")) == NULL) -- return (num_dests); -+ DEBUG_printf(("cups_get_dests: printer=\"%s\"\n", -+ printer ? printer : "(null)")); - - /* - * Read each printer; each line looks like: -@@ -838,28 +1029,22 @@ cups_get_dests(const char *filename, /* - * Default name[/instance] options - */ - -- while (fgets(line, sizeof(line), fp) != NULL) -+ linenum = 0; -+ -+ while (cupsFileGetConf(fp, line, sizeof(line), &lineptr, &linenum)) - { - /* - * See what type of line it is... - */ - -- if (strncasecmp(line, "dest", 4) == 0 && isspace(line[4] & 255)) -- lineptr = line + 4; -- else if (strncasecmp(line, "default", 7) == 0 && isspace(line[7] & 255)) -- lineptr = line + 7; -- else -- continue; -- -- /* -- * Skip leading whitespace... -- */ -- -- while (isspace(*lineptr & 255)) -- lineptr ++; -+ DEBUG_printf(("cups_get_dests: linenum=%d line=\"%s\" lineptr=\"%s\"\n", -+ linenum, line, lineptr ? lineptr : "(null)")); - -- if (!*lineptr) -+ if ((strcasecmp(line, "dest") && strcasecmp(line, "default")) || !lineptr) -+ { -+ DEBUG_puts("cups_get_dests: Not a dest or default line..."); - continue; -+ } - - name = lineptr; - -@@ -870,9 +1055,6 @@ cups_get_dests(const char *filename, /* - while (!isspace(*lineptr & 255) && *lineptr && *lineptr != '/') - lineptr ++; - -- if (!*lineptr) -- continue; -- - if (*lineptr == '/') - { - /* -@@ -892,30 +1074,49 @@ cups_get_dests(const char *filename, /* - else - instance = NULL; - -- *lineptr++ = '\0'; -+ if (*lineptr) -+ *lineptr++ = '\0'; -+ -+ DEBUG_printf(("cups_get_dests: name=\"%s\", instance=\"%s\"\n", name, -+ instance)); - - /* - * See if the primary instance of the destination exists; if not, - * ignore this entry and move on... - */ - -- if (cupsGetDest(name, NULL, num_dests, *dests) == NULL) -- continue; -- -- /* -- * Add the destination... -- */ -- -- num_dests = cupsAddDest(name, instance, num_dests, dests); -+ if (match_name) -+ { -+ if (strcasecmp(name, match_name) || -+ (!instance && match_inst) || -+ (instance && !match_inst) || -+ (instance && strcasecmp(instance, match_inst))) -+ continue; - -- if ((dest = cupsGetDest(name, instance, num_dests, *dests)) == NULL) -+ dest = *dests; -+ } -+ else if (cupsGetDest(name, NULL, num_dests, *dests) == NULL) -+ { -+ DEBUG_puts("cups_get_dests: Not found!"); -+ continue; -+ } -+ else - { - /* -- * Out of memory! -+ * Add the destination... - */ - -- fclose(fp); -- return (num_dests); -+ num_dests = cupsAddDest(name, instance, num_dests, dests); -+ -+ if ((dest = cupsGetDest(name, instance, num_dests, *dests)) == NULL) -+ { -+ /* -+ * Out of memory! -+ */ -+ -+ DEBUG_puts("cups_get_dests: Out of memory!"); -+ break; -+ } - } - - /* -@@ -926,11 +1127,20 @@ cups_get_dests(const char *filename, /* - &(dest->options)); - - /* -+ * If we found what we were looking for, stop now... -+ */ -+ -+ if (match_name) -+ break; -+ -+ /* - * Set this as default if needed... - */ - -- if (strncasecmp(line, "default", 7) == 0 && printer == NULL) -+ if (!printer && !strcasecmp(line, "default")) - { -+ DEBUG_puts("cups_get_dests: Setting as default..."); -+ - for (i = 0; i < num_dests; i ++) - (*dests)[i].is_default = 0; - -@@ -942,7 +1152,7 @@ cups_get_dests(const char *filename, /* - * Close the file and return... - */ - -- fclose(fp); -+ cupsFileClose(fp); - - return (num_dests); - } -@@ -954,7 +1164,8 @@ cups_get_dests(const char *filename, /* - - static int /* O - Number of destinations */ - cups_get_sdests(http_t *http, /* I - HTTP connection */ -- ipp_op_t op, /* I - get-printers or get-classes */ -+ ipp_op_t op, /* I - IPP operation */ -+ const char *name, /* I - Name of destination */ - int num_dests, /* I - Number of destinations */ - cups_dest_t **dests) /* IO - Destinations */ - { -@@ -971,8 +1182,9 @@ cups_get_sdests(http_t *http, /* I - const char *info, /* printer-info attribute */ - *location, /* printer-location attribute */ - *make_model, /* printer-make-and-model attribute */ -- *name; /* printer-name attribute */ -- char job_sheets[1024], /* job-sheets-default attribute */ -+ *printer_name; /* printer-name attribute */ -+ char uri[1024], /* printer-uri value */ -+ job_sheets[1024], /* job-sheets-default attribute */ - auth_info_req[1024], /* auth-info-required attribute */ - reasons[1024]; /* printer-state-reasons attribute */ - int num_options; /* Number of options */ -@@ -1016,6 +1228,14 @@ cups_get_sdests(http_t *http, /* I - ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, - "requesting-user-name", NULL, cupsUser()); - -+ if (name) -+ { -+ httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, -+ "localhost", ippPort(), "/printers/%s", name); -+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, -+ uri); -+ } -+ - /* - * Do the request and get back a response... - */ -@@ -1038,17 +1258,17 @@ cups_get_sdests(http_t *http, /* I - * Pull the needed attributes from this printer... - */ - -- accepting = 0; -- change_time = 0; -- info = NULL; -- location = NULL; -- make_model = NULL; -- name = NULL; -- num_options = 0; -- options = NULL; -- shared = 1; -- state = IPP_PRINTER_IDLE; -- type = CUPS_PRINTER_LOCAL; -+ accepting = 0; -+ change_time = 0; -+ info = NULL; -+ location = NULL; -+ make_model = NULL; -+ printer_name = NULL; -+ num_options = 0; -+ options = NULL; -+ shared = 1; -+ state = IPP_PRINTER_IDLE; -+ type = CUPS_PRINTER_LOCAL; - - auth_info_req[0] = '\0'; - job_sheets[0] = '\0'; -@@ -1099,7 +1319,7 @@ cups_get_sdests(http_t *http, /* I - make_model = attr->values[0].string.text; - else if (!strcmp(attr->name, "printer-name") && - attr->value_tag == IPP_TAG_NAME) -- name = attr->values[0].string.text; -+ printer_name = attr->values[0].string.text; - else if (!strcmp(attr->name, "printer-state") && - attr->value_tag == IPP_TAG_ENUM) - state = attr->values[0].integer; -@@ -1204,7 +1424,7 @@ cups_get_sdests(http_t *http, /* I - * See if we have everything needed... - */ - -- if (!name) -+ if (!printer_name) - { - cupsFreeOptions(num_options, options); - -@@ -1214,9 +1434,9 @@ cups_get_sdests(http_t *http, /* I - continue; - } - -- num_dests = cupsAddDest(name, NULL, num_dests, dests); -+ num_dests = cupsAddDest(printer_name, NULL, num_dests, dests); - -- if ((dest = cupsGetDest(name, NULL, num_dests, *dests)) != NULL) -+ if ((dest = cupsGetDest(printer_name, NULL, num_dests, *dests)) != NULL) - { - dest->num_options = num_options; - dest->options = options; -diff -up cups-1.3.9/cups/libcups.exp.getnameddest cups-1.3.9/cups/libcups.exp ---- cups-1.3.9/cups/libcups.exp.getnameddest 2008-04-09 04:39:40.000000000 +0100 -+++ cups-1.3.9/cups/libcups.exp 2008-10-10 09:35:05.000000000 +0100 -@@ -114,6 +114,7 @@ _cupsGetFd - _cupsGetFile - _cupsGetJobs - _cupsGetJobs2 -+_cupsGetNamedDest - _cupsGetOption - _cupsGetPassword - _cupsGetPPD -diff -up cups-1.3.9/cups/Makefile.getnameddest cups-1.3.9/cups/Makefile ---- cups-1.3.9/cups/Makefile.getnameddest 2008-09-06 01:30:39.000000000 +0100 -+++ cups-1.3.9/cups/Makefile 2008-10-10 09:35:05.000000000 +0100 -@@ -263,7 +263,7 @@ libcups.so.2 libcups.sl.2: $(LIBOBJS) - # libcups.2.dylib - # - --libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER) -+libcups.2.dylib: $(LIBOBJS) $(LIBCUPSORDER) libcups.exp - echo Linking $@... - $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \ - -install_name $(libdir)/$@ \ -diff -up cups-1.3.9/cups/testcups.c.getnameddest cups-1.3.9/cups/testcups.c ---- cups-1.3.9/cups/testcups.c.getnameddest 2008-07-11 23:48:49.000000000 +0100 -+++ cups-1.3.9/cups/testcups.c 2008-10-10 09:35:05.000000000 +0100 -@@ -16,7 +16,8 @@ - * - * Contents: - * -- * main() - Main entry. -+ * main() - Main entry. -+ * dests_equal() - Determine whether two destinations are equal. - */ - - /* -@@ -29,6 +30,14 @@ - - - /* -+ * Local functions... -+ */ -+ -+static int dests_equal(cups_dest_t *a, cups_dest_t *b); -+static void show_diffs(cups_dest_t *a, cups_dest_t *b); -+ -+ -+/* - * 'main()' - Main entry. - */ - -@@ -37,9 +46,11 @@ main(int argc, /* I - Number of comm - char *argv[]) /* I - Command-line arguments */ - { - int status = 0, /* Exit status */ -+ i, /* Looping var */ - num_dests; /* Number of destinations */ - cups_dest_t *dests, /* Destinations */ -- *dest; /* Current destination */ -+ *dest, /* Current destination */ -+ *named_dest; /* Current named destination */ - const char *ppdfile; /* PPD file */ - ppd_file_t *ppd; /* PPD file data */ - int num_jobs; /* Number of jobs for queue */ -@@ -61,7 +72,78 @@ main(int argc, /* I - Number of comm - return (1); - } - else -- puts("PASS"); -+ { -+ printf("PASS (%d dests)\n", num_dests); -+ -+ for (i = num_dests, dest = dests; i > 0; i --, dest ++) -+ { -+ printf(" %s", dest->name); -+ -+ if (dest->instance) -+ printf(" /%s", dest->instance); -+ -+ if (dest->is_default) -+ puts(" ***DEFAULT***"); -+ else -+ putchar('\n'); -+ } -+ } -+ -+ /* -+ * cupsGetDest(NULL) -+ */ -+ -+ fputs("cupsGetDest(NULL): ", stdout); -+ fflush(stdout); -+ -+ if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL) -+ { -+ for (i = num_dests, dest = dests; i > 0; i --, dest ++) -+ if (dest->is_default) -+ break; -+ -+ if (i) -+ { -+ status = 1; -+ puts("FAIL"); -+ } -+ else -+ puts("PASS (no default)"); -+ -+ dest = NULL; -+ } -+ else -+ printf("PASS (%s)\n", dest->name); -+ -+ /* -+ * cupsGetNamedDest(NULL, NULL, NULL) -+ */ -+ -+ fputs("cupsGetNamedDest(NULL, NULL, NULL): ", stdout); -+ fflush(stdout); -+ -+ if ((named_dest = cupsGetNamedDest(NULL, NULL, NULL)) == NULL || -+ !dests_equal(dest, named_dest)) -+ { -+ if (!dest) -+ puts("PASS (no default)"); -+ else if (named_dest) -+ { -+ puts("FAIL (different values)"); -+ show_diffs(dest, named_dest); -+ status = 1; -+ } -+ else -+ { -+ puts("FAIL (no default)"); -+ status = 1; -+ } -+ } -+ else -+ printf("PASS (%s)\n", named_dest->name); -+ -+ if (named_dest) -+ cupsFreeDests(1, named_dest); - - /* - * cupsGetDest(printer) -@@ -79,20 +161,33 @@ main(int argc, /* I - Number of comm - puts("PASS"); - - /* -- * cupsGetDest(NULL) -+ * cupsGetNamedDest(NULL, printer, instance) - */ - -- fputs("cupsGetDest(NULL): ", stdout); -+ printf("cupsGetNamedDest(NULL, \"%s\", \"%s\"): ", dest->name, -+ dest->instance ? dest->instance : "(null)"); - fflush(stdout); - -- if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL) -+ if ((named_dest = cupsGetNamedDest(NULL, dest->name, -+ dest->instance)) == NULL || -+ !dests_equal(dest, named_dest)) - { -- puts("FAIL"); -+ if (named_dest) -+ { -+ puts("FAIL (different values)"); -+ show_diffs(dest, named_dest); -+ } -+ else -+ puts("FAIL (no destination)"); -+ - return (1); - } - else - puts("PASS"); - -+ if (named_dest) -+ cupsFreeDests(1, named_dest); -+ - /* - * cupsPrintFile() - */ -@@ -169,5 +264,83 @@ main(int argc, /* I - Number of comm - - - /* -+ * 'dests_equal()' - Determine whether two destinations are equal. -+ */ -+ -+static int /* O - 1 if equal, 0 if not equal */ -+dests_equal(cups_dest_t *a, /* I - First destination */ -+ cups_dest_t *b) /* I - Second destination */ -+{ -+ int i; /* Looping var */ -+ cups_option_t *aoption; /* Current option */ -+ const char *bval; /* Option value */ -+ -+ -+ if (a == b) -+ return (1); -+ -+ if ((!a && b) || (a && !b)) -+ return (0); -+ -+ if (strcasecmp(a->name, b->name) || -+ (a->instance && !b->instance) || -+ (!a->instance && b->instance) || -+ (a->instance && strcasecmp(a->instance, b->instance)) || -+ a->num_options != b->num_options) -+ return (0); -+ -+ for (i = a->num_options, aoption = a->options; i > 0; i --, aoption ++) -+ if ((bval = cupsGetOption(aoption->name, b->num_options, -+ b->options)) == NULL || -+ strcmp(aoption->value, bval)) -+ return (0); -+ -+ return (1); -+} -+ -+ -+/* -+ * 'show_diffs()' - Show differences between two destinations. -+ */ -+ -+static void -+show_diffs(cups_dest_t *a, /* I - First destination */ -+ cups_dest_t *b) /* I - Second destination */ -+{ -+ int i; /* Looping var */ -+ cups_option_t *aoption; /* Current option */ -+ const char *bval; /* Option value */ -+ -+ -+ if (!a || !b) -+ return; -+ -+ puts(" Item cupsGetDest cupsGetNamedDest"); -+ puts(" -------------------- -------------------- --------------------"); -+ -+ if (strcasecmp(a->name, b->name)) -+ printf(" name %-20.20s %-20.20s\n", a->name, b->name); -+ -+ if ((a->instance && !b->instance) || -+ (!a->instance && b->instance) || -+ (a->instance && strcasecmp(a->instance, b->instance))) -+ printf(" instance %-20.20s %-20.20s\n", -+ a->instance ? a->instance : "(null)", -+ b->instance ? b->instance : "(null)"); -+ -+ if (a->num_options != b->num_options) -+ printf(" num_options %-20d %-20d\n", a->num_options, -+ b->num_options); -+ -+ for (i = a->num_options, aoption = a->options; i > 0; i --, aoption ++) -+ if ((bval = cupsGetOption(aoption->name, b->num_options, -+ b->options)) == NULL || -+ strcmp(aoption->value, bval)) -+ printf(" %-20.20s %-20.20s %-20.20s\n", aoption->name, -+ aoption->value, bval ? bval : "(null)"); -+} -+ -+ -+/* - * End of "$Id: testcups.c 7721 2008-07-11 22:48:49Z mike $". - */ -diff -up cups-1.3.9/systemv/lp.c.getnameddest cups-1.3.9/systemv/lp.c ---- cups-1.3.9/systemv/lp.c.getnameddest 2008-07-11 23:48:49.000000000 +0100 -+++ cups-1.3.9/systemv/lp.c 2008-10-10 09:35:05.000000000 +0100 -@@ -73,9 +73,7 @@ main(int argc, /* I - Number of comm - int num_copies; /* Number of copies per file */ - int num_files; /* Number of files to print */ - const char *files[1000]; /* Files to print */ -- int num_dests; /* Number of destinations */ -- cups_dest_t *dests, /* Destinations */ -- *dest; /* Selected destination */ -+ cups_dest_t *dest; /* Selected destination */ - int num_options; /* Number of options */ - cups_option_t *options; /* Options */ - int end_options; /* No more options? */ -@@ -112,8 +110,7 @@ main(int argc, /* I - Number of comm - - silent = 0; - printer = NULL; -- num_dests = 0; -- dests = NULL; -+ dest = NULL; - num_options = 0; - options = NULL; - num_files = 0; -@@ -179,10 +176,7 @@ main(int argc, /* I - Number of comm - if ((instance = strrchr(printer, '/')) != NULL) - *instance++ = '\0'; - -- if (num_dests == 0) -- num_dests = cupsGetDests(&dests); -- -- if ((dest = cupsGetDest(printer, instance, num_dests, dests)) != NULL) -+ if ((dest = cupsGetNamedDest(NULL, printer, instance)) != NULL) - { - for (j = 0; j < dest->num_options; j ++) - if (cupsGetOption(dest->options[j].name, num_options, options) == NULL) -@@ -593,10 +587,7 @@ main(int argc, /* I - Number of comm - - if (printer == NULL) - { -- if (num_dests == 0) -- num_dests = cupsGetDests(&dests); -- -- if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) != NULL) -+ if ((dest = cupsGetNamedDest(NULL, NULL, NULL)) != NULL) - { - printer = dest->name; - -@@ -625,7 +616,7 @@ main(int argc, /* I - Number of comm - else - val = "LPDEST"; - -- if (printer && !cupsGetDest(printer, NULL, num_dests, dests)) -+ if (printer && !cupsGetNamedDest(NULL, printer, NULL)) - _cupsLangPrintf(stderr, - _("%s: Error - %s environment variable names " - "non-existent destination \"%s\"!\n"), diff --git a/cups-includeifexists.patch b/cups-includeifexists.patch deleted file mode 100644 index 6555cfb..0000000 --- a/cups-includeifexists.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- cups-1.2rc3/pdftops/GlobalParams.cxx.includeifexists 2006-04-25 13:19:09.000000000 +0100 -+++ cups-1.2rc3/pdftops/GlobalParams.cxx 2006-04-25 13:19:12.000000000 +0100 -@@ -536,6 +536,17 @@ - error(-1, "Bad 'include' config file command (%s:%d)", - fileName->getCString(), line); - } -+ } else if (!cmd->cmp("includeifexists")) { -+ if (tokens->getLength() == 2) { -+ incFile = (GString *)tokens->get(1); -+ if ((f2 = fopen(incFile->getCString(), "r"))) { -+ parseFile(incFile, f2); -+ fclose(f2); -+ } -+ } else { -+ error(-1, "Bad 'includeifexists' config file command (%s:%d)", -+ fileName->getCString(), line); -+ } - } else if (!cmd->cmp("nameToUnicode")) { - parseNameToUnicode(tokens, fileName, line); - } else if (!cmd->cmp("cidToUnicode")) { diff --git a/cups-lpr-help.patch b/cups-lpr-help.patch index 009a457..1a68297 100644 --- a/cups-lpr-help.patch +++ b/cups-lpr-help.patch @@ -1,8 +1,9 @@ ---- cups-1.2.4/berkeley/lpr.c.lpr-help 2006-09-27 14:44:34.000000000 +0100 -+++ cups-1.2.4/berkeley/lpr.c 2006-09-27 14:59:16.000000000 +0100 -@@ -58,6 +58,30 @@ +diff -up cups-1.4b1/berkeley/lpr.c.lpr-help cups-1.4b1/berkeley/lpr.c +--- cups-1.4b1/berkeley/lpr.c.lpr-help 2008-07-11 23:46:21.000000000 +0100 ++++ cups-1.4b1/berkeley/lpr.c 2008-11-11 16:20:32.000000000 +0000 +@@ -30,6 +30,31 @@ + #include - char tempfile[1024]; /* Temporary file for printing from stdin */ +static void +usage (const char *name) @@ -28,10 +29,19 @@ +, name); +} + - ++ /* * 'main()' - Parse options and send files for printing. -@@ -324,6 +348,12 @@ + */ +@@ -54,7 +79,6 @@ main(int argc, /* I - Number of comm + int deletefile; /* Delete file after print? */ + char buffer[8192]; /* Copy buffer */ + +- + _cupsSetLocale(argv); + + deletefile = 0; +@@ -282,6 +306,12 @@ main(int argc, /* I - Number of comm break; default : diff --git a/cups-lspp.patch b/cups-lspp.patch index bb6b843..233b0d1 100644 --- a/cups-lspp.patch +++ b/cups-lspp.patch @@ -1,8 +1,8 @@ -diff -up cups-1.3.8/config.h.in.lspp cups-1.3.8/config.h.in ---- cups-1.3.8/config.h.in.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/config.h.in 2008-09-10 16:18:26.000000000 +0100 -@@ -544,6 +544,13 @@ - #undef HAVE_REMOVEFILE +diff -up cups-1.4b1/config.h.in.lspp cups-1.4b1/config.h.in +--- cups-1.4b1/config.h.in.lspp 2008-09-08 23:03:01.000000000 +0100 ++++ cups-1.4b1/config.h.in 2008-11-11 16:53:28.000000000 +0000 +@@ -619,6 +619,13 @@ + #undef HAVE_TCPD_H +/* @@ -15,9 +15,9 @@ diff -up cups-1.3.8/config.h.in.lspp cups-1.3.8/config.h.in #endif /* !_CUPS_CONFIG_H_ */ /* -diff -up /dev/null cups-1.3.8/config-scripts/cups-lspp.m4 ---- /dev/null 2008-09-10 08:56:32.430063181 +0100 -+++ cups-1.3.8/config-scripts/cups-lspp.m4 2008-09-10 16:18:26.000000000 +0100 +diff -up /dev/null cups-1.4b1/config-scripts/cups-lspp.m4 +--- /dev/null 2008-11-11 08:58:48.466006417 +0000 ++++ cups-1.4b1/config-scripts/cups-lspp.m4 2008-11-11 16:53:28.000000000 +0000 @@ -0,0 +1,36 @@ +dnl +dnl LSPP code for the Common UNIX Printing System (CUPS). @@ -55,9 +55,9 @@ diff -up /dev/null cups-1.3.8/config-scripts/cups-lspp.m4 + ;; + esac +fi -diff -up cups-1.3.8/configure.in.lspp cups-1.3.8/configure.in ---- cups-1.3.8/configure.in.lspp 2007-07-25 00:47:12.000000000 +0100 -+++ cups-1.3.8/configure.in 2008-09-10 16:18:26.000000000 +0100 +diff -up cups-1.4b1/configure.in.lspp cups-1.4b1/configure.in +--- cups-1.4b1/configure.in.lspp 2008-08-04 21:55:13.000000000 +0100 ++++ cups-1.4b1/configure.in 2008-11-11 16:53:28.000000000 +0000 @@ -42,6 +42,8 @@ sinclude(config-scripts/cups-pap.m4) sinclude(config-scripts/cups-pdf.m4) sinclude(config-scripts/cups-scripting.m4) @@ -67,10 +67,10 @@ diff -up cups-1.3.8/configure.in.lspp cups-1.3.8/configure.in INSTALL_LANGUAGES="" UNINSTALL_LANGUAGES="" LANGFILES="" -diff -up cups-1.3.8/configure.lspp cups-1.3.8/configure ---- cups-1.3.8/configure.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/configure 2008-09-10 16:18:43.000000000 +0100 -@@ -807,6 +807,8 @@ PHP +diff -up cups-1.4b1/configure.lspp cups-1.4b1/configure +--- cups-1.4b1/configure.lspp 2008-11-11 16:53:28.000000000 +0000 ++++ cups-1.4b1/configure 2008-11-11 16:53:28.000000000 +0000 +@@ -827,6 +827,8 @@ PHP PHPCONFIG PHPDIR PYTHON @@ -79,15 +79,66 @@ diff -up cups-1.3.8/configure.lspp cups-1.3.8/configure INSTALL_LANGUAGES UNINSTALL_LANGUAGES LIBOBJS -@@ -1430,6 +1432,7 @@ Optional Features: - enable UseNetworkDefault by default, default=auto +@@ -1455,6 +1457,7 @@ Optional Features: --enable-raw-printing enable raw printing by default, default=auto + --enable-pap build with AppleTalk support, default=auto --enable-pdftops build pdftops filter, default=auto + --enable-lspp turn on auditing and label support, default=no Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -@@ -18555,6 +18558,412 @@ fi +@@ -4647,7 +4650,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>& + else + ac_cv_header_stdc=no + fi +-rm -f -r conftest* ++rm -f conftest* + + fi + +@@ -4668,7 +4671,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>& + else + ac_cv_header_stdc=no + fi +-rm -f -r conftest* ++rm -f conftest* + + fi + +@@ -10323,10 +10326,10 @@ case "$uname" in + ;; + Linux* | GNU*) + # Linux and GNU Hurd +- MAN1EXT=1.gz +- MAN5EXT=5.gz +- MAN7EXT=7.gz +- MAN8EXT=8.gz ++ MAN1EXT=1 ++ MAN5EXT=5 ++ MAN7EXT=7 ++ MAN8EXT=8 + MAN8DIR=8 + ;; + *) +@@ -18305,7 +18308,7 @@ cat >>confdefs.h <<_ACEOF + _ACEOF + ;; + esac +-rm -f -r conftest* ++rm -f conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 + echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; } +@@ -18426,7 +18429,7 @@ cat >>confdefs.h <<_ACEOF + _ACEOF + ;; + esac +-rm -f -r conftest* ++rm -f conftest* + fi + fi + +@@ -20327,6 +20330,412 @@ fi @@ -500,34 +551,26 @@ diff -up cups-1.3.8/configure.lspp cups-1.3.8/configure INSTALL_LANGUAGES="" UNINSTALL_LANGUAGES="" LANGFILES="" -@@ -19449,7 +19858,7 @@ PHP!$PHP$ac_delim +@@ -21284,13 +21693,15 @@ PHP!$PHP$ac_delim PHPCONFIG!$PHPCONFIG$ac_delim PHPDIR!$PHPDIR$ac_delim PYTHON!$PYTHON$ac_delim --INSTALL_LANGUAGES!$INSTALL_LANGUAGES$ac_delim +LIBAUDIT!$LIBAUDIT$ac_delim - _ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then -@@ -19491,12 +19900,14 @@ _ACEOF - ac_delim='%!_!# ' - for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF +LIBSELINUX!$LIBSELINUX$ac_delim -+INSTALL_LANGUAGES!$INSTALL_LANGUAGES$ac_delim + INSTALL_LANGUAGES!$INSTALL_LANGUAGES$ac_delim UNINSTALL_LANGUAGES!$UNINSTALL_LANGUAGES$ac_delim LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF -- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 3; then -+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 5; then +- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 23; then ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 25; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -diff -up cups-1.3.8/cups/cups.h.lspp cups-1.3.8/cups/cups.h ---- cups-1.3.8/cups/cups.h.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/cups/cups.h 2008-09-10 16:18:26.000000000 +0100 +diff -up cups-1.4b1/cups/cups.h.lspp cups-1.4b1/cups/cups.h +--- cups-1.4b1/cups/cups.h.lspp 2008-09-25 00:08:34.000000000 +0100 ++++ cups-1.4b1/cups/cups.h 2008-11-11 16:53:28.000000000 +0000 @@ -15,6 +15,9 @@ * This file is subject to the Apple OS-Developed Software exception. */ @@ -538,8 +581,8 @@ diff -up cups-1.3.8/cups/cups.h.lspp cups-1.3.8/cups/cups.h #ifndef _CUPS_CUPS_H_ # define _CUPS_CUPS_H_ -@@ -66,6 +69,12 @@ extern "C" { - # define CUPS_DATE_ANY -1 +@@ -83,6 +86,12 @@ extern "C" { + # define CUPS_WHICHJOBS_COMPLETED 1 +# ifdef WITH_LSPP @@ -551,9 +594,9 @@ diff -up cups-1.3.8/cups/cups.h.lspp cups-1.3.8/cups/cups.h /* * Types and structures... */ -diff -up cups-1.3.8/data/Makefile.lspp cups-1.3.8/data/Makefile ---- cups-1.3.8/data/Makefile.lspp 2007-10-10 23:00:43.000000000 +0100 -+++ cups-1.3.8/data/Makefile 2008-09-10 16:18:26.000000000 +0100 +diff -up cups-1.4b1/data/Makefile.lspp cups-1.4b1/data/Makefile +--- cups-1.4b1/data/Makefile.lspp 2008-10-15 19:21:56.000000000 +0100 ++++ cups-1.4b1/data/Makefile 2008-11-11 16:53:28.000000000 +0000 @@ -25,7 +25,10 @@ BANNERS = \ secret \ standard \ @@ -566,9 +609,9 @@ diff -up cups-1.3.8/data/Makefile.lspp cups-1.3.8/data/Makefile CHARMAPS = \ euc-cn.txt \ -diff -up /dev/null cups-1.3.8/data/mls ---- /dev/null 2008-09-10 08:56:32.430063181 +0100 -+++ cups-1.3.8/data/mls 2008-09-10 16:18:26.000000000 +0100 +diff -up /dev/null cups-1.4b1/data/mls +--- /dev/null 2008-11-11 08:58:48.466006417 +0000 ++++ cups-1.4b1/data/mls 2008-11-11 16:53:28.000000000 +0000 @@ -0,0 +1,261 @@ +%!PS-Adobe-3.0 +%%BoundingBox: 0 0 612 792 @@ -831,9 +874,9 @@ diff -up /dev/null cups-1.3.8/data/mls +% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $". +% +%%EOF -diff -up /dev/null cups-1.3.8/data/selinux ---- /dev/null 2008-09-10 08:56:32.430063181 +0100 -+++ cups-1.3.8/data/selinux 2008-09-10 16:18:26.000000000 +0100 +diff -up /dev/null cups-1.4b1/data/selinux +--- /dev/null 2008-11-11 08:58:48.466006417 +0000 ++++ cups-1.4b1/data/selinux 2008-11-11 16:53:28.000000000 +0000 @@ -0,0 +1,261 @@ +%!PS-Adobe-3.0 +%%BoundingBox: 0 0 612 792 @@ -1096,9 +1139,9 @@ diff -up /dev/null cups-1.3.8/data/selinux +% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $". +% +%%EOF -diff -up /dev/null cups-1.3.8/data/te ---- /dev/null 2008-09-10 08:56:32.430063181 +0100 -+++ cups-1.3.8/data/te 2008-09-10 16:18:26.000000000 +0100 +diff -up /dev/null cups-1.4b1/data/te +--- /dev/null 2008-11-11 08:58:48.466006417 +0000 ++++ cups-1.4b1/data/te 2008-11-11 16:53:28.000000000 +0000 @@ -0,0 +1,261 @@ +%!PS-Adobe-3.0 +%%BoundingBox: 0 0 612 792 @@ -1361,9 +1404,9 @@ diff -up /dev/null cups-1.3.8/data/te +% End of "$Id: mls_template,v 1.1 2005/06/27 18:44:46 colmo Exp $". +% +%%EOF -diff -up cups-1.3.8/filter/common.c.lspp cups-1.3.8/filter/common.c ---- cups-1.3.8/filter/common.c.lspp 2008-07-11 23:48:49.000000000 +0100 -+++ cups-1.3.8/filter/common.c 2008-09-10 16:18:26.000000000 +0100 +diff -up cups-1.4b1/filter/common.c.lspp cups-1.4b1/filter/common.c +--- cups-1.4b1/filter/common.c.lspp 2007-07-11 22:46:42.000000000 +0100 ++++ cups-1.4b1/filter/common.c 2008-11-11 16:53:28.000000000 +0000 @@ -30,6 +30,12 @@ * Include necessary headers... */ @@ -1532,8 +1575,9 @@ diff -up cups-1.3.8/filter/common.c.lspp cups-1.3.8/filter/common.c /* ---- cups-1.3.9/filter/pstops.c.lspp 2008-10-30 13:29:33.000000000 +0000 -+++ cups-1.3.9/filter/pstops.c 2008-10-30 13:31:06.000000000 +0000 +diff -up cups-1.4b1/filter/pstops.c.lspp cups-1.4b1/filter/pstops.c +--- cups-1.4b1/filter/pstops.c.lspp 2008-09-24 00:44:33.000000000 +0100 ++++ cups-1.4b1/filter/pstops.c 2008-11-11 16:53:28.000000000 +0000 @@ -3233,6 +3233,18 @@ write_label_prolog(pstops_doc_t *doc, /* { const char *classification; /* CLASSIFICATION environment variable */ @@ -1689,10 +1733,10 @@ diff -up cups-1.3.8/filter/common.c.lspp cups-1.3.8/filter/common.c /* -diff -up cups-1.3.8/Makedefs.in.lspp cups-1.3.8/Makedefs.in ---- cups-1.3.8/Makedefs.in.lspp 2008-01-22 22:37:21.000000000 +0000 -+++ cups-1.3.8/Makedefs.in 2008-09-10 16:18:26.000000000 +0100 -@@ -134,7 +134,7 @@ LIBCUPSORDER = @LIBCUPSORDER@ +diff -up cups-1.4b1/Makedefs.in.lspp cups-1.4b1/Makedefs.in +--- cups-1.4b1/Makedefs.in.lspp 2008-11-11 16:53:28.000000000 +0000 ++++ cups-1.4b1/Makedefs.in 2008-11-11 16:53:28.000000000 +0000 +@@ -145,7 +145,7 @@ LIBCUPSORDER = @LIBCUPSORDER@ LIBCUPSIMAGEORDER = @LIBCUPSIMAGEORDER@ LINKCUPS = @LINKCUPS@ $(SSLLIBS) LINKCUPSIMAGE = @LINKCUPSIMAGE@ @@ -1701,10 +1745,19 @@ diff -up cups-1.3.8/Makedefs.in.lspp cups-1.3.8/Makedefs.in OPTIM = @OPTIM@ OPTIONS = PAMLIBS = @PAMLIBS@ -diff -up cups-1.3.8/scheduler/client.c.lspp cups-1.3.8/scheduler/client.c ---- cups-1.3.8/scheduler/client.c.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/scheduler/client.c 2008-09-10 16:18:26.000000000 +0100 -@@ -40,12 +40,14 @@ +@@ -256,7 +256,7 @@ DBUSDIR = @DBUSDIR@ + # Rules... + # + +-.SILENT: ++ + .SUFFIXES: .1 .1.gz .1m .1m.gz .3 .3.gz .5 .5.gz .7 .7.gz .8 .8.gz .a .c .cxx .h .man .o .32.o .64.o .gz + + .c.o: +diff -up cups-1.4b1/scheduler/client.c.lspp cups-1.4b1/scheduler/client.c +--- cups-1.4b1/scheduler/client.c.lspp 2008-10-27 22:47:12.000000000 +0000 ++++ cups-1.4b1/scheduler/client.c 2008-11-11 16:53:28.000000000 +0000 +@@ -41,6 +41,7 @@ * pipe_command() - Pipe the output of a command to the remote client. * write_file() - Send a file via HTTP. * write_pipe() - Flag that data is available on the CGI pipe. @@ -1712,16 +1765,17 @@ diff -up cups-1.3.8/scheduler/client.c.lspp cups-1.3.8/scheduler/client.c */ /* - * Include necessary headers... - */ +@@ -49,6 +50,7 @@ -+#define _GNU_SOURCE - #include #include "cupsd.h" -@@ -77,6 +79,12 @@ extern const char *cssmErrorString(int e - # include - #endif /* HAVE_GNUTLS */ ++#define _GNU_SOURCE + #ifdef HAVE_CDSASSL + # include + # ifdef HAVE_SECIDENTITYSEARCHPRIV_H +@@ -81,6 +83,12 @@ extern const char *cssmErrorString(int e + # include + #endif /* HAVE_TCPD_H */ +#ifdef WITH_LSPP +#include @@ -1732,9 +1786,9 @@ diff -up cups-1.3.8/scheduler/client.c.lspp cups-1.3.8/scheduler/client.c /* * Local functions... -@@ -351,6 +359,57 @@ cupsdAcceptClient(cupsd_listener_t *lis) - } +@@ -402,6 +410,57 @@ cupsdAcceptClient(cupsd_listener_t *lis) } + #endif /* HAVE_TCPD_H */ +#ifdef WITH_LSPP + if (is_lspp_config()) @@ -1790,7 +1844,7 @@ diff -up cups-1.3.8/scheduler/client.c.lspp cups-1.3.8/scheduler/client.c #ifdef AF_INET6 if (con->http.hostaddr->addr.sa_family == AF_INET6) cupsdLogMessage(CUPSD_LOG_DEBUG, "cupsdAcceptClient: %d from %s:%d (IPv6)", -@@ -733,6 +792,13 @@ cupsdReadClient(cupsd_client_t *con) /* +@@ -801,6 +860,13 @@ cupsdReadClient(cupsd_client_t *con) /* mime_type_t *type; /* MIME type of file */ cupsd_printer_t *p; /* Printer */ static unsigned request_id = 0; /* Request ID for temp files */ @@ -1804,7 +1858,7 @@ diff -up cups-1.3.8/scheduler/client.c.lspp cups-1.3.8/scheduler/client.c status = HTTP_CONTINUE; -@@ -2017,6 +2083,67 @@ cupsdReadClient(cupsd_client_t *con) /* +@@ -2091,6 +2157,67 @@ cupsdReadClient(cupsd_client_t *con) /* fchmod(con->file, 0640); fchown(con->file, RunUser, Group); fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC); @@ -1872,7 +1926,7 @@ diff -up cups-1.3.8/scheduler/client.c.lspp cups-1.3.8/scheduler/client.c } if (con->http.state != HTTP_POST_SEND) -@@ -4288,6 +4415,50 @@ make_certificate(cupsd_client_t *con) /* +@@ -4402,6 +4529,50 @@ make_certificate(cupsd_client_t *con) /* #endif /* HAVE_SSL */ @@ -1923,13 +1977,13 @@ diff -up cups-1.3.8/scheduler/client.c.lspp cups-1.3.8/scheduler/client.c /* * 'pipe_command()' - Pipe the output of a command to the remote client. */ -diff -up cups-1.3.8/scheduler/client.h.lspp cups-1.3.8/scheduler/client.h ---- cups-1.3.8/scheduler/client.h.lspp 2007-10-22 19:52:13.000000000 +0100 -+++ cups-1.3.8/scheduler/client.h 2008-09-10 16:18:26.000000000 +0100 -@@ -17,6 +17,13 @@ - # include +diff -up cups-1.4b1/scheduler/client.h.lspp cups-1.4b1/scheduler/client.h +--- cups-1.4b1/scheduler/client.h.lspp 2008-09-11 02:54:11.000000000 +0100 ++++ cups-1.4b1/scheduler/client.h 2008-11-11 16:53:28.000000000 +0000 +@@ -18,6 +18,13 @@ #endif /* HAVE_AUTHORIZATION_H */ + +/* Copyright (C) 2005 Trusted Computer Solutions, Inc. */ +/* (c) Copyright 2005-2006 Hewlett-Packard Development Company, L.P. */ + @@ -1940,7 +1994,7 @@ diff -up cups-1.3.8/scheduler/client.h.lspp cups-1.3.8/scheduler/client.h /* * HTTP client structure... */ -@@ -62,6 +69,10 @@ struct cupsd_client_s +@@ -63,6 +70,10 @@ struct cupsd_client_s #ifdef HAVE_AUTHORIZATION_H AuthorizationRef authref; /* Authorization ref */ #endif /* HAVE_AUTHORIZATION_H */ @@ -1951,7 +2005,7 @@ diff -up cups-1.3.8/scheduler/client.h.lspp cups-1.3.8/scheduler/client.h }; #define HTTP(con) &((con)->http) -@@ -129,6 +140,9 @@ extern void cupsdStartListening(void); +@@ -132,6 +143,9 @@ extern void cupsdStartListening(void); extern void cupsdStopListening(void); extern void cupsdUpdateCGI(void); extern void cupsdWriteClient(cupsd_client_t *con); @@ -1961,9 +2015,9 @@ diff -up cups-1.3.8/scheduler/client.h.lspp cups-1.3.8/scheduler/client.h /* -diff -up cups-1.3.8/scheduler/conf.c.lspp cups-1.3.8/scheduler/conf.c ---- cups-1.3.8/scheduler/conf.c.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/scheduler/conf.c 2008-09-10 16:18:26.000000000 +0100 +diff -up cups-1.4b1/scheduler/conf.c.lspp cups-1.4b1/scheduler/conf.c +--- cups-1.4b1/scheduler/conf.c.lspp 2008-11-11 16:53:28.000000000 +0000 ++++ cups-1.4b1/scheduler/conf.c 2008-11-11 16:53:28.000000000 +0000 @@ -27,6 +27,7 @@ * read_configuration() - Read a configuration file. * read_location() - Read a definition. @@ -1982,7 +2036,7 @@ diff -up cups-1.3.8/scheduler/conf.c.lspp cups-1.3.8/scheduler/conf.c /* * Configuration variable structure... -@@ -161,6 +165,10 @@ static const cupsd_var_t variables[] = +@@ -168,6 +172,10 @@ static const cupsd_var_t variables[] = # if defined(HAVE_LIBSSL) || defined(HAVE_GNUTLS) { "ServerKey", &ServerKey, CUPSD_VARTYPE_PATHNAME }, # endif /* HAVE_LIBSSL || HAVE_GNUTLS */ @@ -1993,17 +2047,17 @@ diff -up cups-1.3.8/scheduler/conf.c.lspp cups-1.3.8/scheduler/conf.c #endif /* HAVE_SSL */ { "ServerName", &ServerName, CUPSD_VARTYPE_STRING }, { "ServerRoot", &ServerRoot, CUPSD_VARTYPE_PATHNAME }, -@@ -352,6 +360,9 @@ cupsdReadConfiguration(void) - *old_requestroot; /* Old RequestRoot */ +@@ -380,6 +388,9 @@ cupsdReadConfiguration(void) const char *tmpdir; /* TMPDIR environment variable */ struct stat tmpinfo; /* Temporary directory info */ + cupsd_policy_t *p; /* Policy */ +#ifdef WITH_LSPP + char *audit_message; /* Audit message string */ +#endif /* WITH_LSPP */ /* -@@ -614,6 +625,25 @@ cupsdReadConfiguration(void) +@@ -659,6 +670,25 @@ cupsdReadConfiguration(void) RunUser = getuid(); @@ -2029,9 +2083,9 @@ diff -up cups-1.3.8/scheduler/conf.c.lspp cups-1.3.8/scheduler/conf.c /* * See if the ServerName is an IP address... */ -@@ -896,11 +926,23 @@ cupsdReadConfiguration(void) - if (MaxActiveJobs > (MaxFDs / 3)) - MaxActiveJobs = MaxFDs / 3; +@@ -951,11 +981,23 @@ cupsdReadConfiguration(void) + * Update classification setting as needed... + */ - if (Classification && !strcasecmp(Classification, "none")) + if (Classification && strcasecmp(Classification, "none") == 0) @@ -2053,8 +2107,8 @@ diff -up cups-1.3.8/scheduler/conf.c.lspp cups-1.3.8/scheduler/conf.c + } /* - * Update the MaxClientsPerHost value, as needed... -@@ -3299,6 +3341,18 @@ read_location(cups_file_t *fp, /* I - C + * Check the MaxClients setting, and then allocate memory for it... +@@ -3489,6 +3531,18 @@ read_location(cups_file_t *fp, /* I - C return ((FatalErrors & CUPSD_FATAL_CONFIG) ? 0 : linenum); } @@ -2073,12 +2127,12 @@ diff -up cups-1.3.8/scheduler/conf.c.lspp cups-1.3.8/scheduler/conf.c /* * 'read_policy()' - Read a definition. -diff -up cups-1.3.8/scheduler/conf.h.lspp cups-1.3.8/scheduler/conf.h ---- cups-1.3.8/scheduler/conf.h.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/scheduler/conf.h 2008-09-10 16:18:26.000000000 +0100 -@@ -208,6 +208,12 @@ VAR char *ServerKey VALUE(NULL); - /* Server key file */ - # endif /* HAVE_LIBSSL || HAVE_GNUTLS */ +diff -up cups-1.4b1/scheduler/conf.h.lspp cups-1.4b1/scheduler/conf.h +--- cups-1.4b1/scheduler/conf.h.lspp 2008-11-11 16:53:28.000000000 +0000 ++++ cups-1.4b1/scheduler/conf.h 2008-11-11 16:53:28.000000000 +0000 +@@ -233,6 +233,12 @@ VAR char *ServerKey VALUE(NULL); + VAR int SSLOptions VALUE(CUPSD_SSL_NONE); + /* SSL/TLS options */ #endif /* HAVE_SSL */ +#ifdef WITH_LSPP +VAR int AuditLog VALUE(-1), @@ -2088,8 +2142,8 @@ diff -up cups-1.3.8/scheduler/conf.h.lspp cups-1.3.8/scheduler/conf.h +#endif /* WITH_LSPP */ #ifdef HAVE_LAUNCHD - VAR int LaunchdTimeout VALUE(DEFAULT_TIMEOUT); -@@ -226,6 +232,9 @@ VAR char *SystemGroupAuthKey VALUE(NULL + VAR int LaunchdTimeout VALUE(DEFAULT_KEEPALIVE); +@@ -251,6 +257,9 @@ VAR char *SystemGroupAuthKey VALUE(NULL /* System group auth key */ #endif /* HAVE_AUTHORIZATION_H */ @@ -2099,10 +2153,10 @@ diff -up cups-1.3.8/scheduler/conf.h.lspp cups-1.3.8/scheduler/conf.h /* * Prototypes... -diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c ---- cups-1.3.8/scheduler/ipp.c.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/scheduler/ipp.c 2008-09-10 16:18:26.000000000 +0100 -@@ -36,6 +36,7 @@ +diff -up cups-1.4b1/scheduler/ipp.c.lspp cups-1.4b1/scheduler/ipp.c +--- cups-1.4b1/scheduler/ipp.c.lspp 2008-11-11 16:53:28.000000000 +0000 ++++ cups-1.4b1/scheduler/ipp.c 2008-11-11 16:53:28.000000000 +0000 +@@ -41,6 +41,7 @@ * cancel_all_jobs() - Cancel all print jobs. * cancel_job() - Cancel a print job. * cancel_subscription() - Cancel a subscription. @@ -2110,7 +2164,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c * check_quotas() - Check quotas for a printer and user. * check_rss_recipient() - Check that we do not have a duplicate RSS * feed URI. -@@ -95,6 +96,9 @@ +@@ -101,6 +102,9 @@ * validate_user() - Validate the user for the request. */ @@ -2120,7 +2174,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c /* * Include necessary headers... */ -@@ -118,6 +122,14 @@ extern int mbr_check_membership_by_id(uu +@@ -127,6 +131,14 @@ extern int mbr_check_membership_by_id(uu # endif /* HAVE_MEMBERSHIPPRIV_H */ #endif /* __APPLE__ */ @@ -2135,7 +2189,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c /* * Local functions... -@@ -143,6 +155,9 @@ static void cancel_all_jobs(cupsd_client +@@ -160,6 +172,9 @@ static void cancel_all_jobs(cupsd_client static void cancel_job(cupsd_client_t *con, ipp_attribute_t *uri); static void cancel_subscription(cupsd_client_t *con, int id); static int check_rss_recipient(const char *recipient); @@ -2145,7 +2199,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c static int check_quotas(cupsd_client_t *con, cupsd_printer_t *p); static ipp_attribute_t *copy_attribute(ipp_t *to, ipp_attribute_t *attr, int quickcopy); -@@ -1270,6 +1285,21 @@ add_job(cupsd_client_t *con, /* I - Cl +@@ -1311,6 +1326,21 @@ add_job(cupsd_client_t *con, /* I - Cl int kbytes; /* Size of print file */ int i; /* Looping var */ int lowerpagerange; /* Page range bound */ @@ -2167,7 +2221,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job(%p[%d], %p(%s), %p(%s/%s))", -@@ -1486,6 +1516,104 @@ add_job(cupsd_client_t *con, /* I - Cl +@@ -1527,6 +1557,104 @@ add_job(cupsd_client_t *con, /* I - Cl ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, title = "Untitled"); @@ -2272,7 +2326,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c if ((job = cupsdAddJob(priority, printer->name)) == NULL) { send_ipp_status(con, IPP_INTERNAL_ERROR, -@@ -1494,6 +1622,32 @@ add_job(cupsd_client_t *con, /* I - Cl +@@ -1535,6 +1663,32 @@ add_job(cupsd_client_t *con, /* I - Cl return (NULL); } @@ -2305,7 +2359,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c job->dtype = printer->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT | CUPS_PRINTER_REMOTE); job->attrs = con->request; -@@ -1699,6 +1853,29 @@ add_job(cupsd_client_t *con, /* I - Cl +@@ -1743,6 +1897,29 @@ add_job(cupsd_client_t *con, /* I - Cl attr->values[0].string.text = _cupsStrAlloc(printer->job_sheets[0]); attr->values[1].string.text = _cupsStrAlloc(printer->job_sheets[1]); } @@ -2335,42 +2389,42 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c job->job_sheets = attr; -@@ -1729,6 +1906,9 @@ add_job(cupsd_client_t *con, /* I - Cl - "job-sheets=\"%s,none\", " - "job-originating-user-name=\"%s\"", - job->id, Classification, job->username); +@@ -1773,6 +1950,9 @@ add_job(cupsd_client_t *con, /* I - Cl + "job-sheets=\"%s,none\", " + "job-originating-user-name=\"%s\"", + Classification, job->username); +#ifdef WITH_LSPP -+ override = 1; ++ override = 1; +#endif /* WITH_LSPP */ } else if (attr->num_values == 2 && strcmp(attr->values[0].string.text, -@@ -1747,6 +1927,9 @@ add_job(cupsd_client_t *con, /* I - Cl - "job-originating-user-name=\"%s\"", - job->id, attr->values[0].string.text, - attr->values[1].string.text, job->username); +@@ -1791,6 +1971,9 @@ add_job(cupsd_client_t *con, /* I - Cl + "job-originating-user-name=\"%s\"", + attr->values[0].string.text, + attr->values[1].string.text, job->username); +#ifdef WITH_LSPP -+ override = 1; ++ override = 1; +#endif /* WITH_LSPP */ } else if (strcmp(attr->values[0].string.text, Classification) && strcmp(attr->values[0].string.text, "none") && -@@ -1767,6 +1950,9 @@ add_job(cupsd_client_t *con, /* I - Cl - "job-originating-user-name=\"%s\"", - job->id, attr->values[0].string.text, - attr->values[1].string.text, job->username); +@@ -1811,6 +1994,9 @@ add_job(cupsd_client_t *con, /* I - Cl + "job-originating-user-name=\"%s\"", + attr->values[0].string.text, + attr->values[1].string.text, job->username); +#ifdef WITH_LSPP -+ override = 1; ++ override = 1; +#endif /* WITH_LSPP */ } } else if (strcmp(attr->values[0].string.text, Classification) && -@@ -1807,9 +1993,52 @@ add_job(cupsd_client_t *con, /* I - Cl - "job-sheets=\"%s\", " - "job-originating-user-name=\"%s\"", - job->id, Classification, job->username); +@@ -1851,8 +2037,52 @@ add_job(cupsd_client_t *con, /* I - Cl + "job-sheets=\"%s\", " + "job-originating-user-name=\"%s\"", + Classification, job->username); +#ifdef WITH_LSPP -+ override = 1; ++ override = 1; +#endif /* WITH_LSPP */ + } +#ifdef WITH_LSPP @@ -2391,7 +2445,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c + (attr->num_values > 1) ? attr->values[1].string.text : "(null)"); + audit_log_user_message(AuditLog, AUDIT_LABEL_OVERRIDE, audit_message, + ServerName, NULL, NULL, 1); -+ } ++ } + else + { + /* @@ -2403,22 +2457,22 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c + (attr->num_values > 1) ? attr->values[1].string.text : "(null)"); + audit_log_user_message(AuditLog, AUDIT_LABEL_OVERRIDE, audit_message, + ServerName, NULL, NULL, 0); -+ } ++ } + cupsdClearString(&audit_message); ++ } } - } - ++ + if (userheader) + free(userheader); + if (userfooter) + free(userfooter); +#endif /* WITH_LSPP */ -+ } -+ + } ++ + /* * See if we need to add the starting sheet... - */ -@@ -3521,6 +3750,103 @@ check_rss_recipient( +@@ -4186,6 +4416,103 @@ check_rss_recipient( } @@ -2522,7 +2576,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c /* * 'check_quotas()' - Check quotas for a printer and user. */ -@@ -4042,6 +4368,15 @@ copy_banner(cupsd_client_t *con, /* I - +@@ -4714,6 +5041,15 @@ copy_banner(cupsd_client_t *con, /* I - char attrname[255], /* Name of attribute */ *s; /* Pointer into name */ ipp_attribute_t *attr; /* Attribute */ @@ -2538,7 +2592,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c cupsdLogMessage(CUPSD_LOG_DEBUG2, -@@ -4077,6 +4412,82 @@ copy_banner(cupsd_client_t *con, /* I - +@@ -4749,6 +5085,82 @@ copy_banner(cupsd_client_t *con, /* I - fchmod(cupsFileNumber(out), 0640); fchown(cupsFileNumber(out), RunUser, Group); @@ -2621,7 +2675,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c /* * Try the localized banner file under the subdirectory... -@@ -4171,6 +4582,24 @@ copy_banner(cupsd_client_t *con, /* I - +@@ -4843,6 +5255,24 @@ copy_banner(cupsd_client_t *con, /* I - else s = attrname; @@ -2646,7 +2700,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c if (!strcmp(s, "printer-name")) { cupsFilePuts(out, job->dest); -@@ -5938,6 +6367,22 @@ get_job_attrs(cupsd_client_t *con, /* I +@@ -6745,6 +7175,22 @@ get_job_attrs(cupsd_client_t *con, /* I return; } @@ -2669,7 +2723,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c /* * Copy attributes... */ -@@ -6143,6 +6588,11 @@ get_jobs(cupsd_client_t *con, /* I - C +@@ -6955,6 +7401,11 @@ get_jobs(cupsd_client_t *con, /* I - C if (count > 0) ippAddSeparator(con->response); @@ -2681,7 +2735,7 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c count ++; cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_jobs: count = %d", count); -@@ -10255,6 +10705,11 @@ validate_user(cupsd_job_t *job, /* I +@@ -11250,6 +11701,11 @@ validate_user(cupsd_job_t *job, /* I strlcpy(username, get_username(con), userlen); @@ -2693,9 +2747,9 @@ diff -up cups-1.3.8/scheduler/ipp.c.lspp cups-1.3.8/scheduler/ipp.c /* * Check the username against the owner... */ -diff -up cups-1.3.8/scheduler/job.c.lspp cups-1.3.8/scheduler/job.c ---- cups-1.3.8/scheduler/job.c.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/scheduler/job.c 2008-09-10 16:18:26.000000000 +0100 +diff -up cups-1.4b1/scheduler/job.c.lspp cups-1.4b1/scheduler/job.c +--- cups-1.4b1/scheduler/job.c.lspp 2008-11-11 16:53:28.000000000 +0000 ++++ cups-1.4b1/scheduler/job.c 2008-11-11 16:53:28.000000000 +0000 @@ -60,6 +60,9 @@ * update_job_attrs() - Update the job-printer-* attributes. */ @@ -2721,7 +2775,7 @@ diff -up cups-1.3.8/scheduler/job.c.lspp cups-1.3.8/scheduler/job.c /* * Local globals... -@@ -1136,6 +1147,23 @@ cupsdLoadJob(cupsd_job_t *job) /* I - J +@@ -1151,6 +1162,23 @@ cupsdLoadJob(cupsd_job_t *job) /* I - J return; } @@ -2745,7 +2799,7 @@ diff -up cups-1.3.8/scheduler/job.c.lspp cups-1.3.8/scheduler/job.c job->sheets = ippFindAttribute(job->attrs, "job-media-sheets-completed", IPP_TAG_INTEGER); job->job_sheets = ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_NAME); -@@ -1493,6 +1521,13 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J +@@ -1508,6 +1536,13 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J { char filename[1024]; /* Job control filename */ cups_file_t *fp; /* Job file */ @@ -2759,7 +2813,7 @@ diff -up cups-1.3.8/scheduler/job.c.lspp cups-1.3.8/scheduler/job.c cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p(%d)): job->attrs=%p", -@@ -1511,6 +1546,76 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J +@@ -1526,6 +1561,76 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J fchmod(cupsFileNumber(fp), 0600); fchown(cupsFileNumber(fp), RunUser, Group); @@ -2836,7 +2890,7 @@ diff -up cups-1.3.8/scheduler/job.c.lspp cups-1.3.8/scheduler/job.c job->attrs->state = IPP_IDLE; if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL, -@@ -2485,6 +2590,21 @@ start_job(cupsd_job_t *job, /* I - +@@ -2511,6 +2616,21 @@ start_job(cupsd_job_t *job, /* I - /* RIP_MAX_CACHE env variable */ static char *options = NULL;/* Full list of options */ static int optlength = 0; /* Length of option buffer */ @@ -2857,8 +2911,8 @@ diff -up cups-1.3.8/scheduler/job.c.lspp cups-1.3.8/scheduler/job.c +#endif /* WITH_LSPP */ - cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] start_job: file = %d/%d", -@@ -2756,6 +2876,106 @@ start_job(cupsd_job_t *job, /* I - + cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: file = %d/%d", +@@ -2783,6 +2903,106 @@ start_job(cupsd_job_t *job, /* I - fcntl(job->side_pipes[1], F_GETFL) | O_NONBLOCK); } @@ -2965,7 +3019,7 @@ diff -up cups-1.3.8/scheduler/job.c.lspp cups-1.3.8/scheduler/job.c /* * Determine if we are printing a banner page or not... */ -@@ -2904,6 +3124,18 @@ start_job(cupsd_job_t *job, /* I - +@@ -2920,6 +3140,18 @@ start_job(cupsd_job_t *job, /* I - banner_page) continue; @@ -2984,7 +3038,7 @@ diff -up cups-1.3.8/scheduler/job.c.lspp cups-1.3.8/scheduler/job.c /* * Otherwise add them to the list... */ -@@ -3146,6 +3378,67 @@ start_job(cupsd_job_t *job, /* I - +@@ -3169,6 +3401,67 @@ start_job(cupsd_job_t *job, /* I - } } @@ -3052,9 +3106,9 @@ diff -up cups-1.3.8/scheduler/job.c.lspp cups-1.3.8/scheduler/job.c if (Classification && !banner_page) { if ((attr = ippFindAttribute(job->attrs, "job-sheets", -diff -up cups-1.3.8/scheduler/job.h.lspp cups-1.3.8/scheduler/job.h ---- cups-1.3.8/scheduler/job.h.lspp 2008-01-16 22:20:33.000000000 +0000 -+++ cups-1.3.8/scheduler/job.h 2008-09-10 16:18:26.000000000 +0100 +diff -up cups-1.4b1/scheduler/job.h.lspp cups-1.4b1/scheduler/job.h +--- cups-1.4b1/scheduler/job.h.lspp 2008-08-28 21:38:13.000000000 +0100 ++++ cups-1.4b1/scheduler/job.h 2008-11-11 16:53:28.000000000 +0000 @@ -13,6 +13,13 @@ * file is missing or damaged, see the license at "http://www.cups.org/". */ @@ -3069,7 +3123,7 @@ diff -up cups-1.3.8/scheduler/job.h.lspp cups-1.3.8/scheduler/job.h /* * Job request structure... */ -@@ -60,6 +67,10 @@ typedef struct cupsd_job_s +@@ -63,6 +70,10 @@ typedef struct cupsd_job_s krb5_ccache ccache; /* Kerberos credential cache */ char *ccname; /* KRB5CCNAME environment variable */ #endif /* HAVE_GSSAPI */ @@ -3080,9 +3134,9 @@ diff -up cups-1.3.8/scheduler/job.h.lspp cups-1.3.8/scheduler/job.h } cupsd_job_t; -diff -up cups-1.3.8/scheduler/main.c.lspp cups-1.3.8/scheduler/main.c ---- cups-1.3.8/scheduler/main.c.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/scheduler/main.c 2008-09-10 16:18:26.000000000 +0100 +diff -up cups-1.4b1/scheduler/main.c.lspp cups-1.4b1/scheduler/main.c +--- cups-1.4b1/scheduler/main.c.lspp 2008-11-11 16:53:28.000000000 +0000 ++++ cups-1.4b1/scheduler/main.c 2008-11-11 16:53:28.000000000 +0000 @@ -35,6 +35,8 @@ * usage() - Show scheduler usage. */ @@ -3112,7 +3166,7 @@ diff -up cups-1.3.8/scheduler/main.c.lspp cups-1.3.8/scheduler/main.c #ifdef HAVE_GETEUID -@@ -413,6 +421,25 @@ main(int argc, /* I - Number of comm +@@ -426,6 +434,25 @@ main(int argc, /* I - Number of comm #endif /* DEBUG */ } @@ -3138,7 +3192,7 @@ diff -up cups-1.3.8/scheduler/main.c.lspp cups-1.3.8/scheduler/main.c /* * Set the timezone info... */ -@@ -1160,6 +1187,11 @@ main(int argc, /* I - Number of comm +@@ -1200,6 +1227,11 @@ main(int argc, /* I - Number of comm cupsdStopSelect(); @@ -3150,11 +3204,11 @@ diff -up cups-1.3.8/scheduler/main.c.lspp cups-1.3.8/scheduler/main.c return (!stop_scheduler); } -diff -up cups-1.3.8/scheduler/printers.c.lspp cups-1.3.8/scheduler/printers.c ---- cups-1.3.8/scheduler/printers.c.lspp 2008-09-10 16:18:26.000000000 +0100 -+++ cups-1.3.8/scheduler/printers.c 2008-09-10 16:18:26.000000000 +0100 -@@ -51,6 +51,8 @@ - * printing desktop tools. +diff -up cups-1.4b1/scheduler/printers.c.lspp cups-1.4b1/scheduler/printers.c +--- cups-1.4b1/scheduler/printers.c.lspp 2008-11-11 16:53:28.000000000 +0000 ++++ cups-1.4b1/scheduler/printers.c 2008-11-11 17:00:31.000000000 +0000 +@@ -52,6 +52,8 @@ + * write_xml_string() - Write a string with XML escaping. */ +/* (c) Copyright 2005-2006 Hewlett-Packard Development Company, L.P. */ @@ -3162,9 +3216,9 @@ diff -up cups-1.3.8/scheduler/printers.c.lspp cups-1.3.8/scheduler/printers.c /* * Include necessary headers... */ -@@ -74,6 +76,10 @@ static void write_irix_config(cupsd_prin - static void write_irix_state(cupsd_printer_t *p); +@@ -79,6 +81,10 @@ static void write_irix_state(cupsd_print #endif /* __sgi */ + static void write_xml_string(cups_file_t *fp, const char *s); +#ifdef WITH_LSPP +# include @@ -3173,7 +3227,7 @@ diff -up cups-1.3.8/scheduler/printers.c.lspp cups-1.3.8/scheduler/printers.c /* * 'cupsdAddPrinter()' - Add a printer to the system. -@@ -1846,6 +1852,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p) +@@ -2081,6 +2087,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p) { /* No authentication */ "none" }; @@ -3187,14 +3241,13 @@ diff -up cups-1.3.8/scheduler/printers.c.lspp cups-1.3.8/scheduler/printers.c DEBUG_printf(("cupsdSetPrinterAttrs: entering name = %s, type = %x\n", p->name, -@@ -1989,6 +2002,44 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p) +@@ -2226,6 +2239,42 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p) attr->values[1].string.text = _cupsStrAlloc(Classification ? Classification : p->job_sheets[1]); } +#ifdef WITH_LSPP + if (AuditLog != -1) + { -+ char uri[HTTP_MAX_URI]; + audit_message = NULL; + rangestr = NULL; + printercon = 0; @@ -3218,9 +3271,8 @@ diff -up cups-1.3.8/scheduler/printers.c.lspp cups-1.3.8/scheduler/printers.c + else + rangestr = strdup("unknown"); + -+ cupsdSanitizeURI(p->device_uri, uri, sizeof(uri)); + cupsdSetStringf(&audit_message, "printer=%s uri=%s banners=%s,%s range=%s", -+ p->name, uri, p->job_sheets[0], p->job_sheets[1], rangestr); ++ p->name, p->sanitized_device_uri, p->job_sheets[0], p->job_sheets[1], rangestr); + audit_log_user_message(AuditLog, AUDIT_LABEL_LEVEL_CHANGE, audit_message, + ServerName, NULL, NULL, 1); + if (printercon) @@ -3232,3 +3284,11 @@ diff -up cups-1.3.8/scheduler/printers.c.lspp cups-1.3.8/scheduler/printers.c } p->raw = 0; +@@ -4606,7 +4655,6 @@ write_irix_state(cupsd_printer_t *p) /* + } + #endif /* __sgi */ + +- + /* + * 'write_xml_string()' - Write a string with XML escaping. + */ diff --git a/cups-paps.patch b/cups-paps.patch index f22e8e9..91da82d 100644 --- a/cups-paps.patch +++ b/cups-paps.patch @@ -1,11 +1,12 @@ ---- cups-1.3b1/conf/mime.convs.in.paps 2007-07-18 11:31:28.000000000 +0100 -+++ cups-1.3b1/conf/mime.convs.in 2007-07-18 11:31:47.000000000 +0100 -@@ -45,7 +45,7 @@ - application/x-csource application/postscript 33 texttops - application/x-perl application/postscript 33 texttops - application/x-shell application/postscript 33 texttops --text/plain application/postscript 33 texttops -+text/plain application/postscript 33 texttopaps - text/html application/postscript 33 texttops - image/gif application/vnd.cups-postscript 66 imagetops - image/png application/vnd.cups-postscript 66 imagetops +diff -up cups-1.4b1/conf/mime.convs.in.paps cups-1.4b1/conf/mime.convs.in +--- cups-1.4b1/conf/mime.convs.in.paps 2008-10-08 22:07:45.000000000 +0100 ++++ cups-1.4b1/conf/mime.convs.in 2008-11-11 15:42:18.000000000 +0000 +@@ -45,7 +45,7 @@ application/x-cshell application/postsc + application/x-csource application/postscript 33 texttops + application/x-perl application/postscript 33 texttops + application/x-shell application/postscript 33 texttops +-text/plain application/postscript 33 texttops ++text/plain application/postscript 33 texttopaps + text/html application/postscript 33 texttops + image/gif application/vnd.cups-postscript 66 imagetops + image/png application/vnd.cups-postscript 66 imagetops diff --git a/cups-serverbin-compat.patch b/cups-serverbin-compat.patch index 5336a72..8f211f6 100644 --- a/cups-serverbin-compat.patch +++ b/cups-serverbin-compat.patch @@ -1,7 +1,7 @@ -diff -up cups-1.3.7/scheduler/conf.c.serverbin-compat cups-1.3.7/scheduler/conf.c ---- cups-1.3.7/scheduler/conf.c.serverbin-compat 2008-03-20 04:06:01.000000000 +0000 -+++ cups-1.3.7/scheduler/conf.c 2008-07-15 11:04:19.000000000 +0100 -@@ -402,6 +402,9 @@ cupsdReadConfiguration(void) +diff -up cups-1.4b1/scheduler/conf.c.serverbin-compat cups-1.4b1/scheduler/conf.c +--- cups-1.4b1/scheduler/conf.c.serverbin-compat 2008-10-08 17:34:03.000000000 +0100 ++++ cups-1.4b1/scheduler/conf.c 2008-11-11 15:39:11.000000000 +0000 +@@ -432,6 +432,9 @@ cupsdReadConfiguration(void) cupsdSetString(&ServerName, httpGetHostname(NULL, temp, sizeof(temp))); cupsdSetStringf(&ServerAdmin, "root@%s", temp); cupsdSetString(&ServerBin, CUPS_SERVERBIN); @@ -11,23 +11,23 @@ diff -up cups-1.3.7/scheduler/conf.c.serverbin-compat cups-1.3.7/scheduler/conf. cupsdSetString(&RequestRoot, CUPS_REQUESTS); cupsdSetString(&CacheDir, CUPS_CACHEDIR); cupsdSetString(&DataDir, CUPS_DATADIR); -@@ -1095,7 +1098,12 @@ cupsdReadConfiguration(void) +@@ -1187,7 +1190,12 @@ cupsdReadConfiguration(void) * Read the MIME type and conversion database... */ +#ifdef __x86_64__ + snprintf(temp, sizeof(temp), "%s/filter:%s/filter", ServerBin, + ServerBin_compat); -+#else /* ! defined(__x86_64__) */ ++#else snprintf(temp, sizeof(temp), "%s/filter", ServerBin); +#endif + snprintf(mimedir, sizeof(mimedir), "%s/mime", DataDir); - MimeDatabase = mimeLoad(ServerRoot, temp); - -diff -up cups-1.3.7/scheduler/conf.h.serverbin-compat cups-1.3.7/scheduler/conf.h ---- cups-1.3.7/scheduler/conf.h.serverbin-compat 2008-02-15 23:26:51.000000000 +0000 -+++ cups-1.3.7/scheduler/conf.h 2008-07-15 11:04:19.000000000 +0100 -@@ -59,6 +59,10 @@ VAR char *ConfigurationFile VALUE(NULL) + MimeDatabase = mimeLoadTypes(NULL, mimedir); +diff -up cups-1.4b1/scheduler/conf.h.serverbin-compat cups-1.4b1/scheduler/conf.h +--- cups-1.4b1/scheduler/conf.h.serverbin-compat 2008-09-19 21:03:36.000000000 +0100 ++++ cups-1.4b1/scheduler/conf.h 2008-11-11 15:35:13.000000000 +0000 +@@ -89,6 +89,10 @@ VAR char *ConfigurationFile VALUE(NULL) /* Root directory for scheduler */ *ServerBin VALUE(NULL), /* Root directory for binaries */ @@ -38,9 +38,9 @@ diff -up cups-1.3.7/scheduler/conf.h.serverbin-compat cups-1.3.7/scheduler/conf. *StateDir VALUE(NULL), /* Root directory for state data */ *RequestRoot VALUE(NULL), -diff -up cups-1.3.7/scheduler/env.c.serverbin-compat cups-1.3.7/scheduler/env.c ---- cups-1.3.7/scheduler/env.c.serverbin-compat 2007-07-11 22:46:42.000000000 +0100 -+++ cups-1.3.7/scheduler/env.c 2008-07-15 11:04:19.000000000 +0100 +diff -up cups-1.4b1/scheduler/env.c.serverbin-compat cups-1.4b1/scheduler/env.c +--- cups-1.4b1/scheduler/env.c.serverbin-compat 2008-06-18 23:31:26.000000000 +0100 ++++ cups-1.4b1/scheduler/env.c 2008-11-11 15:35:13.000000000 +0000 @@ -86,8 +86,13 @@ cupsdInitEnv(void) cupsdSetEnv("LD_LIBRARY_PATH", NULL); cupsdSetEnv("LD_PRELOAD", NULL); @@ -55,32 +55,32 @@ diff -up cups-1.3.7/scheduler/env.c.serverbin-compat cups-1.3.7/scheduler/env.c cupsdSetEnv("SERVER_ADMIN", ServerAdmin); cupsdSetEnv("SHLIB_PATH", NULL); cupsdSetEnv("SOFTWARE", CUPS_MINIMAL); -diff -up cups-1.3.7/scheduler/ipp.c.serverbin-compat cups-1.3.7/scheduler/ipp.c ---- cups-1.3.7/scheduler/ipp.c.serverbin-compat 2008-03-24 22:34:44.000000000 +0000 -+++ cups-1.3.7/scheduler/ipp.c 2008-07-15 11:04:19.000000000 +0100 -@@ -2377,9 +2377,18 @@ add_printer(cupsd_client_t *con, /* I - +diff -up cups-1.4b1/scheduler/ipp.c.serverbin-compat cups-1.4b1/scheduler/ipp.c +--- cups-1.4b1/scheduler/ipp.c.serverbin-compat 2008-10-27 21:54:12.000000000 +0000 ++++ cups-1.4b1/scheduler/ipp.c 2008-11-11 15:41:25.000000000 +0000 +@@ -2515,9 +2515,18 @@ add_printer(cupsd_client_t *con, /* I - * Could not find device in list! */ +#ifdef __x86_64__ -+ snprintf(srcfile, sizeof(srcfile), "%s/backend/%s", ServerBin_compat, ++ snprintf(srcfile, sizeof(srcfile), "%s/backend/%s", ServerBin_compat, + scheme); + if (access(srcfile, X_OK)) -+ { ++ { +#endif /* __x86_64__ */ - send_ipp_status(con, IPP_NOT_POSSIBLE, _("Bad device-uri \"%s\"!"), - attr->values[0].string.text); + send_ipp_status(con, IPP_NOT_POSSIBLE, _("Bad device-uri scheme \"%s\"!"), + scheme); return; +#ifdef __x86_64__ -+ } ++ } +#endif /* __x86_64__ */ } } -diff -up cups-1.3.7/scheduler/job.c.serverbin-compat cups-1.3.7/scheduler/job.c ---- cups-1.3.7/scheduler/job.c.serverbin-compat 2008-03-25 22:57:40.000000000 +0000 -+++ cups-1.3.7/scheduler/job.c 2008-07-15 11:04:19.000000000 +0100 -@@ -3223,8 +3223,32 @@ start_job(cupsd_job_t *job, /* I - +diff -up cups-1.4b1/scheduler/job.c.serverbin-compat cups-1.4b1/scheduler/job.c +--- cups-1.4b1/scheduler/job.c.serverbin-compat 2008-10-21 01:02:45.000000000 +0100 ++++ cups-1.4b1/scheduler/job.c 2008-11-11 15:35:13.000000000 +0000 +@@ -3267,8 +3267,32 @@ start_job(cupsd_job_t *job, /* I - i ++, filter = (mime_filter_t *)cupsArrayNext(filters)) { if (filter->filter[0] != '/') @@ -115,7 +115,7 @@ diff -up cups-1.3.7/scheduler/job.c.serverbin-compat cups-1.3.7/scheduler/job.c else strlcpy(command, filter->filter, sizeof(command)); -@@ -3374,6 +3398,28 @@ start_job(cupsd_job_t *job, /* I - +@@ -3414,6 +3438,28 @@ start_job(cupsd_job_t *job, /* I - { sscanf(printer->device_uri, "%254[^:]", method); snprintf(command, sizeof(command), "%s/backend/%s", ServerBin, method); @@ -144,10 +144,10 @@ diff -up cups-1.3.7/scheduler/job.c.serverbin-compat cups-1.3.7/scheduler/job.c /* * See if the backend needs to run as root... -diff -up cups-1.3.7/scheduler/printers.c.serverbin-compat cups-1.3.7/scheduler/printers.c ---- cups-1.3.7/scheduler/printers.c.serverbin-compat 2008-01-30 06:09:39.000000000 +0000 -+++ cups-1.3.7/scheduler/printers.c 2008-07-15 11:04:19.000000000 +0100 -@@ -934,9 +934,19 @@ cupsdLoadAllPrinters(void) +diff -up cups-1.4b1/scheduler/printers.c.serverbin-compat cups-1.4b1/scheduler/printers.c +--- cups-1.4b1/scheduler/printers.c.serverbin-compat 2008-10-10 06:28:15.000000000 +0100 ++++ cups-1.4b1/scheduler/printers.c 2008-11-11 15:35:13.000000000 +0000 +@@ -985,9 +985,19 @@ cupsdLoadAllPrinters(void) * Backend does not exist, stop printer... */ @@ -167,7 +167,7 @@ diff -up cups-1.3.7/scheduler/printers.c.serverbin-compat cups-1.3.7/scheduler/p } } -@@ -3395,6 +3405,12 @@ add_printer_filter( +@@ -3448,6 +3458,12 @@ add_printer_filter( if (access(filename, X_OK)) { @@ -180,7 +180,7 @@ diff -up cups-1.3.7/scheduler/printers.c.serverbin-compat cups-1.3.7/scheduler/p snprintf(p->state_message, sizeof(p->state_message), "Filter \"%s\" for printer \"%s\" not available: %s", program, p->name, strerror(errno)); -@@ -3402,6 +3418,9 @@ add_printer_filter( +@@ -3455,6 +3471,9 @@ add_printer_filter( cupsdSetPrinterState(p, IPP_PRINTER_STOPPED, 0); cupsdLogMessage(CUPSD_LOG_ERROR, "%s", p->state_message); diff --git a/cups-str2101.patch b/cups-str2101.patch deleted file mode 100644 index d889143..0000000 --- a/cups-str2101.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff -up cups-1.3.8/scheduler/auth.c.str2101 cups-1.3.8/scheduler/auth.c ---- cups-1.3.8/scheduler/auth.c.str2101 2008-08-11 15:12:12.000000000 +0100 -+++ cups-1.3.8/scheduler/auth.c 2008-08-11 15:12:37.000000000 +0100 -@@ -2098,7 +2098,7 @@ cupsdIsAuthorized(cupsd_client_t *con, / - return (HTTP_OK); - } - -- return (HTTP_UNAUTHORIZED); -+ return (HTTP_FORBIDDEN); - } - #endif /* HAVE_AUTHORIZATION_H */ - -@@ -2122,7 +2122,7 @@ cupsdIsAuthorized(cupsd_client_t *con, / - return (HTTP_OK); - } - -- return (HTTP_UNAUTHORIZED); -+ return (HTTP_FORBIDDEN); - } - - /* -@@ -2159,7 +2159,7 @@ cupsdIsAuthorized(cupsd_client_t *con, / - cupsdLogMessage(CUPSD_LOG_DEBUG, - "cupsdIsAuthorized: User not in group(s)!"); - -- return (HTTP_UNAUTHORIZED); -+ return (HTTP_FORBIDDEN); - } - - diff --git a/cups-str2536.patch b/cups-str2536.patch deleted file mode 100644 index e6e33a7..0000000 --- a/cups-str2536.patch +++ /dev/null @@ -1,810 +0,0 @@ -diff -up cups-1.3.8/config.h.in.str2536 cups-1.3.8/config.h.in ---- cups-1.3.8/config.h.in.str2536 2008-09-10 16:16:44.000000000 +0100 -+++ cups-1.3.8/config.h.in 2008-09-10 16:16:44.000000000 +0100 -@@ -43,6 +43,13 @@ - - - /* -+ * Default fatal error settings... -+ */ -+ -+#define CUPS_DEFAULT_FATAL_ERRORS "config" -+ -+ -+/* - * Default browsing settings... - */ - -diff -up cups-1.3.8/config-scripts/cups-defaults.m4.str2536 cups-1.3.8/config-scripts/cups-defaults.m4 ---- cups-1.3.8/config-scripts/cups-defaults.m4.str2536 2008-04-14 19:10:27.000000000 +0100 -+++ cups-1.3.8/config-scripts/cups-defaults.m4 2008-09-10 16:16:44.000000000 +0100 -@@ -43,6 +43,14 @@ AC_ARG_WITH(log_file_perm, [ --with-log - AC_SUBST(CUPS_LOG_FILE_PERM) - AC_DEFINE_UNQUOTED(CUPS_DEFAULT_LOG_FILE_PERM, 0$CUPS_LOG_FILE_PERM) - -+dnl Default FatalErrors -+AC_ARG_WITH(fatal_errors, [ --with-fatal-errors set default FatalErrors value, default=config], -+ CUPS_FATAL_ERRORS="$withval", -+ CUPS_FATAL_ERRORS="config") -+AC_SUBST(CUPS_FATAL_ERRORS) -+AC_DEFINE_UNQUOTED(CUPS_DEFAULT_FATAL_ERRORS, "$CUPS_FATAL_ERRORS") -+ -+ - dnl Default Browsing - AC_ARG_ENABLE(browsing, [ --enable-browsing enable Browsing by default, default=yes]) - if test "x$enable_browsing" = xno; then -diff -up cups-1.3.8/configure.str2536 cups-1.3.8/configure ---- cups-1.3.8/configure.str2536 2008-09-10 16:16:44.000000000 +0100 -+++ cups-1.3.8/configure 2008-09-10 16:18:16.000000000 +0100 -@@ -782,6 +782,7 @@ LAUNCHDLIBS - LANGUAGES - CUPS_CONFIG_FILE_PERM - CUPS_LOG_FILE_PERM -+CUPS_FATAL_ERRORS - CUPS_BROWSING - CUPS_BROWSE_LOCAL_PROTOCOLS - CUPS_BROWSE_REMOTE_PROTOCOLS -@@ -1471,6 +1472,7 @@ Optional Packages: - --with-languages set installed languages, default=all - --with-config-file-perm set default ConfigFilePerm value, default=0640 - --with-log-file-perm set default LogFilePerm value, default=0644 -+ --with-fatal-errors set default FatalErrors value, default=config - --with-local-protocols set default BrowseLocalProtocols, default="CUPS" - --with-remote-protocols set default BrowseRemoteProtocols, default="CUPS" - --with-cups-user set default user for CUPS -@@ -9680,10 +9682,10 @@ case "$uname" in - ;; - Linux* | GNU*) - # Linux and GNU Hurd -- MAN1EXT=1.gz -- MAN5EXT=5.gz -- MAN7EXT=7.gz -- MAN8EXT=8.gz -+ MAN1EXT=1 -+ MAN5EXT=5 -+ MAN7EXT=7 -+ MAN8EXT=8 - MAN8DIR=8 - ;; - *) -@@ -17624,6 +17626,21 @@ cat >>confdefs.h <<_ACEOF - _ACEOF - - -+ -+# Check whether --with-fatal_errors was given. -+if test "${with_fatal_errors+set}" = set; then -+ withval=$with_fatal_errors; CUPS_FATAL_ERRORS="$withval" -+else -+ CUPS_FATAL_ERRORS="config" -+fi -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define CUPS_DEFAULT_FATAL_ERRORS "$CUPS_FATAL_ERRORS" -+_ACEOF -+ -+ -+ - # Check whether --enable-browsing was given. - if test "${enable_browsing+set}" = set; then - enableval=$enable_browsing; -@@ -19407,6 +19424,7 @@ LAUNCHDLIBS!$LAUNCHDLIBS$ac_delim - LANGUAGES!$LANGUAGES$ac_delim - CUPS_CONFIG_FILE_PERM!$CUPS_CONFIG_FILE_PERM$ac_delim - CUPS_LOG_FILE_PERM!$CUPS_LOG_FILE_PERM$ac_delim -+CUPS_FATAL_ERRORS!$CUPS_FATAL_ERRORS$ac_delim - CUPS_BROWSING!$CUPS_BROWSING$ac_delim - CUPS_BROWSE_LOCAL_PROTOCOLS!$CUPS_BROWSE_LOCAL_PROTOCOLS$ac_delim - CUPS_BROWSE_REMOTE_PROTOCOLS!$CUPS_BROWSE_REMOTE_PROTOCOLS$ac_delim -@@ -19432,7 +19450,6 @@ PHPCONFIG!$PHPCONFIG$ac_delim - PHPDIR!$PHPDIR$ac_delim - PYTHON!$PYTHON$ac_delim - INSTALL_LANGUAGES!$INSTALL_LANGUAGES$ac_delim --UNINSTALL_LANGUAGES!$UNINSTALL_LANGUAGES$ac_delim - _ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then -@@ -19474,11 +19491,12 @@ _ACEOF - ac_delim='%!_!# ' - for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -+UNINSTALL_LANGUAGES!$UNINSTALL_LANGUAGES$ac_delim - LIBOBJS!$LIBOBJS$ac_delim - LTLIBOBJS!$LTLIBOBJS$ac_delim - _ACEOF - -- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 2; then -+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 3; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -diff -up cups-1.3.8/doc/help/ref-cupsd-conf.html.in.str2536 cups-1.3.8/doc/help/ref-cupsd-conf.html.in ---- cups-1.3.8/doc/help/ref-cupsd-conf.html.in.str2536 2008-06-17 19:27:16.000000000 +0100 -+++ cups-1.3.8/doc/help/ref-cupsd-conf.html.in 2008-09-10 16:16:44.000000000 +0100 -@@ -1115,6 +1115,57 @@ printer.

- - - -+ -+

CUPS 1.4FatalErrors

-+ -+

Examples

-+ -+
-+FatalErrors none
-+FatalErrors all
-+FatalErrors browse
-+FatalErrors config
-+FatalErrors listen
-+FatalErrors log
-+FatalErrors permissions
-+FatalErrors all -permissions
-+FatalErrors config permissions log
-+
-+ -+

Description

-+ -+

The FatalErrors directive determines whether certain kinds of -+errors are fatal. The following kinds of errors are currently recognized:

-+ -+
    -+ -+
  • none - No errors are fatal
  • -+ -+
  • all - All of the errors below are fatal
  • -+ -+
  • browse - Browsing initialization errors are fatal, -+ for example failed binding to the CUPS browse port or failed connections -+ to LDAP servers
  • -+ -+
  • config - Configuration file syntax errors are -+ fatal
  • -+ -+
  • listen - Listen or Port errors are fatal, except for -+ IPv6 failures on the loopback or "any" addresses
  • -+ -+
  • log - Log file creation or write errors are fatal
  • -+ -+
  • permissions - Bad startup file permissions are -+ fatal, for example shared SSL certificate and key files with world- -+ read permissions
  • -+ -+
-+ -+

Multiple errors can be listed, and the form "-kind" can be used with -+all to remove specific kinds of errors. The default setting is -+@CUPS_FATAL_ERRORS@.

-+ -+ -

CUPS 1.1.18FileDevice

- -

Examples

-diff -up cups-1.3.8/man/cupsd.conf.man.in.str2536 cups-1.3.8/man/cupsd.conf.man.in ---- cups-1.3.8/man/cupsd.conf.man.in.str2536 2008-06-16 18:41:11.000000000 +0100 -+++ cups-1.3.8/man/cupsd.conf.man.in 2008-09-10 16:16:44.000000000 +0100 -@@ -275,6 +275,15 @@ ErrorLog syslog - .br - Specifies the error log filename. - .TP 5 -+FatalErrors none -+.TP 5 -+FatalErrors all -kind [... -kind] -+.TP 5 -+FatalErrors kind [... kind] -+.br -+Specifies which errors are fatal, causing the scheduler to exit. "Kind" is -+"browse", "config", "listen", "log", or "permissions". -+.TP 5 - FileDevice Yes - .TP 5 - FileDevice No -diff -up cups-1.3.8/scheduler/conf.c.str2536 cups-1.3.8/scheduler/conf.c ---- cups-1.3.8/scheduler/conf.c.str2536 2008-09-10 16:16:44.000000000 +0100 -+++ cups-1.3.8/scheduler/conf.c 2008-09-10 16:17:52.000000000 +0100 -@@ -21,6 +21,7 @@ - * get_addr_and_mask() - Get an IP address and netmask. - * parse_aaa() - Parse authentication, authorization, and - * access control lines. -+ * parse_fatal_errors() - Parse FatalErrors values in a string. - * parse_groups() - Parse system group names in a string. - * parse_protocols() - Parse browse protocols in a string. - * read_configuration() - Read a configuration file. -@@ -192,6 +193,7 @@ static int get_addr_and_mask(const char - unsigned *mask); - static int parse_aaa(cupsd_location_t *loc, char *line, - char *value, int linenum); -+static int parse_fatal_errors(const char *s); - static int parse_groups(const char *s); - static int parse_protocols(const char *s); - static int read_configuration(cups_file_t *fp); -@@ -512,6 +514,7 @@ cupsdReadConfiguration(void) - */ - - ConfigFilePerm = CUPS_DEFAULT_CONFIG_FILE_PERM; -+ FatalErrors = parse_fatal_errors(CUPS_DEFAULT_FATAL_ERRORS); - DefaultAuthType = CUPSD_AUTH_BASIC; - #ifdef HAVE_SSL - DefaultEncryption = HTTP_ENCRYPT_REQUIRED; -@@ -782,30 +785,31 @@ cupsdReadConfiguration(void) - - snprintf(temp, sizeof(temp), "%s/rss", CacheDir); - -- if (cupsdCheckPermissions(RequestRoot, NULL, 0710, RunUser, -- Group, 1, 1) < 0 || -- cupsdCheckPermissions(CacheDir, NULL, 0775, RunUser, -- Group, 1, 1) < 0 || -- cupsdCheckPermissions(temp, NULL, 0775, RunUser, -- Group, 1, 1) < 0 || -- cupsdCheckPermissions(StateDir, NULL, 0755, RunUser, -- Group, 1, 1) < 0 || -- cupsdCheckPermissions(StateDir, "certs", RunUser ? 0711 : 0511, User, -- SystemGroupIDs[0], 1, 1) < 0 || -- cupsdCheckPermissions(ServerRoot, NULL, 0755, RunUser, -- Group, 1, 0) < 0 || -- cupsdCheckPermissions(ServerRoot, "ppd", 0755, RunUser, -- Group, 1, 1) < 0 || -- cupsdCheckPermissions(ServerRoot, "ssl", 0700, RunUser, -- Group, 1, 0) < 0 || -- cupsdCheckPermissions(ServerRoot, "cupsd.conf", ConfigFilePerm, RunUser, -- Group, 0, 0) < 0 || -- cupsdCheckPermissions(ServerRoot, "classes.conf", 0600, RunUser, -- Group, 0, 0) < 0 || -- cupsdCheckPermissions(ServerRoot, "printers.conf", 0600, RunUser, -- Group, 0, 0) < 0 || -- cupsdCheckPermissions(ServerRoot, "passwd.md5", 0600, User, -- Group, 0, 0) < 0) -+ if ((cupsdCheckPermissions(RequestRoot, NULL, 0710, RunUser, -+ Group, 1, 1) < 0 || -+ cupsdCheckPermissions(CacheDir, NULL, 0775, RunUser, -+ Group, 1, 1) < 0 || -+ cupsdCheckPermissions(temp, NULL, 0775, RunUser, -+ Group, 1, 1) < 0 || -+ cupsdCheckPermissions(StateDir, NULL, 0755, RunUser, -+ Group, 1, 1) < 0 || -+ cupsdCheckPermissions(StateDir, "certs", RunUser ? 0711 : 0511, User, -+ SystemGroupIDs[0], 1, 1) < 0 || -+ cupsdCheckPermissions(ServerRoot, NULL, 0755, RunUser, -+ Group, 1, 0) < 0 || -+ cupsdCheckPermissions(ServerRoot, "ppd", 0755, RunUser, -+ Group, 1, 1) < 0 || -+ cupsdCheckPermissions(ServerRoot, "ssl", 0700, RunUser, -+ Group, 1, 0) < 0 || -+ cupsdCheckPermissions(ServerRoot, "cupsd.conf", ConfigFilePerm, RunUser, -+ Group, 0, 0) < 0 || -+ cupsdCheckPermissions(ServerRoot, "classes.conf", 0600, RunUser, -+ Group, 0, 0) < 0 || -+ cupsdCheckPermissions(ServerRoot, "printers.conf", 0600, RunUser, -+ Group, 0, 0) < 0 || -+ cupsdCheckPermissions(ServerRoot, "passwd.md5", 0600, User, -+ Group, 0, 0) < 0) && -+ FatalErrors & CUPSD_FATAL_PERMISSIONS) - return (0); - - /* -@@ -855,7 +859,8 @@ cupsdReadConfiguration(void) - * is under the spool directory or does not exist... - */ - -- if (cupsdCheckPermissions(TempDir, NULL, 01770, RunUser, Group, 1, 1) < 0) -+ if (cupsdCheckPermissions(TempDir, NULL, 01770, RunUser, Group, 1, 1) < 0 && -+ (FatalErrors & CUPSD_FATAL_PERMISSIONS)) - return (0); - } - -@@ -872,8 +877,10 @@ cupsdReadConfiguration(void) - if (MaxClients > (MaxFDs / 3) || MaxClients <= 0) - { - if (MaxClients > 0) -- cupsdLogMessage(CUPSD_LOG_INFO, "MaxClients limited to 1/3 (%d) of the file descriptor limit (%d)...", -- MaxFDs / 3, MaxFDs); -+ cupsdLogMessage(CUPSD_LOG_INFO, -+ "MaxClients limited to 1/3 (%d) of the file descriptor " -+ "limit (%d)...", -+ MaxFDs / 3, MaxFDs); - - MaxClients = MaxFDs / 3; - } -@@ -1115,7 +1122,8 @@ cupsdReadConfiguration(void) - { - cupsdLogMessage(CUPSD_LOG_EMERG, - "Unable to load MIME database from \'%s\'!", ServerRoot); -- exit(errno); -+ if (FatalErrors & CUPSD_FATAL_CONFIG) -+ return (0); - } - - cupsdLogMessage(CUPSD_LOG_INFO, -@@ -1912,6 +1920,86 @@ parse_aaa(cupsd_location_t *loc, /* I - - - - /* -+ * 'parse_fatal_errors()' - Parse FatalErrors values in a string. -+ */ -+ -+static int /* O - FatalErrors bits */ -+parse_fatal_errors(const char *s) /* I - FatalErrors string */ -+{ -+ int fatal; /* FatalErrors bits */ -+ char value[1024], /* Value string */ -+ *valstart, /* Pointer into value */ -+ *valend; /* End of value */ -+ -+ -+ /* -+ * Empty FatalErrors line yields NULL pointer... -+ */ -+ -+ if (!s) -+ return (CUPSD_FATAL_NONE); -+ -+ /* -+ * Loop through the value string,... -+ */ -+ -+ strlcpy(value, s, sizeof(value)); -+ -+ fatal = CUPSD_FATAL_NONE; -+ -+ for (valstart = value; *valstart;) -+ { -+ /* -+ * Get the current space/comma-delimited kind name... -+ */ -+ -+ for (valend = valstart; *valend; valend ++) -+ if (isspace(*valend & 255) || *valend == ',') -+ break; -+ -+ if (*valend) -+ *valend++ = '\0'; -+ -+ /* -+ * Add the error to the bitmask... -+ */ -+ -+ if (!strcasecmp(valstart, "all")) -+ fatal = CUPSD_FATAL_ALL; -+ else if (!strcasecmp(valstart, "browse")) -+ fatal |= CUPSD_FATAL_BROWSE; -+ else if (!strcasecmp(valstart, "-browse")) -+ fatal &= ~CUPSD_FATAL_BROWSE; -+ else if (!strcasecmp(valstart, "config")) -+ fatal |= CUPSD_FATAL_CONFIG; -+ else if (!strcasecmp(valstart, "-config")) -+ fatal &= ~CUPSD_FATAL_CONFIG; -+ else if (!strcasecmp(valstart, "listen")) -+ fatal |= CUPSD_FATAL_LISTEN; -+ else if (!strcasecmp(valstart, "-listen")) -+ fatal &= ~CUPSD_FATAL_LISTEN; -+ else if (!strcasecmp(valstart, "log")) -+ fatal |= CUPSD_FATAL_LOG; -+ else if (!strcasecmp(valstart, "-log")) -+ fatal &= ~CUPSD_FATAL_LOG; -+ else if (!strcasecmp(valstart, "permissions")) -+ fatal |= CUPSD_FATAL_PERMISSIONS; -+ else if (!strcasecmp(valstart, "-permissions")) -+ fatal &= ~CUPSD_FATAL_PERMISSIONS; -+ else if (strcasecmp(valstart, "none")) -+ cupsdLogMessage(CUPSD_LOG_ERROR, -+ "Unknown FatalErrors kind \"%s\" ignored!", valstart); -+ -+ for (valstart = valend; *valstart; valstart ++) -+ if (!isspace(*valstart & 255) || *valstart != ',') -+ break; -+ } -+ -+ return (fatal); -+} -+ -+ -+/* - * 'parse_groups()' - Parse system group names in a string. - */ - -@@ -2740,7 +2828,8 @@ read_configuration(cups_file_t *fp) /* I - cupsdLogMessage(CUPSD_LOG_WARN, - "Unknown default authorization type %s on line %d.", - value, linenum); -- return (0); -+ if (FatalErrors & CUPSD_FATAL_CONFIG) -+ return (0); - } - } - #ifdef HAVE_SSL -@@ -2761,7 +2850,8 @@ read_configuration(cups_file_t *fp) /* I - cupsdLogMessage(CUPSD_LOG_WARN, - "Unknown default encryption %s on line %d.", - value, linenum); -- return (0); -+ if (FatalErrors & CUPSD_FATAL_CONFIG) -+ return (0); - } - } - #endif /* HAVE_SSL */ -@@ -3148,7 +3238,8 @@ read_location(cups_file_t *fp, /* I - C - if (!value) - { - cupsdLogMessage(CUPSD_LOG_ERROR, "Syntax error on line %d.", linenum); -- return (0); -+ if (FatalErrors & CUPSD_FATAL_CONFIG) -+ return (0); - } - - if ((loc = cupsdCopyLocation(&parent)) == NULL) -@@ -3196,7 +3287,8 @@ read_location(cups_file_t *fp, /* I - C - cupsdLogMessage(CUPSD_LOG_ERROR, - "Unknown Location directive %s on line %d.", - line, linenum); -- return (0); -+ if (FatalErrors & CUPSD_FATAL_CONFIG) -+ return (0); - } - } - -@@ -3204,7 +3296,7 @@ read_location(cups_file_t *fp, /* I - C - "Unexpected end-of-file at line %d while reading location!", - linenum); - -- return (0); -+ return ((FatalErrors & CUPSD_FATAL_CONFIG) ? 0 : linenum); - } - - -@@ -3262,7 +3354,8 @@ read_policy(cups_file_t *fp, /* I - Con - if (!value) - { - cupsdLogMessage(CUPSD_LOG_ERROR, "Syntax error on line %d.", linenum); -- return (0); -+ if (FatalErrors & CUPSD_FATAL_CONFIG) -+ return (0); - } - - /* -@@ -3336,7 +3429,8 @@ read_policy(cups_file_t *fp, /* I - Con - cupsdLogMessage(CUPSD_LOG_ERROR, - "Missing directive before %s on line %d.", - line, linenum); -- return (0); -+ if (FatalErrors & CUPSD_FATAL_CONFIG) -+ return (0); - } - else if (!parse_aaa(op, line, value, linenum)) - { -@@ -3349,7 +3443,8 @@ read_policy(cups_file_t *fp, /* I - Con - "Unknown Policy directive %s on line %d.", - line, linenum); - -- return (0); -+ if (FatalErrors & CUPSD_FATAL_CONFIG) -+ return (0); - } - } - -@@ -3357,7 +3452,7 @@ read_policy(cups_file_t *fp, /* I - Con - "Unexpected end-of-file at line %d while reading policy \"%s\"!", - linenum, policy); - -- return (0); -+ return ((FatalErrors & CUPSD_FATAL_CONFIG) ? 0 : linenum); - } - - -diff -up cups-1.3.8/scheduler/conf.h.str2536 cups-1.3.8/scheduler/conf.h ---- cups-1.3.8/scheduler/conf.h.str2536 2008-09-10 16:16:44.000000000 +0100 -+++ cups-1.3.8/scheduler/conf.h 2008-09-10 16:16:44.000000000 +0100 -@@ -38,6 +38,19 @@ typedef enum - - - /* -+ * FatalErrors flags... -+ */ -+ -+#define CUPSD_FATAL_NONE 0 /* No errors are fatal */ -+#define CUPSD_FATAL_BROWSE 1 /* Browse bind errors are fatal */ -+#define CUPSD_FATAL_CONFIG 2 /* Config file syntax errors are fatal */ -+#define CUPSD_FATAL_LISTEN 4 /* Listen/Port bind errors are fatal */ -+#define CUPSD_FATAL_LOG 8 /* Log file errors are fatal */ -+#define CUPSD_FATAL_PERMISSIONS 16 /* File permission errors are fatal */ -+#define CUPSD_FATAL_ALL ~0 /* All errors are fatal */ -+ -+ -+/* - * Printcap formats... - */ - -@@ -124,6 +137,8 @@ VAR int ClassifyOverride VALUE(0), - /* Allow overrides? */ - ConfigFilePerm VALUE(0640), - /* Permissions for config files */ -+ FatalErrors VALUE(CUPSD_FATAL_CONFIG), -+ /* Which errors are fatal? */ - LogFilePerm VALUE(0644), - /* Permissions for log files */ - LogLevel VALUE(CUPSD_LOG_ERROR), -diff -up cups-1.3.8/scheduler/dirsvc.c.str2536 cups-1.3.8/scheduler/dirsvc.c ---- cups-1.3.8/scheduler/dirsvc.c.str2536 2008-07-18 21:30:23.000000000 +0100 -+++ cups-1.3.8/scheduler/dirsvc.c 2008-09-10 16:16:44.000000000 +0100 -@@ -954,9 +954,14 @@ cupsdStartBrowsing(void) - strerror(errno)); - BrowseLocalProtocols &= ~BROWSE_CUPS; - BrowseRemoteProtocols &= ~BROWSE_CUPS; -- return; -+ -+ if (FatalErrors & CUPSD_FATAL_BROWSE) -+ cupsdEndProcess(getpid(), 0); - } -+ } - -+ if (BrowseSocket >= 0) -+ { - /* - * Bind the socket to browse port... - */ -@@ -981,50 +986,60 @@ cupsdStartBrowsing(void) - BrowseSocket = -1; - BrowseLocalProtocols &= ~BROWSE_CUPS; - BrowseRemoteProtocols &= ~BROWSE_CUPS; -- return; -+ -+ if (FatalErrors & CUPSD_FATAL_BROWSE) -+ cupsdEndProcess(getpid(), 0); - } - } - -- /* -- * Set the "broadcast" flag... -- */ -- -- val = 1; -- if (setsockopt(BrowseSocket, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val))) -+ if (BrowseSocket >= 0) - { -- cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to set broadcast mode - %s.", -- strerror(errno)); -+ /* -+ * Set the "broadcast" flag... -+ */ -+ -+ val = 1; -+ if (setsockopt(BrowseSocket, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val))) -+ { -+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to set broadcast mode - %s.", -+ strerror(errno)); - - #ifdef WIN32 -- closesocket(BrowseSocket); -+ closesocket(BrowseSocket); - #else -- close(BrowseSocket); -+ close(BrowseSocket); - #endif /* WIN32 */ - -- BrowseSocket = -1; -- BrowseLocalProtocols &= ~BROWSE_CUPS; -- BrowseRemoteProtocols &= ~BROWSE_CUPS; -- return; -- } -+ BrowseSocket = -1; -+ BrowseLocalProtocols &= ~BROWSE_CUPS; -+ BrowseRemoteProtocols &= ~BROWSE_CUPS; - -- /* -- * Close the socket on exec... -- */ -+ if (FatalErrors & CUPSD_FATAL_BROWSE) -+ cupsdEndProcess(getpid(), 0); -+ } -+ } - -- fcntl(BrowseSocket, F_SETFD, fcntl(BrowseSocket, F_GETFD) | FD_CLOEXEC); -+ if (BrowseSocket >= 0) -+ { -+ /* -+ * Close the socket on exec... -+ */ - -- /* -- * Finally, add the socket to the input selection set as needed... -- */ -+ fcntl(BrowseSocket, F_SETFD, fcntl(BrowseSocket, F_GETFD) | FD_CLOEXEC); - -- if (BrowseRemoteProtocols & BROWSE_CUPS) -- { - /* -- * We only listen if we want remote printers... -+ * Finally, add the socket to the input selection set as needed... - */ - -- cupsdAddSelect(BrowseSocket, (cupsd_selfunc_t)update_cups_browse, -- NULL, NULL); -+ if (BrowseRemoteProtocols & BROWSE_CUPS) -+ { -+ /* -+ * We only listen if we want remote printers... -+ */ -+ -+ cupsdAddSelect(BrowseSocket, (cupsd_selfunc_t)update_cups_browse, -+ NULL, NULL); -+ } - } - } - else -@@ -1043,6 +1058,10 @@ cupsdStartBrowsing(void) - "Unable to open an SLP handle; disabling SLP browsing!"); - BrowseLocalProtocols &= ~BROWSE_SLP; - BrowseRemoteProtocols &= ~BROWSE_SLP; -+ BrowseSLPHandle = NULL; -+ -+ if (FatalErrors & CUPSD_FATAL_BROWSE) -+ cupsdEndProcess(getpid(), 0); - } - - BrowseSLPRefresh = 0; -@@ -1060,6 +1079,9 @@ cupsdStartBrowsing(void) - "Need to set BrowseLDAPDN to use LDAP browsing!"); - BrowseLocalProtocols &= ~BROWSE_LDAP; - BrowseRemoteProtocols &= ~BROWSE_LDAP; -+ -+ if (FatalErrors & CUPSD_FATAL_BROWSE) -+ cupsdEndProcess(getpid(), 0); - } - else - { -@@ -1105,6 +1127,9 @@ cupsdStartBrowsing(void) - "Unable to initialize LDAP; disabling LDAP browsing!"); - BrowseLocalProtocols &= ~BROWSE_LDAP; - BrowseRemoteProtocols &= ~BROWSE_LDAP; -+ -+ if (FatalErrors & CUPSD_FATAL_BROWSE) -+ cupsdEndProcess(getpid(), 0); - } - else if (ldap_set_option(BrowseLDAPHandle, LDAP_OPT_PROTOCOL_VERSION, - (const void *)&version) != LDAP_SUCCESS) -@@ -1116,6 +1141,9 @@ cupsdStartBrowsing(void) - "disabling LDAP browsing!"); - BrowseLocalProtocols &= ~BROWSE_LDAP; - BrowseRemoteProtocols &= ~BROWSE_LDAP; -+ -+ if (FatalErrors & CUPSD_FATAL_BROWSE) -+ cupsdEndProcess(getpid(), 0); - } - else - { -@@ -1134,6 +1162,9 @@ cupsdStartBrowsing(void) - ldap_unbind_ext(BrowseLDAPHandle, NULL, NULL); - BrowseLocalProtocols &= ~BROWSE_LDAP; - BrowseRemoteProtocols &= ~BROWSE_LDAP; -+ -+ if (FatalErrors & CUPSD_FATAL_BROWSE) -+ cupsdEndProcess(getpid(), 0); - } - } - } -diff -up cups-1.3.8/scheduler/listen.c.str2536 cups-1.3.8/scheduler/listen.c ---- cups-1.3.8/scheduler/listen.c.str2536 2007-08-13 18:20:14.000000000 +0100 -+++ cups-1.3.8/scheduler/listen.c 2008-09-10 16:16:44.000000000 +0100 -@@ -150,10 +150,15 @@ cupsdStartListening(void) - httpAddrFreeList(ServerAddrs); - - if ((ServerAddrs = httpAddrGetList(ServerName, AF_UNSPEC, NULL)) == NULL) -+ { - cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to find IP address for server name \"%s\"!\n", - ServerName); - -+ if (FatalErrors & CUPSD_FATAL_LISTEN) -+ cupsdEndProcess(getpid(), 0); -+ } -+ - /* - * Setup socket listeners... - */ -@@ -194,6 +199,20 @@ cupsdStartListening(void) - cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to open listen socket for address %s:%d - %s.", - s, p, strerror(errno)); -+ -+#ifdef AF_INET6 -+ /* -+ * IPv6 is often disabled while DNS returns IPv6 addresses... -+ */ -+ -+ if (lis->address.addr.sa_family != AF_INET6 && -+ (FatalErrors & CUPSD_FATAL_LISTEN)) -+ cupsdEndProcess(getpid(), 0); -+#else -+ if (FatalErrors & CUPSD_FATAL_LISTEN) -+ cupsdEndProcess(getpid(), 0); -+#endif /* AF_INET6 */ -+ - continue; - } - -@@ -278,6 +297,10 @@ cupsdStartListening(void) - s, p, strerror(errno)); - close(lis->fd); - lis->fd = -1; -+ -+ if (FatalErrors & CUPSD_FATAL_LISTEN) -+ cupsdEndProcess(getpid(), 0); -+ - continue; - } - -@@ -290,7 +313,14 @@ cupsdStartListening(void) - cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to listen for clients on address %s:%d - %s.", - s, p, strerror(errno)); -- exit(errno); -+ -+ close(lis->fd); -+ lis->fd = -1; -+ -+ if (FatalErrors & CUPSD_FATAL_LISTEN) -+ cupsdEndProcess(getpid(), 0); -+ -+ continue; - } - } - -@@ -339,11 +369,8 @@ cupsdStartListening(void) - "No Listen or Port lines were found to allow access via " - "localhost!"); - -- /* -- * Commit suicide... -- */ -- -- cupsdEndProcess(getpid(), 0); -+ if (FatalErrors & (CUPSD_FATAL_CONFIG | CUPSD_FATAL_LISTEN)) -+ cupsdEndProcess(getpid(), 0); - } - - /* -diff -up cups-1.3.8/scheduler/log.c.str2536 cups-1.3.8/scheduler/log.c ---- cups-1.3.8/scheduler/log.c.str2536 2008-09-10 16:16:44.000000000 +0100 -+++ cups-1.3.8/scheduler/log.c 2008-09-10 16:16:44.000000000 +0100 -@@ -546,7 +546,20 @@ check_log_file(cups_file_t **lf, /* IO - - - if (!strncmp(filename, CUPS_LOGDIR, strlen(CUPS_LOGDIR))) - { -- cupsdCheckPermissions(CUPS_LOGDIR, NULL, 0755, RunUser, Group, 1, -1); -+ /* -+ * Try updating the permissions of the containing log directory, using -+ * the log file permissions as a basis... -+ */ -+ -+ int log_dir_perm = 0300 | LogFilePerm; -+ /* LogFilePerm + owner write/search */ -+ if (log_dir_perm & 0040) -+ log_dir_perm |= 0010; /* Add group search */ -+ if (log_dir_perm & 0004) -+ log_dir_perm |= 0001; /* Add other search */ -+ -+ cupsdCheckPermissions(CUPS_LOGDIR, NULL, log_dir_perm, RunUser, Group, -+ 1, -1); - - *lf = cupsFileOpen(filename, "a"); - } -@@ -555,6 +568,10 @@ check_log_file(cups_file_t **lf, /* IO - - { - syslog(LOG_ERR, "Unable to open log file \"%s\" - %s", filename, - strerror(errno)); -+ -+ if (FatalErrors & CUPSD_FATAL_LOG) -+ cupsdEndProcess(getpid(), 0); -+ - return (0); - } - } -@@ -622,6 +639,9 @@ check_log_file(cups_file_t **lf, /* IO - - syslog(LOG_ERR, "Unable to open log file \"%s\" - %s", filename, - strerror(errno)); - -+ if (FatalErrors & CUPSD_FATAL_LOG) -+ cupsdEndProcess(getpid(), 0); -+ - return (0); - } - diff --git a/cups-usb-paperout.patch b/cups-usb-paperout.patch index b252c3c..fb69145 100644 --- a/cups-usb-paperout.patch +++ b/cups-usb-paperout.patch @@ -1,8 +1,8 @@ -diff -up cups-1.3.7/backend/usb-unix.c.usb-paperout cups-1.3.7/backend/usb-unix.c ---- cups-1.3.7/backend/usb-unix.c.usb-paperout 2008-07-15 13:47:33.000000000 +0100 -+++ cups-1.3.7/backend/usb-unix.c 2008-07-15 13:47:33.000000000 +0100 -@@ -31,6 +31,11 @@ - #include "ieee1284.c" +diff -up cups-1.4b1/backend/usb-unix.c.usb-paperout cups-1.4b1/backend/usb-unix.c +--- cups-1.4b1/backend/usb-unix.c.usb-paperout 2008-11-12 09:30:03.000000000 +0000 ++++ cups-1.4b1/backend/usb-unix.c 2008-11-12 09:30:03.000000000 +0000 +@@ -30,6 +30,11 @@ + #include +#ifdef __linux @@ -13,7 +13,7 @@ diff -up cups-1.3.7/backend/usb-unix.c.usb-paperout cups-1.3.7/backend/usb-unix. /* * Local functions... -@@ -323,7 +328,19 @@ open_device(const char *uri, /* I - Dev +@@ -324,7 +329,19 @@ open_device(const char *uri, /* I - Dev if (!strncmp(uri, "usb:/dev/", 9)) #ifdef __linux { @@ -34,7 +34,7 @@ diff -up cups-1.3.7/backend/usb-unix.c.usb-paperout cups-1.3.7/backend/usb-unix. } else if (!strncmp(uri, "usb://", 6)) { -@@ -389,7 +406,14 @@ open_device(const char *uri, /* I - Dev +@@ -390,7 +407,14 @@ open_device(const char *uri, /* I - Dev if (!strcmp(uri, device_uri)) { /* diff --git a/cups-wbuffer.patch b/cups-wbuffer.patch index 7965d31..0dd12ac 100644 --- a/cups-wbuffer.patch +++ b/cups-wbuffer.patch @@ -1,11 +1,12 @@ ---- cups-1.2.3/cups/http.c.wbuffer 2006-09-13 16:41:57.000000000 +0100 -+++ cups-1.2.3/cups/http.c 2006-09-13 16:42:23.000000000 +0100 -@@ -1886,7 +1886,7 @@ +diff -up cups-1.4b1/cups/http.c.wbuffer cups-1.4b1/cups/http.c +--- cups-1.4b1/cups/http.c.wbuffer 2008-08-20 01:07:25.000000000 +0100 ++++ cups-1.4b1/cups/http.c 2008-11-12 09:13:29.000000000 +0000 +@@ -2166,7 +2166,7 @@ httpWrite2(http_t *http, /* I - Con if (length > 0) { - if (http->wused && (length + http->wused) > sizeof(http->wbuffer)) + if (http->wused && (length + http->wused) >= sizeof(http->wbuffer)) { - DEBUG_printf((" flushing buffer (wused=%d, length=%d)\n", - http->wused, length)); + DEBUG_printf(("httpWrite2: Flushing buffer (wused=%d, length=" + CUPS_LLFMT ")\n", http->wused, CUPS_LLCAST length)); diff --git a/cups.spec b/cups.spec index 2018349..5402a62 100644 --- a/cups.spec +++ b/cups.spec @@ -1,4 +1,4 @@ -#define svn 7370 +%define pre b1 %define initdir /etc/rc.d/init.d %define use_alternatives 1 %define lspp 1 @@ -6,11 +6,11 @@ Summary: Common Unix Printing System Name: cups -Version: 1.3.9 -Release: 3%{?svn:.svn%{svn}}%{?dist} +Version: 1.4 +Release: 0.%{pre}.1%{?dist} License: GPLv2 Group: System Environment/Daemons -Source: ftp://ftp.easysw.com/pub/cups/test//cups-%{version}%{?svn:svn-r%{svn}}-source.tar.bz2 +Source: ftp://ftp.easysw.com/pub/cups/test//cups-%{version}%{?pre}-source.tar.bz2 Source1: cups.init Source2: cupsprinter.png Source3: http://www.openprinting.org/download/printing/dnssd @@ -22,14 +22,11 @@ Source8: postscript.ppd.gz Source9: cups.logrotate Source10: ncp.backend Source12: cups.cron -Source13: pdftops.conf Source14: textonly.filter Source15: textonly.ppd Patch1: cups-no-gzip-man.patch Patch2: cups-1.1.16-system-auth.patch Patch3: cups-multilib.patch -Patch4: cups-ext.patch -Patch5: cups-includeifexists.patch Patch6: cups-banners.patch Patch7: cups-serverbin-compat.patch Patch8: cups-no-export-ssllibs.patch @@ -39,16 +36,13 @@ Patch11: cups-direct-usb.patch Patch12: cups-lpr-help.patch Patch13: cups-peercred.patch Patch14: cups-pid.patch -Patch15: cups-foomatic-recommended.patch Patch16: cups-eggcups.patch Patch17: cups-getpass.patch Patch18: cups-driverd-timeout.patch Patch19: cups-strict-ppd-line-length.patch Patch20: cups-logrotate.patch Patch21: cups-usb-paperout.patch -Patch22: cups-getnameddest.patch -Patch23: cups-str2101.patch -Patch24: cups-str2536.patch +Patch22: cups-build.patch Patch100: cups-lspp.patch Epoch: 1 Url: http://www.cups.org/ @@ -59,14 +53,17 @@ Requires: %{name}-libs = %{epoch}:%{version}-%{release} Provides: /usr/bin/lpq /usr/bin/lpr /usr/bin/lp /usr/bin/cancel /usr/bin/lprm /usr/bin/lpstat Prereq: /usr/sbin/alternatives %endif -%if %{?svn:1}%{!?svn:0} Requires: poppler-utils -%endif # Unconditionally obsolete LPRng so that upgrades work properly. Obsoletes: lpd lpr LPRng <= 3.8.15-3 Provides: lpd lpr +Obsoletes: cupsddk < 1.2.3-6 +Provides: cupsddk = 1.2.3-6 +Obsoletes: cupsddk-drivers < 1.2.3-6 +Provides: cupsddk-drivers = 1.2.3-6 + # kdelibs conflict for bug #192585. Conflicts: kdelibs < 6:3.5.2-6 @@ -80,6 +77,7 @@ BuildRequires: libpng-devel BuildRequires: libtiff-devel BuildRequires: krb5-devel BuildRequires: avahi-compat-libdns_sd-devel +BuildRequires: poppler-utils %if %lspp BuildPrereq: libselinux-devel >= 1.23 @@ -113,6 +111,8 @@ Requires: %{name}-libs = %{epoch}:%{version}-%{release} Requires: gnutls-devel Requires: krb5-devel Requires: zlib-devel +Obsoletes: cupsddk-devel < 1.2.3-6 +Provides: cupsddk-devel = 1.2.3-6 %package libs Summary: Common Unix Printing System - libraries @@ -131,6 +131,7 @@ Group: Development/Languages Requires: %{name} = %{epoch}:%{version}-%{release} Requires: php-common + %description The Common UNIX Printing System provides a portable printing layer for UNIX® operating systems. It has been developed by Easy Software Products @@ -161,12 +162,10 @@ UNIX® operating systems. This is the package that provices a PHP module. %prep -%setup -q -n %{name}-%{version}%{?svn:svn-r%{svn}} +%setup -q -n %{name}-%{version}%{?pre} %patch1 -p1 -b .no-gzip-man %patch2 -p1 -b .system-auth %patch3 -p1 -b .multilib -%patch4 -p1 -b .ext -%patch5 -p1 -b .includeifexists %patch6 -p1 -b .banners %patch7 -p1 -b .serverbin-compat %patch8 -p1 -b .no-export-ssllibs @@ -176,16 +175,13 @@ module. %patch12 -p1 -b .lpr-help %patch13 -p1 -b .peercred %patch14 -p1 -b .pid -%patch15 -p1 -b .foomatic-recommended %patch16 -p1 -b .eggcups %patch17 -p1 -b .getpass %patch18 -p1 -b .driverd-timeout %patch19 -p1 -b .strict-ppd-line-length %patch20 -p1 -b .logrotate %patch21 -p1 -b .usb-paperout -%patch22 -p1 -b .getnameddest -%patch23 -p1 -b .str2101 -%patch24 -p1 -b .str2536 +%patch22 -p1 -b .build %if %lspp %patch100 -p1 -b .lspp @@ -255,7 +251,6 @@ install -c -m 644 cups-lpd.real $RPM_BUILD_ROOT%{_sysconfdir}/xinetd.d/cups-lpd install -c -m 644 %{SOURCE9} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/cups install -c -m 755 %{SOURCE10} $RPM_BUILD_ROOT%{cups_serverbin}/backend/ncp install -c -m 755 %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/cron.daily/cups -install -c -m 644 %{SOURCE13} $RPM_BUILD_ROOT%{_sysconfdir}/cups/pdftops.conf install -c -m 755 %{SOURCE14} $RPM_BUILD_ROOT%{cups_serverbin}/filter/textonly install -c -m 644 %{SOURCE15} $RPM_BUILD_ROOT%{_datadir}/cups/model/textonly.ppd @@ -294,13 +289,6 @@ rm -rf $RPM_BUILD_ROOT%{_mandir}/cat? $RPM_BUILD_ROOT%{_mandir}/*/cat? rm -f $RPM_BUILD_ROOT%{_datadir}/applications/cups.desktop rm -rf $RPM_BUILD_ROOT%{_datadir}/icons -%if %{?svn:1}%{!?svn:0} -rm -f $RPM_BUILD_ROOT%{_bindir}/ppd{c,html,i,merge,po} -rm -f $RPM_BUILD_ROOT%{cups_serverbin}/filter/{command,raster}to{escpx,pclx} -rm -f $RPM_BUILD_ROOT%{cups_serverbin}/driver/drv -rm -rf $RPM_BUILD_ROOT%{_datadir}/cups/ppdc -%endif - %post /sbin/chkconfig --del cupsd 2>/dev/null || true # Make sure old versions aren't there anymore /sbin/chkconfig --add cups || true @@ -372,12 +360,9 @@ rm -rf $RPM_BUILD_ROOT %config(noreplace) %attr(0644,root,lp) /etc/cups/client.conf %config(noreplace) %attr(0600,root,lp) /etc/cups/classes.conf %config(noreplace) %attr(0600,root,lp) /etc/cups/printers.conf -%config(noreplace) %attr(0644,root,lp) /etc/cups/pdftops.conf %config(noreplace) %attr(0644,root,lp) /etc/cups/snmp.conf %config(noreplace) %attr(0644,root,lp) /etc/cups/subscriptions.conf /etc/cups/interfaces -%config(noreplace) /etc/cups/mime.types -%config(noreplace) /etc/cups/mime.convs %config(noreplace) %attr(0644,root,lp) /etc/cups/lpoptions %dir %attr(0755,root,lp) /etc/cups/ppd %dir %attr(0700,root,lp) /etc/cups/ssl @@ -388,20 +373,6 @@ rm -rf $RPM_BUILD_ROOT %dir %{_datadir}/%{name}/www %config(noreplace) %{_datadir}/%{name}/www/favicon.* %config(noreplace) %{_datadir}/%{name}/www/images -%if %{?svn:1}%{!?svn:0} -%else -%config(noreplace) %{_datadir}/%{name}/www/de -%config(noreplace) %{_datadir}/%{name}/www/es -%config(noreplace) %{_datadir}/%{name}/www/et -%config(noreplace) %{_datadir}/%{name}/www/fr -%config(noreplace) %{_datadir}/%{name}/www/he -%config(noreplace) %{_datadir}/%{name}/www/id -%config(noreplace) %{_datadir}/%{name}/www/it -%config(noreplace) %{_datadir}/%{name}/www/ja -%config(noreplace) %{_datadir}/%{name}/www/pl -%config(noreplace) %{_datadir}/%{name}/www/sv -%config(noreplace) %{_datadir}/%{name}/www/zh_TW -%endif %config(noreplace) %{_datadir}/%{name}/www/*.css %config(noreplace) %doc %{_datadir}/%{name}/www/index.html %config(noreplace) %doc %{_datadir}/%{name}/www/help @@ -411,6 +382,7 @@ rm -rf $RPM_BUILD_ROOT %{_bindir}/cupstestdsc %{_bindir}/cancel* %{_bindir}/lp* +%{_bindir}/ppd* %dir %{cups_serverbin} %{cups_serverbin}/backend %{cups_serverbin}/cgi-bin @@ -433,20 +405,7 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/cups/fonts %{_datadir}/cups/model %dir %{_datadir}/cups/templates -%dir %{_datadir}/cups/templates/de -%dir %{_datadir}/cups/templates/es -%dir %{_datadir}/cups/templates/et -%dir %{_datadir}/cups/templates/fr -%dir %{_datadir}/cups/templates/he -%dir %{_datadir}/cups/templates/id -%dir %{_datadir}/cups/templates/it -%dir %{_datadir}/cups/templates/ja -%dir %{_datadir}/cups/templates/pl -%dir %{_datadir}/cups/templates/sv -%dir %{_datadir}/cups/templates/zh_TW %config(noreplace) %{_datadir}/cups/templates/*.tmpl -%config(noreplace) %{_datadir}/cups/templates/*/*.tmpl -%{_datadir}/locale/*/* %{_datadir}/ppd %dir %attr(1770,root,lp) /var/spool/cups/tmp %dir %attr(0710,root,lp) /var/spool/cups @@ -454,6 +413,12 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/pixmaps/cupsprinter.png %{_sysconfdir}/cron.daily/cups %{_sysconfdir}/dbus-1/system.d/cups.conf +%{_datadir}/cups/drv +%{_datadir}/cups/examples +%dir %{_datadir}/cups/mime +%config(noreplace) %{_datadir}/cups/mime/mime.types +%config(noreplace) %{_datadir}/cups/mime/mime.convs +%{_datadir}/cups/ppdc/*.defs %files libs %defattr(-,root,root) @@ -464,6 +429,7 @@ rm -rf $RPM_BUILD_ROOT %{_bindir}/cups-config %{_libdir}/*.so %{_includedir}/cups +%{_datadir}/cups/ppdc/*.h %files lpd %defattr(-,root,root) @@ -477,6 +443,14 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/php/modules/*.so %changelog +* Tue Nov 11 2008 Tim Waugh 1:1.4-0.b1.1 +- 1.4b1. +- No longer need ext, includeifexists, foomatic-recommended, + getnameddest, str2101, str2536 patches. +- Require poppler-utils at runtime and for build. No longer need + pdftops.conf. +- Obsolete cupsddk. + * Thu Oct 30 2008 Tim Waugh 1:1.3.9-3 - Fixed LSPP labels (bug #468442). diff --git a/pdftops.conf b/pdftops.conf deleted file mode 100644 index 4709e24..0000000 --- a/pdftops.conf +++ /dev/null @@ -1,4 +0,0 @@ -includeifexists /etc/xpdf/add-to-xpdfrc.japanese -includeifexists /etc/xpdf/add-to-xpdfrc.korean -includeifexists /etc/xpdf/add-to-xpdfrc.chinese-simplified -includeifexists /etc/xpdf/add-to-xpdfrc.chinese-traditional