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:
parent
90b19a7e8e
commit
32c0f5079b
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user