version 1.0.25

- remove obsolete patches: epson-expression800, hwdb, pixma_bjnp-crash,
  static-code-check, scsi-permissions, format-security,
  snprintf-license, usb3-xhci
- update udev patch
- ship umax_pp tool
This commit is contained in:
Nils Philippsen 2015-10-08 14:53:32 +02:00
parent 90b19a7e8e
commit 32c0f5079b
12 changed files with 26 additions and 2683 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@ sane-backends-1.0.21.tar.gz
/sane-backends-1.0.22.tar.gz
/sane-backends-1.0.23.tar.gz
/sane-backends-1.0.24.tar.gz
/sane-backends-1.0.25.tar.gz

View File

@ -1,47 +0,0 @@
From 305535e303032814b65bf6d889a95f00f08a9071 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Wed, 5 May 2010 12:49:02 +0200
Subject: [PATCH] patch: epson-expression800
Squashed commit of the following:
commit 3b501d7499357438a1fbd63fefb2f977ae3051f5
Author: Nils Philippsen <nils@redhat.com>
Date: Wed May 5 12:14:23 2010 +0200
Improve Epson Expression 800
Epson Expression 800 models announce themselves as "processor", not
"scanner".
---
doc/descriptions/epson.desc | 1 +
doc/descriptions/epson2.desc | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/doc/descriptions/epson.desc b/doc/descriptions/epson.desc
index a22325c..55a0136 100644
--- a/doc/descriptions/epson.desc
+++ b/doc/descriptions/epson.desc
@@ -174,6 +174,7 @@
:model "Expression 800"
:interface "SCSI"
:status :complete
+:scsi "EPSON" "Expression800" "processor"
:model "Expression 1600"
:interface "SCSI USB IEEE-1394"
diff --git a/doc/descriptions/epson2.desc b/doc/descriptions/epson2.desc
index 9a14f4f..56cabcd 100644
--- a/doc/descriptions/epson2.desc
+++ b/doc/descriptions/epson2.desc
@@ -241,6 +241,7 @@
:model "Expression 800" ; command spec
:interface "SCSI"
:status :complete
+:scsi "EPSON" "Expression800" "processor"
:comment "overseas version of the GT-9600"
:model "Expression 836XL" ; command spec
--
1.6.6.1

View File

@ -1,139 +0,0 @@
From d1c0b7d119bb9dd2c51143b44cc86a369f453746 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Wed, 4 Dec 2013 15:21:19 +0100
Subject: [PATCH] patch: format-security
Squashed commit of the following:
commit 19e071b9f6d477462a0f4afbbd17acd15268ddfa
Author: Nils Philippsen <nils@redhat.com>
Date: Wed Dec 4 15:04:12 2013 +0100
avoid using string formats insecurely with "-f"
In the process, simplify processing the device list format: don't copy
the format string for writing \0 into it, just iterate over chunks in
the original string.
(cherry picked from commit 8082a42ec4f3b3cf2cffc30a45dda5fc41d55576)
---
frontend/scanimage.c | 52 ++++++++++++++++++++--------------------------------
1 file changed, 20 insertions(+), 32 deletions(-)
diff --git a/frontend/scanimage.c b/frontend/scanimage.c
index d41c849..9e1bcfb 100644
--- a/frontend/scanimage.c
+++ b/frontend/scanimage.c
@@ -1826,23 +1826,16 @@ main (int argc, char **argv)
else
{
int i = 0, int_arg = 0;
- char *percent, *start, *fmt;
+ const char *percent, *start;
const char *text_arg = 0;
- char cc, ftype;
-
- fmt = malloc (strlen (optarg) + 1);
- if (fmt == 0)
- {
- fprintf (stderr, "%s: not enough memory\n", prog_name);
- exit (1);
- }
+ char ftype;
for (i = 0; device_list[i]; ++i)
{
- strcpy (fmt, optarg);
- start = fmt;
+ start = optarg;
while (*start && (percent = strchr (start, '%')))
{
+ int start_len = percent - start;
percent++;
if (*percent)
{
@@ -1850,19 +1843,19 @@ main (int argc, char **argv)
{
case 'd':
text_arg = device_list[i]->name;
- ftype = *percent = 's';
+ ftype = 's';
break;
case 'v':
text_arg = device_list[i]->vendor;
- ftype = *percent = 's';
+ ftype = 's';
break;
case 'm':
text_arg = device_list[i]->model;
- ftype = *percent = 's';
+ ftype = 's';
break;
case 't':
text_arg = device_list[i]->type;
- ftype = *percent = 's';
+ ftype = 's';
break;
case 'i':
int_arg = i;
@@ -1870,45 +1863,40 @@ main (int argc, char **argv)
break;
case 'n':
text_arg = "\n";
- ftype = *percent = 's';
+ ftype = 's';
break;
case '%':
- ftype = 0;
+ text_arg = "%";
+ ftype = 's';
break;
default:
fprintf (stderr,
"%s: unknown format specifier %%%c\n",
prog_name, *percent);
- *percent = '%';
- ftype = 0;
+ text_arg = "%";
+ ftype = 's';
}
- percent++;
- cc = *percent;
- *percent = 0;
+ printf ("%.*s", start_len, start);
switch (ftype)
{
case 's':
- printf (start, text_arg);
+ printf ("%s", text_arg);
break;
case 'i':
- printf (start, int_arg);
- break;
- case 0:
- printf (start);
+ printf ("%i", int_arg);
break;
}
- *percent = cc;
- start = percent;
+ start = percent + 1;
}
else
{
- /* last char of the string is a '%', suppress it */
- *start = 0;
+ /* last char of the string is a '%', ignore it */
+ start++;
break;
}
}
if (*start)
- printf (start);
+ printf ("%s", start);
}
}
if (i == 0 && ch != 'f')
--
1.8.4.2

View File

@ -1,38 +0,0 @@
From 92c55802144a024fb48ca5babeb99254209d2c71 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Thu, 24 Oct 2013 14:29:25 +0200
Subject: [PATCH] patch: hwdb
Squashed commit of the following:
commit 6686fded6523a04b26d02e7bbeb906a579c9ef5f
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Oct 24 14:22:17 2013 +0200
sane-desc: fix udev hwdb generation
Generated hwdb files listed the vendor ID instead of the product ID
which made udevd not recognizing scanner devices as such. Thanks to
Fabrice Bellet who spotted the problem.
(cherry picked from commit 3b96baef65ea6c315937f5cd2253c6b6c62636d8)
---
tools/sane-desc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/sane-desc.c b/tools/sane-desc.c
index df6d348..ae218c3 100644
--- a/tools/sane-desc.c
+++ b/tools/sane-desc.c
@@ -3827,7 +3827,7 @@ print_hwdb (void)
for(j = 0; j < 4; j++) {
vendor_id[j] = toupper(vendor_id[j]);
- product_id[j] = toupper(vendor_id[j]);
+ product_id[j] = toupper(product_id[j]);
}
printf ("usb:v%sp%s*\n libsane_matched=yes\n\n",
--
1.8.3.1

View File

@ -1,47 +0,0 @@
From 11248fb7484c56ecdf14f8f24f2322d887a7e48e Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Tue, 29 Oct 2013 14:19:16 +0100
Subject: [PATCH] patch: pixma_bjnp-crash
Squashed commit of the following:
commit d7c1db0e79b9e6b1f7c08c16ef883ad414a12bc0
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Oct 29 14:14:18 2013 +0100
pixmap: omitting curly braces considered harmful
The break being outside of the else block effectively made an if clause
out of the while loop. This caused long hostnames to not be shortened
sufficiently which subsequentely made strcpy() write beyond buffer
boundaries.
(cherry picked from commit d35d6326cb00fcbb19b41599bdff7faf5d79225e)
---
backend/pixma_bjnp.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/backend/pixma_bjnp.c b/backend/pixma_bjnp.c
index 3046e9d..a1730ad 100644
--- a/backend/pixma_bjnp.c
+++ b/backend/pixma_bjnp.c
@@ -364,11 +364,13 @@ determine_scanner_serial (const char *hostname, const char * mac_address, char *
/* if this is a FQDN, not an ip-address, remove domain part of the name */
if ((dot = strchr (copy, '.')) != NULL)
{
- *dot = '\0';
+ *dot = '\0';
}
else
- strcpy(copy, mac_address);
- break;
+ {
+ strcpy(copy, mac_address);
+ break;
+ }
}
strcpy( serial, copy );
return serial;
--
1.8.3.1

View File

@ -1,49 +0,0 @@
From 1567fcb9d9dd3dea6e0978ef2473ac7dba7dbba0 Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Wed, 20 Nov 2013 22:04:21 +0100
Subject: [PATCH] patch: scsi-permissions
Squashed commit of the following:
commit 80e8a34505a45dd61761ce557bf029e33e39d2f2
Author: Nils Philippsen <nils@redhat.com>
Date: Wed Nov 20 21:45:23 2013 +0100
sane-desc: fix faulty udev logic for SCSI devices
SUBSYSTEMS!="..." seems to always match, i.e. skip the SCSI-specific
rules.
(cherry picked from commit 758731489d0d58bab6e4b70db9556038c9f4bb67)
---
tools/sane-desc.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/tools/sane-desc.c b/tools/sane-desc.c
index ae218c3..72e11b8 100644
--- a/tools/sane-desc.c
+++ b/tools/sane-desc.c
@@ -3569,7 +3569,8 @@ print_udev (void)
printf ("\nLABEL=\"libsane_usb_rules_end\"\n\n");
- printf ("SUBSYSTEMS!=\"scsi\", GOTO=\"libsane_scsi_rules_end\"\n\n");
+ printf ("SUBSYSTEMS==\"scsi\", GOTO=\"libsane_scsi_rules_begin\"\n");
+ printf ("GOTO=\"libsane_scsi_rules_end\"\n\n");
printf ("LABEL=\"libsane_scsi_rules_begin\"\n");
printf ("# Generic: SCSI device type 6 indicates a scanner\n");
@@ -3695,7 +3696,9 @@ print_udevhwdb (void)
printf("ENV{DEVTYPE}==\"usb_device\", ENV{libsane_matched}==\"yes\", TEST==\"power/control\", ATTR{power/control}=\"on\"\n\n");
printf("ENV{DEVTYPE}==\"usb_device\", ENV{libsane_matched}==\"yes\", TEST!=\"power/control\", TEST==\"power/level\", ATTR{power/level}=\"on\"\n");
- printf ("SUBSYSTEMS!=\"scsi\", GOTO=\"libsane_rules_end\"\n");
+ printf ("SUBSYSTEMS==\"scsi\", GOTO=\"libsane_scsi_rules_begin\"\n");
+ printf ("GOTO=\"libsane_rules_end\"\n\n");
+ printf ("LABEL=\"libsane_scsi_rules_begin\"\n");
printf ("KERNEL!=\"sg[0-9]*\", GOTO=\"libsane_rules_end\"\n\n");
printf ("# Generic: SCSI device type 6 indicates a scanner\n");
--
1.8.4.2

File diff suppressed because it is too large Load Diff

View File

@ -1,742 +0,0 @@
From 886208261b5b91b4a64efd8a203873ab85a07a2e Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Thu, 7 Nov 2013 12:48:23 +0100
Subject: [PATCH] patch: static-code-check
Fix problems found during static code check (Coverity).
Squashed commit of the following:
commit e24cea3bceb5dad2042dcd95f582d6c8acf4c9ee
Author: Nils Philippsen <nils@redhat.com>
Date: Thu Nov 7 14:29:28 2013 +0100
epson: don't leak memory if realloc() fails
(cherry picked from commit d835d9d565118d52c2339c2e79890f57d0616077)
commit b0c14b86210c7615ea4d90723722a7430b175ae2
Author: Nils Philippsen <nils@redhat.com>
Date: Wed Nov 6 11:05:58 2013 +0100
genesys: check return values
(cherry picked from commit dc76e7cce464f04e46aab2bb0c269b4742161c59)
commit b6e13be1c187790adfa50e81506533fbe21dca6f
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 14:48:09 2013 +0100
genesys: remove code which is never reached
The surrounding conditions always evaluate as FALSE because the
variables are set to different values before.
(cherry picked from commit 5d7f7ffefb22e7e64789e97af0356b7859d61814)
commit 6d77e6f1ebb9eb0f47117a5790486a3b83c142d2
Author: Nils Philippsen <nils@redhat.com>
Date: Wed Nov 6 11:44:16 2013 +0100
rts8891: check return values
(cherry picked from commit 602d6ecdfe5f3146867799fabf3ac87582c26461)
commit 0438b3f9aaa4ee8558185ad5e7a9c6a0bf1a3590
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 15:42:26 2013 +0100
genesys: compute MAX_SCANNERS from array length
... of genesys_usb_device_list[]
(cherry picked from commit a3fe2c1ea5b4f6b1e55435f6abc44f402ff32b4d)
commit ba746cc2a62cfb32ae6f8e22d6d36206959b7128
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 15:31:11 2013 +0100
kodakio: don't overrun option name array
(cherry picked from commit 2d89e37f365cb8e54ee44aa686a62320e2837b50)
commit 87580bc5d07f983afa1db1e0e7c36287b85b5ecd
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 15:19:48 2013 +0100
pixma: document falling through to next switch case
(cherry picked from commit 101f76c516cd42cafe9e142aefe751094a125e73)
commit 15f7322b94a1e895d6ab6e8fb0466ef920a946ad
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 15:15:17 2013 +0100
genesys: avoid infinite loop
The stray semicolon prevents executing the loop which could reset the
REG41_FEBUSY bit.
(cherry picked from commit b53a58c4b534b9e6897c1b0a6301d2bf76dc3499)
commit bde7ee0c9e0bde21fc8b01af11270ca51110a89d
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 15:12:20 2013 +0100
pixma: avoid buffer overflows
(cherry picked from commit 575f40a0790bb5e20ffd7ccae1c9272e481bbe51)
commit ee3953fb5b11a26a42bee3d75ee6b93da0bb112f
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 14:52:22 2013 +0100
pixma: u32tohex(): shift first, then cast to uint8_t
(cherry picked from commit cf9129d62fe7e84479e8daf6018cd2495d53bcc9)
commit ef85481800383cf082ad6aa4a944765ee84027c0
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 14:47:27 2013 +0100
remove code which is never reached
(cherry picked from commit 66cb9b55c2e60503d537d7ed927f5a5aef3658d2)
commit 0864f4d6203ba8f1306af0d39a09dff2f9d4706a
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 14:17:12 2013 +0100
genesys: fix some memory leaks
(cherry picked from commit 252ccdd926bb28bd6064da7b652e646664226572)
commit a4d72c0e2ebb1f6352f21a300bbff67d439cd77f
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 13:56:28 2013 +0100
epson: ensure that command() allocates enough memory
(cherry picked from commit 8cd2d36f1e9a5b5633d4b8334acf5c8f68381415)
commit 67af3b80508c0a0adb0fe89ead7c4cb570d7400c
Author: Nils Philippsen <nils@redhat.com>
Date: Tue Nov 5 11:39:56 2013 +0100
genesys: avoid dereferencing null pointer
(cherry picked from commit 56104b5329076d45caf2e04a2271f40a2699f71f)
---
backend/epson.c | 36 +++++++++++++++++++++----------
backend/genesys.c | 9 +++++---
backend/genesys_devices.c | 3 +++
backend/genesys_gl124.c | 21 ++++++++++++++++--
backend/genesys_gl843.c | 20 +++++++++++++++--
backend/genesys_gl846.c | 55 ++++++++++++++++++++++++++---------------------
backend/genesys_gl847.c | 21 ++++++++++++++++--
backend/genesys_low.h | 1 -
backend/kodakaio.c | 6 +++---
backend/pixma_bjnp.c | 18 ++++++++++------
backend/rts8891.c | 16 ++++++--------
sanei/sanei_usb.c | 2 --
tools/sane-find-scanner.c | 2 --
13 files changed, 141 insertions(+), 69 deletions(-)
diff --git a/backend/epson.c b/backend/epson.c
index 2cae65a..3b063b9 100644
--- a/backend/epson.c
+++ b/backend/epson.c
@@ -818,6 +818,12 @@ typedef struct
} EpsonIdentRec, *EpsonIdent;
+typedef union
+{
+ EpsonHdrRec hdr;
+ EpsonIdentRec ident;
+} EpsonHdrUnionRec, *EpsonHdrUnion;
+
typedef struct
{
@@ -843,7 +849,7 @@ typedef struct
*
*/
-static EpsonHdr command (Epson_Scanner * s, u_char * cmd, size_t cmd_size,
+static EpsonHdrUnion command (Epson_Scanner * s, u_char * cmd, size_t cmd_size,
SANE_Status * status);
static SANE_Status get_identity_information (SANE_Handle handle);
static SANE_Status get_identity2_information (SANE_Handle handle);
@@ -1844,21 +1850,24 @@ static Epson_Device *first_dev = NULL; /* first EPSON scanner in list */
static Epson_Scanner *first_handle = NULL;
-static EpsonHdr
+static EpsonHdrUnion
command (Epson_Scanner * s, u_char * cmd, size_t cmd_size,
SANE_Status * status)
{
+ EpsonHdrUnion hdrunion, hdrunion_bak;
EpsonHdr head;
u_char *buf;
int count;
- if (NULL == (head = walloc (EpsonHdrRec)))
+ if (NULL == (hdrunion = walloc (EpsonHdrUnionRec)))
{
DBG (1, "out of memory (line %d)\n", __LINE__);
*status = SANE_STATUS_NO_MEM;
- return (EpsonHdr) 0;
+ return (EpsonHdrUnion) 0;
}
+ head = &(hdrunion->hdr);
+
send (s, cmd, cmd_size, status);
if (SANE_STATUS_GOOD != *status)
@@ -1869,7 +1878,7 @@ command (Epson_Scanner * s, u_char * cmd, size_t cmd_size,
*status = SANE_STATUS_GOOD;
send (s, cmd, cmd_size, status);
if (SANE_STATUS_GOOD != *status)
- return (EpsonHdr) 0;
+ return (EpsonHdrUnion) 0;
}
buf = (u_char *) head;
@@ -1892,7 +1901,7 @@ command (Epson_Scanner * s, u_char * cmd, size_t cmd_size,
}
if (SANE_STATUS_GOOD != *status)
- return (EpsonHdr) 0;
+ return (EpsonHdrUnion) 0;
DBG (4, "code %02x\n", (int) head->code);
@@ -1921,25 +1930,30 @@ command (Epson_Scanner * s, u_char * cmd, size_t cmd_size,
}
if (SANE_STATUS_GOOD != *status)
- return (EpsonHdr) 0;
+ return (EpsonHdrUnion) 0;
DBG (4, "status %02x\n", (int) head->status);
count = head->count2 * 255 + head->count1;
DBG (4, "count %d\n", count);
- if (NULL == (head = realloc (head, sizeof (EpsonHdrRec) + count)))
+ hdrunion_bak = hdrunion;
+ if (NULL == (hdrunion = realloc (hdrunion,
+ sizeof (EpsonHdrUnionRec) + count)))
{
+ free(hdrunion_bak);
DBG (1, "out of memory (line %d)\n", __LINE__);
*status = SANE_STATUS_NO_MEM;
- return (EpsonHdr) 0;
+ return (EpsonHdrUnion) 0;
}
+ head = &(hdrunion->hdr);
+
buf = head->buf;
receive (s, buf, count, status);
if (SANE_STATUS_GOOD != *status)
- return (EpsonHdr) 0;
+ return (EpsonHdrUnion) 0;
break;
@@ -1953,7 +1967,7 @@ command (Epson_Scanner * s, u_char * cmd, size_t cmd_size,
break;
}
- return head;
+ return hdrunion;
}
diff --git a/backend/genesys.c b/backend/genesys.c
index 6e7caad..e2c92e7 100644
--- a/backend/genesys.c
+++ b/backend/genesys.c
@@ -5977,7 +5977,7 @@ attach (SANE_String_Const devname, Genesys_Device ** devp, SANE_Bool may_wait)
Genesys_Device *dev = 0;
SANE_Int dn, vendor, product;
SANE_Status status;
- int i;
+ unsigned int i;
DBG (DBG_proc, "attach: start: devp %s NULL, may_wait = %d\n",
@@ -6061,7 +6061,10 @@ attach (SANE_String_Const devname, Genesys_Device ** devp, SANE_Bool may_wait)
dev->file_name = strdup (devname);
if (!dev->file_name)
- return SANE_STATUS_NO_MEM;
+ {
+ free(dev);
+ return SANE_STATUS_NO_MEM;
+ }
dev->model = genesys_usb_device_list[i].model;
dev->vendorId = genesys_usb_device_list[i].vendor;
@@ -6630,7 +6633,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
first_dev = dev->next;
num_devices--;
free (dev);
- dev = prev->next;
+ dev = first_dev;
}
}
/* case 2 : removed device is not first_dev */
diff --git a/backend/genesys_devices.c b/backend/genesys_devices.c
index fb3cd43..462c4a9 100644
--- a/backend/genesys_devices.c
+++ b/backend/genesys_devices.c
@@ -3413,3 +3413,6 @@ static Genesys_USB_Device_Entry genesys_usb_device_list[] = {
{0x04a9, 0x190a, &canon_lide_210_model},
{0, 0, NULL}
};
+
+#define MAX_SCANNERS (sizeof(genesys_usb_device_list) / \
+ sizeof(genesys_usb_device_list[0]))
diff --git a/backend/genesys_gl124.c b/backend/genesys_gl124.c
index 9e2fb8a..4a4b642 100644
--- a/backend/genesys_gl124.c
+++ b/backend/genesys_gl124.c
@@ -2246,7 +2246,7 @@ gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
/* TODO add scan_mode to the API */
scan_mode= dev->settings.scan_mode;
dev->settings.scan_mode=SCAN_MODE_GRAY;
- gl124_init_scan_regs (dev,
+ status = gl124_init_scan_regs (dev,
local_reg,
resolution,
resolution,
@@ -2260,6 +2260,15 @@ gl124_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
SCAN_FLAG_DISABLE_SHADING |
SCAN_FLAG_DISABLE_GAMMA |
SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_error,
+ "gl124_slow_back_home: failed to set up registers: %s\n",
+ sane_strstatus (status));
+ DBGCOMPLETED;
+ return status;
+ }
+
dev->settings.scan_mode=scan_mode;
/* clear scan and feed count */
@@ -2348,7 +2357,7 @@ gl124_feed (Genesys_Device * dev, unsigned int steps)
memcpy (local_reg, dev->reg, GENESYS_GL124_MAX_REGS * sizeof (Genesys_Register_Set));
resolution=sanei_genesys_get_lowest_ydpi(dev);
- gl124_init_scan_regs (dev,
+ status = gl124_init_scan_regs (dev,
local_reg,
resolution,
resolution,
@@ -2364,6 +2373,14 @@ gl124_feed (Genesys_Device * dev, unsigned int steps)
SCAN_FLAG_FEEDING |
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_error,
+ "gl124_feed: failed to set up registers: %s\n",
+ sane_strstatus (status));
+ DBGCOMPLETED;
+ return status;
+ }
/* set exposure to zero */
sanei_genesys_set_triple(local_reg,REG_EXPR,0);
diff --git a/backend/genesys_gl843.c b/backend/genesys_gl843.c
index 3648d09..6cddd4f 100644
--- a/backend/genesys_gl843.c
+++ b/backend/genesys_gl843.c
@@ -2591,7 +2591,7 @@ gl843_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
memcpy (local_reg, dev->reg, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
resolution=sanei_genesys_get_lowest_ydpi(dev);
- gl843_init_scan_regs (dev,
+ status = gl843_init_scan_regs (dev,
local_reg,
resolution,
resolution,
@@ -2607,6 +2607,14 @@ gl843_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
SCAN_FLAG_DISABLE_GAMMA |
SCAN_FLAG_DISABLE_BUFFER_FULL_MOVE |
SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_error,
+ "gl843_slow_back_home: failed to set up registers: %s\n",
+ sane_strstatus (status));
+ DBGCOMPLETED;
+ return status;
+ }
/* clear scan and feed count */
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT | REG0D_CLRMCNT));
@@ -2879,7 +2887,7 @@ gl843_feed (Genesys_Device * dev, unsigned int steps)
memcpy (local_reg, dev->reg, GENESYS_GL843_MAX_REGS * sizeof (Genesys_Register_Set));
resolution=sanei_genesys_get_lowest_ydpi(dev);
- gl843_init_scan_regs (dev,
+ status = gl843_init_scan_regs (dev,
local_reg,
resolution,
resolution,
@@ -2895,6 +2903,14 @@ gl843_feed (Genesys_Device * dev, unsigned int steps)
SCAN_FLAG_DISABLE_GAMMA |
SCAN_FLAG_FEEDING |
SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_error,
+ "gl843_feed: failed to set up registers: %s\n",
+ sane_strstatus (status));
+ DBGCOMPLETED;
+ return status;
+ }
/* clear scan and feed count */
RIE (sanei_genesys_write_register (dev, REG0D, REG0D_CLRLNCNT));
diff --git a/backend/genesys_gl846.c b/backend/genesys_gl846.c
index 5e1f0f4..c810604 100644
--- a/backend/genesys_gl846.c
+++ b/backend/genesys_gl846.c
@@ -633,7 +633,7 @@ gl846_set_adi_fe (Genesys_Device * dev, uint8_t set)
/* wait for FE to be ready */
status = sanei_genesys_get_status (dev, &val8);
- while (val8 & REG41_FEBUSY);
+ while (val8 & REG41_FEBUSY)
{
usleep (10000);
status = sanei_genesys_get_status (dev, &val8);
@@ -1975,7 +1975,7 @@ gl846_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
/* TODO add scan_mode to the API */
scan_mode= dev->settings.scan_mode;
dev->settings.scan_mode=SCAN_MODE_LINEART;
- gl846_init_scan_regs (dev,
+ status = gl846_init_scan_regs (dev,
local_reg,
resolution,
resolution,
@@ -1989,6 +1989,14 @@ gl846_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
SCAN_FLAG_DISABLE_SHADING |
SCAN_FLAG_DISABLE_GAMMA |
SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_error,
+ "gl846_slow_back_home: failed to set up registers: %s\n",
+ sane_strstatus (status));
+ DBGCOMPLETED;
+ return status;
+ }
dev->settings.scan_mode=scan_mode;
/* clear scan and feed count */
@@ -2255,7 +2263,7 @@ gl846_feed (Genesys_Device * dev, unsigned int steps)
memcpy (local_reg, dev->reg, GENESYS_GL846_MAX_REGS * sizeof (Genesys_Register_Set));
resolution=sanei_genesys_get_lowest_ydpi(dev);
- gl846_init_scan_regs (dev,
+ status = gl846_init_scan_regs (dev,
local_reg,
resolution,
resolution,
@@ -2270,6 +2278,14 @@ gl846_feed (Genesys_Device * dev, unsigned int steps)
SCAN_FLAG_DISABLE_GAMMA |
SCAN_FLAG_FEEDING |
SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_error,
+ "gl846_feed: failed to set up registers: %s\n",
+ sane_strstatus (status));
+ DBGCOMPLETED;
+ return status;
+ }
/* set exposure to zero */
sanei_genesys_set_triple(local_reg,REG_EXPR,0);
@@ -2583,13 +2599,14 @@ gl846_send_shading_data (Genesys_Device * dev, uint8_t * data, int size)
ptr+=4;
}
- RIE (sanei_genesys_read_register (dev, 0xd0+i, &val));
+ RIEF (sanei_genesys_read_register (dev, 0xd0+i, &val), buffer);
addr = val * 8192 + 0x10000000;
status = sanei_genesys_write_ahb (dev->dn, dev->usb_mode, addr, pixels, buffer);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "gl846_send_shading_data; write to AHB failed (%s)\n",
sane_strstatus (status));
+ free(buffer);
return status;
}
}
@@ -3013,7 +3030,15 @@ gl846_search_strip (Genesys_Device * dev, SANE_Bool forward, SANE_Bool black)
DBG (DBG_proc, "gl846_search_strip %s %s\n", black ? "black" : "white",
forward ? "forward" : "reverse");
- gl846_set_fe (dev, AFE_SET);
+ status = gl846_set_fe (dev, AFE_SET);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_error,
+ "gl846_search_strip: gl846_set_fe() failed: %s\n",
+ sane_strstatus(status));
+ return status;
+ }
+
status = gl846_stop_action (dev);
if (status != SANE_STATUS_GOOD)
{
@@ -3572,24 +3597,10 @@ gl846_coarse_gain_calibration (Genesys_Device * dev, int dpi)
max[j] = 0;
for (i = pixels/4; i < (pixels*3/4); i++)
{
- if(bpp==16)
- {
- if (dev->model->is_cis)
- val =
- line[i * 2 + j * 2 * pixels + 1] * 256 +
- line[i * 2 + j * 2 * pixels];
- else
- val =
- line[i * 2 * channels + 2 * j + 1] * 256 +
- line[i * 2 * channels + 2 * j];
- }
- else
- {
if (dev->model->is_cis)
val = line[i + j * pixels];
else
val = line[i * channels + j];
- }
max[j] += val;
}
@@ -3619,12 +3630,6 @@ gl846_coarse_gain_calibration (Genesys_Device * dev, int dpi)
dev->frontend.gain[2] = dev->frontend.gain[1] = dev->frontend.gain[0];
}
- if (channels == 1)
- {
- dev->frontend.gain[0] = dev->frontend.gain[1];
- dev->frontend.gain[2] = dev->frontend.gain[1];
- }
-
free (line);
RIE (gl846_stop_action (dev));
diff --git a/backend/genesys_gl847.c b/backend/genesys_gl847.c
index 7c6a3c3..47171b9 100644
--- a/backend/genesys_gl847.c
+++ b/backend/genesys_gl847.c
@@ -1995,7 +1995,7 @@ gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
/* TODO add scan_mode to the API */
scan_mode= dev->settings.scan_mode;
dev->settings.scan_mode=SCAN_MODE_LINEART;
- gl847_init_scan_regs (dev,
+ status = gl847_init_scan_regs (dev,
local_reg,
resolution,
resolution,
@@ -2009,6 +2009,15 @@ gl847_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
SCAN_FLAG_DISABLE_SHADING |
SCAN_FLAG_DISABLE_GAMMA |
SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_error,
+ "gl847_slow_back_home: failed to set up registers: %s\n",
+ sane_strstatus (status));
+ DBGCOMPLETED;
+ return status;
+ }
+
dev->settings.scan_mode=scan_mode;
/* clear scan and feed count */
@@ -2276,7 +2285,7 @@ gl847_feed (Genesys_Device * dev, unsigned int steps)
memcpy (local_reg, dev->reg, GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
resolution=sanei_genesys_get_lowest_ydpi(dev);
- gl847_init_scan_regs (dev,
+ status = gl847_init_scan_regs (dev,
local_reg,
resolution,
resolution,
@@ -2291,6 +2300,14 @@ gl847_feed (Genesys_Device * dev, unsigned int steps)
SCAN_FLAG_DISABLE_GAMMA |
SCAN_FLAG_FEEDING |
SCAN_FLAG_IGNORE_LINE_DISTANCE);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_error,
+ "gl847_feed: failed to set up registers: %s\n",
+ sane_strstatus (status));
+ DBGCOMPLETED;
+ return status;
+ }
/* set exposure to zero */
sanei_genesys_set_triple(local_reg,REG_EXPR,0);
diff --git a/backend/genesys_low.h b/backend/genesys_low.h
index 1d5ef22..31e0541 100644
--- a/backend/genesys_low.h
+++ b/backend/genesys_low.h
@@ -310,7 +310,6 @@ typedef enum Genesys_Color_Order
Genesys_Color_Order;
-#define MAX_SCANNERS 50
#define MAX_RESOLUTIONS 13
#define MAX_DPI 4
diff --git a/backend/kodakaio.c b/backend/kodakaio.c
index 8c4583a..901f7a8 100644
--- a/backend/kodakaio.c
+++ b/backend/kodakaio.c
@@ -3131,14 +3131,14 @@ sane_control_option(SANE_Handle handle, SANE_Int option, SANE_Action action,
void *value, SANE_Int *info)
{
KodakAio_Scanner *s = (KodakAio_Scanner *) handle;
- DBG(2, "%s: action = %x, option = %d %s\n", __func__, action, option, s->opt[option].name);
-
if (option < 0 || option >= NUM_OPTIONS)
{
- DBG(1, "%s: option num = %d (%s) out of range\n", __func__, option, s->opt[option].name);
+ DBG(1, "%s: option num = %d out of range (0..%d)\n", __func__, option, NUM_OPTIONS - 1);
return SANE_STATUS_INVAL;
}
+ DBG(2, "%s: action = %x, option = %d %s\n", __func__, action, option, s->opt[option].name);
+
if (info != NULL)
*info = 0;
diff --git a/backend/pixma_bjnp.c b/backend/pixma_bjnp.c
index a1730ad..1020b8d 100644
--- a/backend/pixma_bjnp.c
+++ b/backend/pixma_bjnp.c
@@ -130,11 +130,11 @@ static void
u32tohex (uint32_t x, char *str)
{
uint8_t uint8[4];
- uint8[0]= (uint8_t) x >> 24;
- uint8[1] = (uint8_t)x >> 16;
- uint8[2] = (uint8_t)x >> 8;
- uint8[3] = (uint8_t)x ;
- u8tohex(str, uint8, 4);
+ uint8[0] = (uint8_t)(x >> 24);
+ uint8[1] = (uint8_t)(x >> 16);
+ uint8[2] = (uint8_t)(x >> 8);
+ uint8[3] = (uint8_t)x ;
+ u8tohex(str, uint8, 4);
}
static void
@@ -284,7 +284,8 @@ parse_IEEE1284_to_model (char *scanner_id, char *model)
char s[BJNP_IEEE1284_MAX];
char *tok;
- strcpy (s, scanner_id);
+ strncpy (s, scanner_id, BJNP_IEEE1284_MAX);
+ s[BJNP_IEEE1284_MAX - 1] = '\0';
model[0] = '\0';
tok = strtok (s, ";");
@@ -441,7 +442,8 @@ split_uri (const char *devname, char *method, char *host, char *port,
char next;
int i;
- strcpy (copy, devname);
+ strncpy (copy, devname, 1024);
+ copy[1023] = '\0';
start = copy;
/*
@@ -2313,6 +2315,8 @@ sanei_bjnp_read_int (SANE_Int dn, SANE_Byte * buffer, size_t * size)
}
device[dn].polling_status = BJNP_POLL_STARTED;
+ /* fall through to BJNP_POLL_STARTED */
+
case BJNP_POLL_STARTED:
/* we use only seonds accuracy between poll attempts */
timeout = device[dn].bjnp_timeout /1000;
diff --git a/backend/rts8891.c b/backend/rts8891.c
index d86347b..bdb4011 100644
--- a/backend/rts8891.c
+++ b/backend/rts8891.c
@@ -2212,7 +2212,13 @@ sane_close (SANE_Handle handle)
/* switch off lamp and close usb */
if (dev->conf.allowsharing == SANE_TRUE)
{
- sanei_usb_claim_interface (dev->devnum, 0);
+ SANE_Status status = sanei_usb_claim_interface (dev->devnum, 0);
+ if (status != SANE_STATUS_GOOD)
+ {
+ DBG (DBG_warn, "sane_close: cannot claim usb interface: %s\n",
+ sane_strstatus(status));
+ DBG (DBG_warn, "sane_close: continuing anyway\n");
+ }
}
set_lamp_state (session, 0);
sanei_usb_close (dev->devnum);
@@ -3197,14 +3203,6 @@ find_origin (struct Rts8891_Device *dev, SANE_Bool * changed)
return status;
}
- if (status != SANE_STATUS_GOOD)
- {
- free(image);
- free(data);
- DBG (DBG_error, "find_origin: failed to wait for data\n");
- return status;
- }
-
if (DBG_LEVEL > DBG_io2)
{
write_gray_data (data, "find_origin.pnm", width, height);
diff --git a/sanei/sanei_usb.c b/sanei/sanei_usb.c
index 7401658..491ceeb 100644
--- a/sanei/sanei_usb.c
+++ b/sanei/sanei_usb.c
@@ -460,8 +460,6 @@ sanei_libusb_strerror (int errcode)
default:
return "Unknown libusb-1.0 error code";
}
-
- return "Unknown libusb-1.0 error code";
}
#endif /* HAVE_LIBUSB_1_0 */
diff --git a/tools/sane-find-scanner.c b/tools/sane-find-scanner.c
index dbfd0da..ae0e116 100644
--- a/tools/sane-find-scanner.c
+++ b/tools/sane-find-scanner.c
@@ -757,8 +757,6 @@ sfs_libusb_strerror (int errcode)
default:
return "Unknown libusb-1.0 error code";
}
-
- return "Unknown libusb-1.0 error code";
}
static char *
--
1.8.4.2

View File

@ -1,170 +0,0 @@
From ccba990b2c2a39b35290370adad2acf8a4d8dc7e Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Mon, 8 Jun 2015 17:51:25 +0200
Subject: [PATCH] patch: usb3-xhci
Squashed commit of the following:
commit 73cb422f860a84aca7a19114936ead1794d77890
Author: m. allan noah <kitno455@gmail.com>
Date: Tue Dec 16 10:23:55 2014 -0500
sanei_usb: Linux USB3/xhci workarounds
add calls to sanei_usb_set_altinterface in sanei_usb_close and
sanei_usb_clear_halt- hopefully work around USB3/xhci problems
in Linux. Also, remove some unused code, and fix debug messages.
(cherry picked from commit 014b45d920f1fb630e1a31bb01f1da02ea2a6a87)
---
sanei/sanei_usb.c | 56 ++++++++++++++++++++++++++++++++-----------------------
1 file changed, 33 insertions(+), 23 deletions(-)
diff --git a/sanei/sanei_usb.c b/sanei/sanei_usb.c
index 491ceeb..3777ae8 100644
--- a/sanei/sanei_usb.c
+++ b/sanei/sanei_usb.c
@@ -154,6 +154,7 @@ typedef struct
SANE_Int control_in_ep;
SANE_Int control_out_ep;
SANE_Int interface_nr;
+ SANE_Int alt_setting;
SANE_Int missing;
#ifdef HAVE_LIBUSB
usb_dev_handle *libusb_handle;
@@ -633,6 +634,7 @@ static void usbcall_scan_devices(void)
device.product = pDevDesc->idProduct;
device.method = sanei_usb_method_usbcalls;
device.interface_nr = interface;
+ device.alt_setting = 0;
DBG (4, "%s: found usbcalls device (0x%04x/0x%04x) as device number %s\n", __func__,
pDevDesc->idVendor, pDevDesc->idProduct,device.devname);
store_device(device);
@@ -819,7 +821,7 @@ static void libusb_scan_devices(void)
"scanner (%d/%d)\n", __func__, dev->descriptor.idVendor,
dev->descriptor.idProduct, interface,
dev->descriptor.bDeviceClass,
- dev->config[0].interface[interface].altsetting != 0
+ dev->config[0].interface[interface].num_altsetting != 0
? dev->config[0].interface[interface].altsetting[0].
bInterfaceClass : -1);
}
@@ -843,6 +845,7 @@ static void libusb_scan_devices(void)
device.product = dev->descriptor.idProduct;
device.method = sanei_usb_method_libusb;
device.interface_nr = interface;
+ device.alt_setting = 0;
DBG (4,
"%s: found libusb device (0x%04x/0x%04x) interface "
"%d at %s\n", __func__,
@@ -989,7 +992,7 @@ static void libusb_scan_devices(void)
"%s: device 0x%04x/0x%04x, interface %d "
"doesn't look like a scanner (%d/%d)\n", __func__,
vid, pid, interface, desc.bDeviceClass,
- (config0->interface[interface].altsetting != 0)
+ (config0->interface[interface].num_altsetting != 0)
? config0->interface[interface].altsetting[0].bInterfaceClass : -1);
}
@@ -1016,6 +1019,7 @@ static void libusb_scan_devices(void)
device.product = pid;
device.method = sanei_usb_method_libusb;
device.interface_nr = interface;
+ device.alt_setting = 0;
DBG (4,
"%s: found libusb-1.0 device (0x%04x/0x%04x) interface "
"%d at %s\n", __func__,
@@ -2126,22 +2130,24 @@ sanei_usb_close (SANE_Int dn)
else
#ifdef HAVE_LIBUSB
{
-#if 0
- /* Should only be done in case of a stall */
- usb_clear_halt (devices[dn].libusb_handle, devices[dn].bulk_in_ep);
- usb_clear_halt (devices[dn].libusb_handle, devices[dn].bulk_out_ep);
- usb_clear_halt (devices[dn].libusb_handle, devices[dn].iso_in_ep);
- /* be careful, we don't know if we are in DATA0 stage now */
- usb_resetep (devices[dn].libusb_handle, devices[dn].bulk_in_ep);
- usb_resetep (devices[dn].libusb_handle, devices[dn].bulk_out_ep);
- usb_resetep (devices[dn].libusb_handle, devices[dn].iso_in_ep);
-#endif /* 0 */
+ /* This call seems to be required by Linux xhci driver
+ * even though it should be a no-op. Without it, the
+ * host or driver does not reset it's data toggle bit.
+ * We intentionally ignore the return val */
+ sanei_usb_set_altinterface (dn, devices[dn].alt_setting);
+
usb_release_interface (devices[dn].libusb_handle,
devices[dn].interface_nr);
usb_close (devices[dn].libusb_handle);
}
#elif defined(HAVE_LIBUSB_1_0)
{
+ /* This call seems to be required by Linux xhci driver
+ * even though it should be a no-op. Without it, the
+ * host or driver does not reset it's data toggle bit.
+ * We intentionally ignore the return val */
+ sanei_usb_set_altinterface (dn, devices[dn].alt_setting);
+
libusb_release_interface (devices[dn].lu_handle,
devices[dn].interface_nr);
libusb_close (devices[dn].lu_handle);
@@ -2166,7 +2172,6 @@ sanei_usb_set_timeout (SANE_Int timeout)
SANE_Status
sanei_usb_clear_halt (SANE_Int dn)
{
-#ifdef HAVE_LIBUSB
int ret;
if (dn >= device_number || dn < 0)
@@ -2175,6 +2180,14 @@ sanei_usb_clear_halt (SANE_Int dn)
return SANE_STATUS_INVAL;
}
+#ifdef HAVE_LIBUSB
+
+ /* This call seems to be required by Linux xhci driver
+ * even though it should be a no-op. Without it, the
+ * host or driver does not send the clear to the device.
+ * We intentionally ignore the return val */
+ sanei_usb_set_altinterface (dn, devices[dn].alt_setting);
+
ret = usb_clear_halt (devices[dn].libusb_handle, devices[dn].bulk_in_ep);
if (ret){
DBG (1, "sanei_usb_clear_halt: BULK_IN ret=%d\n", ret);
@@ -2187,18 +2200,13 @@ sanei_usb_clear_halt (SANE_Int dn)
return SANE_STATUS_INVAL;
}
- /* be careful, we don't know if we are in DATA0 stage now
- ret = usb_resetep (devices[dn].libusb_handle, devices[dn].bulk_in_ep);
- ret = usb_resetep (devices[dn].libusb_handle, devices[dn].bulk_out_ep);
- */
#elif defined(HAVE_LIBUSB_1_0)
- int ret;
- if (dn >= device_number || dn < 0)
- {
- DBG (1, "sanei_usb_clear_halt: dn >= device number || dn < 0\n");
- return SANE_STATUS_INVAL;
- }
+ /* This call seems to be required by Linux xhci driver
+ * even though it should be a no-op. Without it, the
+ * host or driver does not send the clear to the device.
+ * We intentionally ignore the return val */
+ sanei_usb_set_altinterface (dn, devices[dn].alt_setting);
ret = libusb_clear_halt (devices[dn].lu_handle, devices[dn].bulk_in_ep);
if (ret){
@@ -3036,6 +3044,8 @@ sanei_usb_set_altinterface (SANE_Int dn, SANE_Int alternate)
DBG (5, "sanei_usb_set_altinterface: alternate = %d\n", alternate);
+ devices[dn].alt_setting = alternate;
+
if (devices[dn].method == sanei_usb_method_scanner_driver)
{
#if defined(__linux__)
--
2.4.2

View File

@ -1,4 +1,4 @@
From f757d61aff2aa7a331f406c59c0a31f2d5e25553 Mon Sep 17 00:00:00 2001
From 252f347d59fff3ab1877f77a36613b318651725e Mon Sep 17 00:00:00 2001
From: Nils Philippsen <nils@redhat.com>
Date: Tue, 8 Oct 2013 16:29:13 +0200
Subject: [PATCH] patch: udev
@ -21,7 +21,7 @@ Date: Mon Sep 10 12:20:43 2012 +0200
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tools/sane-desc.c b/tools/sane-desc.c
index 3cc4407..df6d348 100644
index badc8ce..f992bf5 100644
--- a/tools/sane-desc.c
+++ b/tools/sane-desc.c
@@ -57,9 +57,9 @@
@ -46,7 +46,7 @@ index 3cc4407..df6d348 100644
printf ("\nLABEL=\"libsane_usb_rules_end\"\n\n");
@@ -3640,10 +3641,8 @@ print_udev (void)
@@ -3641,10 +3642,8 @@ print_udev (void)
}
printf ("LABEL=\"libsane_scsi_rules_end\"\n");
@ -59,14 +59,14 @@ index 3cc4407..df6d348 100644
printf ("\nLABEL=\"libsane_rules_end\"\n");
}
@@ -3694,6 +3693,7 @@ print_udevhwdb (void)
@@ -3695,6 +3694,7 @@ print_udevhwdb (void)
printf("# The following rule will disable USB autosuspend for the device\n");
printf("ENV{DEVTYPE}==\"usb_device\", ENV{libsane_matched}==\"yes\", TEST==\"power/control\", ATTR{power/control}=\"on\"\n\n");
+ printf("ENV{DEVTYPE}==\"usb_device\", ENV{libsane_matched}==\"yes\", TEST!=\"power/control\", TEST==\"power/level\", ATTR{power/level}=\"on\"\n");
printf ("SUBSYSTEMS!=\"scsi\", GOTO=\"libsane_rules_end\"\n");
printf ("KERNEL!=\"sg[0-9]*\", GOTO=\"libsane_rules_end\"\n\n");
printf ("SUBSYSTEMS==\"scsi\", GOTO=\"libsane_scsi_rules_begin\"\n");
printf ("GOTO=\"libsane_rules_end\"\n\n");
--
1.8.3.1
2.5.0

View File

@ -36,8 +36,8 @@
Summary: Scanner access software
Name: sane-backends
Version: 1.0.24
Release: 15%{?dist}
Version: 1.0.25
Release: 1%{?dist}
# lib/ is LGPLv2+, backends are GPLv2+ with exceptions
# Tools are GPLv2+, docs are public domain
# see LICENSE for details
@ -47,41 +47,13 @@ Group: System Environment/Libraries
Source0: https://alioth.debian.org/frs/download.php/latestfile/176/sane-backends-%{version}.tar.gz
Source1: sane.png
# Fedora-specific, not generally applicable:
Patch0: sane-backends-1.0.24-udev.patch
# Upstream commit b491261f0c0f6df47d1e4859cde88448f98718dd
Patch1: sane-backends-1.0.21-epson-expression800.patch
# Fedora-specific, probably not generally applicable:
Patch0: sane-backends-1.0.25-udev.patch
# Fedora-specific (for now): don't use the same SONAME for backend libs and
# main lib
Patch2: sane-backends-1.0.23-soname.patch
Patch1: sane-backends-1.0.23-soname.patch
# Fedora-specific (for now): make installed sane-config multi-lib aware again
Patch3: sane-backends-1.0.23-sane-config-multilib.patch
# Upstream commit 3b96baef65ea6c315937f5cd2253c6b6c62636d8
Patch4: sane-backends-1.0.24-hwdb.patch
# Upstream commit d35d6326cb00fcbb19b41599bdff7faf5d79225e
Patch5: sane-backends-1.0.24-pixma_bjnp-crash.patch
# Upstream commit 252ccdd926bb28bd6064da7b652e646664226572
# Upstream commit 66cb9b55c2e60503d537d7ed927f5a5aef3658d2
# Upstream commit cf9129d62fe7e84479e8daf6018cd2495d53bcc9
# Upstream commit 575f40a0790bb5e20ffd7ccae1c9272e481bbe51
# Upstream commit b53a58c4b534b9e6897c1b0a6301d2bf76dc3499
# Upstream commit 101f76c516cd42cafe9e142aefe751094a125e73
# Upstream commit 2d89e37f365cb8e54ee44aa686a62320e2837b50
# Upstream commit a3fe2c1ea5b4f6b1e55435f6abc44f402ff32b4d
# Upstream commit 602d6ecdfe5f3146867799fabf3ac87582c26461
# Upstream commit 5d7f7ffefb22e7e64789e97af0356b7859d61814
# Upstream commit dc76e7cce464f04e46aab2bb0c269b4742161c59
# Upstream commit d835d9d565118d52c2339c2e79890f57d0616077
Patch6: sane-backends-1.0.24-static-code-check.patch
# Upstream commit 758731489d0d58bab6e4b70db9556038c9f4bb67
Patch7: sane-backends-1.0.24-scsi-permissions.patch
# Upstream commit 8082a42ec4f3b3cf2cffc30a45dda5fc41d55576
Patch8: sane-backends-1.0.24-format-security.patch
# Update lib/snprintf.c to latest from LPRng to resolve
# license issue (#1102520)
Patch9: sane-backends-1.0.24-snprintf-cleanroom.patch
# Upstream commit 73cb422f860a84aca7a19114936ead1794d77890
Patch10: sane-backends-1.0.24-usb3-xhci.patch
Patch2: sane-backends-1.0.23-sane-config-multilib.patch
URL: http://www.sane-project.org
@ -191,16 +163,8 @@ This package contains backend drivers to access digital cameras through SANE.
%setup -q
%patch0 -p1 -b .udev
%patch1 -p1 -b .epson-expression800
%patch2 -p1 -b .soname
%patch3 -p1 -b .sane-config-multilib
%patch4 -p1 -b .hwdb
%patch5 -p1 -b .pixma_bjnp-crash
%patch6 -p1 -b .static-code-check
%patch7 -p1 -b .scsi-permissions
%patch8 -p1 -b .format-security
%patch9 -p1 -b .snprintf-cleanroom
%patch10 -p1 -b .usb3-xhci
%patch1 -p1 -b .soname
%patch2 -p1 -b .sane-config-multilib
%build
CFLAGS="%optflags -fno-strict-aliasing"
@ -289,6 +253,7 @@ udevadm hwdb --update >/dev/null 2>&1 || :
%{_bindir}/sane-find-scanner
%{_bindir}/scanimage
%{_bindir}/umax_pp
%{_sbindir}/*
%exclude %{_mandir}/man1/sane-config.1*
@ -322,6 +287,14 @@ udevadm hwdb --update >/dev/null 2>&1 || :
%{_libdir}/sane/*gphoto2.so*
%changelog
* Thu Oct 08 2015 Nils Philippsen <nils@redhat.com> - 1.0.25-1
- version 1.0.25
- remove obsolete patches: epson-expression800, hwdb, pixma_bjnp-crash,
static-code-check, scsi-permissions, format-security, snprintf-license,
usb3-xhci
- update udev patch
- ship umax_pp tool
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.0.24-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild

View File

@ -1 +1 @@
1ca68e536cd7c1852322822f5f6ac3a4 sane-backends-1.0.24.tar.gz
f9ed5405b3c12f07c6ca51ee60225fe7 sane-backends-1.0.25.tar.gz