rpms/cups/devel cups-usb-paperout.patch, 1.4, 1.5 cups.spec, 1.348, 1.349
Tim Waugh (twaugh)
fedora-extras-commits at redhat.com
Mon Jul 23 12:20:06 UTC 2007
- Previous message (by thread): rpms/system-config-services/devel .cvsignore, 1.34, 1.35 sources, 1.44, 1.45 system-config-services.spec, 1.45, 1.46
- Next message (by thread): rpms/sugar/OLPC-2 .cvsignore, 1.26, 1.27 sources, 1.26, 1.27 sugar.spec, 1.31, 1.32
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: twaugh
Update of /cvs/pkgs/rpms/cups/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv25342
Modified Files:
cups-usb-paperout.patch cups.spec
Log Message:
* Mon Jul 23 2007 Tim Waugh <twaugh at redhat.com> 1:1.3-0.b1.5
- Use kernel support for USB paper-out detection, when available
(bug #249213).
cups-usb-paperout.patch:
Index: cups-usb-paperout.patch
===================================================================
RCS file: /cvs/pkgs/rpms/cups/devel/cups-usb-paperout.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- cups-usb-paperout.patch 18 Jul 2007 11:50:02 -0000 1.4
+++ cups-usb-paperout.patch 23 Jul 2007 12:19:34 -0000 1.5
@@ -1,182 +1,51 @@
---- cups-1.3b1/backend/runloop.c.usb-paperout 2007-07-11 22:46:42.000000000 +0100
-+++ cups-1.3b1/backend/runloop.c 2007-07-18 11:40:45.000000000 +0100
-@@ -135,6 +135,14 @@
- }
-
+--- cups-1.2.10/backend/usb-unix.c.usb-paperout 2007-06-26 15:11:14.000000000 +0100
++++ cups-1.2.10/backend/usb-unix.c 2007-06-26 15:16:23.000000000 +0100
+@@ -39,6 +39,11 @@
+ #include "ieee1284.c"
+ #include <sys/select.h>
+#ifdef __linux
+#include <sys/ioctl.h>
+#include <linux/lp.h>
-+#include <time.h>
-+int linux_usb_paperout_hack = 0;
+#endif /* __linux */
+
-+
- /*
- * 'backendRunLoop()' - Read and write print and back-channel data.
- */
-@@ -161,6 +169,9 @@
- #if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET)
- struct sigaction action; /* Actions for POSIX signals */
- #endif /* HAVE_SIGACTION && !HAVE_SIGSET */
-+#ifdef __linux
-+ time_t last_write = 0; /* Last time write() succeeded */
-+#endif /* __linux */
-
-
- fprintf(stderr,
-@@ -210,8 +221,6 @@
- FD_ZERO(&input);
- if (!print_bytes)
- FD_SET(print_fd, &input);
-- if (use_bc)
-- FD_SET(device_fd, &input);
- if (side_cb)
- FD_SET(CUPS_SC_FD, &input);
-
-@@ -221,7 +230,10 @@
-
- if (use_bc || side_cb)
- {
-- if (select(nfds, &input, &output, NULL, NULL) < 0)
-+ struct timeval fives;
-+ fives.tv_sec = 5;
-+ fives.tv_usec = 0;
-+ if (select(nfds, &input, &output, NULL, &fives) < 0)
- {
- /*
- * Pause printing to clear any pending errors...
-@@ -256,14 +268,24 @@
- * Check if we have back-channel data ready...
- */
-- if (FD_ISSET(device_fd, &input))
-+ if (use_bc && FD_ISSET(device_fd, &output)) /* finished writing */
- {
-- if ((bc_bytes = read(device_fd, bc_buffer, sizeof(bc_buffer))) > 0)
-+ struct timeval nowait;
-+ fd_set readback;
-+ FD_ZERO (&readback);
-+ nowait.tv_sec = 0;
-+ nowait.tv_usec = 0;
-+ FD_SET(device_fd, &readback);
-+ if (select (device_fd + 1, &readback, NULL, NULL, &nowait) &&
-+ FD_ISSET(device_fd, &readback))
- {
-- fprintf(stderr,
-- "DEBUG: Received " CUPS_LLFMT " bytes of back-channel data!\n",
-- CUPS_LLCAST bc_bytes);
-- cupsBackChannelWrite(bc_buffer, bc_bytes, 1.0);
-+ if ((bc_bytes = read(device_fd, bc_buffer, sizeof(bc_buffer))) > 0)
-+ {
-+ fprintf(stderr,
-+ "DEBUG: Received " CUPS_LLFMT " bytes of back-channel data!\n",
-+ CUPS_LLCAST bc_bytes);
-+ cupsBackChannelWrite(bc_buffer, bc_bytes, 1.0);
-+ }
- }
- }
-
-@@ -334,6 +356,10 @@
- offline = 1;
- }
- }
-+ else if (linux_usb_paperout_hack && errno == EAGAIN)
-+ {
-+ sleep (1);
-+ }
- else if (errno != EAGAIN && errno != EINTR && errno != ENOTTY)
- {
- fprintf(stderr, _("ERROR: Unable to write print data: %s\n"),
-@@ -343,6 +369,9 @@
- }
- else
- {
-+#ifdef __linux
-+ last_write = time (NULL);
-+#endif /* __linux */
- if (paperout)
- {
- fputs("STATE: -media-empty-error\n", stderr);
-@@ -363,7 +392,42 @@
- total_bytes += bytes;
- }
- }
+ /*
+ * Local functions...
+@@ -308,7 +313,19 @@
+ if (!strncmp(uri, "usb:/dev/", 9))
+ #ifdef __linux
+ {
+- return (open(uri + 4, O_RDWR | O_EXCL));
++ fd = open(uri + 4, O_RDWR | O_EXCL);
+
-+#ifdef __linux
-+ if (linux_usb_paperout_hack)
++ if (fd != -1)
+ {
-+ time_t now;
-+ if (!paperout &&
-+ ((now = time(NULL)) - last_write) >= 5)
-+ {
-+ unsigned int status;
-+ if (ioctl (device_fd, LPGETSTATUS, &status) == 0 &&
-+ (status & LP_POUTPA))
-+ {
-+ fputs("ERROR: Out of paper!\n", stderr);
-+ fputs("STATE: +media-empty-error\n", stderr);
-+ paperout = 1;
-+ }
-+
-+ /* Don't check status for another 5s. */
-+ last_write = now;
-+ }
++ /*
++ * Tell the driver to return from write() with errno==ENOSPACE
++ * on paper-out.
++ */
++ unsigned int t = 1;
++ ioctl (fd, LPABORT, &t);
+ }
-+#endif /* __linux */
-+ }
+
-+#ifdef __linux
-+ if (linux_usb_paperout_hack)
-+ {
-+ /* Wait for the last write() to finish. */
-+ do
-+ {
-+ FD_ZERO(&output);
-+ FD_SET(device_fd, &output);
-+ } while (select(device_fd + 1, NULL, &output, NULL, NULL) < 0 &&
-+ errno == EINTR);
++ return fd;
}
-+#endif /* __linux */
-
- /*
- * Return with success...
---- cups-1.3b1/backend/usb-unix.c.usb-paperout 2007-07-18 11:39:32.000000000 +0100
-+++ cups-1.3b1/backend/usb-unix.c 2007-07-18 11:39:32.000000000 +0100
-@@ -31,6 +31,11 @@
- #include "ieee1284.c"
- #include <sys/select.h>
-
-+#ifdef __linux
-+#include <unistd.h>
-+#include <fcntl.h>
-+extern int linux_usb_paperout_hack;
-+#endif /* __linux */
-
- /*
- * Local functions...
-@@ -63,6 +68,11 @@
- (void)argc;
- (void)argv;
-
-+#ifdef __linux
-+ /* Get the runloop to check for USB paper-out condition. */
-+ linux_usb_paperout_hack = 1;
-+#endif /* __linux */
-+
- /*
- * Open the USB port device...
- */
-@@ -156,6 +166,12 @@
-
- tcsetattr(device_fd, TCSANOW, &opts);
+ else if (!strncmp(uri, "usb://", 6))
+ {
+@@ -374,7 +391,14 @@
+ if (!strcmp(uri, device_uri))
+ {
+ /*
+- * Yes, return this file descriptor...
++ * Yes, tell the driver to return from write() with
++ * errno==ENOSPACE on paper-out.
++ */
++ unsigned int t = 1;
++ ioctl (fd, LPABORT, &t);
++
++ /*
++ * Return this file descriptor...
+ */
-+#ifdef __linux
-+ /* Put the file descriptor into non-blocking mode so that we
-+ * get a chance to detect paper-out. */
-+ fcntl (device_fd, F_SETFL, fcntl (device_fd, F_GETFL) | O_NONBLOCK);
-+#endif /* __linux */
-+
- /*
- * Finally, send the print file...
- */
+ fprintf(stderr, "DEBUG: Printer using device file \"%s\"...\n", device);
Index: cups.spec
===================================================================
RCS file: /cvs/pkgs/rpms/cups/devel/cups.spec,v
retrieving revision 1.348
retrieving revision 1.349
diff -u -r1.348 -r1.349
--- cups.spec 20 Jul 2007 16:28:56 -0000 1.348
+++ cups.spec 23 Jul 2007 12:19:34 -0000 1.349
@@ -7,7 +7,7 @@
Summary: Common Unix Printing System
Name: cups
Version: 1.3
-Release: 0.%{cups_beta}.4%{?dist}
+Release: 0.%{cups_beta}.5%{?dist}
License: GPL
Group: System Environment/Daemons
Source: ftp://ftp.easysw.com/pub/cups/test//cups-%{version}%{cups_beta}-source.tar.bz2
@@ -440,6 +440,10 @@
%{cups_serverbin}/daemon/cups-lpd
%changelog
+* Mon Jul 23 2007 Tim Waugh <twaugh at redhat.com> 1:1.3-0.b1.5
+- Use kernel support for USB paper-out detection, when available
+ (bug #249213).
+
* Fri Jul 20 2007 Tim Waugh <twaugh at redhat.com> 1:1.3-0.b1.4
- Better error checking in the LSPP patch (bug #231522).
- Previous message (by thread): rpms/system-config-services/devel .cvsignore, 1.34, 1.35 sources, 1.44, 1.45 system-config-services.spec, 1.45, 1.46
- Next message (by thread): rpms/sugar/OLPC-2 .cvsignore, 1.26, 1.27 sources, 1.26, 1.27 sugar.spec, 1.31, 1.32
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list