This commit is contained in:
Tim Waugh 2013-10-24 16:20:32 +01:00
parent 3d3e404e3b
commit 7632e7acbf
8 changed files with 143 additions and 291 deletions

1
.gitignore vendored
View File

@ -56,3 +56,4 @@ cups-1.4.4-source.tar.bz2
/cups-1.6.2-source.tar.bz2 /cups-1.6.2-source.tar.bz2
/cups-1.7b1-source.tar.bz2 /cups-1.7b1-source.tar.bz2
/cups-1.7rc1-source.tar.bz2 /cups-1.7rc1-source.tar.bz2
/cups-1.7.0-source.tar.bz2

View File

@ -1,12 +0,0 @@
diff -up cups-1.7rc1/cups/http.c.build cups-1.7rc1/cups/http.c
--- cups-1.7rc1/cups/http.c.build 2013-07-22 14:51:18.673065709 +0100
+++ cups-1.7rc1/cups/http.c 2013-07-22 14:51:19.781070570 +0100
@@ -5247,7 +5247,7 @@ http_setup_ssl(http_t *http) /* I - Con
if (!message)
message = _("Unable to establish a secure connection to host.");
- _cupsSetError(IPP_PKI_ERROR, message, 1);
+ _cupsSetError(IPP_STATUS_ERROR_CUPS_PKI, message, 1);
return (-1);
}

View File

@ -1,14 +1,9 @@
diff -up cups-1.6.3/backend/ipp.c.ipp-multifile cups-1.6.3/backend/ipp.c diff -up cups-1.7.0/backend/ipp.c.ipp-multifile cups-1.7.0/backend/ipp.c
--- cups-1.6.3/backend/ipp.c.ipp-multifile 2013-08-06 17:17:19.359471503 +0100 --- cups-1.7.0/backend/ipp.c.ipp-multifile 2013-10-24 15:52:00.745814354 +0100
+++ cups-1.6.3/backend/ipp.c 2013-08-06 17:19:03.346990727 +0100 +++ cups-1.7.0/backend/ipp.c 2013-10-24 15:53:46.463266724 +0100
@@ -1682,10 +1682,13 @@ main(int argc, /* I - Number of comm @@ -1758,7 +1758,10 @@ main(int argc, /* I - Number of comm
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, ippAddBoolean(request, IPP_TAG_OPERATION, "last-document",
"requesting-user-name", NULL, argv[2]); (i + 1) >= num_files);
- if ((i + 1) >= num_files)
- ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
+ ippAddBoolean(request, IPP_TAG_OPERATION, "last-document",
+ (i + 1) >= num_files);
- if (document_format) - if (document_format)
+ if (num_files > 1) + if (num_files > 1)

View File

@ -1,12 +1,14 @@
diff -up cups-1.7b1/backend/usb-libusb.c~ cups-1.7b1/backend/usb-libusb.c diff -up cups-1.7.0/backend/org.cups.usb-quirks.libusb-quirks cups-1.7.0/backend/org.cups.usb-quirks
--- cups-1.7b1/backend/usb-libusb.c~ 2013-04-18 15:18:34.000000000 +0100 --- cups-1.7.0/backend/org.cups.usb-quirks.libusb-quirks 2013-10-24 15:49:41.960232193 +0100
+++ cups-1.7b1/backend/usb-libusb.c 2013-06-25 09:28:21.325699866 +0100 +++ cups-1.7.0/backend/org.cups.usb-quirks 2013-10-24 15:50:58.307550615 +0100
@@ -158,6 +158,8 @@ static const struct quirk_printer_struct @@ -75,6 +75,9 @@
Printer, https://bugs.launchpad.net/bugs/1032456 */ # Canon, Inc. MP510 Printer, https://bugs.launchpad.net/bugs/1050009
{ 0x04a9, 0x1717, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP510 0x04a9 0x1717 unidir
Printer, https://bugs.launchpad.net/bugs/1050009 */
+ { 0x04a9, 0x1730, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP540 +# Canon, Inc. MP540 Printer, https://bugzilla.redhat.com/967873
+ Printer, https://bugzilla.redhat.com/967873 */ +0x04a9 0x1730 unidir
{ 0x04a9, 0x173d, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP550 +
Printer, http://www.cups.org/str.php?L4155 */ # Canon, Inc. MP550 Printer, http://www.cups.org/str.php?L4155
{ 0x04a9, 0x173e, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP560 0x04a9 0x173d unidir
diff -up cups-1.7.0/backend/usb-libusb.c.libusb-quirks cups-1.7.0/backend/usb-libusb.c

View File

@ -1,23 +1,18 @@
diff -up cups-1.7b1/config.h.in.lspp cups-1.7b1/config.h.in diff -up cups-1.7.0/Makedefs.in.lspp cups-1.7.0/Makedefs.in
--- cups-1.7b1/config.h.in.lspp 2013-04-19 12:03:41.085867788 +0200 --- cups-1.7.0/Makedefs.in.lspp 2013-10-24 15:54:45.867523689 +0100
+++ cups-1.7b1/config.h.in 2013-04-19 12:03:41.189866410 +0200 +++ cups-1.7.0/Makedefs.in 2013-10-24 15:54:45.901523836 +0100
@@ -710,6 +710,13 @@ static __inline int _cups_abs(int i) { r @@ -148,7 +148,7 @@ LDFLAGS = -L../cgi-bin -L../cups -L../f
# endif /* __GNUC__ || __STDC_VERSION__ */ @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
#endif /* !HAVE_ABS && !abs */ LINKCUPS = @LINKCUPS@ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(LIBZ)
LINKCUPSIMAGE = @LINKCUPSIMAGE@
+/* -LIBS = $(LINKCUPS) $(COMMONLIBS)
+ * Are we trying to meet LSPP requirements? +LIBS = $(LINKCUPS) $(COMMONLIBS) @LIBAUDIT@ @LIBSELINUX@
+ */ OPTIM = @OPTIM@
+ OPTIONS =
+#undef WITH_LSPP PAMLIBS = @PAMLIBS@
+ diff -up cups-1.7.0/config-scripts/cups-lspp.m4.lspp cups-1.7.0/config-scripts/cups-lspp.m4
+ --- cups-1.7.0/config-scripts/cups-lspp.m4.lspp 2013-10-24 15:54:45.900523831 +0100
#endif /* !_CUPS_CONFIG_H_ */ +++ cups-1.7.0/config-scripts/cups-lspp.m4 2013-10-24 15:54:45.900523831 +0100
/*
diff -up cups-1.7b1/config-scripts/cups-lspp.m4.lspp cups-1.7b1/config-scripts/cups-lspp.m4
--- cups-1.7b1/config-scripts/cups-lspp.m4.lspp 2013-04-19 12:03:41.192866371 +0200
+++ cups-1.7b1/config-scripts/cups-lspp.m4 2013-04-19 12:03:41.191866384 +0200
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
+dnl +dnl
+dnl LSPP code for the Common UNIX Printing System (CUPS). +dnl LSPP code for the Common UNIX Printing System (CUPS).
@ -55,9 +50,26 @@ diff -up cups-1.7b1/config-scripts/cups-lspp.m4.lspp cups-1.7b1/config-scripts/c
+ ;; + ;;
+ esac + esac
+fi +fi
diff -up cups-1.7b1/configure.in.lspp cups-1.7b1/configure.in diff -up cups-1.7.0/config.h.in.lspp cups-1.7.0/config.h.in
--- cups-1.7b1/configure.in.lspp 2013-04-19 12:03:41.090867721 +0200 --- cups-1.7.0/config.h.in.lspp 2013-10-24 15:54:45.865523680 +0100
+++ cups-1.7b1/configure.in 2013-04-19 12:03:41.193866357 +0200 +++ cups-1.7.0/config.h.in 2013-10-24 15:54:45.900523831 +0100
@@ -710,6 +710,13 @@ static __inline int _cups_abs(int i) { r
# endif /* __GNUC__ || __STDC_VERSION__ */
#endif /* !HAVE_ABS && !abs */
+/*
+ * Are we trying to meet LSPP requirements?
+ */
+
+#undef WITH_LSPP
+
+
#endif /* !_CUPS_CONFIG_H_ */
/*
diff -up cups-1.7.0/configure.in.lspp cups-1.7.0/configure.in
--- cups-1.7.0/configure.in.lspp 2013-10-24 15:54:45.866523684 +0100
+++ cups-1.7.0/configure.in 2013-10-24 15:54:45.900523831 +0100
@@ -37,6 +37,8 @@ sinclude(config-scripts/cups-systemd.m4) @@ -37,6 +37,8 @@ sinclude(config-scripts/cups-systemd.m4)
sinclude(config-scripts/cups-defaults.m4) sinclude(config-scripts/cups-defaults.m4)
sinclude(config-scripts/cups-scripting.m4) sinclude(config-scripts/cups-scripting.m4)
@ -67,9 +79,9 @@ diff -up cups-1.7b1/configure.in.lspp cups-1.7b1/configure.in
INSTALL_LANGUAGES="" INSTALL_LANGUAGES=""
UNINSTALL_LANGUAGES="" UNINSTALL_LANGUAGES=""
LANGFILES="" LANGFILES=""
diff -up cups-1.7b1/filter/common.c.lspp cups-1.7b1/filter/common.c diff -up cups-1.7.0/filter/common.c.lspp cups-1.7.0/filter/common.c
--- cups-1.7b1/filter/common.c.lspp 2011-05-20 05:49:49.000000000 +0200 --- cups-1.7.0/filter/common.c.lspp 2013-05-29 12:51:34.000000000 +0100
+++ cups-1.7b1/filter/common.c 2013-04-19 12:03:41.196866318 +0200 +++ cups-1.7.0/filter/common.c 2013-10-24 15:54:45.900523831 +0100
@@ -30,6 +30,12 @@ @@ -30,6 +30,12 @@
* Include necessary headers... * Include necessary headers...
*/ */
@ -238,9 +250,9 @@ diff -up cups-1.7b1/filter/common.c.lspp cups-1.7b1/filter/common.c
/* /*
diff -up cups-1.7b1/filter/pstops.c.lspp cups-1.7b1/filter/pstops.c diff -up cups-1.7.0/filter/pstops.c.lspp cups-1.7.0/filter/pstops.c
--- cups-1.7b1/filter/pstops.c.lspp 2012-12-14 20:12:39.000000000 +0100 --- cups-1.7.0/filter/pstops.c.lspp 2013-05-29 12:51:34.000000000 +0100
+++ cups-1.7b1/filter/pstops.c 2013-04-19 12:03:41.201866251 +0200 +++ cups-1.7.0/filter/pstops.c 2013-10-24 15:54:45.901523836 +0100
@@ -3203,6 +3203,18 @@ write_label_prolog(pstops_doc_t *doc, /* @@ -3203,6 +3203,18 @@ write_label_prolog(pstops_doc_t *doc, /*
{ {
const char *classification; /* CLASSIFICATION environment variable */ const char *classification; /* CLASSIFICATION environment variable */
@ -396,21 +408,9 @@ diff -up cups-1.7b1/filter/pstops.c.lspp cups-1.7b1/filter/pstops.c
/* /*
diff -up cups-1.7b1/Makedefs.in.lspp cups-1.7b1/Makedefs.in diff -up cups-1.7.0/scheduler/client.c.lspp cups-1.7.0/scheduler/client.c
--- cups-1.7b1/Makedefs.in.lspp 2013-04-19 12:03:41.102867563 +0200 --- cups-1.7.0/scheduler/client.c.lspp 2013-09-27 15:09:25.000000000 +0100
+++ cups-1.7b1/Makedefs.in 2013-04-19 12:03:41.203866225 +0200 +++ cups-1.7.0/scheduler/client.c 2013-10-24 15:54:45.902523841 +0100
@@ -146,7 +146,7 @@ LDFLAGS = -L../cgi-bin -L../cups -L../f
@LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
LINKCUPS = @LINKCUPS@ $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(LIBZ)
LINKCUPSIMAGE = @LINKCUPSIMAGE@
-LIBS = $(LINKCUPS) $(COMMONLIBS)
+LIBS = $(LINKCUPS) $(COMMONLIBS) @LIBAUDIT@ @LIBSELINUX@
OPTIM = @OPTIM@
OPTIONS =
PAMLIBS = @PAMLIBS@
diff -up cups-1.7b1/scheduler/client.c.lspp cups-1.7b1/scheduler/client.c
--- cups-1.7b1/scheduler/client.c.lspp 2013-04-09 21:26:08.000000000 +0200
+++ cups-1.7b1/scheduler/client.c 2013-04-19 12:10:27.236409248 +0200
@@ -41,6 +41,7 @@ @@ -41,6 +41,7 @@
* valid_host() - Is the Host: field valid? * valid_host() - Is the Host: field valid?
* write_file() - Send a file via HTTP. * write_file() - Send a file via HTTP.
@ -497,7 +497,7 @@ diff -up cups-1.7b1/scheduler/client.c.lspp cups-1.7b1/scheduler/client.c
#ifdef AF_LOCAL #ifdef AF_LOCAL
if (con->http.hostaddr->addr.sa_family == AF_LOCAL) if (con->http.hostaddr->addr.sa_family == AF_LOCAL)
{ {
@@ -708,6 +766,13 @@ cupsdReadClient(cupsd_client_t *con) /* @@ -714,6 +772,13 @@ cupsdReadClient(cupsd_client_t *con) /*
mime_type_t *type; /* MIME type of file */ mime_type_t *type; /* MIME type of file */
cupsd_printer_t *p; /* Printer */ cupsd_printer_t *p; /* Printer */
static unsigned request_id = 0; /* Request ID for temp files */ static unsigned request_id = 0; /* Request ID for temp files */
@ -511,7 +511,7 @@ diff -up cups-1.7b1/scheduler/client.c.lspp cups-1.7b1/scheduler/client.c
status = HTTP_CONTINUE; status = HTTP_CONTINUE;
@@ -2225,6 +2290,67 @@ cupsdReadClient(cupsd_client_t *con) /* @@ -2231,6 +2296,67 @@ cupsdReadClient(cupsd_client_t *con) /*
fchmod(con->file, 0640); fchmod(con->file, 0640);
fchown(con->file, RunUser, Group); fchown(con->file, RunUser, Group);
fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC); fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC);
@ -579,7 +579,7 @@ diff -up cups-1.7b1/scheduler/client.c.lspp cups-1.7b1/scheduler/client.c
} }
if (con->http.state != HTTP_STATE_POST_SEND) if (con->http.state != HTTP_STATE_POST_SEND)
@@ -3674,6 +3800,49 @@ is_path_absolute(const char *path) /* I @@ -3727,6 +3853,49 @@ is_path_absolute(const char *path) /* I
return (1); return (1);
} }
@ -629,9 +629,9 @@ diff -up cups-1.7b1/scheduler/client.c.lspp cups-1.7b1/scheduler/client.c
/* /*
* 'pipe_command()' - Pipe the output of a command to the remote client. * 'pipe_command()' - Pipe the output of a command to the remote client.
diff -up cups-1.7b1/scheduler/client.h.lspp cups-1.7b1/scheduler/client.h diff -up cups-1.7.0/scheduler/client.h.lspp cups-1.7.0/scheduler/client.h
--- cups-1.7b1/scheduler/client.h.lspp 2013-04-19 12:03:41.104867536 +0200 --- cups-1.7.0/scheduler/client.h.lspp 2013-10-24 15:54:45.867523689 +0100
+++ cups-1.7b1/scheduler/client.h 2013-04-19 12:03:41.213866093 +0200 +++ cups-1.7.0/scheduler/client.h 2013-10-24 15:54:45.903523845 +0100
@@ -18,6 +18,13 @@ @@ -18,6 +18,13 @@
#endif /* HAVE_AUTHORIZATION_H */ #endif /* HAVE_AUTHORIZATION_H */
@ -646,7 +646,7 @@ diff -up cups-1.7b1/scheduler/client.h.lspp cups-1.7b1/scheduler/client.h
/* /*
* HTTP client structure... * HTTP client structure...
*/ */
@@ -63,6 +70,10 @@ struct cupsd_client_s @@ -65,6 +72,10 @@ struct cupsd_client_s
#ifdef HAVE_AUTHORIZATION_H #ifdef HAVE_AUTHORIZATION_H
AuthorizationRef authref; /* Authorization ref */ AuthorizationRef authref; /* Authorization ref */
#endif /* HAVE_AUTHORIZATION_H */ #endif /* HAVE_AUTHORIZATION_H */
@ -657,7 +657,7 @@ diff -up cups-1.7b1/scheduler/client.h.lspp cups-1.7b1/scheduler/client.h
}; };
#define HTTP(con) &((con)->http) #define HTTP(con) &((con)->http)
@@ -135,6 +146,9 @@ extern void cupsdStartListening(void); @@ -137,6 +148,9 @@ extern void cupsdStartListening(void);
extern void cupsdStopListening(void); extern void cupsdStopListening(void);
extern void cupsdUpdateCGI(void); extern void cupsdUpdateCGI(void);
extern void cupsdWriteClient(cupsd_client_t *con); extern void cupsdWriteClient(cupsd_client_t *con);
@ -667,9 +667,9 @@ diff -up cups-1.7b1/scheduler/client.h.lspp cups-1.7b1/scheduler/client.h
#ifdef HAVE_SSL #ifdef HAVE_SSL
extern int cupsdEndTLS(cupsd_client_t *con); extern int cupsdEndTLS(cupsd_client_t *con);
diff -up cups-1.7b1/scheduler/conf.c.lspp cups-1.7b1/scheduler/conf.c diff -up cups-1.7.0/scheduler/conf.c.lspp cups-1.7.0/scheduler/conf.c
--- cups-1.7b1/scheduler/conf.c.lspp 2013-04-19 12:03:40.728872515 +0200 --- cups-1.7.0/scheduler/conf.c.lspp 2013-10-24 15:54:45.828523519 +0100
+++ cups-1.7b1/scheduler/conf.c 2013-04-19 12:03:41.218866026 +0200 +++ cups-1.7.0/scheduler/conf.c 2013-10-24 15:54:45.903523845 +0100
@@ -34,6 +34,7 @@ @@ -34,6 +34,7 @@
* read_location() - Read a <Location path> definition. * read_location() - Read a <Location path> definition.
* read_policy() - Read a <Policy name> definition. * read_policy() - Read a <Policy name> definition.
@ -699,7 +699,7 @@ diff -up cups-1.7b1/scheduler/conf.c.lspp cups-1.7b1/scheduler/conf.c
{ "WebInterface", &WebInterface, CUPSD_VARTYPE_BOOLEAN } { "WebInterface", &WebInterface, CUPSD_VARTYPE_BOOLEAN }
}; };
static const cupsd_var_t cupsfiles_vars[] = static const cupsd_var_t cupsfiles_vars[] =
@@ -545,6 +553,9 @@ cupsdReadConfiguration(void) @@ -546,6 +554,9 @@ cupsdReadConfiguration(void)
const char *tmpdir; /* TMPDIR environment variable */ const char *tmpdir; /* TMPDIR environment variable */
struct stat tmpinfo; /* Temporary directory info */ struct stat tmpinfo; /* Temporary directory info */
cupsd_policy_t *p; /* Policy */ cupsd_policy_t *p; /* Policy */
@ -709,7 +709,7 @@ diff -up cups-1.7b1/scheduler/conf.c.lspp cups-1.7b1/scheduler/conf.c
/* /*
@@ -850,6 +861,25 @@ cupsdReadConfiguration(void) @@ -852,6 +863,25 @@ cupsdReadConfiguration(void)
RunUser = getuid(); RunUser = getuid();
@ -735,7 +735,7 @@ diff -up cups-1.7b1/scheduler/conf.c.lspp cups-1.7b1/scheduler/conf.c
cupsdLogMessage(CUPSD_LOG_INFO, "Remote access is %s.", cupsdLogMessage(CUPSD_LOG_INFO, "Remote access is %s.",
RemotePort ? "enabled" : "disabled"); RemotePort ? "enabled" : "disabled");
@@ -1252,7 +1282,19 @@ cupsdReadConfiguration(void) @@ -1254,7 +1284,19 @@ cupsdReadConfiguration(void)
cupsdClearString(&Classification); cupsdClearString(&Classification);
if (Classification) if (Classification)
@ -755,7 +755,7 @@ diff -up cups-1.7b1/scheduler/conf.c.lspp cups-1.7b1/scheduler/conf.c
/* /*
* Check the MaxClients setting, and then allocate memory for it... * Check the MaxClients setting, and then allocate memory for it...
@@ -3638,6 +3680,18 @@ read_location(cups_file_t *fp, /* I - C @@ -3640,6 +3682,18 @@ read_location(cups_file_t *fp, /* I - C
return ((FatalErrors & CUPSD_FATAL_CONFIG) ? 0 : linenum); return ((FatalErrors & CUPSD_FATAL_CONFIG) ? 0 : linenum);
} }
@ -774,10 +774,10 @@ diff -up cups-1.7b1/scheduler/conf.c.lspp cups-1.7b1/scheduler/conf.c
/* /*
* 'read_policy()' - Read a <Policy name> definition. * 'read_policy()' - Read a <Policy name> definition.
diff -up cups-1.7b1/scheduler/conf.h.lspp cups-1.7b1/scheduler/conf.h diff -up cups-1.7.0/scheduler/conf.h.lspp cups-1.7.0/scheduler/conf.h
--- cups-1.7b1/scheduler/conf.h.lspp 2013-04-19 12:03:40.730872489 +0200 --- cups-1.7.0/scheduler/conf.h.lspp 2013-10-24 15:54:45.828523519 +0100
+++ cups-1.7b1/scheduler/conf.h 2013-04-19 12:03:41.221865987 +0200 +++ cups-1.7.0/scheduler/conf.h 2013-10-24 15:54:45.904523849 +0100
@@ -248,6 +248,13 @@ VAR int SSLOptions VALUE(CUPSD_SSL_NO @@ -250,6 +250,13 @@ VAR int SSLOptions VALUE(CUPSD_SSL_NO
/* SSL/TLS options */ /* SSL/TLS options */
#endif /* HAVE_SSL */ #endif /* HAVE_SSL */
@ -791,7 +791,7 @@ diff -up cups-1.7b1/scheduler/conf.h.lspp cups-1.7b1/scheduler/conf.h
#ifdef HAVE_LAUNCHD #ifdef HAVE_LAUNCHD
VAR int LaunchdTimeout VALUE(10); VAR int LaunchdTimeout VALUE(10);
/* Time after which an idle cupsd will exit */ /* Time after which an idle cupsd will exit */
@@ -266,6 +273,9 @@ int HaveServerCreds VALUE(0); @@ -268,6 +275,9 @@ int HaveServerCreds VALUE(0);
gss_cred_id_t ServerCreds; /* Server's GSS credentials */ gss_cred_id_t ServerCreds; /* Server's GSS credentials */
#endif /* HAVE_GSSAPI */ #endif /* HAVE_GSSAPI */
@ -801,9 +801,9 @@ diff -up cups-1.7b1/scheduler/conf.h.lspp cups-1.7b1/scheduler/conf.h
/* /*
* Prototypes... * Prototypes...
diff -up cups-1.7b1/scheduler/cupsd.h.lspp cups-1.7b1/scheduler/cupsd.h diff -up cups-1.7.0/scheduler/cupsd.h.lspp cups-1.7.0/scheduler/cupsd.h
--- cups-1.7b1/scheduler/cupsd.h.lspp 2013-03-08 01:45:54.000000000 +0100 --- cups-1.7.0/scheduler/cupsd.h.lspp 2013-10-24 15:54:45.886523771 +0100
+++ cups-1.7b1/scheduler/cupsd.h 2013-04-19 12:03:41.223865960 +0200 +++ cups-1.7.0/scheduler/cupsd.h 2013-10-24 15:54:45.904523849 +0100
@@ -13,6 +13,8 @@ @@ -13,6 +13,8 @@
* file is missing or damaged, see the license at "http://www.cups.org/". * file is missing or damaged, see the license at "http://www.cups.org/".
*/ */
@ -835,9 +835,9 @@ diff -up cups-1.7b1/scheduler/cupsd.h.lspp cups-1.7b1/scheduler/cupsd.h
/* /*
* Some OS's don't have hstrerror(), most notably Solaris... * Some OS's don't have hstrerror(), most notably Solaris...
*/ */
diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c diff -up cups-1.7.0/scheduler/ipp.c.lspp cups-1.7.0/scheduler/ipp.c
--- cups-1.7b1/scheduler/ipp.c.lspp 2013-04-19 12:03:40.906870158 +0200 --- cups-1.7.0/scheduler/ipp.c.lspp 2013-10-24 15:54:45.846523598 +0100
+++ cups-1.7b1/scheduler/ipp.c 2013-04-19 12:12:37.348640325 +0200 +++ cups-1.7.0/scheduler/ipp.c 2013-10-24 15:54:45.905523853 +0100
@@ -35,6 +35,7 @@ @@ -35,6 +35,7 @@
* cancel_all_jobs() - Cancel all or selected print jobs. * cancel_all_jobs() - Cancel all or selected print jobs.
* cancel_job() - Cancel a print job. * cancel_job() - Cancel a print job.
@ -881,7 +881,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
static int check_quotas(cupsd_client_t *con, cupsd_printer_t *p); static int check_quotas(cupsd_client_t *con, cupsd_printer_t *p);
static void close_job(cupsd_client_t *con, ipp_attribute_t *uri); static void close_job(cupsd_client_t *con, ipp_attribute_t *uri);
static void copy_attrs(ipp_t *to, ipp_t *from, cups_array_t *ra, static void copy_attrs(ipp_t *to, ipp_t *from, cups_array_t *ra,
@@ -1302,6 +1317,21 @@ add_job(cupsd_client_t *con, /* I - Cl @@ -1318,6 +1333,21 @@ add_job(cupsd_client_t *con, /* I - Cl
"time-at-creation", "time-at-creation",
"time-at-processing" "time-at-processing"
}; };
@ -903,7 +903,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job(%p[%d], %p(%s), %p(%s/%s))", cupsdLogMessage(CUPSD_LOG_DEBUG2, "add_job(%p[%d], %p(%s), %p(%s/%s))",
@@ -1619,6 +1649,106 @@ add_job(cupsd_client_t *con, /* I - Cl @@ -1635,6 +1665,106 @@ add_job(cupsd_client_t *con, /* I - Cl
return (NULL); return (NULL);
} }
@ -1010,7 +1010,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
if ((job = cupsdAddJob(priority, printer->name)) == NULL) if ((job = cupsdAddJob(priority, printer->name)) == NULL)
{ {
send_ipp_status(con, IPP_INTERNAL_ERROR, send_ipp_status(con, IPP_INTERNAL_ERROR,
@@ -1627,6 +1757,32 @@ add_job(cupsd_client_t *con, /* I - Cl @@ -1643,6 +1773,32 @@ add_job(cupsd_client_t *con, /* I - Cl
return (NULL); return (NULL);
} }
@ -1043,7 +1043,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
job->dtype = printer->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_REMOTE); job->dtype = printer->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_REMOTE);
job->attrs = con->request; job->attrs = con->request;
job->dirty = 1; job->dirty = 1;
@@ -1836,6 +1992,29 @@ add_job(cupsd_client_t *con, /* I - Cl @@ -1852,6 +2008,29 @@ add_job(cupsd_client_t *con, /* I - Cl
attr->values[0].string.text = _cupsStrRetain(printer->job_sheets[0]); attr->values[0].string.text = _cupsStrRetain(printer->job_sheets[0]);
attr->values[1].string.text = _cupsStrRetain(printer->job_sheets[1]); attr->values[1].string.text = _cupsStrRetain(printer->job_sheets[1]);
} }
@ -1073,7 +1073,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
job->job_sheets = attr; job->job_sheets = attr;
@@ -1866,6 +2045,9 @@ add_job(cupsd_client_t *con, /* I - Cl @@ -1882,6 +2061,9 @@ add_job(cupsd_client_t *con, /* I - Cl
"job-sheets=\"%s,none\", " "job-sheets=\"%s,none\", "
"job-originating-user-name=\"%s\"", "job-originating-user-name=\"%s\"",
Classification, job->username); Classification, job->username);
@ -1083,7 +1083,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
} }
else if (attr->num_values == 2 && else if (attr->num_values == 2 &&
strcmp(attr->values[0].string.text, strcmp(attr->values[0].string.text,
@@ -1884,6 +2066,9 @@ add_job(cupsd_client_t *con, /* I - Cl @@ -1900,6 +2082,9 @@ add_job(cupsd_client_t *con, /* I - Cl
"job-originating-user-name=\"%s\"", "job-originating-user-name=\"%s\"",
attr->values[0].string.text, attr->values[0].string.text,
attr->values[1].string.text, job->username); attr->values[1].string.text, job->username);
@ -1093,7 +1093,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
} }
else if (strcmp(attr->values[0].string.text, Classification) && else if (strcmp(attr->values[0].string.text, Classification) &&
strcmp(attr->values[0].string.text, "none") && strcmp(attr->values[0].string.text, "none") &&
@@ -1904,6 +2089,9 @@ add_job(cupsd_client_t *con, /* I - Cl @@ -1920,6 +2105,9 @@ add_job(cupsd_client_t *con, /* I - Cl
"job-originating-user-name=\"%s\"", "job-originating-user-name=\"%s\"",
attr->values[0].string.text, attr->values[0].string.text,
attr->values[1].string.text, job->username); attr->values[1].string.text, job->username);
@ -1103,7 +1103,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
} }
} }
else if (strcmp(attr->values[0].string.text, Classification) && else if (strcmp(attr->values[0].string.text, Classification) &&
@@ -1944,8 +2132,52 @@ add_job(cupsd_client_t *con, /* I - Cl @@ -1960,8 +2148,52 @@ add_job(cupsd_client_t *con, /* I - Cl
"job-sheets=\"%s\", " "job-sheets=\"%s\", "
"job-originating-user-name=\"%s\"", "job-originating-user-name=\"%s\"",
Classification, job->username); Classification, job->username);
@ -1156,7 +1156,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
/* /*
* See if we need to add the starting sheet... * See if we need to add the starting sheet...
@@ -3717,6 +3949,111 @@ check_rss_recipient( @@ -3733,6 +3965,111 @@ check_rss_recipient(
} }
@ -1268,7 +1268,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
/* /*
* 'check_quotas()' - Check quotas for a printer and user. * 'check_quotas()' - Check quotas for a printer and user.
*/ */
@@ -4173,6 +4510,15 @@ copy_banner(cupsd_client_t *con, /* I - @@ -4189,6 +4526,15 @@ copy_banner(cupsd_client_t *con, /* I -
char attrname[255], /* Name of attribute */ char attrname[255], /* Name of attribute */
*s; /* Pointer into name */ *s; /* Pointer into name */
ipp_attribute_t *attr; /* Attribute */ ipp_attribute_t *attr; /* Attribute */
@ -1284,7 +1284,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
cupsdLogMessage(CUPSD_LOG_DEBUG2, cupsdLogMessage(CUPSD_LOG_DEBUG2,
@@ -4208,6 +4554,82 @@ copy_banner(cupsd_client_t *con, /* I - @@ -4224,6 +4570,82 @@ copy_banner(cupsd_client_t *con, /* I -
fchmod(cupsFileNumber(out), 0640); fchmod(cupsFileNumber(out), 0640);
fchown(cupsFileNumber(out), RunUser, Group); fchown(cupsFileNumber(out), RunUser, Group);
@ -1367,7 +1367,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
/* /*
* Try the localized banner file under the subdirectory... * Try the localized banner file under the subdirectory...
@@ -4302,6 +4724,24 @@ copy_banner(cupsd_client_t *con, /* I - @@ -4318,6 +4740,24 @@ copy_banner(cupsd_client_t *con, /* I -
else else
s = attrname; s = attrname;
@ -1392,7 +1392,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
if (!strcmp(s, "printer-name")) if (!strcmp(s, "printer-name"))
{ {
cupsFilePuts(out, job->dest); cupsFilePuts(out, job->dest);
@@ -6162,6 +6602,22 @@ get_job_attrs(cupsd_client_t *con, /* I @@ -6184,6 +6624,22 @@ get_job_attrs(cupsd_client_t *con, /* I
exclude = cupsdGetPrivateAttrs(policy, con, printer, job->username); exclude = cupsdGetPrivateAttrs(policy, con, printer, job->username);
@ -1415,7 +1415,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
/* /*
* Copy attributes... * Copy attributes...
*/ */
@@ -6504,6 +6960,11 @@ get_jobs(cupsd_client_t *con, /* I - C @@ -6526,6 +6982,11 @@ get_jobs(cupsd_client_t *con, /* I - C
if (username[0] && _cups_strcasecmp(username, job->username)) if (username[0] && _cups_strcasecmp(username, job->username))
continue; continue;
@ -1427,7 +1427,7 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
if (count > 0) if (count > 0)
ippAddSeparator(con->response); ippAddSeparator(con->response);
@@ -11068,6 +11529,11 @@ validate_user(cupsd_job_t *job, /* I @@ -11096,6 +11557,11 @@ validate_user(cupsd_job_t *job, /* I
strlcpy(username, get_username(con), userlen); strlcpy(username, get_username(con), userlen);
@ -1439,9 +1439,9 @@ diff -up cups-1.7b1/scheduler/ipp.c.lspp cups-1.7b1/scheduler/ipp.c
/* /*
* Check the username against the owner... * Check the username against the owner...
*/ */
diff -up cups-1.7b1/scheduler/job.c.lspp cups-1.7b1/scheduler/job.c diff -up cups-1.7.0/scheduler/job.c.lspp cups-1.7.0/scheduler/job.c
--- cups-1.7b1/scheduler/job.c.lspp 2013-04-19 12:03:40.982869152 +0200 --- cups-1.7.0/scheduler/job.c.lspp 2013-10-24 15:54:45.896523814 +0100
+++ cups-1.7b1/scheduler/job.c 2013-04-19 12:15:01.516685390 +0200 +++ cups-1.7.0/scheduler/job.c 2013-10-24 15:54:45.906523858 +0100
@@ -68,6 +68,9 @@ @@ -68,6 +68,9 @@
* update_job_attrs() - Update the job-printer-* attributes. * update_job_attrs() - Update the job-printer-* attributes.
*/ */
@ -1482,7 +1482,7 @@ diff -up cups-1.7b1/scheduler/job.c.lspp cups-1.7b1/scheduler/job.c
cupsdLogMessage(CUPSD_LOG_DEBUG2, cupsdLogMessage(CUPSD_LOG_DEBUG2,
@@ -1092,6 +1111,67 @@ cupsdContinueJob(cupsd_job_t *job) /* I @@ -1090,6 +1109,67 @@ cupsdContinueJob(cupsd_job_t *job) /* I
if (final_content_type[0]) if (final_content_type[0])
envp[envc ++] = final_content_type; envp[envc ++] = final_content_type;
@ -1550,7 +1550,7 @@ diff -up cups-1.7b1/scheduler/job.c.lspp cups-1.7b1/scheduler/job.c
if (Classification && !banner_page) if (Classification && !banner_page)
{ {
if ((attr = ippFindAttribute(job->attrs, "job-sheets", if ((attr = ippFindAttribute(job->attrs, "job-sheets",
@@ -1863,6 +1943,20 @@ cupsdLoadJob(cupsd_job_t *job) /* I - J @@ -1861,6 +1941,20 @@ cupsdLoadJob(cupsd_job_t *job) /* I - J
ippSetString(job->attrs, &job->reasons, 0, "none"); ippSetString(job->attrs, &job->reasons, 0, "none");
} }
@ -1571,7 +1571,7 @@ diff -up cups-1.7b1/scheduler/job.c.lspp cups-1.7b1/scheduler/job.c
job->sheets = ippFindAttribute(job->attrs, "job-media-sheets-completed", job->sheets = ippFindAttribute(job->attrs, "job-media-sheets-completed",
IPP_TAG_INTEGER); IPP_TAG_INTEGER);
job->job_sheets = ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_NAME); job->job_sheets = ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_NAME);
@@ -2251,6 +2345,14 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J @@ -2252,6 +2346,14 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J
{ {
char filename[1024]; /* Job control filename */ char filename[1024]; /* Job control filename */
cups_file_t *fp; /* Job file */ cups_file_t *fp; /* Job file */
@ -1586,7 +1586,7 @@ diff -up cups-1.7b1/scheduler/job.c.lspp cups-1.7b1/scheduler/job.c
cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p(%d)): job->attrs=%p", cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p(%d)): job->attrs=%p",
@@ -2263,6 +2365,76 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J @@ -2264,6 +2366,76 @@ cupsdSaveJob(cupsd_job_t *job) /* I - J
fchown(cupsFileNumber(fp), RunUser, Group); fchown(cupsFileNumber(fp), RunUser, Group);
@ -1663,7 +1663,7 @@ diff -up cups-1.7b1/scheduler/job.c.lspp cups-1.7b1/scheduler/job.c
job->attrs->state = IPP_IDLE; job->attrs->state = IPP_IDLE;
if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL, if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL,
@@ -3812,6 +3984,18 @@ get_options(cupsd_job_t *job, /* I - Jo @@ -3813,6 +3985,18 @@ get_options(cupsd_job_t *job, /* I - Jo
banner_page) banner_page)
continue; continue;
@ -1682,7 +1682,7 @@ diff -up cups-1.7b1/scheduler/job.c.lspp cups-1.7b1/scheduler/job.c
/* /*
* Otherwise add them to the list... * Otherwise add them to the list...
*/ */
@@ -4538,6 +4722,18 @@ start_job(cupsd_job_t *job, /* I - @@ -4539,6 +4723,18 @@ start_job(cupsd_job_t *job, /* I -
cupsd_printer_t *printer) /* I - Printer to print job */ cupsd_printer_t *printer) /* I - Printer to print job */
{ {
const char *filename; /* Support filename */ const char *filename; /* Support filename */
@ -1701,7 +1701,7 @@ diff -up cups-1.7b1/scheduler/job.c.lspp cups-1.7b1/scheduler/job.c
cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job(job=%p(%d), printer=%p(%s))", cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job(job=%p(%d), printer=%p(%s))",
@@ -4701,6 +4897,108 @@ start_job(cupsd_job_t *job, /* I - @@ -4702,6 +4898,108 @@ start_job(cupsd_job_t *job, /* I -
fcntl(job->side_pipes[1], F_SETFD, fcntl(job->side_pipes[1], F_SETFD,
fcntl(job->side_pipes[1], F_GETFD) | FD_CLOEXEC); fcntl(job->side_pipes[1], F_GETFD) | FD_CLOEXEC);
@ -1810,9 +1810,9 @@ diff -up cups-1.7b1/scheduler/job.c.lspp cups-1.7b1/scheduler/job.c
/* /*
* Now start the first file in the job... * Now start the first file in the job...
*/ */
diff -up cups-1.7b1/scheduler/job.h.lspp cups-1.7b1/scheduler/job.h diff -up cups-1.7.0/scheduler/job.h.lspp cups-1.7.0/scheduler/job.h
--- cups-1.7b1/scheduler/job.h.lspp 2012-05-23 03:36:50.000000000 +0200 --- cups-1.7.0/scheduler/job.h.lspp 2013-05-29 12:51:34.000000000 +0100
+++ cups-1.7b1/scheduler/job.h 2013-04-19 12:03:41.248865629 +0200 +++ cups-1.7.0/scheduler/job.h 2013-10-24 15:54:45.906523858 +0100
@@ -13,6 +13,13 @@ @@ -13,6 +13,13 @@
* file is missing or damaged, see the license at "http://www.cups.org/". * file is missing or damaged, see the license at "http://www.cups.org/".
*/ */
@ -1838,9 +1838,9 @@ diff -up cups-1.7b1/scheduler/job.h.lspp cups-1.7b1/scheduler/job.h
}; };
typedef struct cupsd_joblog_s /**** Job log message ****/ typedef struct cupsd_joblog_s /**** Job log message ****/
diff -up cups-1.7b1/scheduler/main.c.lspp cups-1.7b1/scheduler/main.c diff -up cups-1.7.0/scheduler/main.c.lspp cups-1.7.0/scheduler/main.c
--- cups-1.7b1/scheduler/main.c.lspp 2013-04-19 12:03:41.112867430 +0200 --- cups-1.7.0/scheduler/main.c.lspp 2013-10-24 15:54:45.887523775 +0100
+++ cups-1.7b1/scheduler/main.c 2013-04-19 12:17:28.185701322 +0200 +++ cups-1.7.0/scheduler/main.c 2013-10-24 15:54:45.907523862 +0100
@@ -38,6 +38,8 @@ @@ -38,6 +38,8 @@
* usage() - Show scheduler usage. * usage() - Show scheduler usage.
*/ */
@ -1870,7 +1870,7 @@ diff -up cups-1.7b1/scheduler/main.c.lspp cups-1.7b1/scheduler/main.c
int run_as_child = 0; int run_as_child = 0;
/* Needed for background fork/exec */ /* Needed for background fork/exec */
#ifdef __APPLE__ #ifdef __APPLE__
@@ -515,6 +523,25 @@ main(int argc, /* I - Number of comm @@ -519,6 +527,25 @@ main(int argc, /* I - Number of comm
#endif /* DEBUG */ #endif /* DEBUG */
} }
@ -1896,7 +1896,7 @@ diff -up cups-1.7b1/scheduler/main.c.lspp cups-1.7b1/scheduler/main.c
/* /*
* Set the timezone info... * Set the timezone info...
*/ */
@@ -1175,6 +1202,11 @@ main(int argc, /* I - Number of comm @@ -1197,6 +1224,11 @@ main(int argc, /* I - Number of comm
cupsdStopSelect(); cupsdStopSelect();
@ -1908,9 +1908,9 @@ diff -up cups-1.7b1/scheduler/main.c.lspp cups-1.7b1/scheduler/main.c
return (!stop_scheduler); return (!stop_scheduler);
} }
diff -up cups-1.7b1/scheduler/printers.c.lspp cups-1.7b1/scheduler/printers.c diff -up cups-1.7.0/scheduler/printers.c.lspp cups-1.7.0/scheduler/printers.c
--- cups-1.7b1/scheduler/printers.c.lspp 2013-04-19 12:03:40.756872145 +0200 --- cups-1.7.0/scheduler/printers.c.lspp 2013-10-24 15:54:45.876523727 +0100
+++ cups-1.7b1/scheduler/printers.c 2013-04-19 12:03:41.261865457 +0200 +++ cups-1.7.0/scheduler/printers.c 2013-10-24 15:54:45.907523862 +0100
@@ -52,6 +52,8 @@ @@ -52,6 +52,8 @@
* write_xml_string() - Write a string with XML escaping. * write_xml_string() - Write a string with XML escaping.
*/ */
@ -1931,7 +1931,7 @@ diff -up cups-1.7b1/scheduler/printers.c.lspp cups-1.7b1/scheduler/printers.c
/* /*
* Local functions... * Local functions...
@@ -2046,6 +2052,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p) @@ -2063,6 +2069,13 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)
ipp_attribute_t *attr; /* Attribute data */ ipp_attribute_t *attr; /* Attribute data */
char *name, /* Current user/group name */ char *name, /* Current user/group name */
*filter; /* Current filter */ *filter; /* Current filter */
@ -1945,7 +1945,7 @@ diff -up cups-1.7b1/scheduler/printers.c.lspp cups-1.7b1/scheduler/printers.c
DEBUG_printf(("cupsdSetPrinterAttrs: entering name = %s, type = %x\n", p->name, DEBUG_printf(("cupsdSetPrinterAttrs: entering name = %s, type = %x\n", p->name,
@@ -2168,6 +2181,45 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p) @@ -2185,6 +2198,45 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)
attr->values[1].string.text = _cupsStrAlloc(Classification ? attr->values[1].string.text = _cupsStrAlloc(Classification ?
Classification : p->job_sheets[1]); Classification : p->job_sheets[1]);
} }

View File

@ -1,134 +0,0 @@
Index: conf/cups-files.conf.in
===================================================================
--- conf/cups-files.conf.in (revision 11192)
+++ conf/cups-files.conf.in (working copy)
@@ -8,6 +8,9 @@
# List of events that are considered fatal errors for the scheduler...
#FatalErrors @CUPS_FATAL_ERRORS@
+# Do we call fsync() after writing configuration or status files?
+#SyncOnClose No
+
# Default user and group for filters/backends/helper programs; this cannot be
# any user or group that resolves to ID 0 for security reasons...
#User @CUPS_USER@
Index: doc/help/ref-cups-files-conf.html.in
===================================================================
--- doc/help/ref-cups-files-conf.html.in (revision 11192)
+++ doc/help/ref-cups-files-conf.html.in (working copy)
@@ -429,6 +429,31 @@
default server directory is <VAR>/etc/cups</VAR>.</P>
+<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6.4</SPAN><A NAME="SyncOnClose">SyncOnClose</A></H2>
+
+<H3>Examples</H3>
+
+<PRE CLASS="command">
+SyncOnClose No
+SyncOnClose Yes
+</PRE>
+
+<H3>Description</H3>
+
+<P>The <CODE>SyncOnClose</CODE> directive determines whether the scheduler
+flushes changes to configuration and state files to disk. The default is
+<CODE>No</CODE> which relies on the operating system to schedule a suitable
+time to write changes to disk.</P>
+
+<BLOCKQUOTE><B>Note:</B>
+
+<P>Setting <CODE>SyncOnClose</CODE> to <CODE>Yes</CODE> makes the scheduler use the <CODE>fsync(2)</CODE> system call to write all changes to disk, however the drive or network file system server may still delay writing data to disk. Do not depend on this functionality to prevent data loss in the event of unexpected hardware failure.</P>
+
+<P>Enabling <CODE>SyncOnClose</CODE> may also cause the scheduler to periodically become unresponsive while it waits for changes to be written.</P>
+
+</BLOCKQUOTE>
+
+
<H2 CLASS="title"><A NAME="SystemGroup">SystemGroup</A></H2>
<H3>Examples</H3>
Index: man/cups-files.conf.man.in
===================================================================
--- man/cups-files.conf.man.in (revision 11192)
+++ man/cups-files.conf.man.in (working copy)
@@ -122,6 +122,12 @@
.br
Specifies the directory where the server configuration files can be found.
.TP 5
+SyncOnClose Yes
+.TP 5
+SyncOnClose No
+Specifies whether the scheduler calls \fIfsync(2)\fR after writing configuration
+or state files. The default is No.
+.TP 5
SystemGroup group-name [group-name ...]
.br
Specifies the group(s) to use for System class authentication.
Index: scheduler/conf.c
===================================================================
--- scheduler/conf.c (revision 11192)
+++ scheduler/conf.c (working copy)
@@ -174,6 +174,7 @@
{ "ServerRoot", &ServerRoot, CUPSD_VARTYPE_PATHNAME },
{ "SMBConfigFile", &SMBConfigFile, CUPSD_VARTYPE_STRING },
{ "StateDir", &StateDir, CUPSD_VARTYPE_STRING },
+ { "SyncOnClose", &SyncOnClose, CUPSD_VARTYPE_BOOLEAN },
#ifdef HAVE_AUTHORIZATION_H
{ "SystemGroupAuthKey", &SystemGroupAuthKey, CUPSD_VARTYPE_STRING },
#endif /* HAVE_AUTHORIZATION_H */
@@ -734,6 +735,7 @@
ReloadTimeout = DEFAULT_KEEPALIVE;
RootCertDuration = 300;
StrictConformance = FALSE;
+ SyncOnClose = FALSE;
Timeout = DEFAULT_TIMEOUT;
WebInterface = CUPS_DEFAULT_WEBIF;
Index: scheduler/conf.h
===================================================================
--- scheduler/conf.h (revision 11192)
+++ scheduler/conf.h (working copy)
@@ -172,6 +172,8 @@
/* Which errors are fatal? */
StrictConformance VALUE(FALSE),
/* Require strict IPP conformance? */
+ SyncOnClose VALUE(FALSE),
+ /* Call fsync() when closing files? */
LogFilePerm VALUE(0644);
/* Permissions for log files */
VAR cupsd_loglevel_t LogLevel VALUE(CUPSD_LOG_WARN);
Index: scheduler/file.c
===================================================================
--- scheduler/file.c (revision 11192)
+++ scheduler/file.c (working copy)
@@ -109,6 +109,29 @@
/*
+ * Synchronize changes to disk if SyncOnClose is enabled.
+ */
+
+ if (SyncOnClose)
+ {
+ if (cupsFileFlush(fp))
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to write changes to \"%s\": %s",
+ filename, strerror(errno));
+ cupsFileClose(fp);
+ return (-1);
+ }
+
+ if (fsync(cupsFileNumber(fp)))
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to sync changes to \"%s\": %s",
+ filename, strerror(errno));
+ cupsFileClose(fp);
+ return (-1);
+ }
+ }
+
+ /*
* First close the file...
*/

View File

@ -1,9 +1,6 @@
%global use_alternatives 1 %global use_alternatives 1
%global lspp 1 %global lspp 1
%global prever rc1
%global VERSION %{version}%{prever}
# {_exec_prefix}/lib/cups is correct, even on x86_64. # {_exec_prefix}/lib/cups is correct, even on x86_64.
# It is not used for shared objects but for executables. # It is not used for shared objects but for executables.
# It's more of a libexec-style ({_libexecdir}) usage, # It's more of a libexec-style ({_libexecdir}) usage,
@ -13,12 +10,12 @@
Summary: CUPS printing system Summary: CUPS printing system
Name: cups Name: cups
Epoch: 1 Epoch: 1
Version: 1.7 Version: 1.7.0
Release: 0.27.%{prever}%{?dist} Release: 1%{?dist}
License: GPLv2 License: GPLv2
Group: System Environment/Daemons Group: System Environment/Daemons
Url: http://www.cups.org/ Url: http://www.cups.org/
Source: http://www.cups.org/software/%{version}%{prever}/cups-%{version}%{prever}-source.tar.bz2 Source: http://www.cups.org/software/%{version}/cups-%{version}-source.tar.bz2
# Pixmap for desktop file # Pixmap for desktop file
Source2: cupsprinter.png Source2: cupsprinter.png
# socket unit for cups-lpd service # socket unit for cups-lpd service
@ -67,11 +64,9 @@ Patch34: cups-libusb-quirks.patch
Patch35: cups-use-ipp1.1.patch Patch35: cups-use-ipp1.1.patch
Patch36: cups-avahi-no-threaded.patch Patch36: cups-avahi-no-threaded.patch
Patch37: cups-gz-crc.patch Patch37: cups-gz-crc.patch
Patch38: cups-build.patch
Patch39: cups-ipp-multifile.patch Patch39: cups-ipp-multifile.patch
Patch40: cups-full-relro.patch Patch40: cups-full-relro.patch
Patch41: cups-web-devices-timeout.patch Patch41: cups-web-devices-timeout.patch
Patch42: cups-synconclose.patch
Patch43: cups-final-content-type.patch Patch43: cups-final-content-type.patch
Patch44: cups-jobhistory.patch Patch44: cups-jobhistory.patch
@ -186,7 +181,7 @@ lpd emulation.
Sends IPP requests to the specified URI and tests and/or displays the results. Sends IPP requests to the specified URI and tests and/or displays the results.
%prep %prep
%setup -q -n cups-%{VERSION} %setup -q
# Don't gzip man pages in the Makefile, let rpmbuild do it. # Don't gzip man pages in the Makefile, let rpmbuild do it.
%patch1 -p1 -b .no-gzip-man %patch1 -p1 -b .no-gzip-man
# Use the system pam configuration. # Use the system pam configuration.
@ -260,16 +255,12 @@ Sends IPP requests to the specified URI and tests and/or displays the results.
%patch36 -p1 -b .avahi-no-threaded %patch36 -p1 -b .avahi-no-threaded
# Avoid sign-extending CRCs for gz decompression (bug #983486). # Avoid sign-extending CRCs for gz decompression (bug #983486).
%patch37 -p1 -b .gz-crc %patch37 -p1 -b .gz-crc
# Fixed build.
%patch38 -p1 -b .build
# Fixes for jobs with multiple files and multiple formats. # Fixes for jobs with multiple files and multiple formats.
%patch39 -p1 -b .ipp-multifile %patch39 -p1 -b .ipp-multifile
# Full relro (bug #996740). # Full relro (bug #996740).
%patch40 -p1 -b .full-relro %patch40 -p1 -b .full-relro
# Increase web interface get-devices timeout to 10s (bug #996664). # Increase web interface get-devices timeout to 10s (bug #996664).
%patch41 -p1 -b .web-devices-timeout %patch41 -p1 -b .web-devices-timeout
# Add SyncOnClose option (bug #984883).
%patch42 -p0 -b .synconclose
# Reverted upstream change to FINAL_CONTENT_TYPE in order to fix # Reverted upstream change to FINAL_CONTENT_TYPE in order to fix
# printing to remote CUPS servers (bug #1010580). # printing to remote CUPS servers (bug #1010580).
%patch43 -p1 -b .final-content-type %patch43 -p1 -b .final-content-type
@ -543,6 +534,7 @@ rm -f %{cups_serverbin}/backend/smb
%dir %{_datadir}/%{name}/www/cs %dir %{_datadir}/%{name}/www/cs
%dir %{_datadir}/%{name}/www/es %dir %{_datadir}/%{name}/www/es
%dir %{_datadir}/%{name}/www/fr %dir %{_datadir}/%{name}/www/fr
%dir %{_datadir}/%{name}/www/it
%dir %{_datadir}/%{name}/www/ja %dir %{_datadir}/%{name}/www/ja
%dir %{_datadir}/%{name}/www/ru %dir %{_datadir}/%{name}/www/ru
%{_datadir}/%{name}/www/images %{_datadir}/%{name}/www/images
@ -554,8 +546,11 @@ rm -f %{cups_serverbin}/backend/smb
%doc %{_datadir}/%{name}/www/cs/index.html %doc %{_datadir}/%{name}/www/cs/index.html
%doc %{_datadir}/%{name}/www/es/index.html %doc %{_datadir}/%{name}/www/es/index.html
%doc %{_datadir}/%{name}/www/fr/index.html %doc %{_datadir}/%{name}/www/fr/index.html
%doc %{_datadir}/%{name}/www/it/index.html
%doc %{_datadir}/%{name}/www/ja/index.html %doc %{_datadir}/%{name}/www/ja/index.html
%doc %{_datadir}/%{name}/www/ru/index.html %doc %{_datadir}/%{name}/www/ru/index.html
%dir %{_datadir}/%{name}/usb
%{_datadir}/%{name}/usb/org.cups.usb-quirks
%{_unitdir}/%{name}.service %{_unitdir}/%{name}.service
%{_unitdir}/%{name}.socket %{_unitdir}/%{name}.socket
%{_unitdir}/%{name}.path %{_unitdir}/%{name}.path
@ -587,6 +582,7 @@ rm -f %{cups_serverbin}/backend/smb
%dir %{_datadir}/cups/templates/cs %dir %{_datadir}/cups/templates/cs
%dir %{_datadir}/cups/templates/es %dir %{_datadir}/cups/templates/es
%dir %{_datadir}/cups/templates/fr %dir %{_datadir}/cups/templates/fr
%dir %{_datadir}/cups/templates/it
%dir %{_datadir}/cups/templates/ja %dir %{_datadir}/cups/templates/ja
%dir %{_datadir}/cups/templates/ru %dir %{_datadir}/cups/templates/ru
%{_datadir}/cups/templates/*.tmpl %{_datadir}/cups/templates/*.tmpl
@ -594,6 +590,7 @@ rm -f %{cups_serverbin}/backend/smb
%{_datadir}/cups/templates/cs/*.tmpl %{_datadir}/cups/templates/cs/*.tmpl
%{_datadir}/cups/templates/es/*.tmpl %{_datadir}/cups/templates/es/*.tmpl
%{_datadir}/cups/templates/fr/*.tmpl %{_datadir}/cups/templates/fr/*.tmpl
%{_datadir}/cups/templates/it/*.tmpl
%{_datadir}/cups/templates/ja/*.tmpl %{_datadir}/cups/templates/ja/*.tmpl
%{_datadir}/cups/templates/ru/*.tmpl %{_datadir}/cups/templates/ru/*.tmpl
%dir %attr(1770,root,lp) %{_localstatedir}/spool/cups/tmp %dir %attr(1770,root,lp) %{_localstatedir}/spool/cups/tmp
@ -649,6 +646,9 @@ rm -f %{cups_serverbin}/backend/smb
%{_mandir}/man5/ipptoolfile.5.gz %{_mandir}/man5/ipptoolfile.5.gz
%changelog %changelog
* Thu Oct 24 2013 Tim Waugh <twaugh@redhat.com> - 1:1.7.0-1
- 1.7.0.
* Thu Oct 24 2013 Tim Waugh <twaugh@redhat.com> - 1:1.7-0.27.rc1 * Thu Oct 24 2013 Tim Waugh <twaugh@redhat.com> - 1:1.7-0.27.rc1
- Fix job history logging. - Fix job history logging.

View File

@ -1 +1 @@
ee162c4be28043f03059f91ec133917a cups-1.7rc1-source.tar.bz2 5ab496a2ce27017fcdb3d7ec4818a75a cups-1.7.0-source.tar.bz2