]>
Commit | Line | Data |
---|---|---|
1f9b7ef8 KB |
1 | diff -up cups-1.5b1/backend/usb-unix.c.usb-paperout cups-1.5b1/backend/usb-unix.c |
2 | --- cups-1.5b1/backend/usb-unix.c.usb-paperout 2011-05-24 15:51:39.000000000 +0200 | |
3 | +++ cups-1.5b1/backend/usb-unix.c 2011-05-24 15:51:39.000000000 +0200 | |
f92713d3 SS |
4 | @@ -30,6 +30,11 @@ |
5 | ||
6 | #include <sys/select.h> | |
7 | ||
8 | +#ifdef __linux | |
9 | +#include <sys/ioctl.h> | |
10 | +#include <linux/lp.h> | |
11 | +#endif /* __linux */ | |
12 | + | |
13 | ||
14 | /* | |
15 | * Local functions... | |
1f9b7ef8 | 16 | @@ -334,7 +339,19 @@ open_device(const char *uri, /* I - Dev |
f92713d3 SS |
17 | if (!strncmp(uri, "usb:/dev/", 9)) |
18 | #ifdef __linux | |
19 | { | |
20 | - return (open(uri + 4, O_RDWR | O_EXCL)); | |
21 | + fd = open(uri + 4, O_RDWR | O_EXCL); | |
22 | + | |
23 | + if (fd != -1) | |
24 | + { | |
25 | + /* | |
26 | + * Tell the driver to return from write() with errno==ENOSPACE | |
27 | + * on paper-out. | |
28 | + */ | |
29 | + unsigned int t = 1; | |
30 | + ioctl (fd, LPABORT, &t); | |
31 | + } | |
32 | + | |
33 | + return fd; | |
34 | } | |
35 | else if (!strncmp(uri, "usb://", 6)) | |
36 | { | |
1f9b7ef8 | 37 | @@ -400,7 +417,14 @@ open_device(const char *uri, /* I - Dev |
f92713d3 SS |
38 | if (!strcmp(uri, device_uri)) |
39 | { | |
40 | /* | |
41 | - * Yes, return this file descriptor... | |
42 | + * Yes, tell the driver to return from write() with | |
43 | + * errno==ENOSPACE on paper-out. | |
44 | + */ | |
45 | + unsigned int t = 1; | |
46 | + ioctl (fd, LPABORT, &t); | |
47 | + | |
48 | + /* | |
49 | + * Return this file descriptor... | |
50 | */ | |
51 | ||
52 | fprintf(stderr, "DEBUG: Printer using device file \"%s\"...\n", |