diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f89236b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/sane-backends-1.0.24.tar.gz +SOURCES/sane.png diff --git a/.sane-backends.metadata b/.sane-backends.metadata new file mode 100644 index 0000000..5cc06f6 --- /dev/null +++ b/.sane-backends.metadata @@ -0,0 +1,2 @@ +c10bcb30a1b092b2c2fe5a86d6a5efc29123ccf9 SOURCES/sane-backends-1.0.24.tar.gz +338783a09c91bf1cc1a3bda838a9e7568563e02e SOURCES/sane.png diff --git a/SOURCES/66-saned.rules b/SOURCES/66-saned.rules new file mode 100644 index 0000000..b3ab794 --- /dev/null +++ b/SOURCES/66-saned.rules @@ -0,0 +1,2 @@ +# udev rule for saned (SANE scanning daemon) to be able to write on usb port +ENV{libsane_matched}=="yes", RUN+="/usr/bin/setfacl -m g:saned:rw $env{DEVNAME}" diff --git a/SOURCES/sane-backends-1.0.21-epson-expression800.patch b/SOURCES/sane-backends-1.0.21-epson-expression800.patch new file mode 100644 index 0000000..8a6fb5d --- /dev/null +++ b/SOURCES/sane-backends-1.0.21-epson-expression800.patch @@ -0,0 +1,47 @@ +From 305535e303032814b65bf6d889a95f00f08a9071 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Wed, 5 May 2010 12:49:02 +0200 +Subject: [PATCH] patch: epson-expression800 + +Squashed commit of the following: + +commit 3b501d7499357438a1fbd63fefb2f977ae3051f5 +Author: Nils Philippsen +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 + diff --git a/SOURCES/sane-backends-1.0.23-sane-config-multilib.patch b/SOURCES/sane-backends-1.0.23-sane-config-multilib.patch new file mode 100644 index 0000000..2f28835 --- /dev/null +++ b/SOURCES/sane-backends-1.0.23-sane-config-multilib.patch @@ -0,0 +1,36 @@ +From d0c61e7e9b13185f424dff1f4ac697ec53089d69 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Tue, 4 Sep 2012 16:45:14 +0200 +Subject: [PATCH] patch: sane-config-multilib + +Squashed commit of the following: + +commit 81aa4f41bf102b08258c8e1de1c0476835329ec5 +Author: Nils Philippsen +Date: Tue Sep 4 16:43:34 2012 +0200 + + make installed sane-config multi-lib aware again + + This partially reverts commit 77c4ea1a7aa680fb1c3ee4daa1404f21439b2c9b. +--- + tools/sane-config.in | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/tools/sane-config.in b/tools/sane-config.in +index 8e4b52a..1fae2e5 100644 +--- a/tools/sane-config.in ++++ b/tools/sane-config.in +@@ -10,10 +10,6 @@ scriptname="sane-config" + prefix="@prefix@" + exec_prefix="@exec_prefix@" + +-# using our installed *.pc only - neither default nor user paths +-export PKG_CONFIG_LIBDIR="@libdir@/pkgconfig" +-export PKG_CONFIG_PATH="" +- + pkgconfig_package=sane-backends + + usage () +-- +1.7.11.4 + diff --git a/SOURCES/sane-backends-1.0.23-soname.patch b/SOURCES/sane-backends-1.0.23-soname.patch new file mode 100644 index 0000000..04ad829 --- /dev/null +++ b/SOURCES/sane-backends-1.0.23-soname.patch @@ -0,0 +1,49 @@ +From 031cd8dd376ed6537afd06ca5aec5e67f5da0489 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Fri, 31 Aug 2012 16:14:49 +0200 +Subject: [PATCH] patch: soname + +Squashed commit of the following: + +commit 2035ced803168210a70c4946814440764e5d0186 +Author: Nils Philippsen +Date: Fri Aug 31 16:13:51 2012 +0200 + + don't use the same SONAME for backend libs and main lib +--- + ltmain.sh | 19 ------------------- + 1 file changed, 19 deletions(-) + +diff --git a/ltmain.sh b/ltmain.sh +index f3eb4c8..17d1508 100755 +--- a/ltmain.sh ++++ b/ltmain.sh +@@ -8101,25 +8101,6 @@ EOF + dlname=$soname + fi + +- # Local change for sane-backends: internal name for every lib +- # is "libsane" not "libsane-backendname". So linking to each +- # backend is possible. Also the following test was moved to this +- # location. +- # If -module or -export-dynamic was specified, set the dlname +- if test "$module" = yes || test "$export_dynamic" = yes; then +- # On all known operating systems, these are identical. +- dlname="$soname" +- fi +- case $host in +- *mingw*) +- ;; +- *aix*) +- ;; +- *) +- soname=`echo $soname | sed -e "s/libsane-[A-Za-z_0-9]*/libsane/g"` +- esac +- # End of local change +- + lib="$output_objdir/$realname" + linknames= + for link +-- +1.7.11.4 + diff --git a/SOURCES/sane-backends-1.0.24-hwdb.patch b/SOURCES/sane-backends-1.0.24-hwdb.patch new file mode 100644 index 0000000..372012f --- /dev/null +++ b/SOURCES/sane-backends-1.0.24-hwdb.patch @@ -0,0 +1,38 @@ +From 92c55802144a024fb48ca5babeb99254209d2c71 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Thu, 24 Oct 2013 14:29:25 +0200 +Subject: [PATCH] patch: hwdb + +Squashed commit of the following: + +commit 6686fded6523a04b26d02e7bbeb906a579c9ef5f +Author: Nils Philippsen +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 + diff --git a/SOURCES/sane-backends-1.0.24-pixma_bjnp-crash.patch b/SOURCES/sane-backends-1.0.24-pixma_bjnp-crash.patch new file mode 100644 index 0000000..721abf7 --- /dev/null +++ b/SOURCES/sane-backends-1.0.24-pixma_bjnp-crash.patch @@ -0,0 +1,47 @@ +From 11248fb7484c56ecdf14f8f24f2322d887a7e48e Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +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 +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 + diff --git a/SOURCES/sane-backends-1.0.24-scsi-permissions.patch b/SOURCES/sane-backends-1.0.24-scsi-permissions.patch new file mode 100644 index 0000000..d8e9fd3 --- /dev/null +++ b/SOURCES/sane-backends-1.0.24-scsi-permissions.patch @@ -0,0 +1,49 @@ +From 1567fcb9d9dd3dea6e0978ef2473ac7dba7dbba0 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Wed, 20 Nov 2013 22:04:21 +0100 +Subject: [PATCH] patch: scsi-permissions + +Squashed commit of the following: + +commit 80e8a34505a45dd61761ce557bf029e33e39d2f2 +Author: Nils Philippsen +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 + diff --git a/SOURCES/sane-backends-1.0.24-static-code-check.patch b/SOURCES/sane-backends-1.0.24-static-code-check.patch new file mode 100644 index 0000000..7b6b4a3 --- /dev/null +++ b/SOURCES/sane-backends-1.0.24-static-code-check.patch @@ -0,0 +1,742 @@ +From 886208261b5b91b4a64efd8a203873ab85a07a2e Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +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 +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 +Date: Wed Nov 6 11:05:58 2013 +0100 + + genesys: check return values + + (cherry picked from commit dc76e7cce464f04e46aab2bb0c269b4742161c59) + +commit b6e13be1c187790adfa50e81506533fbe21dca6f +Author: Nils Philippsen +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 +Date: Wed Nov 6 11:44:16 2013 +0100 + + rts8891: check return values + + (cherry picked from commit 602d6ecdfe5f3146867799fabf3ac87582c26461) + +commit 0438b3f9aaa4ee8558185ad5e7a9c6a0bf1a3590 +Author: Nils Philippsen +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 +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 +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 +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 +Date: Tue Nov 5 15:12:20 2013 +0100 + + pixma: avoid buffer overflows + + (cherry picked from commit 575f40a0790bb5e20ffd7ccae1c9272e481bbe51) + +commit ee3953fb5b11a26a42bee3d75ee6b93da0bb112f +Author: Nils Philippsen +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 +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 +Date: Tue Nov 5 14:17:12 2013 +0100 + + genesys: fix some memory leaks + + (cherry picked from commit 252ccdd926bb28bd6064da7b652e646664226572) + +commit a4d72c0e2ebb1f6352f21a300bbff67d439cd77f +Author: Nils Philippsen +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 +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 + diff --git a/SOURCES/sane-backends-1.0.24-udev.patch b/SOURCES/sane-backends-1.0.24-udev.patch new file mode 100644 index 0000000..7d6f03c --- /dev/null +++ b/SOURCES/sane-backends-1.0.24-udev.patch @@ -0,0 +1,72 @@ +From f757d61aff2aa7a331f406c59c0a31f2d5e25553 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Tue, 8 Oct 2013 16:29:13 +0200 +Subject: [PATCH] patch: udev + +Squashed commit of the following: + +commit fb6d1f4c0d17f1df33429bf03a64cd4fbb819ea5 +Author: Nils Philippsen +Date: Tue Oct 8 16:24:49 2013 +0200 + + adapt generated udev rules for Fedora + +commit 8bffaccc1eeb19ecbaddb4ac9da73954af4c5d4f +Author: Nils Philippsen +Date: Mon Sep 10 12:20:43 2012 +0200 + + use group and mode macros consistently +--- + tools/sane-desc.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/tools/sane-desc.c b/tools/sane-desc.c +index 3cc4407..df6d348 100644 +--- a/tools/sane-desc.c ++++ b/tools/sane-desc.c +@@ -57,9 +57,9 @@ + #define COLOR_NEW "\"#F00000\"" + #define COLOR_UNKNOWN "\"#000000\"" + +-#define DEVMODE "0664" ++#define DEVMODE "0644" + #define DEVOWNER "root" +-#define DEVGROUP "scanner" ++#define DEVGROUP "root" + + #ifndef PATH_MAX + # define PATH_MAX 1024 +@@ -3564,7 +3564,8 @@ print_udev (void) + } + + printf("\n# The following rule will disable USB autosuspend for the device\n"); +- printf("ENV{libsane_matched}==\"yes\", RUN+=\"/bin/sh -c 'if test -e /sys/$env{DEVPATH}/power/control; then echo on > /sys/$env{DEVPATH}/power/control; elif test -e /sys/$env{DEVPATH}/power/level; then echo on > /sys/$env{DEVPATH}/power/level; fi'\"\n"); ++ printf("ENV{libsane_matched}==\"yes\", TEST==\"power/control\", ATTR{power/control}=\"on\"\n"); ++ printf("ENV{libsane_matched}==\"yes\", TEST!=\"power/control\", TEST==\"power/level\", ATTR{power/level}=\"on\"\n"); + + printf ("\nLABEL=\"libsane_usb_rules_end\"\n\n"); + +@@ -3640,10 +3641,8 @@ print_udev (void) + } + printf ("LABEL=\"libsane_scsi_rules_end\"\n"); + +- if (mode == output_mode_udevacl) +- printf("\nENV{libsane_matched}==\"yes\", RUN+=\"/bin/setfacl -m g:%s:rw $env{DEVNAME}\"\n", DEVGROUP); +- else +- printf ("\nENV{libsane_matched}==\"yes\", MODE=\"664\", GROUP=\"scanner\"\n"); ++ if (mode != output_mode_udevacl) ++ printf ("\nENV{libsane_matched}==\"yes\", MODE=\"%s\", GROUP=\"%s\"\n", DEVMODE, DEVGROUP); + + printf ("\nLABEL=\"libsane_rules_end\"\n"); + } +@@ -3694,6 +3693,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"); +-- +1.8.3.1 + diff --git a/SOURCES/sane-backends-1.0.24-usb3-xhci.patch b/SOURCES/sane-backends-1.0.24-usb3-xhci.patch new file mode 100644 index 0000000..7ba700d --- /dev/null +++ b/SOURCES/sane-backends-1.0.24-usb3-xhci.patch @@ -0,0 +1,199 @@ +diff -up sane-backends-1.0.24/doc/sane-usb.man.usb3-xhci sane-backends-1.0.24/doc/sane-usb.man +--- sane-backends-1.0.24/doc/sane-usb.man.usb3-xhci 2013-02-23 03:00:56.000000000 +0100 ++++ sane-backends-1.0.24/doc/sane-usb.man 2017-07-21 16:32:40.650531762 +0200 +@@ -138,6 +138,13 @@ environment variable controls the debug + subsystem. E.g., a value of 128 requests all debug output to be + printed. Smaller levels reduce verbosity. Values greater than 4 enable + libusb debugging (if available). Example: export SANE_DEBUG_SANEI_USB=4. ++.PP ++.TP ++.B SANE_USB_WORKAROUND ++If your scanner does not work when plugged into a USB3 port, try ++setting the environment variable SANE_USB_WORKAROUND to 1. This ++may work around issues which happen with particular kernel ++versions. Example: export SANE_USB_WORKAROUND=1. + + .SH "SEE ALSO" + .BR sane (7), +diff -up sane-backends-1.0.24/sanei/sanei_usb.c.usb3-xhci sane-backends-1.0.24/sanei/sanei_usb.c +--- sane-backends-1.0.24/sanei/sanei_usb.c.usb3-xhci 2017-07-19 13:34:05.901456398 +0200 ++++ sane-backends-1.0.24/sanei/sanei_usb.c 2017-07-19 13:34:05.905456364 +0200 +@@ -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__, +@@ -2099,6 +2103,17 @@ sanei_usb_open (SANE_String_Const devnam + void + sanei_usb_close (SANE_Int dn) + { ++ char *env; ++ int workaround = 0; ++ ++ DBG (5, "sanei_usb_close: evaluating environment variable SANE_USB_WORKAROUND\n"); ++ env = getenv ("SANE_USB_WORKAROUND"); ++ if (env) ++ { ++ workaround = atoi(env); ++ DBG (5, "sanei_usb_close: workaround: %d\n", workaround); ++ } ++ + DBG (5, "sanei_usb_close: closing device %d\n", dn); + if (dn >= device_number || dn < 0) + { +@@ -2126,22 +2141,30 @@ 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 */ ++ if (workaround) ++ { ++ 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 */ ++ if (workaround) ++ { ++ 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,8 +2189,17 @@ sanei_usb_set_timeout (SANE_Int timeout) + SANE_Status + sanei_usb_clear_halt (SANE_Int dn) + { +-#ifdef HAVE_LIBUSB + int ret; ++ char *env; ++ int workaround = 0; ++ ++ DBG (5, "sanei_usb_clear_halt: evaluating environment variable SANE_USB_WORKAROUND\n"); ++ env = getenv ("SANE_USB_WORKAROUND"); ++ if (env) ++ { ++ workaround = atoi(env); ++ DBG (5, "sanei_usb_clear_halt: workaround: %d\n", workaround); ++ } + + if (dn >= device_number || dn < 0) + { +@@ -2175,6 +2207,17 @@ 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 */ ++ if (workaround) ++ { ++ 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,17 +2230,15 @@ 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) ++ /* 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 */ ++ if (workaround) + { +- DBG (1, "sanei_usb_clear_halt: dn >= device number || dn < 0\n"); +- return SANE_STATUS_INVAL; ++ sanei_usb_set_altinterface (dn, devices[dn].alt_setting); + } + + ret = libusb_clear_halt (devices[dn].lu_handle, devices[dn].bulk_in_ep); +@@ -3036,6 +3077,8 @@ sanei_usb_set_altinterface (SANE_Int dn, + + 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__) diff --git a/SOURCES/sane-backends-saned-manpage.patch b/SOURCES/sane-backends-saned-manpage.patch new file mode 100644 index 0000000..63123fe --- /dev/null +++ b/SOURCES/sane-backends-saned-manpage.patch @@ -0,0 +1,24 @@ +diff -up sane-backends-1.0.24/doc/saned.man.saned-manpage sane-backends-1.0.24/doc/saned.man +--- sane-backends-1.0.24/doc/saned.man.saned-manpage 2017-11-22 15:53:48.268950048 +0100 ++++ sane-backends-1.0.24/doc/saned.man 2017-11-22 16:19:08.411273673 +0100 +@@ -274,6 +274,20 @@ systemd allows debugging output from bac + .B SANE_DEBUG_ + to be captured. With the service unit as described above, the debugging output is + forwarded to the system log. ++ ++After creating unit files run as root: ++.PP ++.RS ++systemctl start saned.socket ++.RE ++.PP ++to start saned. If you want to have saned.socket running after startup, run as ++root: ++.PP ++.RS ++systemctl enable saned.socket ++.RE ++.PP + .SH FILES + .TP + .I /etc/hosts.equiv diff --git a/SOURCES/saned.socket b/SOURCES/saned.socket new file mode 100644 index 0000000..1aa19e7 --- /dev/null +++ b/SOURCES/saned.socket @@ -0,0 +1,10 @@ +[Unit] +Description=saned incoming socket + +[Socket] +ListenStream=6566 +Accept=yes +MaxConnections=1 + +[Install] +WantedBy=sockets.target diff --git a/SOURCES/saned@.service.in b/SOURCES/saned@.service.in new file mode 100644 index 0000000..d2c0a26 --- /dev/null +++ b/SOURCES/saned@.service.in @@ -0,0 +1,18 @@ +[Unit] +Description=Scanner Service +Requires=saned.socket + +[Service] +ExecStart=/usr/sbin/saned +User=saned +Group=saned +StandardInput=null +StandardOutput=syslog +StandardError=syslog +Environment=SANE_CONFIG_DIR=@CONFIGDIR@ +# If you need to debug your configuration uncomment the next line and +# change it as appropriate to set the desired debug options +# Environment=SANE_DEBUG_DLL=255 SANE_DEBUG_NET=255 + +[Install] +Also=saned.socket diff --git a/SPECS/sane-backends.spec b/SPECS/sane-backends.spec new file mode 100644 index 0000000..a54746e --- /dev/null +++ b/SPECS/sane-backends.spec @@ -0,0 +1,1135 @@ +#if !0%%{?fedora}%%{?rhel} || 0%%{?fedora} >= 17 || 0%%{?rhel} >= 7 +#global needs_multilib_quirk 0 +#else +# let -devel require drivers to make them available as multilib +%global needs_multilib_quirk 1 +#endif + +%if !0%{?fedora}%{?rhel} || 0%{?fedora} >= 16 || 0%{?rhel} >= 7 +%global _hardened_build 1 +%endif + +%if !0%{?fedora}%{?rhel} || 0%{?fedora} >= 17 || 0%{?rhel} >= 7 +%global udevdir %{_prefix}/lib/udev +%else +%global udevdir /lib/udev +%endif +%global udevrulesdir %{udevdir}/rules.d +%global udevhwdbdir %{udevdir}/hwdb.d + +%if !0%{?fedora}%{?rhel} || 0%{?fedora} >= 18 || 0%{?rhel} >= 7 +%global libusb1 1 +%else +%global libusb1 0 +%endif + +%define __provides_exclude_from ^%{_libdir}/sane/.*\.so.*$ +%define __requires_exclude ^libsane-.*\.so\.[0-9]*(\(\).*)?+$ + +%if ! 0%{?fedora}%{?rhel} || 0%{?fedora} >= 20 || 0%{?rhel} >= 8 +%define _maindocdir %{_docdir}/%{name} +%define _docdocdir %{_docdir}/%{name}-doc +%else +%define _maindocdir %{_docdir}/%{name}-%{version} +%define _docdocdir %{_docdir}/%{name}-doc-%{version} +%endif + +Summary: Scanner access software +Name: sane-backends +Version: 1.0.24 +Release: 12%{?dist} +# lib/ is LGPLv2+, backends are GPLv2+ with exceptions +# Tools are GPLv2+, docs are public domain +# see LICENSE for details +License: GPLv2+ and GPLv2+ with exceptions and Public Domain +Group: System Environment/Libraries +# Alioth Download URLs are amazing. +Source0: https://alioth.debian.org/frs/download.php/latestfile/176/sane-backends-%{version}.tar.gz +Source1: sane.png +Source2: saned.socket +Source3: saned@.service.in +Source4: 66-saned.rules + +# 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 (for now): don't use the same SONAME for backend libs and +# main lib +Patch2: 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 56398ead607d8bcb9deef7ca3f4d7f78478f1b4c +# Upstream commit 1207ce5a40664c04b934bd0a6babbc1575361356 +# Upstream commit 014b45d920f1fb630e1a31bb01f1da02ea2a6a87 +Patch8: sane-backends-1.0.24-usb3-xhci.patch +# RFE: please include the systemd's config files (bug #1512252) +Patch9: sane-backends-saned-manpage.patch + +URL: http://www.sane-project.org + +BuildRequires: %{_bindir}/latex +%if %libusb1 +BuildRequires: libusbx-devel +%else +BuildRequires: libusb-devel +%endif +BuildRequires: libieee1284-devel +BuildRequires: libjpeg-devel +BuildRequires: libtiff-devel +BuildRequires: libv4l-devel +BuildRequires: gettext +BuildRequires: gphoto2-devel +BuildRequires: systemd-devel +BuildRequires: systemd +Requires: systemd >= 196 +Requires: sane-backends-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: acl +Requires(pre): shadow-utils +%{?systemd_requires} +# Don't drag around obsoletes forever +%if 0%{?fedora}%{?rhel} && (0%{?fedora} < 25 || 0%{?rhel} < 8) +Obsoletes: sane-backends < 1.0.23-10 +Conflicts: sane-backends < 1.0.23-10 +%endif + +%description +Scanner Access Now Easy (SANE) is a universal scanner interface. The +SANE application programming interface (API) provides standardized +access to any raster image scanner hardware (flatbed scanner, +hand-held scanner, video and still cameras, frame-grabbers, etc.). + +%package doc +Summary: SANE backends documentation +Group: Documentation +BuildArch: noarch +# Don't drag around obsoletes forever +%if 0%{?fedora}%{?rhel} && (0%{?fedora} < 25 || 0%{?rhel} <= 8) +Obsoletes: sane-backends < 1.0.23-10 +Conflicts: sane-backends < 1.0.23-10 +%endif + +%description doc +This package contains documentation for SANE backends. + +%package libs +Summary: SANE libraries +Group: System Environment/Libraries + +%description libs +This package contains the SANE libraries which are needed by applications that +want to access scanners. + +%package devel +Summary: SANE development toolkit +Group: Development/Libraries +Requires: sane-backends = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: sane-backends-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%if %needs_multilib_quirk +Requires: sane-backends-drivers-scanners%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: sane-backends-drivers-cameras%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%endif +%if %libusb1 +Requires: libusbx-devel +%else +Requires: libusb-devel +%endif +Requires: libieee1284-devel +Requires: libjpeg-devel +Requires: libtiff-devel +Requires: pkgconfig + +%description devel +This package contains libraries and header files for writing Scanner Access Now +Easy (SANE) modules. + +%package drivers-scanners +Summary: SANE backend drivers for scanners +Group: System Environment/Libraries +Requires: sane-backends = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: sane-backends-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +# Don't drag around obsoletes forever +%if 0%{?rhel} && 0%{?rhel} < 8 +Obsoletes: sane-backends < 1.0.22-4 +Obsoletes: sane-backends-libs < 1.0.22-4 +Conflicts: sane-backends < 1.0.22-4 +Conflicts: sane-backends-libs < 1.0.22-4 +%endif + +%description drivers-scanners +This package contains backend drivers to access scanner hardware through SANE. + +%package drivers-cameras +Summary: Scanner backend drivers for digital cameras +Group: System Environment/Libraries +Requires: sane-backends = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: sane-backends-libs%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +# Don't drag around obsoletes forever +%if 0%{?rhel} && 0%{?rhel} < 8 +Obsoletes: sane-backends-libs-gphoto2 < 1.0.22-4 +Conflicts: sane-backends-libs-gphoto2 < 1.0.22-4 +Provides: sane-libs-gphoto2 = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: sane-libs-gphoto2%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} +%endif + +%description drivers-cameras +This package contains backend drivers to access digital cameras through SANE. + +%prep +%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 .usb3-xhci +%patch9 -p1 -b .saned-manpage + +%build +CFLAGS="%optflags -fno-strict-aliasing" +%if ! 0%{?_hardened_build} +# use PIC/PIE because SANE-enabled software is likely to deal with data coming +# from untrusted sources (client <-> saned via network) +CFLAGS="$CFLAGS -fPIC" +LDFLAGS="-pie" +%endif +%configure \ + --with-gphoto2=%{_prefix} \ + --with-docdir=%{_maindocdir} \ + --disable-locking --disable-rpath \ +%if %libusb1 + --enable-libusb_1_0 \ +%endif + --enable-pthread +make %{?_smp_mflags} + +# Write udev/hwdb files +_topdir="$PWD" +pushd tools +./sane-desc -m udev+hwdb -s "${_topdir}/doc/descriptions:${_topdir}/doc/descriptions-external" -d0 > udev/sane-backends.rules +./sane-desc -m hwdb -s "${_topdir}/doc/descriptions:${_topdir}/doc/descriptions-external" -d0 > udev/sane-backends.hwdb + +popd + +%install +make DESTDIR="%{buildroot}" install + +mkdir -p %{buildroot}%{_datadir}/pixmaps +install -m 644 %{SOURCE1} %{buildroot}%{_datadir}/pixmaps +rm -f %{buildroot}%{_bindir}/gamma4scanimage +rm -f %{buildroot}%{_mandir}/man1/gamma4scanimage.1* +rm -f %{buildroot}%{_libdir}/sane/*.a %{buildroot}%{_libdir}/*.a +rm -f %{buildroot}%{_libdir}/libsane*.la %{buildroot}%{_libdir}/sane/*.la + +mkdir -p %{buildroot}%{udevrulesdir} +mkdir -p %{buildroot}%{udevhwdbdir} +install -m 0644 tools/udev/sane-backends.rules %{buildroot}%{udevrulesdir}/65-sane-backends.rules +install -m 0644 tools/udev/sane-backends.hwdb %{buildroot}%{udevhwdbdir}/20-sane-backends.hwdb +install -m 0644 %{SOURCE4} %{buildroot}%{udevrulesdir}/66-saned.rules + +mkdir -p %{buildroot}%{_libdir}/pkgconfig +install -m 0644 tools/sane-backends.pc %{buildroot}%{_libdir}/pkgconfig/ + +mkdir %{buildroot}%{_docdocdir} +pushd %{buildroot}%{_maindocdir} +for f in *; do + if [ -d "$f" ]; then + mv "$f" "%{buildroot}%{_docdocdir}/${f}" + else + case "$f" in + AUTHORS|ChangeLog|COPYING|LICENSE|NEWS|PROBLEMS|README|README.linux) + ;; + backend-writing.txt|PROJECTS|sane-*.html) + mv "$f" "%{buildroot}%{_docdocdir}/${f}" + ;; + *) + rm -rf "$f" + ;; + esac + fi +done +popd + +install -m 755 -d %{buildroot}%{_unitdir} +install -m 644 %{SOURCE2} %{buildroot}%{_unitdir} +sed 's|@CONFIGDIR@|%{_sysconfdir}/sane.d|g' < %{SOURCE3} > saned@.service +install -m 644 saned@.service %{buildroot}%{_unitdir} + +%find_lang %name + +%pre +getent group saned >/dev/null || groupadd -r saned +getent passwd saned >/dev/null || \ + useradd -r -g saned -d %{_datadir}/sane -s /sbin/nologin \ + -c "SANE scanner daemon user" saned +exit 0 + +%post +udevadm hwdb --update >/dev/null 2>&1 || : +%systemd_post saned.socket + +%preun +%systemd_preun saned.socket + +%postun +udevadm hwdb --update >/dev/null 2>&1 || : +%systemd_postun saned.socket + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig + +%files -f %{name}.lang +%defattr(-,root,root) +%doc %{_maindocdir} +%dir /etc/sane.d +%dir /etc/sane.d/dll.d +%config(noreplace) /etc/sane.d/*.conf +%{udevrulesdir}/65-sane-backends.rules +%{udevrulesdir}/66-saned.rules +%{udevhwdbdir}/20-sane-backends.hwdb +%{_unitdir}/saned.socket +%{_unitdir}/saned@.service +%{_datadir}/pixmaps/sane.png + +%{_bindir}/sane-find-scanner +%{_bindir}/scanimage +%{_sbindir}/* + +%exclude %{_mandir}/man1/sane-config.1* +%{_mandir}/*/* + +%dir %{_libdir}/sane +%dir %{_datadir}/sane + +%files doc +%defattr(-, root, root) +%doc %{_docdocdir} + +%files libs +%defattr(-, root, root) +%{_libdir}/libsane*.so.* + +%files devel +%defattr(-,root,root) +%{_bindir}/sane-config +%{_mandir}/man1/sane-config.1* +%{_includedir}/sane +%{_libdir}/libsane*.so +%{_libdir}/pkgconfig/sane-backends.pc + +%files drivers-scanners +%defattr(-, root, root) +%{_libdir}/sane/*.so* +%exclude %{_libdir}/sane/*gphoto2.so* + +%files drivers-cameras +%defattr(-, root, root) +%{_libdir}/sane/*gphoto2.so* + +%changelog +* Fri May 04 2018 Zdenek Dohnal - 1.0.24-12 +- 1554406 - saned doesn't have permissions to write on usb port + +* Wed Nov 22 2017 Zdenek Dohnal - 1.0.24-12 +- 1512252 - RFE: please include the systemd's config files + +* Tue Oct 10 2017 Zdenek Dohnal - 1.0.24-11 +- 1500219 - rebuild against new libgphoto2 + +* Mon Sep 25 2017 Zdenek Dohnal - 1.0.24-10 +- 1458903 - [Patch] Lack of USB3 xhci patch makes SANE quite unusable with USB3 hardware + +* Fri Jan 24 2014 Daniel Mach - 1.0.24-9 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 1.0.24-8 +- Mass rebuild 2013-12-27 + +* Wed Nov 20 2013 Nils Philippsen - 1.0.24-7 +- set correct permissions for SCSI devices (#1028549) + +* Thu Nov 07 2013 Nils Philippsen - 1.0.24-6 +- epson: don't leak memory if realloc() fails + +* Thu Nov 07 2013 Nils Philippsen - 1.0.24-5 +- fix issues found during static code check + +* Tue Oct 29 2013 Nils Philippsen - 1.0.24-4 +- fix crash in pixma driver (#1021653) + +* Thu Oct 24 2013 Nils Philippsen - 1.0.24-3 +- generate hwdb files correctly (#1018565) + +* Wed Oct 16 2013 Nils Philippsen - 1.0.24-2 +- update udev hwdb on installation/removal + +* Wed Oct 09 2013 Nils Philippsen - 1.0.24-1 +- version 1.0.24 +- use (hopefully stable) Alioth download URL +- update udev patch, remove obsolete patches +- use udev hwdb instead of huge rulesets + +* Mon Sep 09 2013 Nils Philippsen - 1.0.23-18 +- build against libusb-1.0 on Fedora >= 18 (#1003193) +- require libusbx-devel instead of libusb1-devel which is obsolete + +* Wed Sep 04 2013 Hans de Goede - 1.0.23-17 +- Really build against libusb-1.0 on Fedora >= 19 (#1003193) + +* Wed Sep 04 2013 Nils Philippsen - 1.0.23-16 +- don't drag around obsoletes forever (#1002141) + +* Wed Aug 07 2013 Nils Philippsen - 1.0.23-15 +- use unversioned docdir from Fedora 20 on (#994067) + +* Sun Aug 04 2013 Fedora Release Engineering - 1.0.23-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Fri Jul 12 2013 Nils Philippsen - 1.0.23-13 +- fix crash in genesys (gl646) backend (#983694) + +* Mon Jul 08 2013 Nils Philippsen - 1.0.23-12 +- describe missing flag "-b" in scanimage man page +- add short help message to saned +- fix bogus changelog dates + +* Tue Jun 25 2013 Nils Philippsen - 1.0.23-11 +- move documentation into separate doc subpackage (#977653) +- remove ancient, unneeded obsoletes and conflicts + +* Mon Jun 24 2013 Nils Philippsen - 1.0.23-10 +- move some documentation to devel subpackage (#977103) + +* Thu Jun 13 2013 Nils Philippsen - 1.0.23-10 +- don't ignore libsane-gphoto2.so + +* Fri Apr 19 2013 Nils Philippsen - 1.0.23-9 +- use libusb1 instead of libusb from F-19 on + +* Thu Apr 18 2013 Nils Philippsen - 1.0.23-8 +- fix building with -fno-strict-aliasing + +* Fri Feb 01 2013 Nils Philippsen - 1.0.23-7 +- filter out backend driver provides/requires +- update latex build dep +- umax: initialize reader_pid early in sane_start() (#853667) +- coolscan2/3: support multi-scan option of some devices + +* Mon Jan 21 2013 Adam Tkac - 1.0.23-6 +- rebuild due to "jpeg8-ABI" feature drop + +* Fri Dec 21 2012 Adam Tkac - 1.0.23-5 +- rebuild against new libjpeg + +* Mon Sep 10 2012 Nils Philippsen - 1.0.23-3 +- udev: set up for generic user access rules, improve paths and dependencies + +* Tue Sep 04 2012 Nils Philippsen - 1.0.23-2 +- make installed sane-config multi-lib aware again + +* Fri Aug 31 2012 Nils Philippsen - 1.0.23-1 +- version 1.0.23 +- update udev patch, remove obsolete patches +- use %%_hardened_build macro from F-16 on instead of tweaking flags manually +- don't use the same SONAME for backend libs and main lib + +* Sat Jul 21 2012 Fedora Release Engineering - 1.0.22-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Wed Jul 11 2012 Rex Dieter 1.0.22-12 +- rebuild (gphoto2) + +* Wed Jun 06 2012 Nils Philippsen - 1.0.22-11 +- multilib: enable -devel quirk regardless of version until a fixed mash gets + into production (#829268) + +* Tue Apr 17 2012 Nils Philippsen - 1.0.22-10 +- fix avision device initialization (#706877) + +* Tue Jan 10 2012 Nils Philippsen - 1.0.22-9 +- rebuild for gcc 4.7 + +* Wed Jan 04 2012 Nils Philippsen - 1.0.22-8 +- fix Lexmark X1100 (#753489) + +* Mon Nov 28 2011 Peter Robinson - 1.0.22-7 +- libs shouldn't depends on base package. Properly fix #736310 +- base package should obsolete -docs as it provides them not -libs +- update spec to current standard + +* Fri Nov 18 2011 Nils Philippsen - 1.0.22-6 +- avision: reenable grayscale and lineart modes for AV220 (#700725) + +* Mon Oct 10 2011 Nils Philippsen - 1.0.22-5 +- multilib: let -devel depend on -drivers-* on F-16 and earlier (#740992) +- multilib: make -drivers-scanners obsolete old -libs as well + +* Fri Sep 16 2011 Nils Philippsen - 1.0.22-4 +- multilib: always use pkg-config in sane-config (#707910) +- add USB id for Epson Stylus SX125 (#703529) + +* Thu Sep 15 2011 Nils Philippsen - 1.0.22-4 +- allow installing the libraries without the drivers (#736310): split off + drivers into -drivers-scanners, rename -libs-gphoto2 to -drivers-cameras + +* Tue May 10 2011 Nils Philippsen - 1.0.22-3 +- fix detection/handling of USB devices in xerox_mfp (#702983) + +* Tue Apr 19 2011 Nils Philippsen - 1.0.22-2 +- remove obsolete lockdir, automake patches + +* Wed Mar 16 2011 Nils Philippsen - 1.0.22-1 +- version 1.0.22 +- remove obsolete i18n, xerox-mfp-color-mode, epson2-fixes, open-macro patches +- update pkgconfig, udev, docs-utf8, v4l, man-encoding patches +- submit patches upstream where this is applicable, add comments +- manually install pkg-config file + +* Wed Mar 09 2011 Dan Horák - 1.0.21-8 +- updated for newer libv4l + +* Wed Feb 09 2011 Fedora Release Engineering - 1.0.21-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Tue Feb 08 2011 Nils Philippsen - 1.0.21-6 +- backport fixes for epson2 backend (#667858, #671534) + +* Tue Nov 23 2010 Nils Philippsen - 1.0.21-5 +- build mustek_usb2 backend again, enable use of libpthread (#603321) + +* Mon Nov 08 2010 Nils Philippsen +- let sane-backends require arch-specific version/release of -libs (#621217) + +* Wed Nov 03 2010 Nils Philippsen - 1.0.21-4 +- xerox_mfp: correct color mode malfunction (#614949) +- xerox_mfp: add USB id for SCX-4500W (#614948) + +* Fri Jun 25 2010 Nils Philippsen - 1.0.21-3 +- build with -fno-strict-aliasing +- use PIC/PIE because SANE-enabled software is likely to deal with data coming + from untrusted sources (client <-> saned via network) + +* Mon Jun 07 2010 Nils Philippsen +- rectify devel subpackage description + +* Wed Jun 02 2010 Nils Philippsen - 1.0.21-2 +- fix pkgconfig file (#598401) + +* Wed May 05 2010 Nils Philippsen - 1.0.21-1 +- version 1.0.21 +- remove obsolete rpath, hal, genesys-gl841-registers patches +- update pkgconfig, udev, man-utf8->man-encoding, epson-expression800, + docs-utf8 patches +- remove hal conditional +- package man pages + +* Fri Feb 26 2010 Nils Philippsen - 1.0.20-12 +- convert some documentation files to UTF-8 +- fix permissions of pkgconfig file + +* Tue Dec 29 2009 Nils Philippsen - 1.0.20-11 +- genesys_gl841: always send registers before trying to acquire a line + (#527935) + +* Mon Dec 28 2009 Nils Philippsen +- build v4l backend (#550119) +- don't use lockdir, fix make install + +* Thu Oct 22 2009 Nils Philippsen - 1.0.20-10 +- don't set owner, group or mode as this may interfere with setting ACLs + +* Thu Oct 22 2009 Nils Philippsen - 1.0.20-9 +- fix device file ownership and mode + +* Thu Oct 22 2009 Nils Philippsen - 1.0.20-8 +- ship adapted udev rules from F-12 on (#512516) +- don't require pam anymore + +* Mon Aug 31 2009 Nils Philippsen - 1.0.20-7 +- fix --enable-rpath + +* Mon Aug 03 2009 Nils Philippsen - 1.0.20-6 +- remove ExcludeArch: s390 s390x + +* Sun Jul 26 2009 Fedora Release Engineering - 1.0.20-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Jun 22 2009 Nils Philippsen - 1.0.20-4 +- separate HAL information and policy files (#457645) + +* Thu Jun 18 2009 Nils Philippsen +- mark /etc/sane.d/dll.d as %%dir, not %%config + +* Wed Jun 17 2009 Nils Philippsen - 1.0.20-3 +- disable rpath +- make sane-config multilib-aware + +* Wed Jun 17 2009 Nils Philippsen - 1.0.20-2 +- fix permissions for Epson Expression 800 (#456656) + +* Tue Jun 16 2009 Nils Philippsen - 1.0.20-1 +- version 1.0.20 +- rebase/remove patches +- use %%_isa for arch-specific requirements +- place HAL fdi files in the correct place (#457645) + +* Sun Jun 14 2009 Michael Schwendt - 1.0.19-16 +- Don't claim ownership of %%_libdir/pkgconfig/ (#499659) + +* Mon Mar 02 2009 Nils Philippsen - 1.0.19-15 +- let sane-backends-devel require libjpeg-devel, libtiff-devel +- update rpath patch (no longer touch sane-config.in as that is replaced + anyway) +- fix pkgconfig patch, bzip2 it + +* Fri Feb 27 2009 Nils Philippsen - 1.0.19-14 +- fix pkgconfig files + +* Wed Feb 25 2009 Nils Philippsen - 1.0.19-13 +- drop acinclude patch to not unnecessarily rebuild autoconf/libtool files + which made libtool break builds on Rawhide +- use "make DESTDIR=... install" instead of "%%makeinstall" + +* Thu Sep 4 2008 Tom "spot" Callaway - 1.0.19-12 +- fix license tag + +* Wed Sep 03 2008 Nils Philippsen - 1.0.19-11 +- update glibc-2.7 patch to apply without fuzz + +* Thu Mar 27 2008 Nils Philippsen - 1.0.19-10 +- rename 60-libsane.fdi to 19-libsane.fdi so that hal-acl-tool callouts get + added (#438827) + +* Wed Mar 26 2008 Nils Philippsen - 1.0.19-9 +- cope with info.subsystem from new HAL versions as well as info.bus (#438827) + +* Fri Mar 14 2008 Nils Philippsen - 1.0.19-8 +- add arch-specific provides/requires to/for libs-gphoto2 subpackage (#436657) + +* Mon Mar 10 2008 Nils Philippsen - 1.0.19-7 +- remove ancient sane-devel obsoletes/provides +- remove libs/doc/gphoto2 conditionals +- fix build root +- add arch-specific provides/requires (#436657) + +* Tue Feb 19 2008 Nils Philippsen - 1.0.19-6 +- move libsane-gphoto2.so into -libs-gphoto2 +- recode spec file to UTF-8 + +* Thu Feb 14 2008 Nils Philippsen - 1.0.19-5 +- replace string-oob patch with uninitialized patch by upstream which covers + more backends + +* Thu Feb 14 2008 Nils Philippsen - 1.0.19-4 +- guard against out-of-bounds string access in fujitsu backend (#429338, patch + by Caolan McNamara) + +* Wed Feb 13 2008 Nils Philippsen - 1.0.19-3 +- add HAL policy for SCSI scanners + +* Tue Feb 12 2008 Nils Philippsen - 1.0.19-2 +- add files missing from CVS to make autoconf work + +* Tue Feb 12 2008 Nils Philippsen - 1.0.19-1 +- version 1.0.19 final + +* Wed Feb 06 2008 Nils Philippsen - 1.0.19-0.1.cvs20080206 +- cvs snapshot 20080206 +- handle access control through hal/PolicyKit instead of udev (#405211) +- drop obsolete badcode, logical_vs_binary, epson-cx5000, multilib, usb_reset, + udev-symlink, udev-098 patches +- update pkgconfig patch + +* Wed Jan 30 2008 Nils Philippsen - 1.0.18-21 +- don't require libsane-hpaio (#430834) +- use %%bcond_without/with macros + +* Fri Dec 07 2007 Jesse Keating - 1.0.18-20 +- undo bootstrap setting now that hplip built. + +* Fri Dec 07 2007 Release Engineering - 1.0.18-19 +- do a bootstrap build without hplip requirements + +* Wed Nov 07 2007 Nils Philippsen - 1.0.18-18 +- move backend .so files out of -devel into main package (#209389) + +* Tue Oct 02 2007 Nils Philippsen - 1.0.18-17 +- disable pint backend (which doesn't build without some BSD specific headers) + +* Tue Oct 02 2007 Nils Philippsen - 1.0.18-16 +- enable dell1600n_net (#314081) and pint backends + +* Wed Aug 15 2007 Nils Philippsen - 1.0.18-15 +- enable support for Epson CX-5000 + +* Wed Aug 08 2007 Nils Philippsen - 1.0.18-14 +- make udev rules more robust (#243953) +- bring code in shape for glibc-2.7 + +* Wed Jul 25 2007 Jeremy Katz - 1.0.18-13 +- rebuild for toolchain bug + +* Tue Jul 24 2007 Nils Philippsen - 1.0.18-12 +- fix typo in spec file + +* Tue Jul 24 2007 Nils Philippsen - 1.0.18-11 +- work around udev regexes not matching as they should (#244444) + +* Sun Jul 22 2007 Nils Philippsen - 1.0.18-10 +- tweak udev rules generation (#244444) + +* Fri Jul 20 2007 Nils Philippsen - 1.0.18-9 +- don't tweak device names in device configuration files anymore (obsolete) +- let udev rules cope with SUBSYSTEM=="usb" (#244444) +- tweak-udev-rules patch is udev-098 patch now + +* Thu Jul 05 2007 Nils Philippsen - 1.0.18-8 +- tweak udev rules to conform with new udev syntax (#246849) + +* Fri Jun 15 2007 Nils Philippsen - 1.0.18-7 +- call usb_reset() prior to usb_close() to workaround hanging USB hardware + (#149027, #186766) + +* Tue Apr 24 2007 Nils Philippsen - 1.0.18-6 +- don't erroneously use logical "&&" instead of binary "&" at some places in + the canon driver + +* Fri Oct 13 2006 Nils Philippsen - 1.0.18-5 +- use %%rhel, not %%redhat + +* Fri Oct 13 2006 Nils Philippsen - 1.0.18-4 +- don't ship generated docs in -libs but main package (#210572) + +* Sun Sep 17 2006 Warren Togami - 1.0.18-3 +- -devel req exact version-release + +* Fri Sep 08 2006 Nils Philippsen - 1.0.18-2 +- remove unneeded programs subpackage +- clean up docs vs. libs pkg split, mark documentation as %%doc + +* Mon Jul 24 2006 Nils Philippsen - 1.0.18-1 +- version 1.0.18 +- unify spec file between OS releases +- update rpath patch +- remove obsolete newmodels patch +- use *.desc created udev rules + +* Wed Jul 12 2006 Jesse Keating - 1.0.17-13.1 +- rebuild + +* Fri Jun 09 2006 Nils Philippsen 1.0.17-13 +- split package into sane-backends, -devel, -libs, -programs to work around + multilib issues (#135172) + +* Wed Jun 07 2006 Nils Philippsen 1.0.17-12 +- require libsane-hpaio to work around #165751 + +* Tue Jun 06 2006 Nils Philippsen 1.0.17-11 +- add BuildRequires: gettext (#194163) + +* Wed May 17 2006 Nils Philippsen 1.0.17-10 +- add pkg-config support, re-write sane-config to use pkg-config to avoid + multilib problems with conflicting sane-config scripts + +* Tue Apr 25 2006 Nils Philippsen 1.0.17-9 +- add support for Canon Lide 60 scanner (#189726) + +* Wed Apr 05 2006 Nils Philippsen 1.0.17-8 +- don't use automake + +* Tue Apr 04 2006 Nils Philippsen +- require gphoto2-devel in sane-backends-devel + +* Fri Mar 24 2006 Nils Philippsen 1.0.17-7 +- don't include *.la files + +* Thu Mar 23 2006 Than Ngo 1.0.17-6 +- rebuild against gphoto2 to get rid of gphoto2.la + +* Tue Mar 14 2006 Nils Philippsen - 1.0.17-5 +- buildrequire automake, autoconf, libtool (#178596) +- don't require /sbin/ldconfig, /bin/mktemp, /bin/grep, /bin/cat, /bin/rm + +* Wed Feb 22 2006 Nils Philippsen - 1.0.17-4 +- split off generated documentation into separate subpackage to avoid conflicts + on multilib systems + +* Fri Feb 10 2006 Jesse Keating - 1.0.17-3.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1.0.17-3.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Wed Jan 25 2006 Bill Nottingham 1.0.17-3 +- ship udev rules for device creation (#177650). Require udev + +* Sun Jan 22 2006 Bill Nottingham 1.0.17-2 +- disable hotplug dep. More later pending (#177650) + +* Tue Dec 20 2005 Nils Philippsen 1.0.17-1 +- version 1.0.17 +- reenable gphoto2 backend + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Sat Oct 15 2005 Florian La Roche +- rebuild + +* Fri Aug 19 2005 Nils Philippsen 1.0.16-1 +- version 1.0.16 +- remove obsolete docdir patch + +* Mon Jul 25 2005 Tim Waugh +- Fixed libusbscanner comment (bug #162983). + +* Wed Mar 2 2005 Tim Waugh 1.0.15-9 +- Rebuild for new GCC. + +* Fri Dec 10 2004 Tim Waugh 1.0.15-8 +- Further small fixes to libusbscanner script. + +* Fri Dec 3 2004 Tim Waugh +- Ship the correct libsane.usermap (part of bug #135802). + +* Wed Dec 1 2004 Tim Waugh +- No longer need ep2400 patch. + +* Tue Nov 30 2004 Tim Waugh 1.0.15-7 +- Updated libusbscanner script from Tomas Mraz, to use pam_console_apply. +- Requires pam >= 0.78-2 for targetted pam_console_apply. + +* Thu Nov 25 2004 Tim Waugh 1.0.15-6 +- Random changes in libusbscanner. + +* Tue Nov 23 2004 Tim Waugh 1.0.15-5 +- libusbscanner: Create /dev/usb if it doesn't exist after 30s. + +* Mon Nov 22 2004 Tim Waugh 1.0.15-4 +- Attempt to be more useful in libusbscanner by waiting a maximum of 30 + seconds. +- Add a chcon call to libusbscanner (bug #140059). Based on contribution + from W. Michael Petullo. + +* Sat Nov 20 2004 Miloslav Trmac - 1.0.15-3 +- Convert man pages to UTF-8 + +* Tue Nov 16 2004 Tim Waugh +- Require hotplug's remover to work. + +* Tue Nov 16 2004 Tim Waugh 1.0.15-2 +- Applied the libusbscanner part of the patch for bug #121511, by Ian + Pilcher. + +* Mon Nov 8 2004 Tim Waugh 1.0.15-1 +- 1.0.15. + +* Sun Oct 10 2004 Tim Waugh 1.0.14-6 +- Make man pages identical on multilib installations. + +* Thu Oct 7 2004 Tim Waugh 1.0.14-5 +- Build requires libjpeg-devel (bug #134964). + +* Thu Aug 26 2004 Tim Waugh 1.0.14-4 +- Apply patch from David Zeuthen to fix hotplug script (bug #130755). + +* Mon Aug 9 2004 Tim Waugh 1.0.14-3 +- Mark config files noreplace. + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Wed Jun 2 2004 Tim Waugh 1.0.14-1 +- 1.0.14. + +* Wed May 12 2004 Tim Waugh +- s/ftp.mostang.com/ftp.sane-project.org/. + +* Fri May 7 2004 Tim Waugh 1.0.13-7 +- Fix epson.conf for USB scanners (bug #122328). + +* Tue May 4 2004 Tim Waugh 1.0.13-6 +- Ship libusb.usermap (from sane-backends-1.0.14) and a pam_console-aware + libusbscanner script. +- Fix epson.conf for Epson Perfection 2400 (bug #122328). + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Thu Feb 5 2004 Tim Waugh 1.0.13-4 +- Fixed compilation with GCC 3.4. + +* Mon Dec 15 2003 Tim Waugh 1.0.13-3 +- Take %%{_libdir}/sane out of ldconfig's search path altogether (Oliver + Rauch). + +* Tue Nov 25 2003 Thomas Woerner 1.0.13-2 +- no rpath in sane-config anymore + +* Sun Nov 23 2003 Tim Waugh 1.0.13-1 +- 1.0.13. +- No longer need autoload, gt68xx patches. + +* Thu Nov 20 2003 Tim Waugh 1.0.12-6 +- Don't add %%{_libdir}/sane to ld.so.conf (bug #110419). + +* Tue Nov 11 2003 Tim Waugh 1.0.12-5 +- Updated gt68xx driver to fix timeout problems. + +* Wed Oct 8 2003 Tim Waugh +- Avoided undefined behaviour in canon-sane.c (bug #106305). + +* Mon Sep 29 2003 Tim Waugh +- Updated URL. + +* Thu Jul 24 2003 Tim Waugh 1.0.12-4 +- The devel package requires libieee1284-devel. + +* Mon Jun 16 2003 Tim Waugh 1.0.12-3 +- Use libtoolize and aclocal to fix build. +- Build requires libieee1284-devel (to fix bug #75849). + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Sun May 25 2003 Tim Waugh 1.0.12-1 +- 1.0.12. + +* Thu Mar 20 2003 Tim Waugh 1.0.11-1 +- Shipped libtool is broken; use installed script instead. +- Remove files not shipped. +- Fix some /usr/lib references. +- 1.0.11. +- Drop sane-sparc, errorchk, hp101, security patches. +- Update rpath, docdir patches. +- Use %%find_lang. + +* Fri Mar 7 2003 Tim Waugh +- sane-backends-devel requires libusb-devel (bug #85742). + +* Mon Feb 10 2003 Tim Waugh 1.0.9-5 +- Fix saned problems. + +* Wed Jan 22 2003 Tim Powers 1.0.9-4 +- rebuilt + +* Thu Jan 16 2003 Tim Waugh 1.0.9-3 +- hp-backend 1.01 for 'error during device I/O' workaround (bug #81835). + +* Thu Jan 9 2003 Tim Waugh 1.0.9-2 +- Better error checking in the Canon backend (bug #81332). + +* Fri Oct 25 2002 Tim Waugh 1.0.9-1 +- 1.0.9. + +* Wed Oct 23 2002 Tim Waugh 1.0.8-6 +- Ship the installed documentation. +- Move sane-config to the devel subpackage (bug #68454). + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Fri Jun 21 2002 Tim Waugh 1.0.8-4 +- Fix bug #62847. + +* Tue Jun 18 2002 Tim Waugh 1.0.8-3 +- Fix dangling symlink (bug #66672). + +* Wed Jun 12 2002 Tim Waugh 1.0.8-2 +- Don't tell SANE applications to use rpath (bug #66129, bug #66132). + +* Mon May 27 2002 Tim Waugh 1.0.8-1 +- 1.0.8. + +* Wed May 22 2002 Tim Waugh 1.0.8-0.20020522.1 +- Update to CVS. Release expected before the end of the month. +- No longer need defaultincl or argv patches. + +* Wed May 15 2002 Tim Waugh 1.0.7-7 +- Unconditionally run ldconfig after installation (bug #64964). + +* Mon Mar 4 2002 Tim Waugh 1.0.7-6 +- Re-apply the original 1.0.7-4 fix (oops): + - Make sure to load SCSI modules if not already loaded (bug #59979). + +* Mon Mar 4 2002 Tim Powers 1.0.7-5 +- bump release number, wasn't bumped last time + +* Mon Mar 4 2002 Tim Waugh 1.0.7-4 +- Update sparc patch (Tom "spot" Callaway). + +* Thu Feb 21 2002 Tim Waugh 1.0.7-3 +- Rebuild in new environment. +- Disable bad stdarg code in scanimage so that alpha builds succeed. + +* Mon Feb 11 2002 Tim Waugh 1.0.7-2 +- Make sure sane-config doesn't specify the default include path + (bug #59507). + +* Mon Feb 4 2002 Tim Waugh 1.0.7-1 +- 1.0.7. + +* Sun Jan 27 2002 Tim Waugh 1.0.7-0.beta2.1 +- 1.0.7-beta2. + +* Wed Jan 23 2002 Tim Waugh 1.0.7-0.beta1.1 +- 1.0.7-beta1. +- Patches no longer needed: scsi, microtek2, format. + +* Wed Jan 09 2002 Tim Powers 1.0.6-4 +- automated rebuild + +* Wed Nov 21 2001 Tim Waugh 1.0.6-3 +- Fix default file names format in batch scans (bug #56542). + +* Tue Nov 20 2001 Tim Waugh 1.0.6-2 +- Apply Maurice Hilarius's patch to avoid kill(-1,SIGTERM) (bug #56540). + +* Mon Nov 5 2001 Tim Waugh 1.0.6-1 +- 1.0.6. + +* Fri Jul 20 2001 Florian La Roche 1.0.5-4 +- exclude s390, s390x + +* Tue Jul 17 2001 Preston Brown 1.0.5-3 +- sane.png included + +* Tue Jul 10 2001 Tim Waugh 1.0.5-2 +- sane-backends-devel provides sane-devel. + +* Sun Jul 1 2001 Tim Waugh 1.0.5-1 +- 1.0.5. + +* Wed Jun 20 2001 Tim Waugh 1.0.5-0.20010620.0 +- 2001-06-20 CVS update. PreReq /bin/cat, /bin/rm. + +* Mon Jun 11 2001 Tim Waugh 1.0.5-0.20010610 +- 2001-06-10 CVS snapshot. umax_pp update from CVS again to fix more + build problems. + +* Sun Jun 3 2001 Tim Waugh 1.0.5-0.20010603.1000 +- 2001-06-03 CVS snapshot (10:00). Fixes umax_pp build problems. + +* Sat Jun 2 2001 Tim Waugh 1.0.5-0.20010530 +- sane-backends (sane-frontends is in a separate package now). +- 2001-05-30 CVS snapshot. +- include.patch no longer needed. +- sg3timeout.patch no longer needed. + +* Mon Jan 22 2001 Bernhard Rosenkraenzer 1.0.3-10 +- Fix up the libtool config file /usr/lib/libsane.la + kscan should build now. ;) + +* Wed Jan 10 2001 Tim Waugh +- Increase timeout for SCSI commands sent via sg driver version 3 + (bug #23447) + +* Mon Dec 25 2000 Matt Wilson +- rebuilt against gimp 1.2.0 + +* Thu Dec 21 2000 Matt Wilson +- rebuilt against gimp 1.1.32 +- use -DGIMP_ENABLE_COMPAT_CRUFT=1 to build with compat macros + +* Mon Dec 18 2000 Matt Wilson +- rebuilt against gimp 1.1.30 + +* Fri Dec 1 2000 Tim Waugh +- Rebuild because of fileutils bug. + +* Thu Oct 26 2000 Bill Nottingham +- fix provides for ia64/sparc64 + +* Tue Aug 29 2000 Trond Eivind Glomsrød +- don't include xscanimage desktop entry - it's a gimp + plugin. Doh. (part of #17076) +- add tetex-latex as a build requirement + +* Wed Aug 23 2000 Matt Wilson +- built against gimp 1.1.25 + +* Tue Aug 22 2000 Preston Brown +- 1.0.3 bugfix release (#16726) +- rev patch removed, no longer needed + +* Tue Aug 15 2000 Than Ngo +- add triggerpostun to fix removing path from ld.so.conf at update + +* Fri Aug 4 2000 Bernhard Rosenkraenzer +- Add Swedish and German translations to desktop file, Bug #15317 + +* Sun Jul 23 2000 Nalin Dahyabhai +- use mktemp in post and postun scripts +- fix incorrect usage of rev in backend/Makefile + +* Wed Jul 19 2000 Trond Eivind Glomsrød +- workarounds for weird bug (all so-files had names with "s=" + - except for sparc which has just "=" and IA64 which works) + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Mon Jul 3 2000 Matt Wilson +- rebuilt against gimp-1.1.24 + +* Tue Jun 13 2000 Preston Brown +- FHS paths +- work around ICE on intel. FIX ME! + +* Mon May 22 2000 Tim Powers +- rebuilt w/ glibc-2.1.90 + +* Thu May 18 2000 Tim Powers +- updated to 1.0.2 + +* Wed Jul 21 1999 Tim Powers +- rebuilt for 6.1 + +* Tue May 11 1999 Bill Nottingham +- make it play nice with xsane, add ld.so.conf entries + +* Wed Apr 21 1999 Bill Nottingham +- update to 1.0.1 + +* Tue Oct 13 1998 Michael Maher +- updated package + +* Thu May 21 1998 Cristian Gafton +- upgraded to 0.73 + +* Tue Jan 27 1998 Otto Hammersmith +- umax drivers were missing from the file list. + +* Sun Dec 7 1997 Otto Hammersmith +- added wmconfig +- fixed library problem + +* Tue Dec 2 1997 Otto Hammersmith +- added changelog +- got newer package from Sane web site than our old powertools one