This commit is contained in:
parent
9d78e7701c
commit
12d71f9303
86
cups-usblp-quirks.patch
Normal file
86
cups-usblp-quirks.patch
Normal file
@ -0,0 +1,86 @@
|
||||
diff -up cups-1.5.4/backend/usb-libusb.c.usblp-quirks cups-1.5.4/backend/usb-libusb.c
|
||||
--- cups-1.5.4/backend/usb-libusb.c.usblp-quirks 2012-07-16 19:16:46.000000000 +0200
|
||||
+++ cups-1.5.4/backend/usb-libusb.c 2012-08-23 13:37:28.309013482 +0200
|
||||
@@ -70,7 +70,7 @@ typedef struct usb_printer_s /**** USB
|
||||
read_endp, /* Read endpoint */
|
||||
protocol, /* Protocol: 1 = Uni-di, 2 = Bi-di. */
|
||||
usblp_attached, /* "usblp" kernel module attached? */
|
||||
- opened_for_job; /* Set to 1 by print_device() */
|
||||
+ reset_after_job; /* Set to 1 by print_device() */
|
||||
unsigned int quirks; /* Quirks flags */
|
||||
struct libusb_device_handle *handle; /* Open handle to device */
|
||||
} usb_printer_t;
|
||||
@@ -122,6 +122,8 @@ struct quirk_printer_struct {
|
||||
#define USBLP_QUIRK_USB_INIT 0x2 /* needs vendor USB init string */
|
||||
#define USBLP_QUIRK_BAD_CLASS 0x4 /* descriptor uses vendor-specific
|
||||
Class or SubClass */
|
||||
+#define USBLP_QUIRK_RESET 0x4000 /* After printing do a reset
|
||||
+ for clean-up */
|
||||
#define USBLP_QUIRK_NO_REATTACH 0x8000 /* After printing we cannot re-attach
|
||||
the usblp kernel module */
|
||||
|
||||
@@ -141,15 +143,21 @@ static const struct quirk_printer_struct
|
||||
{ 0x0409, 0xf1be, USBLP_QUIRK_BIDIR }, /* NEC Picty800 (HP OEM) */
|
||||
{ 0x0482, 0x0010, USBLP_QUIRK_BIDIR }, /* Kyocera Mita FS 820,
|
||||
by zut <kernel@zut.de> */
|
||||
+ { 0x04a9, 0x10a2, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4200
|
||||
+ Printer, http://www.cups.org/str.php?L4155 */
|
||||
+ { 0x04a9, 0x10b6, USBLP_QUIRK_BIDIR }, /* Canon, Inc. PIXMA iP4300
|
||||
+ Printer, https://bugs.launchpad.net/bugs/1032385 */
|
||||
{ 0x04f9, 0x000d, USBLP_QUIRK_BIDIR |
|
||||
USBLP_QUIRK_NO_REATTACH }, /* Brother Industries, Ltd
|
||||
HL-1440 Laser Printer */
|
||||
{ 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt
|
||||
Printer M129C */
|
||||
{ 0x067b, 0x2305, USBLP_QUIRK_BIDIR |
|
||||
- USBLP_QUIRK_NO_REATTACH },
|
||||
+ USBLP_QUIRK_NO_REATTACH |
|
||||
+ USBLP_QUIRK_RESET },
|
||||
/* Prolific Technology, Inc. PL2305 Parallel Port
|
||||
(USB -> Parallel adapter) */
|
||||
+ { 0x04e8, 0x0000, USBLP_QUIRK_RESET }, /* All Samsung devices */
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
||||
@@ -256,7 +264,12 @@ print_device(const char *uri, /* I - De
|
||||
}
|
||||
|
||||
g.print_fd = print_fd;
|
||||
- g.printer->opened_for_job = 1;
|
||||
+
|
||||
+ /*
|
||||
+ * Some devices need a reset after finishing a job, these devices are
|
||||
+ * marked with the USBLP_QUIRK_RESET quirk.
|
||||
+ */
|
||||
+ g.printer->reset_after_job = (g.printer->quirks & USBLP_QUIRK_RESET ? 1 : 0);
|
||||
|
||||
/*
|
||||
* If we are printing data from a print driver on stdin, ignore SIGTERM
|
||||
@@ -772,7 +786,7 @@ close_device(usb_printer_t *printer) /*
|
||||
* Reset the device to clean up after the job
|
||||
*/
|
||||
|
||||
- if (printer->opened_for_job == 1)
|
||||
+ if (printer->reset_after_job == 1)
|
||||
{
|
||||
if ((errcode = libusb_reset_device(printer->handle)) < 0)
|
||||
fprintf(stderr,
|
||||
@@ -1288,7 +1302,7 @@ open_device(usb_printer_t *printer, /* I
|
||||
}
|
||||
|
||||
printer->usblp_attached = 0;
|
||||
- printer->opened_for_job = 0;
|
||||
+ printer->reset_after_job = 0;
|
||||
|
||||
if (verbose)
|
||||
fputs("STATE: +connecting-to-device\n", stderr);
|
||||
@@ -1586,7 +1600,8 @@ static unsigned int quirks(int vendor, i
|
||||
for (i = 0; quirk_printers[i].vendorId; i++)
|
||||
{
|
||||
if (vendor == quirk_printers[i].vendorId &&
|
||||
- product == quirk_printers[i].productId)
|
||||
+ (quirk_printers[i].productId == 0x0000 ||
|
||||
+ product == quirk_printers[i].productId))
|
||||
return quirk_printers[i].quirks;
|
||||
}
|
||||
return 0;
|
10
cups.spec
10
cups.spec
@ -12,7 +12,7 @@
|
||||
Summary: Common Unix Printing System
|
||||
Name: cups
|
||||
Version: 1.5.4
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
License: GPLv2
|
||||
Group: System Environment/Daemons
|
||||
Source: http://ftp.easysw.com/pub/cups/%{version}/cups-%{version}-source.tar.bz2
|
||||
@ -55,6 +55,7 @@ Patch20: cups-filter-debug.patch
|
||||
Patch21: cups-uri-compat.patch
|
||||
Patch22: cups-cups-get-classes.patch
|
||||
Patch23: cups-str3382.patch
|
||||
Patch24: cups-usblp-quirks.patch
|
||||
Patch25: cups-0755.patch
|
||||
Patch26: cups-snmp-quirks.patch
|
||||
Patch27: cups-hp-deviceid-oid.patch
|
||||
@ -261,6 +262,10 @@ Sends IPP requests to the specified URI and tests and/or displays the results.
|
||||
%patch22 -p1 -b .cups-get-classes
|
||||
# Fix temporary filename creation.
|
||||
%patch23 -p1 -b .str3382
|
||||
# Problem is a port reset which is done by the new USB backend of CUPS 1.5.4 and 1.6.x to clean up after the job.
|
||||
# This patch adds a quirk handler for this reset so that it will not be done for all printers.
|
||||
#(bug #847923, STR #4155)
|
||||
%patch24 -p1 -b .usblp-quirks
|
||||
# Use mode 0755 for binaries and libraries where appropriate.
|
||||
%patch25 -p1 -b .0755
|
||||
# Handle SNMP supply level quirks (bug #581825).
|
||||
@ -648,6 +653,9 @@ rm -f %{cups_serverbin}/backend/smb
|
||||
%{_mandir}/man1/ipptool.1.gz
|
||||
|
||||
%changelog
|
||||
* Thu Aug 23 2012 Jiri Popelka <jpopelka@redhat.com> 1:1.5.4-3
|
||||
- quirk handler for port reset done by new USB backend (bug #847923, STR #4155)
|
||||
|
||||
* Tue Aug 21 2012 Jiri Popelka <jpopelka@redhat.com> 1:1.5.4-2
|
||||
- use new systemd-rpm macros (#850074)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user