+++ /dev/null
---- cups-1.2.1/scheduler/client.c.orig 2006-05-22 17:34:01.000000000 +0200
-+++ cups-1.2.1/scheduler/client.c 2006-06-05 14:54:53.436660500 +0200
-@@ -1882,24 +1882,27 @@
-
-
- if (con->filename)
-+ {
- fd = open(con->filename, O_RDONLY);
-- else
-- fd = open("/dev/null", O_RDONLY);
-
-- if (fd < 0)
-- {
-- cupsdLogMessage(CUPSD_LOG_ERROR,
-- "cupsdSendCommand: %d Unable to open \"%s\" for reading: %s",
-- con->http.fd, con->filename ? con->filename : "/dev/null",
-- strerror(errno));
-- return (0);
-- }
-+ if (fd < 0)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_ERROR,
-+ "cupsdSendCommand: %d Unable to open \"%s\" for reading: %s",
-+ con->http.fd, con->filename ? con->filename : "/dev/null",
-+ strerror(errno));
-+ return (0);
-+ }
-
-- fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
-+ fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
-+ }
-+ else
-+ fd = -1;
-
- con->pipe_pid = pipe_command(con, fd, &(con->file), command, options, root);
-
-- close(fd);
-+ if (fd >= 0)
-+ close(fd);
-
- cupsdLogMessage(CUPSD_LOG_INFO, "Started \"%s\" (pid=%d)", command,
- con->pipe_pid);
---- cups-1.2.1/scheduler/job.c.orig 2006-05-18 23:00:56.000000000 +0200
-+++ cups-1.2.1/scheduler/job.c 2006-06-05 14:44:04.660114500 +0200
-@@ -3090,28 +3090,6 @@
- job->status = 0;
- memset(job->filters, 0, sizeof(job->filters));
-
-- filterfds[1][0] = open("/dev/null", O_RDONLY);
--
-- if (filterfds[1][0] < 0)
-- {
-- cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to open \"/dev/null\" - %s.",
-- strerror(errno));
-- snprintf(printer->state_message, sizeof(printer->state_message),
-- "Unable to open \"/dev/null\" - %s.", strerror(errno));
--
-- cupsdAddPrinterHistory(printer);
--
-- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
-- "Job canceled because the server could not open /dev/null.");
--
-- goto abort_job;
-- }
--
-- fcntl(filterfds[1][0], F_SETFD, fcntl(filterfds[1][0], F_GETFD) | FD_CLOEXEC);
--
-- cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job: filterfds[%d] = [ %d %d ]",
-- 1, filterfds[1][0], filterfds[1][1]);
--
- for (i = 0, slot = 0, filter = (mime_filter_t *)cupsArrayFirst(filters);
- filter;
- i ++, filter = (mime_filter_t *)cupsArrayNext(filters))
-@@ -3165,36 +3143,43 @@
- else
- {
- job->print_pipes[0] = -1;
-- if (!strncmp(printer->device_uri, "file:/dev/", 10) &&
-- strcmp(printer->device_uri, "file:/dev/null"))
-- job->print_pipes[1] = open(printer->device_uri + 5,
-- O_WRONLY | O_EXCL);
-- else if (!strncmp(printer->device_uri, "file:///dev/", 12) &&
-- strcmp(printer->device_uri, "file:///dev/null"))
-- job->print_pipes[1] = open(printer->device_uri + 7,
-- O_WRONLY | O_EXCL);
-+ if (!strcmp(printer->device_uri, "file:/dev/null") ||
-+ !strcmp(printer->device_uri, "file:///dev/null"))
-+ job->print_pipes[1] = -1;
- else
-- job->print_pipes[1] = open(printer->device_uri + 5,
-- O_WRONLY | O_CREAT | O_TRUNC, 0600);
--
-- if (job->print_pipes[1] < 0)
- {
-- cupsdLogMessage(CUPSD_LOG_ERROR,
-- "Unable to open output file \"%s\" - %s.",
-- printer->device_uri, strerror(errno));
-- snprintf(printer->state_message, sizeof(printer->state_message),
-- "Unable to open output file \"%s\" - %s.",
-- printer->device_uri, strerror(errno));
-+ if (!strncmp(printer->device_uri, "file:/dev/", 10))
-+ job->print_pipes[1] = open(printer->device_uri + 5,
-+ O_WRONLY | O_EXCL);
-+ else if (!strncmp(printer->device_uri, "file:///dev/", 12))
-+ job->print_pipes[1] = open(printer->device_uri + 7,
-+ O_WRONLY | O_EXCL);
-+ else if (!strncmp(printer->device_uri, "file:///", 8))
-+ job->print_pipes[1] = open(printer->device_uri + 7,
-+ O_WRONLY | O_CREAT | O_TRUNC, 0600);
-+ else
-+ job->print_pipes[1] = open(printer->device_uri + 5,
-+ O_WRONLY | O_CREAT | O_TRUNC, 0600);
-
-- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
-- "Job canceled because the server could not open the "
-- "output file.");
-+ if (job->print_pipes[1] < 0)
-+ {
-+ cupsdLogMessage(CUPSD_LOG_ERROR,
-+ "Unable to open output file \"%s\" - %s.",
-+ printer->device_uri, strerror(errno));
-+ snprintf(printer->state_message, sizeof(printer->state_message),
-+ "Unable to open output file \"%s\" - %s.",
-+ printer->device_uri, strerror(errno));
-
-- goto abort_job;
-- }
-+ cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
-+ "Job canceled because the server could not open the "
-+ "output file.");
-
-- fcntl(job->print_pipes[1], F_SETFD,
-- fcntl(job->print_pipes[1], F_GETFD) | FD_CLOEXEC);
-+ goto abort_job;
-+ }
-+
-+ fcntl(job->print_pipes[1], F_SETFD,
-+ fcntl(job->print_pipes[1], F_GETFD) | FD_CLOEXEC);
-+ }
- }
-
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
-@@ -3274,25 +3259,7 @@
- argv[0] = sani_uri;
-
- filterfds[slot][0] = -1;
-- filterfds[slot][1] = open("/dev/null", O_WRONLY);
--
-- if (filterfds[slot][1] < 0)
-- {
-- cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to open \"/dev/null\" - %s.",
-- strerror(errno));
-- snprintf(printer->state_message, sizeof(printer->state_message),
-- "Unable to open \"/dev/null\" - %s.", strerror(errno));
--
-- cupsdAddPrinterHistory(printer);
--
-- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
-- "Job canceled because the server could not open a file.");
--
-- goto abort_job;
-- }
--
-- fcntl(filterfds[slot][1], F_SETFD,
-- fcntl(filterfds[slot][1], F_GETFD) | FD_CLOEXEC);
-+ filterfds[slot][1] = -1;
-
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job: backend=\"%s\"",
- command);