summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2023-02-16 10:20:08 +0100
committerJörg Frings-Fürst <debian@jff.email>2023-02-16 10:20:08 +0100
commit778ebf8ee9cb22ea5727844333bcd5a6ee6bc0de (patch)
treea754e785b286ed82b45fe4e50b980714ad80e0a7
parent7d8aac1f3634dc58785bec7acf097dd6bac8c394 (diff)
parent32cb765f681299af226ca0520993cbe47ba5ecd0 (diff)
Merge branch 'release/debian/1.2.1-1'debian/1.2.1-1
-rw-r--r--.gitignore2
-rw-r--r--.gitlab-ci.yml35
-rw-r--r--ChangeLogs/ChangeLog-1.0.271192
-rw-r--r--ChangeLogs/ChangeLog-1.0.281662
-rw-r--r--ChangeLogs/ChangeLog-1.0.297781
-rw-r--r--ChangeLogs/ChangeLog-1.0.30196
-rw-r--r--ChangeLogs/ChangeLog-1.0.317289
-rw-r--r--ChangeLogs/ChangeLog-1.0.322438
-rw-r--r--ChangeLogs/ChangeLog-1.1.12041
-rw-r--r--NEWS82
-rw-r--r--acinclude.m424
-rw-r--r--backend/Makefile.am80
-rw-r--r--backend/abaton.c18
-rw-r--r--backend/agfafocus.c10
-rw-r--r--backend/apple.c14
-rw-r--r--backend/artec.c4
-rw-r--r--backend/artec_eplus48u.c11
-rw-r--r--backend/avision.c555
-rw-r--r--backend/avision.h25
-rw-r--r--backend/bh.c15
-rw-r--r--backend/canon-sane.c29
-rw-r--r--backend/canon.c22
-rw-r--r--backend/canon630u-common.c13
-rw-r--r--backend/canon630u.c56
-rw-r--r--backend/canon_dr-cmd.h65
-rw-r--r--backend/canon_dr.c937
-rw-r--r--backend/canon_dr.conf.in4
-rw-r--r--backend/canon_dr.h81
-rw-r--r--backend/canon_lide70-common.c2
-rw-r--r--backend/canon_lide70.c10
-rw-r--r--backend/canon_pp-io.c4
-rw-r--r--backend/canon_pp.c25
-rw-r--r--backend/cardscan.c4
-rw-r--r--backend/coolscan.c14
-rw-r--r--backend/coolscan2.c15
-rw-r--r--backend/coolscan3.c15
-rw-r--r--backend/dc25.c45
-rw-r--r--backend/dell1600n_net.c10
-rw-r--r--backend/dll.c6
-rw-r--r--backend/dmc.c12
-rw-r--r--backend/epjitsu.c121
-rw-r--r--backend/epson.c12
-rw-r--r--backend/epson2.c17
-rw-r--r--backend/epson2_net.c10
-rw-r--r--backend/epson2_scsi.c4
-rw-r--r--backend/epson_scsi.c4
-rw-r--r--backend/epsonds-cmd.c6
-rw-r--r--backend/epsonds-net.c12
-rw-r--r--backend/epsonds.c6
-rw-r--r--backend/escl/escl.c97
-rw-r--r--backend/escl/escl.h3
-rw-r--r--backend/escl/escl_capabilities.c11
-rw-r--r--backend/escl/escl_devices.c77
-rw-r--r--backend/escl/escl_newjob.c85
-rw-r--r--backend/escl/escl_pdf.c51
-rw-r--r--backend/escl/escl_scan.c1
-rw-r--r--backend/escl/escl_tiff.c14
-rw-r--r--backend/fujitsu-scsi.h9
-rw-r--r--backend/fujitsu.c56
-rw-r--r--backend/fujitsu.conf.in36
-rw-r--r--backend/fujitsu.h2
-rw-r--r--backend/genesys.conf.in3
-rw-r--r--backend/genesys/fwd.h2
-rw-r--r--backend/genesys/genesys.cpp226
-rw-r--r--backend/genesys/genesys.h8
-rw-r--r--backend/genesys/gl124.cpp37
-rw-r--r--backend/genesys/gl124.h4
-rw-r--r--backend/genesys/gl646.cpp68
-rw-r--r--backend/genesys/gl646.h4
-rw-r--r--backend/genesys/gl841.cpp119
-rw-r--r--backend/genesys/gl841.h4
-rw-r--r--backend/genesys/gl842.cpp21
-rw-r--r--backend/genesys/gl842.h4
-rw-r--r--backend/genesys/gl843.cpp51
-rw-r--r--backend/genesys/gl843.h4
-rw-r--r--backend/genesys/gl846.cpp32
-rw-r--r--backend/genesys/gl846.h4
-rw-r--r--backend/genesys/gl847.cpp77
-rw-r--r--backend/genesys/gl847.h4
-rw-r--r--backend/genesys/image.h2
-rw-r--r--backend/genesys/image_pipeline.cpp2
-rw-r--r--backend/genesys/image_pixel.h2
-rw-r--r--backend/genesys/low.cpp110
-rw-r--r--backend/genesys/low.h37
-rw-r--r--backend/genesys/scanner_interface_usb.cpp6
-rw-r--r--backend/genesys/serialize.cpp0
-rw-r--r--backend/genesys/serialize.h2
-rw-r--r--backend/genesys/tables_model.cpp11
-rw-r--r--backend/genesys/test_scanner_interface.cpp4
-rw-r--r--backend/gt68xx_low.c4
-rw-r--r--backend/hp.c10
-rw-r--r--backend/hp3500.c11
-rw-r--r--backend/hp3900_config.c78
-rw-r--r--backend/hp3900_debug.c18
-rw-r--r--backend/hp3900_rts8822.c24
-rw-r--r--backend/hp3900_sane.c18
-rw-r--r--backend/hp4200.c12
-rw-r--r--backend/hp5400_internal.c8
-rw-r--r--backend/hp5400_sane.c10
-rw-r--r--backend/hp5590_low.c5
-rw-r--r--backend/hs2p.c6
-rw-r--r--backend/ibm.c3
-rw-r--r--backend/kodak-cmd.h12
-rw-r--r--backend/kodak.c10
-rw-r--r--backend/kodakaio.c8
-rw-r--r--backend/kvs1025.c8
-rw-r--r--backend/kvs20xx_opt.c5
-rw-r--r--backend/kvs40xx.c9
-rw-r--r--backend/kvs40xx_opt.c5
-rw-r--r--backend/lexmark_low.c24
-rw-r--r--backend/ma1509.c2
-rw-r--r--backend/magicolor.c2
-rw-r--r--backend/microtek.c36
-rw-r--r--backend/microtek2.c122
-rw-r--r--backend/microtek2.h2
-rw-r--r--backend/mustek.c95
-rw-r--r--backend/mustek_usb2.c12
-rw-r--r--backend/mustek_usb2_asic.c414
-rw-r--r--backend/mustek_usb2_asic.h179
-rw-r--r--backend/mustek_usb2_high.c54
-rw-r--r--backend/mustek_usb2_reflective.c40
-rw-r--r--backend/mustek_usb2_transparent.c22
-rw-r--r--backend/mustek_usb_high.c4
-rw-r--r--backend/nec.c16
-rw-r--r--backend/net.c18
-rw-r--r--backend/niash.c2
-rw-r--r--backend/p5.c8
-rw-r--r--backend/p5_device.c248
-rw-r--r--backend/pie-scsidef.h9
-rw-r--r--backend/pie.c3
-rw-r--r--backend/pieusb.c4
-rw-r--r--backend/pieusb_scancmd.c3
-rw-r--r--backend/pieusb_specific.c6
-rw-r--r--backend/pixma/pixma.c2
-rw-r--r--backend/pixma/pixma_bjnp.c2
-rw-r--r--backend/pixma/pixma_common.c2
-rw-r--r--backend/pixma/pixma_imageclass.c23
-rw-r--r--backend/pixma/pixma_mp150.c61
-rw-r--r--backend/pixma/pixma_mp730.c26
-rw-r--r--backend/plustek-pp.h9
-rw-r--r--backend/plustek-pp_dbg.h11
-rw-r--r--backend/plustek-pp_detect.c25
-rw-r--r--backend/plustek-pp_hwdefs.h13
-rw-r--r--backend/plustek-pp_image.c4
-rw-r--r--backend/plustek-pp_io.c63
-rw-r--r--backend/plustek-pp_misc.c435
-rw-r--r--backend/plustek-pp_motor.c10
-rw-r--r--backend/plustek-pp_p12.c2
-rw-r--r--backend/plustek-pp_p48xx.c6
-rw-r--r--backend/plustek-pp_procs.h17
-rw-r--r--backend/plustek-pp_ptdrv.c703
-rw-r--r--backend/plustek-pp_scan.h47
-rw-r--r--backend/plustek-pp_scandata.h10
-rw-r--r--backend/plustek-usbshading.c2
-rw-r--r--backend/qcam.c32
-rw-r--r--backend/ricoh.c15
-rw-r--r--backend/rts8891.c21
-rw-r--r--backend/s9036.c16
-rw-r--r--backend/sm3600-scanusb.c6
-rw-r--r--backend/sm3600.c6
-rw-r--r--backend/sm3840.c9
-rw-r--r--backend/sm3840_lib.c15
-rw-r--r--backend/sm3840_lib.h10
-rw-r--r--backend/snapscan-options.c8
-rw-r--r--backend/snapscan-scsi.c3
-rw-r--r--backend/sp15c-scsi.h9
-rw-r--r--backend/sp15c.c24
-rw-r--r--backend/st400.c8
-rw-r--r--backend/stv680.c14
-rw-r--r--backend/tamarack.c8
-rw-r--r--backend/test-picture.c99
-rw-r--r--backend/test.c172
-rw-r--r--backend/test.h5
-rw-r--r--backend/umax-scsidef.h2
-rw-r--r--backend/umax-usb.c6
-rw-r--r--backend/umax1220u.c44
-rw-r--r--backend/umax_pp_low.c378
-rw-r--r--backend/v4l.c4
-rw-r--r--backend/xerox_mfp.c45
-rw-r--r--backend/xerox_mfp.conf.in3
-rw-r--r--backend/xerox_mfp.h2
-rw-r--r--configure.ac61
-rw-r--r--debian/NEWS14
-rw-r--r--debian/changelog30
-rw-r--r--debian/control4
-rw-r--r--debian/copyright8
-rw-r--r--debian/libsane-common.maintscript1
-rw-r--r--debian/libsane1.NEWS19
-rw-r--r--debian/patches/0011-test.patch34
-rw-r--r--debian/patches/0035-trim-libraries-in-sane-backends.pc.in.patch24
-rw-r--r--debian/patches/0045-disable_lock_test_at_build_time.patch27
-rw-r--r--debian/patches/0055-Fix_build_error.patch36
-rw-r--r--debian/patches/0060-cross.patch4
-rw-r--r--debian/patches/0100-source_spelling.patch38
-rw-r--r--debian/patches/0165-respect_local_only_parameter.patch768
-rw-r--r--debian/patches/0170-return_empty_list_when_local_devices_requested.patch43
-rw-r--r--debian/patches/0180-gt68xx_fix_use-after-free_two_memleaks.patch55
-rw-r--r--debian/patches/0185-Change_output_from_sane-find-scanner.patch51
-rw-r--r--debian/patches/0190-remove-kernel-driver-for-plustek_pp.patch2949
-rw-r--r--debian/patches/0195-genesys_fix_total_file_size_exceeding.patch100
-rw-r--r--debian/patches/0600-scanimage_manpage.patch21
-rw-r--r--debian/patches/0705-kfreebsd.patch2
-rw-r--r--debian/patches/series11
-rw-r--r--doc/Makefile.am15
-rw-r--r--doc/backend-writing.txt2
-rw-r--r--doc/descriptions-external/ambir.desc35
-rw-r--r--doc/descriptions-external/kyocera.desc35
-rw-r--r--doc/descriptions-external/scangearmp2.desc85
-rw-r--r--doc/descriptions-external/template.desc (renamed from doc/descriptions-external/template.desc.)0
-rw-r--r--doc/descriptions/avision.desc12
-rw-r--r--doc/descriptions/canon.desc2
-rw-r--r--doc/descriptions/canon_dr.desc18
-rw-r--r--doc/descriptions/epjitsu.desc5
-rw-r--r--doc/descriptions/epsonds.desc10
-rw-r--r--doc/descriptions/escl.desc77
-rw-r--r--doc/descriptions/fujitsu.desc193
-rw-r--r--doc/descriptions/pixma.desc133
-rw-r--r--doc/descriptions/sp15c.desc2
-rw-r--r--doc/descriptions/template.desc (renamed from doc/descriptions/template.desc.)0
-rw-r--r--doc/descriptions/unsupported.desc28
-rw-r--r--doc/plustek/FAQ121
-rw-r--r--doc/plustek/MakeModule.sh116
-rw-r--r--doc/plustek/Makefile.kernel24250
-rw-r--r--doc/plustek/Makefile.kernel26124
-rw-r--r--doc/plustek/Plustek-PARPORT.txt40
-rw-r--r--doc/plustek/Plustek-USB.txt5
-rw-r--r--doc/sane-epjitsu.man11
-rw-r--r--doc/sane-escl.man12
-rw-r--r--doc/sane-fujitsu.man22
-rw-r--r--doc/sane-pixma.man20
-rw-r--r--doc/sane-plustek_pp.man191
-rw-r--r--doc/sane-test.man20
-rw-r--r--frontend/jpegtopdf.c4
-rw-r--r--frontend/saned.c10
-rw-r--r--frontend/scanimage.c25
-rw-r--r--include/Makefile.am9
-rw-r--r--include/sane/sanei_backend.h8
-rw-r--r--include/sane/sanei_directio.h71
-rw-r--r--newsfragments/README.md2
-rw-r--r--newsfragments/avision_new_models.backend1
-rw-r--r--newsfragments/canon_dr_new_models.backend1
-rw-r--r--newsfragments/escl_fix_old_tls.backend1
-rw-r--r--newsfragments/escl_new_models.backend4
-rw-r--r--newsfragments/genesys_gl845_gamma_crash.backend1
-rw-r--r--newsfragments/pixma_mf56x0.backend1
-rw-r--r--newsfragments/pixma_new_models.backend16
-rw-r--r--newsfragments/scanimage_readonly.frontend1
-rw-r--r--newsfragments/test_inexact.backend1
-rw-r--r--newsfragments/xerox_mfp_jpeg_configurable.backend1
-rw-r--r--newsfragments/xerox_mfp_new_models.backend1
-rw-r--r--po/Makevars2
-rw-r--r--po/en_GB.po1085
-rw-r--r--po/it.po8
-rw-r--r--po/ru.po2463
-rw-r--r--po/uk.po1183
-rw-r--r--sanei/Makefile.am2
-rw-r--r--sanei/sanei_ab306.c42
-rw-r--r--sanei/sanei_directio.c367
-rw-r--r--sanei/sanei_jpeg.c24
-rw-r--r--sanei/sanei_magic.c4
-rw-r--r--sanei/sanei_pa4s2.c64
-rw-r--r--sanei/sanei_pio.c154
-rw-r--r--sanei/sanei_pp.c71
-rw-r--r--sanei/sanei_pv8630.c3
-rw-r--r--sanei/sanei_scsi.c3
-rw-r--r--testsuite/backend/genesys/minigtest.cpp4
-rw-r--r--testsuite/backend/genesys/tests_image.cpp2
-rw-r--r--testsuite/backend/genesys/tests_image_pipeline.cpp2
-rw-r--r--testsuite/backend/genesys/tests_motor.cpp2
-rw-r--r--testsuite/backend/genesys/tests_utilities.cpp2
-rw-r--r--tools/Makefile.am2
-rwxr-xr-xtools/create-changelog.sh10
-rw-r--r--tools/mustek600iin-off.c27
-rw-r--r--tools/sane-backends.pc.in3
-rw-r--r--tools/sane-find-scanner.c20
275 files changed, 28685 insertions, 13257 deletions
diff --git a/.gitignore b/.gitignore
index 7daab1f..72d8555 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,7 +59,5 @@ test-suite.log
# `make dist` artifacts
/sane-backends-*.tar.gz
-
# debian
-.pc
debian/files
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 90df8f3..6334acb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -19,7 +19,7 @@ stages:
# Debian GNU/Linux.
make-dist:
- image: $REGISTRY_HUB:debian-buster-mini
+ image: $REGISTRY_HUB:debian-bullseye-mini
stage: tarball
script:
- git ls-files | xargs ./tools/style-check.sh
@@ -41,26 +41,26 @@ make-dist:
- ./configure $CONFIGURE_OPTS
- make -j2 -k $MAKE_FLAGS
-debian-9-full:
- image: $REGISTRY_HUB:debian-stretch-full
+debian-10-full:
+ image: $REGISTRY_HUB:debian-buster-full
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
<<: *compile_definition
-debian-10-mini:
- image: $REGISTRY_HUB:debian-buster-mini
+debian-11-mini:
+ image: $REGISTRY_HUB:debian-bullseye-mini
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI"
- MAKE_FLAGS: "CFLAGS=-Werror"
+ MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
<<: *compile_definition
# In addition to the regular compile check, the full Debian stable
# environment is used to keep some of the HTML documentation that's
# available from our website up-to-date.
-debian-10-full:
- image: $REGISTRY_HUB:debian-buster-full
+debian-11-full:
+ image: $REGISTRY_HUB:debian-bullseye-full
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
@@ -76,20 +76,23 @@ debian-10-full:
- doc/sanei-html
expire_in: 1 day
-fedora-33-clang:
- image: $REGISTRY_HUB:fedora-33-clang
+fedora-36-clang:
+ image: $REGISTRY_HUB:fedora-36-clang
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
+ MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
<<: *compile_definition
-alpine-3.13-musl:
- image: $REGISTRY_HUB:alpine-3.13-musl
+alpine-3.15-musl:
+ image: $REGISTRY_HUB:alpine-3.15-musl
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
+ MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
<<: *compile_definition
+ allow_failure: true
-ubuntu-16.04-lts:
- image: $REGISTRY_HUB:ubuntu-xenial-dist
+ubuntu-22.04-lts:
+ image: $REGISTRY_HUB:ubuntu-jammy-dist
variables:
CONFIGURE_OPTS: "$CONFIGURE_MINI $CONFIGURE_FULL"
MAKE_FLAGS: "CFLAGS=-Werror CXXFLAGS=-Werror"
@@ -107,10 +110,10 @@ ubuntu-16.04-lts:
# hence the dependency.
make-distcheck:
- image: $REGISTRY_HUB:debian-buster-full
+ image: $REGISTRY_HUB:debian-bullseye-full
stage: snapshot
dependencies:
- - debian-10-full
+ - debian-11-full
script:
- tar xzf sane-backends-*.tar.gz --strip-components=1
- rm sane-backends-*.tar.gz
diff --git a/ChangeLogs/ChangeLog-1.0.27 b/ChangeLogs/ChangeLog-1.0.27
index 6affb06..3773bdd 100644
--- a/ChangeLogs/ChangeLog-1.0.27
+++ b/ChangeLogs/ChangeLog-1.0.27
@@ -1,4 +1,4 @@
-commit 82cd8f245cf26879b3f94348d4069dcec8d49f21 (tag: RELEASE_1_0_27, tag: 1.0.27)
+commit 82cd8f245cf26879b3f94348d4069dcec8d49f21
Author: m. allan noah <kitno455@gmail.com>
Date: 2017-05-22 11:16:40 -0400
@@ -17,25 +17,25 @@ Date: 2017-05-22 11:16:40 -0400
commit 16f3060061a17cbc54f3415a7e2abc1c35f3fcd2
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Sat May 20 14:13:19 2017 +0200
+Date: 2017-05-20 14:13:19 +0200
pixma: i-SENSYS MF240 Series is working
commit ad5fd9edc83f2c6b6e27e9a366cd8ff5e00376b8
Author: m. allan noah <kitno455@gmail.com>
-Date: Fri May 19 20:24:14 2017 -0400
+Date: 2017-05-19 20:24:14 -0400
Updated NL translation from Martin Kho
commit baf786742f0382bed3f1b58d9977229826e3df5f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon May 15 21:37:34 2017 +0900
+Date: 2017-05-15 21:37:34 +0900
po/*.po: sync with source code
commit 05553c679fd02648fc5b6dd3a4abf75fe67e1d27
Author: m. allan noah <kitno455@gmail.com>
-Date: Sun May 14 21:34:36 2017 -0400
+Date: 2017-05-14 21:34:36 -0400
updated uk.po translation
@@ -43,7 +43,7 @@ Date: Sun May 14 21:34:36 2017 -0400
commit 479ccaedddcb0a491b351e20cac22595196df02a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun May 14 19:48:41 2017 +0900
+Date: 2017-05-14 19:48:41 +0900
autotools: Sync derived files
@@ -56,19 +56,19 @@ Date: Sun May 14 19:48:41 2017 +0900
commit 02037adb134a2b533bb3201833444aed7bedc8f6
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun May 14 19:47:31 2017 +0900
+Date: 2017-05-14 19:47:31 +0900
Fix unused parameter compiler warnings in check tools
commit 85b91bcd248d2a40300b9fda76bdb88853fbcd0b
Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
-Date: Sat May 13 18:11:40 2017 +0900
+Date: 2017-05-13 18:11:40 +0900
doc: fix typos, formatting and stylistic issues
commit 1808a63b0091f0e5562586278b13d7ae63184f43
Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
-Date: Sat May 13 18:07:26 2017 +0900
+Date: 2017-05-13 18:07:26 +0900
Replace the startup gamma with the same from the standalone version
@@ -76,31 +76,31 @@ Date: Sat May 13 18:07:26 2017 +0900
commit 5c0812c51b6d48516acb9dd9efcfbe2b34f04a79
Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
-Date: Sat May 13 18:05:43 2017 +0900
+Date: 2017-05-13 18:05:43 +0900
genesys.conf: fix comment typo
commit e21bb28e5051d8fdd64df3c4ea2625b9f45538c8
Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
-Date: Sat May 13 18:03:42 2017 +0900
+Date: 2017-05-13 18:03:42 +0900
Source code string typo fixes
commit 09cf70563a1129116ab6888e944bfcb44fec8dd0
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat May 13 16:33:23 2017 +0900
+Date: 2017-05-13 16:33:23 +0900
configure.ac: Fix condition
commit 9230e0c251f2351ce1c7b8d7fca08dc39c320925
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat May 13 13:12:06 2017 +0900
+Date: 2017-05-13 13:12:06 +0900
saned: Link against Avahi library
commit da5ce7216cf63a454411fa781bc2ea30fa881974
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat May 13 13:09:25 2017 +0900
+Date: 2017-05-13 13:09:25 +0900
Add a header to dll.conf
@@ -111,7 +111,7 @@ Date: Sat May 13 13:09:25 2017 +0900
commit 77dcf26860b239dafb3094c863691aaef304805a
Author: Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
-Date: Sat May 13 13:07:01 2017 +0900
+Date: 2017-05-13 13:07:01 +0900
Fix potential assert in avahi backend
@@ -124,25 +124,25 @@ Date: Sat May 13 13:07:01 2017 +0900
commit e6711c377f266d33a3d8bc28d7a508e3c4c29c79
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed May 10 19:10:26 2017 +0200
+Date: 2017-05-10 19:10:26 +0200
remove unused entry from ChangeLog
commit 0cf531e44528a541d76c3571bca72f395b7892ae
Author: Klaus Kämpf <kkaempf@suse.de>
-Date: Tue May 9 10:52:12 2017 +0200
+Date: 2017-05-09 10:52:12 +0200
Update pieusb.conf and pieusb.desc
commit 135b4a3909e0fe0d14062dc009bfba8085ebf167
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed May 10 11:51:35 2017 +0200
+Date: 2017-05-10 11:51:35 +0200
pixma.desc: fix version of backend
commit 5b10b0b635157cdb9766197a5f2ea7f1d24a402a
Author: René Rebe <rebe@exactcode.de>
-Date: Fri May 5 07:05:30 2017 +0200
+Date: 2017-05-05 07:05:30 +0200
epson2: fixed network transport for new scanners
@@ -151,7 +151,7 @@ Date: Fri May 5 07:05:30 2017 +0200
commit 6ffeb9097386268e425ae2390ed2835853dbd439
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat May 6 20:40:25 2017 +0900
+Date: 2017-05-06 20:40:25 +0900
Fix test for API specification generation
@@ -161,7 +161,7 @@ Date: Sat May 6 20:40:25 2017 +0900
commit f3f8afb08c2098d9659757a8e7b8c212a09ddf79
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat May 6 12:24:13 2017 +0900
+Date: 2017-05-06 12:24:13 +0900
kvs20xx.c: don't assume sane_get_devices() has been called
@@ -172,7 +172,7 @@ Date: Sat May 6 12:24:13 2017 +0900
commit 8995b1fc81e4378d2b5b0b6b0d354735403210ed
Author: Martin Husemann <martin@NetBSD.org>
-Date: Tue Mar 15 18:07:00 2016 +0900
+Date: 2016-03-15 18:07:00 +0900
sanei_usb: fix number of bytes read for 64bit big-endian systems
@@ -180,13 +180,13 @@ Date: Tue Mar 15 18:07:00 2016 +0900
commit b1a2c6105443c5279684f0c6827c268594aa234d
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri May 5 19:46:28 2017 +0200
+Date: 2017-05-05 19:46:28 +0200
pixma: backend version 0.17.37
commit 09c467deab5ca4301ab7da37241c3fc072b94399
Author: Klaus Kaempf <kkaempf@suse.de>
-Date: Wed May 3 17:52:15 2017 +0200
+Date: 2017-05-03 17:52:15 +0200
pieusb: Support ProScan 10T and Reflecta CrystalScan 3600
@@ -203,50 +203,20 @@ Date: Wed May 3 17:52:15 2017 +0200
commit 801558f959a03b5042d6df288cb1fd2c87035798
Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Mon May 1 20:15:23 2017 +0000
+Date: 2017-05-01 20:15:23 +0000
Write density (resolution) JFIF header information with JPEG files.
commit b219bc2c73113fd9d8f7c5795bd662f03a8610ea
-Merge: f624a9f 92e5979
+Merge: f624a9f72527 92e59791d2e4
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu May 4 18:26:55 2017 +0900
+Date: 2017-05-04 18:26:55 +0900
Merge branch 'icc-profiles'
-commit f624a9f72527fc2896562e338f9b7c07549af0f0
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon May 1 09:39:59 2017 +0900
-
- utsushi.desc: sync with upstream
-
-commit 0ca2fc46136dbaa30da25f4b79b67871c7e2d39b
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Wed May 3 13:52:06 2017 +0200
-
- fix 1200 dpi scanning for MB5000 series
-
-commit ff5c11622dafe58d1025f34a3672c7a059e963a7
-Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Wed May 3 13:48:20 2017 +0200
-
- Fix scanbutton detection for MB5000 series
-
-commit 6af0e32bd6bd9e2c1b2adc5cb2a0561902eef526
-Author: Paul Newall <quandry@ntlworld.com>
-Date: Mon May 1 19:49:41 2017 +0100
-
- kodakaio.c patched to change avahi callback variable from global to local. Bug 315705
-
-commit e0741f71e289b878f0efad6cbb56b15d73b49f4e
-Author: Paul Newall <quandry@ntlworld.com>
-Date: Sun Apr 30 18:09:59 2017 +0100
-
- deleted a line in configure.ac. This was a commented out line left from when the backend kodakaio used CUPS to autodetect printers.
-
commit 92e59791d2e478484409f5f2e634196863d7dafb
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Apr 30 20:05:12 2017 +0900
+Date: 2017-04-30 20:05:12 +0900
Fix [-Werror=implicit-function-declaration] compiler error
@@ -256,13 +226,13 @@ Date: Sun Apr 30 20:05:12 2017 +0900
commit adebd37b5cb3ec0cab3025300db5cdd03c2173cc
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Apr 30 20:00:28 2017 +0900
+Date: 2017-04-30 20:00:28 +0900
Fix [-Wpointer-arith] compiler warnings
commit c3903cc476909884ace9fedbea5f69b3a4085b70
Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Mon Apr 17 12:07:40 2017 +0000
+Date: 2017-04-17 12:07:40 +0000
Avoid attaching grayscale ICC profiles to rgb images, or vice-versa.
@@ -272,13 +242,13 @@ Date: Mon Apr 17 12:07:40 2017 +0000
commit a907b61bd58f00fd6b1d8468d9d28d6d39232c79
Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Mon Apr 17 12:07:39 2017 +0000
+Date: 2017-04-17 12:07:39 +0000
Add ICC profile embedding for PNG output.
commit 2c653a926af83d7bb910307f441055a6d7603f0b
Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Sun Apr 16 15:13:06 2017 +0000
+Date: 2017-04-16 15:13:06 +0000
Separate ICC profile loading into a separate file.
@@ -289,15 +259,45 @@ Date: Sun Apr 16 15:13:06 2017 +0000
this should prevent poorly-written software from overflowing into
image data when they read the bad profile based on its length.
+commit f624a9f72527fc2896562e338f9b7c07549af0f0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2017-05-01 09:39:59 +0900
+
+ utsushi.desc: sync with upstream
+
+commit 0ca2fc46136dbaa30da25f4b79b67871c7e2d39b
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2017-05-03 13:52:06 +0200
+
+ fix 1200 dpi scanning for MB5000 series
+
+commit ff5c11622dafe58d1025f34a3672c7a059e963a7
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2017-05-03 13:48:20 +0200
+
+ Fix scanbutton detection for MB5000 series
+
+commit 6af0e32bd6bd9e2c1b2adc5cb2a0561902eef526
+Author: Paul Newall <quandry@ntlworld.com>
+Date: 2017-05-01 19:49:41 +0100
+
+ kodakaio.c patched to change avahi callback variable from global to local. Bug 315705
+
+commit e0741f71e289b878f0efad6cbb56b15d73b49f4e
+Author: Paul Newall <quandry@ntlworld.com>
+Date: 2017-04-30 18:09:59 +0100
+
+ deleted a line in configure.ac. This was a commented out line left from when the backend kodakaio used CUPS to autodetect printers.
+
commit 611388db1d56b0ffd74af05c4a51fe518269c90d
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Apr 27 21:59:24 2017 +0200
+Date: 2017-04-27 21:59:24 +0200
pixma.desc: fix usbid for PIXMA TS5000 Series
commit 5389301a40d67ed627b1998e19a1af60da26e93f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Apr 27 22:26:01 2017 +0900
+Date: 2017-04-27 22:26:01 +0900
utsushi.desc: PID 0156 is a ES-400
@@ -305,13 +305,13 @@ Date: Thu Apr 27 22:26:01 2017 +0900
commit a0321d2a92286afbc9557fa44e2de4f706cf2407
Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Sun Apr 16 09:06:48 2017 +0000
+Date: 2017-04-16 09:06:48 +0000
Include physical resolution (pHYs section) in PNG output.
commit 469dc738aafe42b231ecae778e393263028ab1b9
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Apr 27 21:17:34 2017 +0900
+Date: 2017-04-27 21:17:34 +0900
Only swap 16-bit PNG bytes on machines that are not big-endian
@@ -319,43 +319,43 @@ Date: Thu Apr 27 21:17:34 2017 +0900
commit 28eb09eec4c64d9070b5747c93c25134395cab53
Author: Aaron Muir Hamilton <aaron@correspondwith.me>
-Date: Sun Apr 16 00:27:54 2017 +0000
+Date: 2017-04-16 00:27:54 +0000
Swap bytes in 16-bit PNGs, because PNG is big-endian.
commit 5fa4be5ae4f9937d79f076f7004a4b48ba765e8a
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Apr 26 11:06:00 2017 +0200
+Date: 2017-04-26 11:06:00 +0200
pixma: backend version 0.17.36
commit 879565cefcac61e371581d09696ef6d738c2a720
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Apr 26 11:43:30 2017 +0200
+Date: 2017-04-26 11:43:30 +0200
new scanners Canon i-SENSYS MF230 and MF240 Series
commit ddccf956b44509fc21cdcd4c52b6750e2ddab37a
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Apr 26 11:02:46 2017 +0200
+Date: 2017-04-26 11:02:46 +0200
pixma_mp150: MG5400 Series has button scan support
commit f14285dba30404f23fc9de13d632e69f23f7cb75
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Apr 6 11:20:40 2017 +0200
+Date: 2017-04-06 11:20:40 +0200
pixma_mp150: MG5400 Series doesn't need special image format post processing @ high dpi
commit 0960bf9c72d25a0f8686314fbe9a6a0f9002ea3c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Apr 18 20:12:31 2017 +0900
+Date: 2017-04-18 20:12:31 +0900
utsushi.desc: sync with upstream
commit dcddb9505c88485bda6cdcf77927d14008b449ee
Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Apr 11 21:22:05 2017 -0400
+Date: 2017-04-11 21:22:05 -0400
epjitsu backend v31
@@ -365,13 +365,13 @@ Date: Tue Apr 11 21:22:05 2017 -0400
commit 34e4dbf6c35946ca52678f6a7a61ef002fddb1c2
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Apr 10 20:23:03 2017 +0900
+Date: 2017-04-10 20:23:03 +0900
Bump Alpine and Fedora builder versions
commit 9712e2aa2595f440252d40c26b680c3cf2b8ae30
Author: m. allan noah <kitno455@gmail.com>
-Date: Sat Apr 8 21:44:27 2017 -0400
+Date: 2017-04-08 21:44:27 -0400
fujitsu backend v133 2017-04-08, MAN
@@ -381,7 +381,7 @@ Date: Sat Apr 8 21:44:27 2017 -0400
commit 5edb87f9ac950473f8c3a57b4071c970887d8440
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Apr 8 21:08:12 2017 +0900
+Date: 2017-04-08 21:08:12 +0900
genesys: Trigger reallocation of gamma tables on next sane_open()
@@ -389,13 +389,13 @@ Date: Sat Apr 8 21:08:12 2017 +0900
commit 6eb4a1f164ef116a3ed10ee42883a15c268ea01e
Author: Robert Ancell <robert.ancell@canonical.com>
-Date: Tue Apr 4 11:36:05 2017 +1200
+Date: 2017-04-04 11:36:05 +1200
kodakaio: Fix crash when Avahi search fails
commit ccb47215e653724f317f7d40138098762578a6f9
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Apr 7 20:28:02 2017 +0900
+Date: 2017-04-07 20:28:02 +0900
Add missing double quote
@@ -404,49 +404,49 @@ Date: Fri Apr 7 20:28:02 2017 +0900
commit 38ce7fc086a6ecbee94ef31901a6eb874fb611b1
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Apr 5 18:29:41 2017 +0900
+Date: 2017-04-05 18:29:41 +0900
Update SANE developer and backend maintenance status
commit cbcab6dffadffdb40f87ddffaf2aa7e1618bb72b
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 4 11:28:18 2017 +0200
+Date: 2017-04-04 11:28:18 +0200
pixma: backend version 0.17.35
commit 66ce95a5a1a716a92260701c76c0989abf4196bb
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 4 11:59:56 2017 +0200
+Date: 2017-04-04 11:59:56 +0200
new scanners Canon PIXMA G3000, E470, G3000, TS5000, TS6000, TS8000 and TS9000 [#315658]
commit a2e26572729d62123b2f167fee9e671bf26b8987
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 4 11:27:38 2017 +0200
+Date: 2017-04-04 11:27:38 +0200
pixma: signal scan cancel from the frontend with new parameter s->param->frontend_cancel
commit c5bfbc5a3a43a81776841289cd164a584c2e8ec2
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 4 11:25:53 2017 +0200
+Date: 2017-04-04 11:25:53 +0200
pixma: implement adf-wait for imageclass scanners
commit 17f3899b1583971351ea7ac40e92660f6558268d
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 4 11:23:03 2017 +0200
+Date: 2017-04-04 11:23:03 +0200
pixma: new option adf-wait
commit 3ef45ec3c3d56bfc60b339dac8a2f19543387ef3
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 4 11:16:20 2017 +0200
+Date: 2017-04-04 11:16:20 +0200
pixma: update docs for MG5400 Series
commit e6c8ea6f0bcb2c6b6f7004feadc7db6cbfc3ee2b
Author: m. allan noah <kitno455@gmail.com>
-Date: Wed Mar 22 12:33:27 2017 -0400
+Date: 2017-03-22 12:33:27 -0400
epjitsu backend v30 again
@@ -454,7 +454,7 @@ Date: Wed Mar 22 12:33:27 2017 -0400
commit a7fde11e15e5604c7b37bc9553cbd08086c08e53
Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Mar 21 21:35:59 2017 -0400
+Date: 2017-03-21 21:35:59 -0400
epjitsu backend v30
@@ -462,7 +462,7 @@ Date: Tue Mar 21 21:35:59 2017 -0400
commit 891e3984d0410fa8c698d99d79948df3237e258d
Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Mar 21 20:39:47 2017 -0400
+Date: 2017-03-21 20:39:47 -0400
epjitsu v30
@@ -471,7 +471,7 @@ Date: Tue Mar 21 20:39:47 2017 -0400
commit 42896939822b44f44ecd1b6d35afdfa4473ed35d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Feb 19 16:45:45 2017 +0900
+Date: 2017-02-19 16:45:45 +0900
Address memory corruption and information leakage.
@@ -479,7 +479,7 @@ Date: Sun Feb 19 16:45:45 2017 +0900
commit eaa4d4407d96585b7cdbe194d8ac295eee3e6299
Author: m. allan noah <kitno455@gmail.com>
-Date: Sat Mar 18 19:15:03 2017 -0400
+Date: 2017-03-18 19:15:03 -0400
epjitsu backend v29
@@ -487,7 +487,7 @@ Date: Sat Mar 18 19:15:03 2017 -0400
commit 2f9ea038b157fc6d08ce882a1d9984d37b46d809
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Mar 11 10:48:35 2017 +0900
+Date: 2017-03-11 10:48:35 +0900
Fix typo
@@ -495,7 +495,7 @@ Date: Sat Mar 11 10:48:35 2017 +0900
commit 1e028b72cae0f4caaf48868504bd2cd1667d6da7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Mar 6 20:54:59 2017 +0900
+Date: 2017-03-06 20:54:59 +0900
pixma: updated status for MG5400 Series
@@ -504,19 +504,19 @@ Date: Mon Mar 6 20:54:59 2017 +0900
commit 928b803ef1f1bc1007ca3fa83418f103c6a7bdd7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Mar 5 15:35:06 2017 +0900
+Date: 2017-03-05 15:35:06 +0900
utsushi.desc: sync with upstream
commit f450049bccc1e331790cb2546c2c1440fa3d24c0
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Feb 14 18:52:25 2017 +0900
+Date: 2017-02-14 18:52:25 +0900
utsushi.desc: sync with upstream
commit e3ed043500e786724cc77fdd0565993e878a51fc
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Dec 26 08:13:33 2016 +0900
+Date: 2016-12-26 08:13:33 +0900
Update backend maintenance status
@@ -526,7 +526,7 @@ Date: Mon Dec 26 08:13:33 2016 +0900
commit 7a0e1126b3eebd38944b8b281e6a481b95a35bbd
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:30:31 2017 +0100
+Date: 2017-01-06 23:30:31 +0100
Revert "pixma_mp150.c: Fix scanbutton detection for MB5000 series"
@@ -534,7 +534,7 @@ Date: Fri Jan 6 23:30:31 2017 +0100
commit 306f8f16e78b52948a6e09fa0957b3e364e0189f
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:29:59 2017 +0100
+Date: 2017-01-06 23:29:59 +0100
Revert "pixma_mp150.c: fix 1200 dpi scanning for MB5000 series"
@@ -542,7 +542,7 @@ Date: Fri Jan 6 23:29:59 2017 +0100
commit 9bc734042f6a2af159772eef412efe7c65ebb02f
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:28:56 2017 +0100
+Date: 2017-01-06 23:28:56 +0100
Revert "pixma_mp150.c: scan param 0x26-0x29 should contain localtime HHMM, also for MB5000 series"
@@ -550,7 +550,7 @@ Date: Fri Jan 6 23:28:56 2017 +0100
commit 6c439bce791522aa9cd3fc04cf62087bdd6c6875
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:28:31 2017 +0100
+Date: 2017-01-06 23:28:31 +0100
Revert "pixma_mp150.c: replace multiple if statements with case statement in handle_interrupt"
@@ -558,7 +558,7 @@ Date: Fri Jan 6 23:28:31 2017 +0100
commit 06b4b27ecfad1aa30c772fa0fac15d1c144c1e7a
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 23:28:09 2017 +0100
+Date: 2017-01-06 23:28:09 +0100
Revert "pixma_mp150.c: fix parameter settings for MB5000 in send_scan_param"
@@ -566,56 +566,56 @@ Date: Fri Jan 6 23:28:09 2017 +0100
commit 589e011992a21ae1edb4684eb89582350c47333f
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 22:15:24 2017 +0100
+Date: 2017-01-06 22:15:24 +0100
Update the sane-pixma man-page for the new timeout setting option.
commit 1b442ce1ea7068bda1129c061071dc94bfd6a8d2
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Jan 6 21:37:52 2017 +0100
+Date: 2017-01-06 21:37:52 +0100
Added examples for new bjnp timer settings in the pixma config file
commit cfc7a069d2696942bfeac90e0ff7aa50f83d0ec1
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Sat Dec 31 17:56:06 2016 +0100
+Date: 2016-12-31 17:56:06 +0100
Added timeout options for the bjnp protocol
commit c2898cb6021fac6e2a526c2ce4692783ca69b18d
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Dec 30 21:36:26 2016 +0100
+Date: 2016-12-30 21:36:26 +0100
Remove incorrect comment left from old version
commit 526f642f6487cd348b39a6e138c2bffa9a88d0f6
-Merge: 32be261 68cd274
+Merge: 32be261254a7 68cd2744d190
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Dec 30 20:04:53 2016 +0100
+Date: 2016-12-30 20:04:53 +0100
Merge branch 'master' of ssh://git.debian.org/git/sane/sane-backends
commit 68cd2744d1906ebf00b2bfdc90662992f8e5385c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Dec 18 16:53:26 2016 +0900
+Date: 2016-12-18 16:53:26 +0900
Sort backends with LC_COLLATE=C
commit d47957075ff0859f5bd52c683f5b6408c63d1e46
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 17 17:03:32 2016 +0900
+Date: 2016-12-17 17:03:32 +0900
Update git repositor write access info
commit 078435eaf19d00e6b863a7802073863604c9e9dc
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 12 19:58:42 2016 +0900
+Date: 2016-09-12 19:58:42 +0900
Fix typo
commit 755e829caa23b9781863e4b1e1d24c3cfee9e8bf
Author: Dave Platt <dplatt@radagast.org>
-Date: Thu Dec 15 23:12:07 2016 -0800
+Date: 2016-12-15 23:12:07 -0800
avision.c: abort "wait for light" loop if interrupted
@@ -626,7 +626,7 @@ Date: Thu Dec 15 23:12:07 2016 -0800
commit 28963459a4ac43100b8e377d65332d81a2660c0d
Author: Dave Platt <dplatt@radagast.org>
-Date: Thu Dec 15 23:02:42 2016 -0800
+Date: 2016-12-15 23:02:42 -0800
avision.c: Recognize "backlight on" status
@@ -639,7 +639,7 @@ Date: Thu Dec 15 23:02:42 2016 -0800
commit 6585b6f60d07a196e42c99b935e2754bbc80b3c8
Author: Dave Platt <dplatt@radagast.org>
-Date: Thu Dec 15 22:29:16 2016 -0800
+Date: 2016-12-15 22:29:16 -0800
avision.c: Add "skip-adf" option
@@ -656,7 +656,7 @@ Date: Thu Dec 15 22:29:16 2016 -0800
commit f58ce8f9201364bd0fe28ef736d4b1345f3f71b2
Author: Troy Rollo <troy@kawseq.com>
-Date: Fri Dec 2 01:37:23 2016 +1100
+Date: 2016-12-02 01:37:23 +1100
HP3500: Always enable the second set of CCDs. This
prevents ghosting that occurs when only enabling the
@@ -665,20 +665,20 @@ Date: Fri Dec 2 01:37:23 2016 +1100
commit 77986b1d14db5ba285d595ab7630748b3c6d9284
Author: Troy Rollo <troy@kawseq.com>
-Date: Fri Dec 2 01:20:43 2016 +1100
+Date: 2016-12-02 01:20:43 +1100
HP3500: Move to scan area more quickly if it is a
long way from the home position
commit b1f3815014f11bbadd74d255ee4343e16ffee6b8
Author: Troy Rollo <troy@kawseq.com>
-Date: Tue Nov 29 21:11:06 2016 +1100
+Date: 2016-11-29 21:11:06 +1100
Add missing math library to HP3500 backend link flags
commit fd7a3505f644573e832f417c7f0f62ca8ddeb7c8
Author: Troy Rollo <troy@kawseq.com>
-Date: Tue Nov 29 20:47:59 2016 +1100
+Date: 2016-11-29 20:47:59 +1100
HP3500 backend: fix #314811, greatly improve
calibration, support hardware calibration
@@ -687,13 +687,13 @@ Date: Tue Nov 29 20:47:59 2016 +1100
commit 6484ff8fc368db24b567e1d2fbb44cd86e0f9e43
Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 23:03:23 2016 +0300
+Date: 2016-11-06 23:03:23 +0300
Forgotten comma in backends man pages list.
commit 69a008830b84437701022cbd96a8863ac61d3ddf
Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 22:28:03 2016 +0300
+Date: 2016-11-06 22:28:03 +0300
Pre-create temporary file for Jpeg scanning.
@@ -705,13 +705,13 @@ Date: Sun Nov 6 22:28:03 2016 +0300
commit 226c2b9deb2f4f4b1d7c51ad4bb83d181e5e31b5
Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 21:50:06 2016 +0300
+Date: 2016-11-06 21:50:06 +0300
Update header and copyright statements for xerox_mfp.
commit 58c1e43b83712899162030d83df3ecac151d69d3
Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 21:38:47 2016 +0300
+Date: 2016-11-06 21:38:47 +0300
Indent of xerox_mfp-tcp.c and xerox_mfp-usb.c
@@ -726,19 +726,19 @@ Date: Sun Nov 6 21:38:47 2016 +0300
commit 610533a9a66d7232a8a0ecd360871e3a6fa67980
Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 21:24:38 2016 +0300
+Date: 2016-11-06 21:24:38 +0300
Update xerox_mfp man page.
commit ba6a5710b508e73f4cb7152d034adc865f5201d7
Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 21:00:58 2016 +0300
+Date: 2016-11-06 21:00:58 +0300
Update sane.man to index xerox_mfp backend.
commit 83bbcfe7d546b4d0cd28269b647fb558c6a1e00a
Author: Alex Belkin <abc@telekom.ru>
-Date: Sun Nov 6 20:24:02 2016 +0300
+Date: 2016-11-06 20:24:02 +0300
Run indent: astyle -A8 -U -H -k3 -W3 -o xerox_mfp.[ch]
@@ -747,7 +747,7 @@ Date: Sun Nov 6 20:24:02 2016 +0300
commit e4aed53a1e46b9d46a76f814d414ef8d2c2276e3
Author: m. allan noah <kitno455@gmail.com>
-Date: Sat Oct 8 19:32:43 2016 -0400
+Date: 2016-10-08 19:32:43 -0400
fujitsu backend v132
@@ -758,13 +758,13 @@ Date: Sat Oct 8 19:32:43 2016 -0400
commit cfa98fd0d1271dd426ff2d6c565790d87cf3986d
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Sat Oct 8 14:25:33 2016 +0200
+Date: 2016-10-08 14:25:33 +0200
pixma: backend version 0.17.34
commit 7e20475c8b45249d05315d5a889551924210666d
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Sat Oct 8 14:24:53 2016 +0200
+Date: 2016-10-08 14:24:53 +0200
pixma: new scanner Canon PIXMA MG3000 Series
@@ -772,13 +772,13 @@ Date: Sat Oct 8 14:24:53 2016 +0200
commit 3b63fdab2b94f14765f8ba165546f6d69fc23ea9
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Oct 5 20:05:37 2016 +0200
+Date: 2016-10-05 20:05:37 +0200
pixma: backend version 0.17.33
commit c751a9ca22934ef93ca6b7afd3d0aaea4969c5fc
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Oct 5 19:51:35 2016 +0200
+Date: 2016-10-05 19:51:35 +0200
fix ADF scanning for Canon MF57x0 devices
@@ -788,19 +788,19 @@ Date: Wed Oct 5 19:51:35 2016 +0200
commit a9806de08ea65acb8a1109b480147a4a7ec76cb5
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 17:06:15 2016 +0900
+Date: 2016-09-25 17:06:15 +0900
AWARE: Treat compiler warnings as errors on debian-8-mini too!
commit 490c4501c7ca59568bd9611665386c512163b51b
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 17:04:23 2016 +0900
+Date: 2016-09-25 17:04:23 +0900
Sync autofoo
commit da49686efe16bc5f7b4ddef18ea0dcb5f7c18d77
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 17:00:54 2016 +0900
+Date: 2016-09-25 17:00:54 +0900
sane-find-scanner: disable USB if not supported
@@ -810,7 +810,7 @@ Date: Sun Sep 25 17:00:54 2016 +0900
commit 471e8ac0c1b565e5aea92f35ae173e167f3b61c7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 16:28:11 2016 +0900
+Date: 2016-09-25 16:28:11 +0900
sanei_pp: fix [-Wcpp] compiler warning
@@ -823,7 +823,7 @@ Date: Sun Sep 25 16:28:11 2016 +0900
commit 7d7030a40986d97d3cf7a5313bf889bce4af8131
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 15:53:46 2016 +0900
+Date: 2016-09-25 15:53:46 +0900
sanei_usb: : fix [-Wunused-parameter] compiler warnings
@@ -831,22 +831,22 @@ Date: Sun Sep 25 15:53:46 2016 +0900
commit e6faafcdc94e253f7f4fe793fec6110ce37e8014
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 25 15:44:36 2016 +0900
+Date: 2016-09-25 15:44:36 +0900
xerox_mfp: fix [-Wunused-parameter] compiler warnings
These are issued when libjpeg was not found during configuration.
commit 32be261254a78d1f314b3ee86fd5e5b40ab91a86
-Merge: ec8bf64 97d2a3d
+Merge: ec8bf64396b3 97d2a3d22d9c
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Wed Sep 21 22:35:10 2016 +0200
+Date: 2016-09-21 22:35:10 +0200
Merge branch 'master' of ssh://git.debian.org/git/sane/sane-backends
commit 97d2a3d22d9c6a6d0a277de0066c73e9059abd92
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Sep 21 22:11:09 2016 +0900
+Date: 2016-09-21 22:11:09 +0900
AWARE: Treat compiler warnings as errors on debian-8-full
@@ -855,13 +855,13 @@ Date: Wed Sep 21 22:11:09 2016 +0900
commit 4119f05d5f400803a9c952896125e9feabb07393
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Sep 21 21:54:39 2016 +0900
+Date: 2016-09-21 21:54:39 +0900
Fix USB ID typo
commit ee550e5de8e636642b9895d54f6740aa38ee6ff8
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 12:52:31 2016 +0900
+Date: 2016-09-19 12:52:31 +0900
pieusb: fix [-Wunused-parameter] compiler warnings
@@ -869,7 +869,7 @@ Date: Mon Sep 19 12:52:31 2016 +0900
commit bf088a6ed15733237df446a84d6659c4e0145c9a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 17:45:35 2016 +0900
+Date: 2016-09-19 17:45:35 +0900
Merge comments
@@ -877,13 +877,13 @@ Date: Mon Sep 19 17:45:35 2016 +0900
commit e01f574b19be74081650e9be9bcb16a3420068ef
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 17:44:48 2016 +0900
+Date: 2016-09-19 17:44:48 +0900
Merge duplicate entry
commit 1a328e412fb7bf3872de20fe6e57b00ab913a75d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 15:26:14 2016 +0900
+Date: 2016-09-19 15:26:14 +0900
Add missing USB IDs
@@ -891,13 +891,13 @@ Date: Mon Sep 19 15:26:14 2016 +0900
commit dd940a1f612f56d2acb929afd54614ebc6dfb309
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Sep 17 20:43:44 2016 +0900
+Date: 2016-09-17 20:43:44 +0900
utsushi.desc: sync with upstream
commit fb0464d9e3e39a93306e98602ff879c43276de5c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 12 20:12:28 2016 +0900
+Date: 2016-09-12 20:12:28 +0900
niash: fix [-Wunused-but-set-variable] compiler warning
@@ -906,7 +906,7 @@ Date: Mon Sep 12 20:12:28 2016 +0900
commit 6f4b88b6173745f09e4ce1fa465db534eca85751
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 12 20:05:42 2016 +0900
+Date: 2016-09-12 20:05:42 +0900
epson2: fix [-Wunused-but-set-variable] compiler warning
@@ -915,19 +915,19 @@ Date: Mon Sep 12 20:05:42 2016 +0900
commit 4dce101c05515200a6cd337451da664c1978f115
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 19 10:04:35 2016 +0900
+Date: 2016-09-19 10:04:35 +0900
Keep generated *.eps and *.pdf files out of the repository
commit 46bc0ff1c89a6759fd22f80fd1ceb9551268da4f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 18 21:41:03 2016 +0900
+Date: 2016-09-18 21:41:03 +0900
Sync autofoo
commit 2b973d75fed73771664958ea6cb5b4b8fd7b1307
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 18 21:21:35 2016 +0900
+Date: 2016-09-18 21:21:35 +0900
Add fig2dev as prerequisite for API HTML docs
@@ -939,13 +939,13 @@ Date: Sun Sep 18 21:21:35 2016 +0900
commit db22a031d130d533f5fd41710ddabdc61280d313
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 18 21:19:12 2016 +0900
+Date: 2016-09-18 21:19:12 +0900
Fix typo introduced in fa41b180. Fixes 315435
commit 9d388c35937b75cf5f47410ead07ef2226ac8005
Author: m. allan noah <kitno455@gmail.com>
-Date: Sun Sep 11 19:03:23 2016 -0400
+Date: 2016-09-11 19:03:23 -0400
canon_dr v56
@@ -953,13 +953,13 @@ Date: Sun Sep 11 19:03:23 2016 -0400
commit 39ceeae616a2e1638c2760d4364adcaa210a413b
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Sep 7 21:03:30 2016 +0900
+Date: 2016-09-07 21:03:30 +0900
md5: fix [-Wstrict-aliasing] compiler warnings
commit 27a4da41b1761acba33e99aab4d782e726934c04
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Sep 7 21:01:26 2016 +0900
+Date: 2016-09-07 21:01:26 +0900
Prefer *our* `include/` files
@@ -967,13 +967,13 @@ Date: Wed Sep 7 21:01:26 2016 +0900
commit 737977199ccd2419a51e120c472981b1a1263ab0
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Sep 5 23:40:39 2016 +0900
+Date: 2016-09-05 23:40:39 +0900
umax_pp: fix [-Wunused-but-set-variable] compiler warning
commit 50fa8efdcff0dd159d3ff51e219a3c08020ca54c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 4 14:39:52 2016 +0900
+Date: 2016-09-04 14:39:52 +0900
gphoto2: fix libgphoto2 logging integration
@@ -982,7 +982,7 @@ Date: Sun Sep 4 14:39:52 2016 +0900
commit 23f052113b5567033da0d9c4679451d97c484220
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 4 12:50:19 2016 +0900
+Date: 2016-09-04 12:50:19 +0900
saned: fix [-Wunused-parameter] compiler warning
@@ -991,7 +991,7 @@ Date: Sun Sep 4 12:50:19 2016 +0900
commit 0d527f6659e06175d855aaa1a70fc2be52aad1a7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 4 12:13:16 2016 +0900
+Date: 2016-09-04 12:13:16 +0900
Drop build environments
@@ -1005,25 +1005,25 @@ Date: Sun Sep 4 12:13:16 2016 +0900
commit 74b4a34e82124621616c699ac0d5ba0d5e93b6a1
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Sep 4 12:12:14 2016 +0900
+Date: 2016-09-04 12:12:14 +0900
dll: fix pedantic compiler warning
commit 246673715d9abdbfbea349de4636322b242f9700
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Sep 3 14:36:49 2016 +0900
+Date: 2016-09-03 14:36:49 +0900
utsushi.desc: sync with upstream
commit a65e74fe83ae96d5d00af6a05c751086cdae8d38
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 15:49:44 2016 +0900
+Date: 2016-08-28 15:49:44 +0900
umax_pp: fix [-Werror=unused-but-set-parameter] compiler warnings
commit 4eaefe43713036f73ab322e8d6b519589055540d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 15:27:50 2016 +0900
+Date: 2016-08-28 15:27:50 +0900
magicolor: fix [-Werror] compiler warning
@@ -1032,7 +1032,7 @@ Date: Sun Aug 28 15:27:50 2016 +0900
commit 31ac0db73672347732dc80cf8f2afe8e6f3d466b
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 15:25:43 2016 +0900
+Date: 2016-08-28 15:25:43 +0900
magicolor: fix [-Werror=pointer-sign] compiler warnings
@@ -1040,19 +1040,19 @@ Date: Sun Aug 28 15:25:43 2016 +0900
commit c32d48ef5fd4a47a93933e6ffba5c8a93d26e43f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 14:18:48 2016 +0900
+Date: 2016-08-28 14:18:48 +0900
kodakaio: fix [-Weror=format=] compiler warning
commit 0337514b8f0e484c11b668d8ca0e0af998d3dfbc
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 14:18:00 2016 +0900
+Date: 2016-08-28 14:18:00 +0900
kodakaio: fix [-Werror=sign-compare] compiler warning
commit 763816814bc072b19f1178e0d92031217d7f5f06
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 13:55:30 2016 +0900
+Date: 2016-08-28 13:55:30 +0900
hp5400: fix [-Werror=overflow] compiler warning
@@ -1060,31 +1060,31 @@ Date: Sun Aug 28 13:55:30 2016 +0900
commit 9c44317289f1be0a72089ffd030be84caf75b58c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 13:24:17 2016 +0900
+Date: 2016-08-28 13:24:17 +0900
Fix environment name (periods are not allowed)
commit 984fefd55173f30f4cde3ed7acb462d660c676eb
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 13:21:11 2016 +0900
+Date: 2016-08-28 13:21:11 +0900
plustek_pp: fix [-Werror=sign-compare] compiler warning
commit f0153bc7fe7fd79ef2b1b41d259adf3d20b9d641
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 12:57:17 2016 +0900
+Date: 2016-08-28 12:57:17 +0900
v4l: fix [-Werror=sign-compare] compiler warning
commit 6209fecf3a11e90e2e5efc057cf650f4ab792b50
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 12:17:46 2016 +0900
+Date: 2016-08-28 12:17:46 +0900
Make referencing builds easier
commit 235de98784897edb63d1ed1a32609b7786d799d0
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Aug 28 11:58:16 2016 +0900
+Date: 2016-08-28 11:58:16 +0900
md5: fix [-Wpointer-arith] compiler warnings
@@ -1095,19 +1095,19 @@ Date: Sun Aug 28 11:58:16 2016 +0900
commit bf53c714348dbf4654de887ae7e649fbad6b2288
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Aug 4 22:47:01 2016 +0900
+Date: 2016-08-04 22:47:01 +0900
Sync with upstream
commit ffd93a9fad10ced31de037f2c6180f328a38b547
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 22:43:06 2016 +0900
+Date: 2016-08-03 22:43:06 +0900
Sync autofoo
commit cb3090cb5472b63d5cdfb5110652f568bd9477ad
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 22:16:26 2016 +0900
+Date: 2016-08-03 22:16:26 +0900
pixma: Fix include guard typo
@@ -1115,7 +1115,7 @@ Date: Wed Aug 3 22:16:26 2016 +0900
commit 23cc2e1ba043ea8309923f5f1dcc5acaeee38a95
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 22:08:49 2016 +0900
+Date: 2016-08-03 22:08:49 +0900
Fix include guard typo
@@ -1123,7 +1123,7 @@ Date: Wed Aug 3 22:08:49 2016 +0900
commit 63b55e2b591ba977a285a4c91fde0118c25246e7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 22:05:03 2016 +0900
+Date: 2016-08-03 22:05:03 +0900
Drop check for sys/bitypes.h
@@ -1131,7 +1131,7 @@ Date: Wed Aug 3 22:05:03 2016 +0900
commit d263f25911a0b359b7edec0faa9320d5d13928da
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 21:48:54 2016 +0900
+Date: 2016-08-03 21:48:54 +0900
Fix typo
@@ -1140,7 +1140,7 @@ Date: Wed Aug 3 21:48:54 2016 +0900
commit 970464f7332a1995bfd825de285425f0c957b1da
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Aug 3 20:53:06 2016 +0900
+Date: 2016-08-03 20:53:06 +0900
Drop unused CPP define
@@ -1148,13 +1148,13 @@ Date: Wed Aug 3 20:53:06 2016 +0900
commit 5389808029f0f81d204630f6e78abe11dfd61122
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Aug 2 21:56:09 2016 +0900
+Date: 2016-08-02 21:56:09 +0900
Fix memory leak
commit 1006445982877970d376c0f657e04fc1481e2459
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Aug 2 21:38:43 2016 +0900
+Date: 2016-08-02 21:38:43 +0900
Use DIR_SEP instead of hard-coding ":"
@@ -1162,19 +1162,19 @@ Date: Tue Aug 2 21:38:43 2016 +0900
commit b021c3bee8e9edc7854050a3975cef003586b2e5
Author: Troy Rollo <troy@kawseq.com>
-Date: Sun Jul 31 22:47:25 2016 +1000
+Date: 2016-07-31 22:47:25 +1000
Fix bug 314571 - hp3500 backend does not set correct size for string option.
commit 1859803563f8baadeb6c0926610b2f782350d1e4
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 27 21:17:08 2016 +0900
+Date: 2016-07-27 21:17:08 +0900
Add a Fedora 24 Clang builder
commit f6c8be1380c2f12080cdbd7a81eb2d5156eaa154
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 20:55:14 2016 +0900
+Date: 2016-07-18 20:55:14 +0900
kvs40xx: fix [-Wunused-function] compiler warning
@@ -1183,7 +1183,7 @@ Date: Mon Jul 18 20:55:14 2016 +0900
commit effc26e4028f2d21a5bd9fec0458a78c0f6dc330
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 20:53:51 2016 +0900
+Date: 2016-07-18 20:53:51 +0900
kvs20xx: fix [-Wunused-function] compiler warning
@@ -1192,25 +1192,25 @@ Date: Mon Jul 18 20:53:51 2016 +0900
commit 2d468852288b5d80e9e8b6831467081fe3ec874e
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 17:32:21 2016 +0900
+Date: 2016-07-18 17:32:21 +0900
pnm: fix [-Wformat=] compiler warning
commit 2f39c7227021e85b8fdde8161358858797bd7461
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 17:11:26 2016 +0900
+Date: 2016-07-18 17:11:26 +0900
v4l: fix [Wunused-parameter] compiler warnings
commit 880992739020eee8cc0e005e6bdf853f2ff3572f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 17:10:56 2016 +0900
+Date: 2016-07-18 17:10:56 +0900
sm3600: fix [-Wunused-parameter] compiler warning
commit 99c14f2d9503cd9a6c77d71d590e434e504052c6
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 16:51:08 2016 +0900
+Date: 2016-07-18 16:51:08 +0900
Use a single symbol to flag unused parameters
@@ -1220,7 +1220,7 @@ Date: Mon Jul 18 16:51:08 2016 +0900
commit b73a6e5017f6d4d2d0ef7a61bf6e2113f848be94
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 16:14:20 2016 +0900
+Date: 2016-07-18 16:14:20 +0900
niash: fix [-Wunused-parameter] compiler warning
@@ -1229,7 +1229,7 @@ Date: Mon Jul 18 16:14:20 2016 +0900
commit 61719e0a131a6f0d4bf53aa98ecf510ce7081ca7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 18 16:11:39 2016 +0900
+Date: 2016-07-18 16:11:39 +0900
dc240: fix [-Wunused-parameter] compiler warning
@@ -1238,19 +1238,19 @@ Date: Mon Jul 18 16:11:39 2016 +0900
commit ef8e258165526175c9ac2d262448f16b551d19e9
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jul 14 21:12:38 2016 +0900
+Date: 2016-07-14 21:12:38 +0900
Sync autofoo
commit 57350969f6f46195c5fd5e255b3d1906df401d19
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jul 14 20:51:42 2016 +0900
+Date: 2016-07-14 20:51:42 +0900
sane.tex: mark up email as a URL
commit 707baa0d160ff13331bed6063d2502b09f902f38
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jul 14 20:50:14 2016 +0900
+Date: 2016-07-14 20:50:14 +0900
doc/sane.tex: drop html.sty in favour of url.sty
@@ -1259,19 +1259,19 @@ Date: Thu Jul 14 20:50:14 2016 +0900
commit bfd1626c4b119404429a847aaa92df77ca3fbb40
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 23:44:26 2016 +0900
+Date: 2016-07-13 23:44:26 +0900
Sync autofoo
commit 8598f81d0b9542b6f4928b8b870a26b50f440379
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 23:43:35 2016 +0900
+Date: 2016-07-13 23:43:35 +0900
Fix figure orientation
commit 00bc3e9b451f8dfb89553305cce89172be520bb1
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 23:40:19 2016 +0900
+Date: 2016-07-13 23:40:19 +0900
Generate EPS figures too
@@ -1280,7 +1280,7 @@ Date: Wed Jul 13 23:40:19 2016 +0900
commit cc8f99b900d5ae44248677f6881f1b74d7885bfb
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 23:24:29 2016 +0900
+Date: 2016-07-13 23:24:29 +0900
Generate PDF figures explicitly with fig2dev
@@ -1292,7 +1292,7 @@ Date: Wed Jul 13 23:24:29 2016 +0900
commit d7e1995d001b0d16b9920e751be923f6a8393bf1
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 13 22:37:44 2016 +0900
+Date: 2016-07-13 22:37:44 +0900
doc/sane.tex: Replace epsfig with graphicx
@@ -1306,7 +1306,7 @@ Date: Wed Jul 13 22:37:44 2016 +0900
commit 0aab12b934a9f9620fb1236e13dd2b71a7426000
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 11 20:41:54 2016 +0900
+Date: 2016-07-11 20:41:54 +0900
Bump standard minor version
@@ -1315,7 +1315,7 @@ Date: Mon Jul 11 20:41:54 2016 +0900
commit 1ed3b9fa86e6bc6875a72a9b347164a5879ffe8b
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jul 11 20:37:08 2016 +0900
+Date: 2016-07-11 20:37:08 +0900
Reclassify doc/html.sty
@@ -1323,13 +1323,13 @@ Date: Mon Jul 11 20:37:08 2016 +0900
commit 2481e1e98b02e927cdb9c2e6e404252ef9e49041
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 15:43:42 2016 +0900
+Date: 2016-07-10 15:43:42 +0900
Sync autofoo
commit fa41b18001f74e8941813709f15a15cc9ea299e1
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 20:35:04 2016 +0900
+Date: 2016-07-10 20:35:04 +0900
Refactor API spec conversion support
@@ -1343,19 +1343,19 @@ Date: Sun Jul 10 20:35:04 2016 +0900
commit d7c69d141ffb4f456d659b443aa4c3d3be82793e
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 19:40:04 2016 +0900
+Date: 2016-07-10 19:40:04 +0900
Add test for the TeX to HTML converter
commit fe2fbe06e1b7db42ea2578e8d853cf83d7bb72a9
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 19:29:55 2016 +0900
+Date: 2016-07-10 19:29:55 +0900
Refactor TEXINPUTS handling
commit f322cbc7f950b087e969ac115a5b4e14735881e4
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 15:41:08 2016 +0900
+Date: 2016-07-10 15:41:08 +0900
Add support for PDF API spec output
@@ -1364,31 +1364,31 @@ Date: Sun Jul 10 15:41:08 2016 +0900
commit 5a73fb24d1e7a5dcdd287ce7654050b1703cc9c6
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 14:48:43 2016 +0900
+Date: 2016-07-10 14:48:43 +0900
Be quiet but do not hide errors
commit e0fd693bb170813f95241898a53ba3f9c261c22a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 10 13:32:22 2016 +0900
+Date: 2016-07-10 13:32:22 +0900
Fix API spec generation for VPATH builds
commit cb04102a20bc5b1e9cbb990805de3586a0a940c0
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jul 9 15:10:00 2016 +0900
+Date: 2016-07-09 15:10:00 +0900
Add GitLab CI musl build job
commit be7af6835741c18ea93babd421c083c377b1f88d
Author: Ruslan Nabioullin <rnabioullin@gmail.com>
-Date: Sat Oct 29 20:27:47 2011 -0400
+Date: 2011-10-29 20:27:47 -0400
Fixed scanning status messages. Fixes 313411
commit d62d0a2e452e9ed1ae74cc20c01488543cda8ef9
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jul 6 20:23:12 2016 +0900
+Date: 2016-07-06 20:23:12 +0900
check-po.awk: fix awk invocation
@@ -1397,25 +1397,25 @@ Date: Wed Jul 6 20:23:12 2016 +0900
commit ddbdfd6206e30e513509720dd5137c26c9efc248
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jul 3 21:11:04 2016 +0900
+Date: 2016-07-03 21:11:04 +0900
Fix configure time test
commit c17821e3609080309bcb8a3173cb071e1493a62c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jul 2 19:23:01 2016 +0900
+Date: 2016-07-02 19:23:01 +0900
Fix configure time warning during CI build
commit c96236862635f74d8a1c01654430d93bed83f756
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Jul 1 23:45:43 2016 +0900
+Date: 2016-07-01 23:45:43 +0900
Sync autofoo
commit a9c813944e9aa0ceb6c153d06dff286ba855b90e
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Jul 1 23:37:49 2016 +0900
+Date: 2016-07-01 23:37:49 +0900
Make libusb-1.0 the default for USB support
@@ -1430,13 +1430,13 @@ Date: Fri Jul 1 23:37:49 2016 +0900
commit 418fbb987d731ed2468f48a6fb162f47ea7da55e
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jun 30 21:50:33 2016 +0900
+Date: 2016-06-30 21:50:33 +0900
Sync autofoo, once again ...
commit 602182931dceeedddcc6be3b144cbc1423bd9b4a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jun 30 21:49:25 2016 +0900
+Date: 2016-06-30 21:49:25 +0900
Improve test shell builtin invocation portability
@@ -1444,7 +1444,7 @@ Date: Thu Jun 30 21:49:25 2016 +0900
commit 828cd013e9a4411158af8816a63b133b6da19ed5
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jun 30 21:38:04 2016 +0900
+Date: 2016-06-30 21:38:04 +0900
Compile getopt replacement functions only if needed
@@ -1458,7 +1458,7 @@ Date: Thu Jun 30 21:38:04 2016 +0900
commit 89dc05006ec93e8fd8a103504701db720814669a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 29 22:21:10 2016 +0900
+Date: 2016-06-29 22:21:10 +0900
Sync autofoo
@@ -1466,19 +1466,19 @@ Date: Wed Jun 29 22:21:10 2016 +0900
commit a298bfe5a8c65236ac13130e891a93bf3cf58976
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 29 22:20:51 2016 +0900
+Date: 2016-06-29 22:20:51 +0900
Fix AS_IF condition
commit f03f1f66d4a7704c20d221897665509d7f1a626a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 29 22:15:06 2016 +0900
+Date: 2016-06-29 22:15:06 +0900
Sync autofoo files
commit 1c946f7c194869966f6d3af9df499184d3035c20
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Jun 28 22:42:09 2016 +0900
+Date: 2016-06-28 22:42:09 +0900
Compile replacement functions only if needed
@@ -1486,7 +1486,7 @@ Date: Tue Jun 28 22:42:09 2016 +0900
commit 0c2b86ac0b56ee7cb8b962102c54855f05887b08
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 27 22:33:28 2016 +0900
+Date: 2016-06-27 22:33:28 +0900
Fix distcheck issues in tools/
@@ -1498,7 +1498,7 @@ Date: Mon Jun 27 22:33:28 2016 +0900
commit 81f9557966ad335a76deff57a112607d9813ba7a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 27 22:08:20 2016 +0900
+Date: 2016-06-27 22:08:20 +0900
Clean up .gitignore file content
@@ -1507,7 +1507,7 @@ Date: Mon Jun 27 22:08:20 2016 +0900
commit 61f3fec68e14944be7ecf219ec604e599141cbdf
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 27 22:05:50 2016 +0900
+Date: 2016-06-27 22:05:50 +0900
Remove references to SANE CVS
@@ -1517,7 +1517,7 @@ Date: Mon Jun 27 22:05:50 2016 +0900
commit c23791cbd71d58b2627cfc65bbf2cb20aeb51bba
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 27 21:51:43 2016 +0900
+Date: 2016-06-27 21:51:43 +0900
Sync AUTHORS content with current status
@@ -1526,7 +1526,7 @@ Date: Mon Jun 27 21:51:43 2016 +0900
commit cb4924f210bf758558b583220a14ed5a62f178dc
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 10:22:35 2016 +0900
+Date: 2016-06-26 10:22:35 +0900
Stop distclean from removing files willy-nilly
@@ -1536,7 +1536,7 @@ Date: Sun Jun 26 10:22:35 2016 +0900
commit 0065aaa1c8cb823d20b1e0ff32b3f6197e73db3f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 10:11:42 2016 +0900
+Date: 2016-06-26 10:11:42 +0900
Remove overly zealous ignore patterns
@@ -1546,13 +1546,13 @@ Date: Sun Jun 26 10:11:42 2016 +0900
commit 8274a52eec3c20becf9901acaab4837b6b61c2f7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 10:07:26 2016 +0900
+Date: 2016-06-26 10:07:26 +0900
Sort .gitignore files
commit b25ef62c2bb163fffea56000ef25544a236d2096
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 10:05:12 2016 +0900
+Date: 2016-06-26 10:05:12 +0900
Fix sorting of ignore files
@@ -1560,7 +1560,7 @@ Date: Sun Jun 26 10:05:12 2016 +0900
commit 0bc7b6aed7e3ac8ee78190f0e795ce9c62c3f36e
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 09:16:54 2016 +0900
+Date: 2016-06-26 09:16:54 +0900
Sync *.po files with previous changes
@@ -1569,19 +1569,19 @@ Date: Sun Jun 26 09:16:54 2016 +0900
commit bdade6bb07a0ec27e3930c0b3b86c28a5c2a5bd9
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 09:15:24 2016 +0900
+Date: 2016-06-26 09:15:24 +0900
Sync derived files with previous changes
commit ec4fe7ec7200a881feba5b539256dc58ae1edbaf
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 08:50:04 2016 +0900
+Date: 2016-06-26 08:50:04 +0900
Prefer gettext's --disable-nls option
commit c676acbe472f2a57763d0ce198e50b048d37bbda
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 08:49:14 2016 +0900
+Date: 2016-06-26 08:49:14 +0900
Switch to using the gettext build machinery
@@ -1590,7 +1590,7 @@ Date: Sun Jun 26 08:49:14 2016 +0900
commit 0286bf46fc2992dfd2e9539fb939c243db13e91f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 26 08:30:45 2016 +0900
+Date: 2016-06-26 08:30:45 +0900
Add gettext build machinery files for I18N/L10N support
@@ -1600,7 +1600,7 @@ Date: Sun Jun 26 08:30:45 2016 +0900
commit eecee6d1014537cabe427d44168fce9ac9894301
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jun 25 15:23:05 2016 +0900
+Date: 2016-06-25 15:23:05 +0900
Fix VPATH build issue
@@ -1609,43 +1609,43 @@ Date: Sat Jun 25 15:23:05 2016 +0900
commit 00984cd1119bb9bb5b794bfc0f1ef77369978d68
Author: Yurii Kolesnykov <yurikoles@gmail.com>
-Date: Sat Jun 25 03:34:12 2016 +0300
+Date: 2016-06-25 03:34:12 +0300
Fix compilation of saned.c under OS X
commit ad176ba9fe1f7608d8ad8032407cf1f7dc66dad6
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Tue Jun 21 00:50:02 2016 +0200
+Date: 2016-06-21 00:50:02 +0200
epsonds: remove unused var
commit 1dbabdce5d34e686608bb997245c49a823e19fb5
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Tue Jun 21 00:49:08 2016 +0200
+Date: 2016-06-21 00:49:08 +0200
epsonds: fix compilation
commit 9b389a61c5e698e8bffb186bdbc005739128b427
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Tue Jun 21 00:43:39 2016 +0200
+Date: 2016-06-21 00:43:39 +0200
epsonds: added support for network scanners
commit f13ca02b86a4d27951149723ca2ae81491991c18
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 20 21:42:56 2016 +0900
+Date: 2016-06-20 21:42:56 +0900
Fix variable name typo and other typographic nit-picks
commit e7100e275d58d67b903e883e7a02e45d18f81ef7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 15 20:47:28 2016 +0900
+Date: 2016-06-15 20:47:28 +0900
Update documentation to reflect recent changes
commit 5695d01077c7e575808a37a66df37d1f9fafa637
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 15 20:23:33 2016 +0900
+Date: 2016-06-15 20:23:33 +0900
Silence overly verbose targets
@@ -1653,19 +1653,19 @@ Date: Wed Jun 15 20:23:33 2016 +0900
commit 43cdc1056af899520797b09f3f78ba64703ed74d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 15 20:18:25 2016 +0900
+Date: 2016-06-15 20:18:25 +0900
Do not duplicate Warning on output
commit 40bfec7a6b4a804201bad7f0517f16b0c6ae4110
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Jun 15 20:17:29 2016 +0900
+Date: 2016-06-15 20:17:29 +0900
GitLab-CI: fix configure option
commit f75e271853f40c6cb00ce59cbb4e9d62d083a1b2
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Jun 14 21:24:53 2016 +0900
+Date: 2016-06-14 21:24:53 +0900
Tweak GitLab CI builds
@@ -1675,7 +1675,7 @@ Date: Tue Jun 14 21:24:53 2016 +0900
commit ef7deff36c759efa8d371251febef6d37d4eb94b
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Jun 14 21:20:48 2016 +0900
+Date: 2016-06-14 21:20:48 +0900
Add missing autofoo file
@@ -1683,7 +1683,7 @@ Date: Tue Jun 14 21:20:48 2016 +0900
commit d853463ef1b97082d657a0be32d1b27a04940ea2
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Jun 14 06:30:48 2016 +0900
+Date: 2016-06-14 06:30:48 +0900
Sync derived files
@@ -1695,19 +1695,19 @@ Date: Tue Jun 14 06:30:48 2016 +0900
commit 17d78ab7c326069c3a596f17ded6418ef42930bc
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Feb 12 21:09:32 2016 +0900
+Date: 2016-02-12 21:09:32 +0900
Fix warnings of "newer" automake versions
commit a7376ffa6dd1796c1678b33bd03bf19766e227de
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Feb 12 20:52:57 2016 +0900
+Date: 2016-02-12 20:52:57 +0900
Fix libtoolize warning
commit 7675cb7c3eb5b6e97fb87adc464b6bcc67cfd7dd
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Feb 11 17:43:14 2016 +0900
+Date: 2016-02-11 17:43:14 +0900
Drop Makefile.in from EXTRA_DIST
@@ -1715,73 +1715,73 @@ Date: Thu Feb 11 17:43:14 2016 +0900
commit 7bfa818c57485310994650528124a7036894eb36
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jan 14 21:22:00 2016 +0900
+Date: 2016-01-14 21:22:00 +0900
Set up compiler and linker early and in one place
commit f80cf1dbbdd85f2a0b595aef83cc63faa0c91c04
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jan 14 20:21:49 2016 +0900
+Date: 2016-01-14 20:21:49 +0900
Remove unused SANE_LINKER_RPATH macro
commit e4ad1f58f31ec7110df716494b13cf96156b6a7c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Jan 14 18:50:47 2016 +0900
+Date: 2016-01-14 18:50:47 +0900
Enable ISO C99 support for more compilers
commit 444b572d1a559d93a6ad172f86bdcc9197377e75
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 18:43:36 2016 +0900
+Date: 2016-01-09 18:43:36 +0900
Use autoconf provided --docdir
commit f1f4180e5b6f71bf3a674bbfcbf7932b401d7a96
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 18:24:20 2016 +0900
+Date: 2016-01-09 18:24:20 +0900
Collect autoconf bits in one place
commit 35f1936aeba18b34628d35938529e0d2af0e58c7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 18:11:53 2016 +0900
+Date: 2016-01-09 18:11:53 +0900
Determine version bits and release programmatically
commit 16497dc13838e14784778883fb2837fbcf9e288e
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 17:59:20 2016 +0900
+Date: 2016-01-09 17:59:20 +0900
Replace convenience variable by its expansion
commit 9a52b5bc27c2a50e14161b4dcaba43f825cf91a4
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 17:48:27 2016 +0900
+Date: 2016-01-09 17:48:27 +0900
Fix variable name typo
commit 79c623628a28b6c28321cad6518bf98cf7a705a4
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 17:48:03 2016 +0900
+Date: 2016-01-09 17:48:03 +0900
Fix new automake warnings
commit 97fed76717367289a8e160dab4341d79586c1079
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 17:22:31 2016 +0900
+Date: 2016-01-09 17:22:31 +0900
Replace obsolescent macro with LT_INIT option
commit c868a2e8d48e3c31051b6a8978c9b1df494bc36b
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 17:22:07 2016 +0900
+Date: 2016-01-09 17:22:07 +0900
Remove commented out code
commit 4894b1513d829957e109e5c49b812dc688fe78b3
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 17:11:19 2016 +0900
+Date: 2016-01-09 17:11:19 +0900
Drop a pile of unnecessary macro invocations
@@ -1789,7 +1789,7 @@ Date: Sat Jan 9 17:11:19 2016 +0900
commit ae89c8f98362a4e50d4b1a0ce8f3586b77a81989
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 9 15:59:35 2016 +0900
+Date: 2016-01-09 15:59:35 +0900
Update to automake-1.11.6
@@ -1798,7 +1798,7 @@ Date: Sat Jan 9 15:59:35 2016 +0900
commit 87e12bbf2e4312bf0bd18656afe579919c8788e1
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 13 22:24:21 2016 +0900
+Date: 2016-06-13 22:24:21 +0900
Sync derived files with autoreconf --force
@@ -1806,7 +1806,7 @@ Date: Mon Jun 13 22:24:21 2016 +0900
commit 309a8140e7285f87d5fc5ee24b942f1713e80be8
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Oct 28 21:59:42 2015 +0900
+Date: 2015-10-28 21:59:42 +0900
Improve test shell builtin invocation portability
@@ -1815,7 +1815,7 @@ Date: Wed Oct 28 21:59:42 2015 +0900
commit d9e2f441139c0514c3d388976d1f8fc78a04de95
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Oct 28 20:59:22 2015 +0900
+Date: 2015-10-28 20:59:22 +0900
Double quote code passed to AC_LANG_PROGRAM
@@ -1829,7 +1829,7 @@ Date: Wed Oct 28 20:59:22 2015 +0900
commit d3d5dc3da04cce842f7fa8d941676f2f5abc3bbd
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Oct 22 22:18:19 2015 +0900
+Date: 2015-10-22 22:18:19 +0900
Update to autoconf-2.69
@@ -1842,7 +1842,7 @@ Date: Thu Oct 22 22:18:19 2015 +0900
commit 2d6fad58b4c61d59bec3879dab9ccf0c1b88dd11
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Oct 22 20:15:45 2015 +0900
+Date: 2015-10-22 20:15:45 +0900
Respect GNU Standards user variables
@@ -1857,7 +1857,7 @@ Date: Thu Oct 22 20:15:45 2015 +0900
commit 7a2b112d20e08337528128745bf7cc1d6096a1d8
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Oct 21 22:33:53 2015 +0900
+Date: 2015-10-21 22:33:53 +0900
Prefer make variables over literal substitutions
@@ -1870,7 +1870,7 @@ Date: Wed Oct 21 22:33:53 2015 +0900
commit 2745528b60617d737a7a597c4ee5397359a6ddfd
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 21:52:47 2015 +0900
+Date: 2015-10-19 21:52:47 +0900
Fix non-POSIX automake file variable warning
@@ -1882,7 +1882,7 @@ Date: Mon Oct 19 21:52:47 2015 +0900
commit d81836bd2332e42136a15a72961c0b9295d94b58
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 21:04:53 2015 +0900
+Date: 2015-10-19 21:04:53 +0900
Add automake subdir-objects option
@@ -1896,7 +1896,7 @@ Date: Mon Oct 19 21:04:53 2015 +0900
commit d38a098ec6fce0aa18dd757677c5a07ff1a44163
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 20:20:56 2015 +0900
+Date: 2015-10-19 20:20:56 +0900
Rename configure.in to configure.ac
@@ -1909,19 +1909,19 @@ Date: Mon Oct 19 20:20:56 2015 +0900
commit c9027378a12a6f67b22ee5fe203df1739486e3ad
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Jun 13 20:35:34 2016 +0900
+Date: 2016-06-13 20:35:34 +0900
xerox_mpf: Make JPEG support an option
commit 359bb9c3d48c87324b2ead602de76e0e35daadba
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Jun 12 20:32:30 2016 +0900
+Date: 2016-06-12 20:32:30 +0900
Add CI support to test selected build scenarios
commit 5ba37467e88ca8052973b37128ce8fd36ad5d61d
Author: m. allan noah <kitno455@gmail.com>
-Date: Thu Jun 9 21:51:18 2016 -0400
+Date: 2016-06-09 21:51:18 -0400
fujitsu backend v131
@@ -1934,21 +1934,21 @@ Date: Thu Jun 9 21:51:18 2016 -0400
- add usb ids for many newer scanners
commit ec8bf64396b394c4d483b811f9948871f12882b4
-Merge: 1d2a40e 1e01365
+Merge: 1d2a40ec96ae 1e013654cc3a
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Sat May 21 22:06:57 2016 +0200
+Date: 2016-05-21 22:06:57 +0200
Merge branch 'master' of ssh://git.debian.org/git/sane/sane-backends
commit 1e013654cc3af09f4731ab9ec8d8324d03a7de4a
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Mon May 9 11:10:35 2016 +0200
+Date: 2016-05-09 11:10:35 +0200
pieusb: mkostemp -> mkstemp
commit 926bfade544de4a4fd5f1a8082b85a97e2443770
Author: Alex Belkin <abc@telekom.ru>
-Date: Sat May 7 22:33:03 2016 +0300
+Date: 2016-05-07 22:33:03 +0300
Color scanning for Samsung models, which support JPEG Lossy compression.
@@ -1961,99 +1961,99 @@ Date: Sat May 7 22:33:03 2016 +0300
commit 1d2a40ec96aea0ba183415efea570301159d4159
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Sat Apr 30 15:32:55 2016 +0200
+Date: 2016-04-30 15:32:55 +0200
pixma_mp150.c: fix parameter settings for MB5000 in send_scan_param
commit 28dcd0aef4ac91b87527c17c8aa89e879f39f20d
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Wed Apr 27 18:45:22 2016 +0200
+Date: 2016-04-27 18:45:22 +0200
pixma_mp150.c: replace multiple if statements with case statement in handle_interrupt
commit eb712c6bd8ca6a42a1d3941583fa18b9981b8712
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Wed Apr 27 17:55:52 2016 +0200
+Date: 2016-04-27 17:55:52 +0200
pixma_mp150.c: scan param 0x26-0x29 should contain localtime HHMM, also for MB5000 series
commit c8169b1e656f7f95c67946298da5a0e1c143f8e8
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Apr 22 23:58:23 2016 +0200
+Date: 2016-04-22 23:58:23 +0200
pixma.h: step version of the backend to 0.17.32
sane-pixma.man pixma.desc: mark Maxify MB5000 as complete (but ADF does not work)
commit dfc5487571ed2915bda7bdedbd4c79015004361b
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Apr 22 22:42:48 2016 +0200
+Date: 2016-04-22 22:42:48 +0200
pixma_mp150.c: fix 1200 dpi scanning for MB5000 series
commit d5e1323738a4ed2edc96b566138c7cc6c55f3f5e
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Apr 22 21:05:40 2016 +0200
+Date: 2016-04-22 21:05:40 +0200
pixma.h: step pixma backend version to 0.17.31
commit c2985f0fd60279bca0dcfed3d3fb60cc33cfe4dc
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Fri Apr 22 21:03:48 2016 +0200
+Date: 2016-04-22 21:03:48 +0200
pixma_bjnp_private.h: change minimum timeout value for the bjnp protocol to 1 sec
as 500 ms gives errors on scanimage -A (it workked for scanbd)
commit 4b2f171a13248a8e3d79379e368c54fb71ed97e2
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Wed Apr 20 11:19:32 2016 +0200
+Date: 2016-04-20 11:19:32 +0200
pixma_bjnp.c pixma_bjnp_private.h: set minimum timeout for network operations to 500ms
commit affe1ac821b17813188bd91045ced32fe4fcfe56
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Wed Apr 20 10:58:54 2016 +0200
+Date: 2016-04-20 10:58:54 +0200
pixma_bjnp.c pixma_bjnp_private.h: make bjnp protocol follow timeouts set by backend
commit 53aa78df3a6980791ce250c471d019c5c59b83ec
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Mon Apr 18 22:00:15 2016 +0200
+Date: 2016-04-18 22:00:15 +0200
pixma_mp150.c: Fix scanbutton detection for MB5000 series
commit 1452cf2e0d9f56602a5ca9b07e52f8d8f6b9ec8a
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
-Date: Sat Apr 16 21:37:25 2016 +0200
+Date: 2016-04-16 21:37:25 +0200
pixma_bjnp: Remove dead code in polling
commit 19c128a23e27c1ab5a030fa6ff74da1b740629bb
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 12 18:30:24 2016 +0200
+Date: 2016-04-12 18:30:24 +0200
README.linux: move installation description into new document INSTALL.linux
commit 51943537c314c9060138df8b37307377c307ba3a
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 12 18:14:55 2016 +0200
+Date: 2016-04-12 18:14:55 +0200
pixma: backend version 0.17.30
commit 270a8cd3bebfb2a630a1b74d5abd0b6fe2fc2e5d
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Apr 12 18:13:36 2016 +0200
+Date: 2016-04-12 18:13:36 +0200
pixma: Canon PIXMA MG7700 Series is working
commit 2556ffc2c593c3408cc554ecc97e07db457c975d
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Mar 31 11:21:27 2016 +0200
+Date: 2016-03-31 11:21:27 +0200
pixma_mp150: MG7700 Series doesn't need special image format post processing @ high dpi
commit e6b6ad9d4847e86aed8be0837a19bfada881f52d
Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Apr 5 20:30:10 2016 -0400
+Date: 2016-04-05 20:30:10 -0400
canon_dr backend v55
@@ -2063,31 +2063,31 @@ Date: Tue Apr 5 20:30:10 2016 -0400
commit 41a416e4afcf6cada69193dc408ef184d0e5f678
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Mon Mar 21 18:59:47 2016 +0100
+Date: 2016-03-21 18:59:47 +0100
epsonds: fixed resolution setting bug, DS-60000 workaround is needed no more
commit 52bc4d241c9587e99be2ae4566ad01469a3ecab9
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Mon Mar 21 10:53:29 2016 +0100
+Date: 2016-03-21 10:53:29 +0100
pixma: backend version 0.17.29
commit bc1637bb39794b415a2e73ee990e4763c73be3f9
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Tue Feb 16 16:20:58 2016 +0100
+Date: 2016-02-16 16:20:58 +0100
pixma_mp150: MG3600 Series doesn't need special image format post processing @ 1200dpi
commit 23eb95582da718791103b83ea002e947caa0f5fc
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Mar 4 13:38:12 2016 +0100
+Date: 2016-03-04 13:38:12 +0100
pixma: backend version 0.17.28
commit eba9c9e2391d59459e5fa3f362d8dc08d14c7b9c
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Mar 4 13:36:08 2016 +0100
+Date: 2016-03-04 13:36:08 +0100
pixma_imageclass: software lineart for all imageCLASS, imageRUNNER, i-SENSYS and laserBase scanners,
supported by this sub-backend
@@ -2108,31 +2108,31 @@ Date: Fri Mar 4 13:36:08 2016 +0100
commit 38d6f1ba6dd48d8139b3ef504b4c7920d0e4736b
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Mar 4 13:08:31 2016 +0100
+Date: 2016-03-04 13:08:31 +0100
pixma_imageclass: MF6100 Series document feeder does not have 600DPI capability
commit 328e9b93d71d1f9b031c4066e4cba00893703c4a
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Mar 3 21:59:24 2016 +0100
+Date: 2016-03-03 21:59:24 +0100
raise build number
commit 8ad2c60d82797cc3495f63f8230bdf6f999067a1
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Mar 3 21:58:55 2016 +0100
+Date: 2016-03-03 21:58:55 +0100
use half step mode for LiDE 110 600 dpi scan
commit 52ea420d44a26832f662c837bbbe4d2f7002875a
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Mar 3 21:46:43 2016 +0100
+Date: 2016-03-03 21:46:43 +0100
use half step for LiDE 210 600 dpi scans
commit bd0b0cd218504868f32962a5558449956c8ce242
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Mar 3 21:39:25 2016 +0100
+Date: 2016-03-03 21:39:25 +0100
use rewind instead of slow_back_home
@@ -2141,37 +2141,37 @@ Date: Thu Mar 3 21:39:25 2016 +0100
commit 3dee0f8d48e26e3aceb0243d03199af5870f30e2
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Mar 3 21:31:01 2016 +0100
+Date: 2016-03-03 21:31:01 +0100
implement rewind for gl847 and gl124
commit de635a32f9638f5fad5806ab5de9498f5fa47ca9
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Mar 3 21:12:29 2016 +0100
+Date: 2016-03-03 21:12:29 +0100
add rewind function to command set
commit 270d6a4242c95d6d376f442ca701e067e3fc74d1
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Mon Feb 29 21:14:30 2016 +0100
+Date: 2016-02-29 21:14:30 +0100
fix Lide 110 gray mode max speed
commit 2f891c13bb5cb1728479ee08ba45b756f68a3287
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Mar 3 13:40:46 2016 +0100
+Date: 2016-03-03 13:40:46 +0100
pixma: backend version 0.17.27
commit bbd327f5e7c973db331f3f309788d852367bc79a
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Mar 3 13:38:33 2016 +0100
+Date: 2016-03-03 13:38:33 +0100
pixma_imageclass: reduce timeout for failed first usb command to 2 seconds
commit c41640f36433e646989665bac0ac5da460f2d9a9
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Mar 3 13:36:44 2016 +0100
+Date: 2016-03-03 13:36:44 +0100
pixma: new global parameter to set duration of receive timeout loop
@@ -2180,13 +2180,13 @@ Date: Thu Mar 3 13:36:44 2016 +0100
commit 9897357727b65d13167b89cd1d1fe816f4d72563
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 28 21:26:27 2016 +0100
+Date: 2016-02-28 21:26:27 +0100
enable pixel averaging when below 600 for all models
commit d784dec60b096b8e8fe18f5f7b5c1921249d6ed2
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 28 12:26:12 2016 +0100
+Date: 2016-02-28 12:26:12 +0100
motor table fixes
@@ -2195,49 +2195,49 @@ Date: Sun Feb 28 12:26:12 2016 +0100
commit 759729331cc60a86d884518064b2dc92736f7abd
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 28 12:18:56 2016 +0100
+Date: 2016-02-28 12:18:56 +0100
fix maximum speed compute in gray mode
commit e1b1ba8aeecf2eefa2855ec8c77604a8070027ab
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Fri Feb 26 05:57:35 2016 +0100
+Date: 2016-02-26 05:57:35 +0100
fix expiration time option reading
commit 61d6f5c2140e6e659db20916937cc95c5c7256f3
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Feb 25 21:37:55 2016 +0100
+Date: 2016-02-25 21:37:55 +0100
mode set fixes
commit fa2c9dc9b216fa7b7f1baf013b7cbe8eb3df8597
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Feb 25 21:37:00 2016 +0100
+Date: 2016-02-25 21:37:00 +0100
fix GPIO during scan
commit c5117ed0f1b522eab10fd2248f140b2acad2a708
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Wed Feb 24 21:43:29 2016 +0100
+Date: 2016-02-24 21:43:29 +0100
doc and version update
commit 747275a00f03e4ab643461448985ce20879e1d12
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Wed Feb 24 21:15:26 2016 +0100
+Date: 2016-02-24 21:15:26 +0100
add 1200 and 2400 dpi mode for LiDE 120
commit 2a18600792c00f9ca37ff5b52d2cc1c8202d8b4b
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Wed Feb 24 06:35:46 2016 +0100
+Date: 2016-02-24 06:35:46 +0100
make 1200 dpi scan mode work for LiDE 120
commit b11a69d27572aa938cedff303ba7560ca9793943
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Wed Feb 24 06:17:50 2016 +0100
+Date: 2016-02-24 06:17:50 +0100
make 600 dpi mode work for LiDE 120
@@ -2246,13 +2246,13 @@ Date: Wed Feb 24 06:17:50 2016 +0100
commit 15e203de89abe53f732aa431548645c5c9838237
Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Feb 23 21:11:00 2016 -0500
+Date: 2016-02-23 21:11:00 -0500
Various copyright comment updates
commit 1465543cc0dd9e4fb4b3706ca6793e90a35ce389
Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Feb 23 21:07:06 2016 -0500
+Date: 2016-02-23 21:07:06 -0500
fujitsu backend v130
@@ -2261,13 +2261,13 @@ Date: Tue Feb 23 21:07:06 2016 -0500
commit 963de58dfc4498693aeeec35a9ff23363af6ac67
Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Feb 23 20:42:52 2016 -0500
+Date: 2016-02-23 20:42:52 -0500
Enable padded read for DR-3080CII
commit 1207ce5a40664c04b934bd0a6babbc1575361356
Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Feb 23 20:36:32 2016 -0500
+Date: 2016-02-23 20:36:32 -0500
Support SANE_USB_WORKAROUND env var
@@ -2280,7 +2280,7 @@ Date: Tue Feb 23 20:36:32 2016 -0500
commit 219198838be069d7e3d48b53762727f1bbfb93e5
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Tue Feb 23 21:39:22 2016 +0100
+Date: 2016-02-23 21:39:22 +0100
LiDE 120 working [75-300] dpi
@@ -2290,91 +2290,91 @@ Date: Tue Feb 23 21:39:22 2016 +0100
commit 4fd1d10228047a740f28b1cd25579b7c40c93b1f
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Mon Feb 22 21:45:02 2016 +0100
+Date: 2016-02-22 21:45:02 +0100
tune scanarea geometry
commit a74ebe551daf8750821b1ab57324e54141a84461
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 21 22:14:48 2016 +0100
+Date: 2016-02-21 22:14:48 +0100
first almost correct scan at 300 dpi
commit 8f938f2d00d27070e826f88a77264ee36d0bbedf
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 21 09:48:26 2016 +0100
+Date: 2016-02-21 09:48:26 +0100
GL124 DAC and SENSOR setup changes
commit f56ffa63b99db4767b35d294fef96476b228f993
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Sun Feb 21 09:47:47 2016 +0100
+Date: 2016-02-21 09:47:47 +0100
doxygne fix
commit 2e1102dc3ab1ee4d7bfec3e7cbf6e3a1527f5264
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Thu Feb 18 21:41:38 2016 +0100
+Date: 2016-02-18 21:41:38 +0100
add dedicated reference slope tables for LiDE 120
commit 214dfad1d5aa841b597187004747ec88c507cf06
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Wed Feb 17 21:43:05 2016 +0100
+Date: 2016-02-17 21:43:05 +0100
use dedicated LiDE120 GPIO
commit 387cea7d6ce75af9441c5841221267bef7b7924c
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Wed Feb 17 21:04:55 2016 +0100
+Date: 2016-02-17 21:04:55 +0100
define dedicated motor/sensor/gpio for LiDE 120
commit e90f8cb8a1e62f6865d9e237fd1f0e7f773e5094
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Fri Feb 12 08:11:20 2016 +0100
+Date: 2016-02-12 08:11:20 +0100
latin1 -> utf8
commit d74d3bcd887d2a3d59ee96e04eb68f15c0a3b882
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Feb 18 22:34:16 2016 +0100
+Date: 2016-02-18 22:34:16 +0100
README.linux: add some hints for individual SANE installations
commit 926a7e67b6f81ffdb1b4f67a55bf84862efcf6b9
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 21:24:18 2016 +0100
+Date: 2016-02-17 21:24:18 +0100
pixma: fix scanner names
commit 235dc80b5f3faaf195eef1e177a1f38284ca3bee
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 21:10:44 2016 +0100
+Date: 2016-02-17 21:10:44 +0100
pixma: Canon i-SENSYS MF6100 Series is working
commit 6d89f7ef25266cc9a53440bbf68ff2e1a37d4b86
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 21:06:04 2016 +0100
+Date: 2016-02-17 21:06:04 +0100
pixma: backend version 0.17.26
commit 7a227dcaf2771b31feb852e6a83336976966a0ab
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 21:03:18 2016 +0100
+Date: 2016-02-17 21:03:18 +0100
pixma_imageclass: wait for 8sec to throw last page out of ADF feeder @ ADFDUP
commit 23efb9f55f466179df86848912acbed1a94c10ff
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 21:01:48 2016 +0100
+Date: 2016-02-17 21:01:48 +0100
pixma_imageclass: PIXMA_ENO_PAPER check also for ADFDUP scans
commit 29ceb0e377009cd6829d8f68c58a2197ac19a20d
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 20:59:32 2016 +0100
+Date: 2016-02-17 20:59:32 +0100
pixma_imageclass: fix for failed first usb command (timeout)
@@ -2384,7 +2384,7 @@ Date: Wed Feb 17 20:59:32 2016 +0100
commit 8f1202d6537568e56b4886ebe5d41d0210ffacd9
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 20:55:49 2016 +0100
+Date: 2016-02-17 20:55:49 +0100
pixma_imageclass: fixes for MF6100 Series
@@ -2393,25 +2393,25 @@ Date: Wed Feb 17 20:55:49 2016 +0100
commit 02855737ee84e3c72bceff9ba06fddc5a5d99860
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 20:32:00 2016 +0100
+Date: 2016-02-17 20:32:00 +0100
pixma: use usb timeout instead of sleep timer while waiting for usb response
commit 4771fab9c16b477dc376bd2e5fdd8d0dc7f2c478
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Feb 17 20:30:47 2016 +0100
+Date: 2016-02-17 20:30:47 +0100
pixma: reduce global usb read and write timeouts to 1 sec
commit 99f7e7872f2619c3ebec2590b91de3fb0ca28a1a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Feb 13 17:37:34 2016 +0900
+Date: 2016-02-13 17:37:34 +0900
Disable use of pthreads if pthread.h cannot be found
commit 04d5e4a0cf775f6483873a3f1e70a173587546b6
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Feb 13 17:34:46 2016 +0900
+Date: 2016-02-13 17:34:46 +0900
Move #include <pthread.h> to sanei_thread.h
@@ -2420,7 +2420,7 @@ Date: Sat Feb 13 17:34:46 2016 +0900
commit af35e9ba749cce6e735d685ec4495e8c8d85778c
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Thu Feb 11 12:06:34 2016 +0100
+Date: 2016-02-11 12:06:34 +0100
pixma: Canon Pixma MG3600 Series is working
@@ -2428,43 +2428,43 @@ Date: Thu Feb 11 12:06:34 2016 +0100
commit 7bd773ade5ff1bc4170d2a1773428efe759aaa75
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Tue Feb 9 09:55:26 2016 +0100
+Date: 2016-02-09 09:55:26 +0100
LiDE 120 support wip
commit 056f590f2d147099554d97a89dd5e0ddfa8d6dda
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Sat Jan 23 00:55:31 2016 +0100
+Date: 2016-01-23 00:55:31 +0100
epsonds: fixed comment
commit cf2dfea0008d16cb70f8baeaae5a414e9bdafda3
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Fri Jan 22 20:44:36 2016 +0100
+Date: 2016-01-22 20:44:36 +0100
epsonds: extend the bug fix to all depths
commit 8fd6151acd1a1b313b1c9fabb5e2691ba45de9d6
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Fri Jan 22 17:38:00 2016 +0100
+Date: 2016-01-22 17:38:00 +0100
epsonds: fix stripes on DS-60000 at 1bpp/300dpi
commit 4fa7f4f6f8b69f41fd5d03abc12d16e0f2e876b3
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Fri Jan 22 17:01:57 2016 +0100
+Date: 2016-01-22 17:01:57 +0100
epsonds: clear endpoints on startup in order to fix some strange scanner / xhci combo
commit f78e85cad666492fadd5612af77fa7c84e270a12
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Jan 8 18:35:20 2016 +0100
+Date: 2016-01-08 18:35:20 +0100
pixma: backend version 0.17.25
commit b08c324223732407d736a79ab8c59f01b3774736
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Jan 8 18:34:27 2016 +0100
+Date: 2016-01-08 18:34:27 +0100
pixma: Canon PIXMA MG5700 Series is working
@@ -2472,7 +2472,7 @@ Date: Fri Jan 8 18:34:27 2016 +0100
commit 0f47b47b759908e7b11800404d269087d60d87ad
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Jan 8 17:32:36 2016 +0100
+Date: 2016-01-08 17:32:36 +0100
pixma_mp[150|810]: disable send_time()
@@ -2483,7 +2483,7 @@ Date: Fri Jan 8 17:32:36 2016 +0100
commit b040b150a08b0b5394ad3bc91a45966d97f58152
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Jan 8 16:54:30 2016 +0100
+Date: 2016-01-08 16:54:30 +0100
pixma: fix for [#315244] Add support for Canon PIXMA MG5700, MG6800, MG6900 and MG7700
@@ -2491,13 +2491,13 @@ Date: Fri Jan 8 16:54:30 2016 +0100
commit 81c429082c3c139f8616de4a73733953cd5aa33f
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Fri Jan 8 16:43:46 2016 +0100
+Date: 2016-01-08 16:43:46 +0100
pixma: update copyright
commit 9aecb00947e6bf7ef1cf412aff2ab41202617b30
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Jan 8 21:26:31 2016 +0900
+Date: 2016-01-08 21:26:31 +0900
md5: Avoid the need for casting
@@ -2506,7 +2506,7 @@ Date: Fri Jan 8 21:26:31 2016 +0900
commit cdad5961f3888f0a3c0c525d0efab33174c11a24
Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 01:23:51 2015 +0100
+Date: 2015-12-06 01:23:51 +0100
Introduce md5_set_uint32
@@ -2516,7 +2516,7 @@ Date: Sun Dec 6 01:23:51 2015 +0100
commit f3471c2ca6ea22846dd6619aff7913610722a6c0
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 2 17:50:34 2016 +0900
+Date: 2016-01-02 17:50:34 +0900
saned: Use system header IPv6 test macros if available
@@ -2527,7 +2527,7 @@ Date: Sat Jan 2 17:50:34 2016 +0900
commit 0de5416a9bafa1ade52722c509817276bbf87d8a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 2 16:06:34 2016 +0900
+Date: 2016-01-02 16:06:34 +0900
umax_pp: fix memory leak
@@ -2535,25 +2535,25 @@ Date: Sat Jan 2 16:06:34 2016 +0900
commit 9d78ace3b7e60afa2b3cb829ac23e5f8b4ccdc07
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Jan 2 16:06:00 2016 +0900
+Date: 2016-01-02 16:06:00 +0900
umax_pp: fix [-Wunused-but-set-variable] compiler warnings
commit 3f0c3df2fcde8d0cf30ab68c70cb5cad984dda6f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Dec 31 17:51:00 2015 +0900
+Date: 2015-12-31 17:51:00 +0900
kvs40xx: fix [-Wstrict-aliasing] compiler warnings
commit b1f886a2e36555fb0b01c8eb22a0041aebe25795
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Dec 31 17:47:40 2015 +0900
+Date: 2015-12-31 17:47:40 +0900
kvs20xx: fix [-Wstrict-aliasing] compiler warnings
commit 0e3a5c4197fe36eae739a6086b484ff16b83d663
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Dec 31 17:43:25 2015 +0900
+Date: 2015-12-31 17:43:25 +0900
kodakaio: fix [-Wformat=] compiler warnings
@@ -2562,85 +2562,85 @@ Date: Thu Dec 31 17:43:25 2015 +0900
commit cadb4b0fff00540159625320416e5601c4704627
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:45:56 2015 +0900
+Date: 2015-12-26 17:45:56 +0900
saned: fix [-Wmaybe-uninitialized] compiler warning
commit 572e61d39a10ac7299d95005fa7543afe4957d80
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 14:56:12 2015 +0900
+Date: 2015-12-26 14:56:12 +0900
p5: fix [-Wunused-but-set-variable] compiler warnings
commit f9e44963801be2940c71e49d7c76a4e59b28dfc7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 14:51:21 2015 +0900
+Date: 2015-12-26 14:51:21 +0900
xerox_mfp: fix [-Wunused-but-set-variable] compiler warning
commit f276e3e05503c5f44890df5a8105959ea07dbb6d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 14:49:25 2015 +0900
+Date: 2015-12-26 14:49:25 +0900
umax1220: fix [-Wunused-but-set-variable] compiler warning
commit e28bdadae98f203188253c5b0a8825a284c8c066
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 13:27:47 2015 +0900
+Date: 2015-12-26 13:27:47 +0900
u12: fix [-Wunused-but-set-variable] compiler warning
commit 70c9e1d13ce705249ddbbee2dad5e6307fe77ffa
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 13:25:18 2015 +0900
+Date: 2015-12-26 13:25:18 +0900
sm3840: fix [-Wunused-but-set-variable] compiler warnings
commit 9d4f2a72098436e4a65d2047a151ba3c0af82907
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 13:18:13 2015 +0900
+Date: 2015-12-26 13:18:13 +0900
sm3600: fix [-Wunused-but-set-variable] compiler warning
commit 82720a2023d8e75480036a9e86f8a57d0bfe6a10
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Dec 24 19:01:09 2015 +0900
+Date: 2015-12-24 19:01:09 +0900
sharp: fix [-Wunused-but-set-variable] compiler warning
commit da010d6088a75ed85472c46e9a29ace18cd7eda9
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Dec 24 17:44:04 2015 +0900
+Date: 2015-12-24 17:44:04 +0900
niash: fix [-Wunused-but-set-variable] compiler warning
commit 86c5d6d7bd52dcb4208c7d5a1ba8844e8c8011e5
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Dec 24 17:38:41 2015 +0900
+Date: 2015-12-24 17:38:41 +0900
nec: fix [-Wunused-but-set-variable] compiler warning
commit 220429ff9ebc78e9869e431125ffd9a235efa93d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 22:27:47 2015 +0900
+Date: 2015-12-23 22:27:47 +0900
mustek_usb2: fix [-Wunused-but-set-variable] compiler warnings
commit 7efb05627273266a8171d3f9244bbd7a433d6e44
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 22:19:01 2015 +0900
+Date: 2015-12-23 22:19:01 +0900
mustek_pp: fix [-Wunused-but-set-variable] compiler warning
commit 664398cc311b85647a804bee0f8f230a0e3a3f49
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 22:12:07 2015 +0900
+Date: 2015-12-23 22:12:07 +0900
mustek: fix [-Wunused-but-sed-variable] compiler warnings
commit 8b75c6d45002ffafae6cfbf2edd64b3de35d3b04
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 22:17:40 2015 +0900
+Date: 2015-12-23 22:17:40 +0900
microtek2: fix another [-Wunused-but-set-variable] compiler warning
@@ -2649,13 +2649,13 @@ Date: Wed Dec 23 22:17:40 2015 +0900
commit c1458770955b5476eedc89755bb424744b05b055
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 22:11:31 2015 +0900
+Date: 2015-12-23 22:11:31 +0900
microtek2: fix [-Wunused-but-set-variable] compiler warnings
commit 26aa8b52f60adf7553b2872f54a85cfd7b20dd98
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:41:09 2015 +0900
+Date: 2015-12-26 17:41:09 +0900
magicolor: fix [-Wunused-function] compiler warning
@@ -2663,19 +2663,19 @@ Date: Sat Dec 26 17:41:09 2015 +0900
commit 292dd42bb6585e2801623d1f33497581626d9d72
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:50:42 2015 +0900
+Date: 2015-12-23 21:50:42 +0900
magicolor: fix [-Wunused-but-set-variable] compiler warning
commit d0e85e9d5e775f143f3db98e762d72861f60a82b
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:48:09 2015 +0900
+Date: 2015-12-23 21:48:09 +0900
ma1509: fix [-Wunused-but-set-variable] compiler warning
commit 7c0f5ec66c7fd673d27876b538e52440a897cc1f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:36:57 2015 +0900
+Date: 2015-12-26 17:36:57 +0900
lexmark: fix [-Wmaybe-uninitialized] compiler warning
@@ -2684,7 +2684,7 @@ Date: Sat Dec 26 17:36:57 2015 +0900
commit 068c3bb75d3972dd2218caa84a6de761c5ca0db8
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:28:34 2015 +0900
+Date: 2015-12-26 17:28:34 +0900
kodakaio: fix [-Wunused-function] compiler warning
@@ -2693,97 +2693,97 @@ Date: Sat Dec 26 17:28:34 2015 +0900
commit 610dc9ceb4d9eb061209d935e2b1966dfca5a74c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:38:08 2015 +0900
+Date: 2015-12-23 21:38:08 +0900
kodak: fix [-Wunused-but-set-variable] compiler warning
commit 2724f85552def3fa0c92d88389854c283eac38d3
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:36:54 2015 +0900
+Date: 2015-12-23 21:36:54 +0900
hpsj5s: fix [-Wunused-but-set-variable] compiler warning
commit aabb63dbbfdfea9f444019a19171bdcace08b0dd
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:35:39 2015 +0900
+Date: 2015-12-23 21:35:39 +0900
hp4200: fix [-Wunused-but-set-variable] compiler warnings
commit a82798d5e1d8352daa1d519d77a7a22771c8439e
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:33:40 2015 +0900
+Date: 2015-12-23 21:33:40 +0900
hp3500: fix [-Wunused-but-set-variable] compiler warning
commit 51277aec4a6959f88d46d7ca14cfb94166c328eb
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:24:10 2015 +0900
+Date: 2015-12-23 21:24:10 +0900
hp: fix [-Wunused-but-set-variable] compiler warnings
commit a97b1738dfcc16cd0a7fd68f95df8b013f3cb206
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:19:46 2015 +0900
+Date: 2015-12-23 21:19:46 +0900
gphoto2: fix [-Wunused-but-set-variable] compiler warning
commit cbeb98daeceb262b3a868c1b2ea2102b98760e61
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:10:29 2015 +0900
+Date: 2015-12-23 21:10:29 +0900
epson: fix [-Wunused-but-set-variable] compiler warning
commit cbc72a017123b81a21c6b69ffcb6f828cc810f03
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 21:08:46 2015 +0900
+Date: 2015-12-23 21:08:46 +0900
dmc: fix [-Wunused-but-set-variable] compiler warning
commit fb4147c4f13f7f39c00a807ecc327b5824df21f5
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:58:07 2015 +0900
+Date: 2015-12-23 20:58:07 +0900
dc240: fix [-Wunused-but-set-variable] compiler warning
commit bcfa3f6591744e43a0aa7be228505423b25f7731
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:56:49 2015 +0900
+Date: 2015-12-23 20:56:49 +0900
dc210: fix [-Wunused-but-set-variable] compiler warning
commit c31cf621062ae4ef69a80d51879d242978853859
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:55:36 2015 +0900
+Date: 2015-12-23 20:55:36 +0900
dc25: fix [-Wunused-but-set-variable] compiler warnings
commit 43b296471bc5a902de470f57df681d0c04964b91
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:51:28 2015 +0900
+Date: 2015-12-23 20:51:28 +0900
coolscan: fix [-Wunused-but-set-variable] compiler warnings
commit 50ca4bc97670fed1083a5677ddfa71f74bd495dc
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:49:17 2015 +0900
+Date: 2015-12-23 20:49:17 +0900
cardscan: fix [-Wunused-but-set-variable] compiler warning
commit c2b7b1af748527dd8ba0fcabc4310fcac1bdf491
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:46:13 2015 +0900
+Date: 2015-12-23 20:46:13 +0900
canon636u: fix [-Wunused-but-set-variable] compiler warning
commit e8818437456f36c721f12d311bdb65f3d45606c7
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:39:15 2015 +0900
+Date: 2015-12-23 20:39:15 +0900
canon: fix [-Wunused-but-set-variable] compiler warnings
commit 592430016c97b4362314c63a1ac7c96f23d71e4d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:30:02 2015 +0900
+Date: 2015-12-23 20:30:02 +0900
avision: fix [-Wunused-but-set-variable] compiler warning
@@ -2792,7 +2792,7 @@ Date: Wed Dec 23 20:30:02 2015 +0900
commit 5b8fdd317f1bb4076b8fe661db78c230af21004b
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:27:20 2015 +0900
+Date: 2015-12-23 20:27:20 +0900
artec_eplus48u: fix [-Wunused-but-set-variable] compiler warning
@@ -2801,7 +2801,7 @@ Date: Wed Dec 23 20:27:20 2015 +0900
commit ec1936713e67b192d057b2f552a25622f88844a1
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 20:26:21 2015 +0900
+Date: 2015-12-23 20:26:21 +0900
artec_eplus48u: fix [-Wunused-but-set-variable] compiler warning
@@ -2809,7 +2809,7 @@ Date: Wed Dec 23 20:26:21 2015 +0900
commit 5b21a24312f2cf2ced5d5c70b0f7d2c1f0c58f35
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 19:57:13 2015 +0900
+Date: 2015-12-23 19:57:13 +0900
artec: fix [-Wunused-but-set-variable] compiler warning
@@ -2818,13 +2818,13 @@ Date: Wed Dec 23 19:57:13 2015 +0900
commit 57ae115eafa5b52b84b8e2878982cdad7c1a9f13
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:12:41 2015 +0900
+Date: 2015-12-26 17:12:41 +0900
sanei_thread: fix [-Wmaybe-uninitialized] compiler warning
commit cd3453948dd812aaa77d921b198351b340f8c748
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Dec 23 18:53:06 2015 +0900
+Date: 2015-12-23 18:53:06 +0900
sanei_usb: const_cast data buffer
@@ -2833,7 +2833,7 @@ Date: Wed Dec 23 18:53:06 2015 +0900
commit be084e0d7bb7933e1826e6e48b42f43bc3cb077a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 17:05:17 2015 +0900
+Date: 2015-12-26 17:05:17 +0900
sanei_usb: Move variable declarations to scope of usage
@@ -2841,7 +2841,7 @@ Date: Sat Dec 26 17:05:17 2015 +0900
commit 0d7882e34b5f5625261258a3a341a58a04beb304
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Dec 26 16:51:44 2015 +0900
+Date: 2015-12-26 16:51:44 +0900
Change compile time warning policy
@@ -2853,13 +2853,13 @@ Date: Sat Dec 26 16:51:44 2015 +0900
commit 5136e664b8608604f54a2cc1d466019922b311e6
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Dec 20 21:58:45 2015 +0900
+Date: 2015-12-20 21:58:45 +0900
Document ChangeLog policy change
commit 674b75fc913187415b4f151a52e4bc7004c5d5b0
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Dec 20 17:33:55 2015 +0900
+Date: 2015-12-20 17:33:55 +0900
Improve readability of condition
@@ -2869,7 +2869,7 @@ Date: Sun Dec 20 17:33:55 2015 +0900
commit 58052a7ce6b205e25a2fc85f31158595cad00258
Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sat Dec 5 21:33:48 2015 +0100
+Date: 2015-12-05 21:33:48 +0100
Change GCC mode from ISO C90 to ISO C99
@@ -2881,7 +2881,7 @@ Date: Sat Dec 5 21:33:48 2015 +0100
commit baec5e039504de390cae41557b0b8323343721c3
Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sat Dec 5 10:48:59 2015 +0100
+Date: 2015-12-05 10:48:59 +0100
Use consistently __func__ instead of __FUNCTION__
@@ -2893,7 +2893,7 @@ Date: Sat Dec 5 10:48:59 2015 +0100
commit 93298674d02b1127efdf4e726e92e797a0081c9e
Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sat Dec 5 20:44:14 2015 +0100
+Date: 2015-12-05 20:44:14 +0100
Merge all compatibility macros around __func__ and __FUNCTION__
@@ -2904,7 +2904,7 @@ Date: Sat Dec 5 20:44:14 2015 +0100
commit 7c8c8e29beed2c4e6f96db08031c12c9001ca784
Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 03:32:51 2015 +0100
+Date: 2015-12-06 03:32:51 +0100
Remove dead code due to unused variables
@@ -2914,7 +2914,7 @@ Date: Sun Dec 6 03:32:51 2015 +0100
commit aba87a4582d594cf953b4bda5b5d42e37e13f21c
Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 01:30:30 2015 +0100
+Date: 2015-12-06 01:30:30 +0100
Mark internal function toupper_ascii as static
@@ -2924,7 +2924,7 @@ Date: Sun Dec 6 01:30:30 2015 +0100
commit 13b6faee2a0696eb02a61f22121b7f4854987f2e
Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 03:03:06 2015 +0100
+Date: 2015-12-06 03:03:06 +0100
Fix interface of helper function write_many
@@ -2934,7 +2934,7 @@ Date: Sun Dec 6 03:03:06 2015 +0100
commit badd7025b21b2207cfb95001aeb324597e24b301
Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Dec 6 02:37:10 2015 +0100
+Date: 2015-12-06 02:37:10 +0100
Bugfix: On error, return the actual error code in sanei_magic_rotate
@@ -2945,7 +2945,7 @@ Date: Sun Dec 6 02:37:10 2015 +0100
commit 6aced758f4a95fd858906f3e898ee967a9718641
Author: Volker Diels-Grabsch <v@njh.eu>
-Date: Sun Nov 29 16:02:01 2015 +0100
+Date: 2015-11-29 16:02:01 +0100
Fix typos in comments
@@ -2955,19 +2955,19 @@ Date: Sun Nov 29 16:02:01 2015 +0100
commit 6d8b8d5aa6e8da2b24e1caa42b9ea75e9624b45d
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Tue Dec 15 16:17:53 2015 +0100
+Date: 2015-12-15 16:17:53 +0100
epsonds: fix duplex w/ double feed detection
commit e9b52639e8dca938b5569b1697c36796ab92174a
Author: m. allan noah <kitno455@gmail.com>
-Date: Tue Dec 15 07:23:42 2015 -0500
+Date: 2015-12-15 07:23:42 -0500
Add note about changelogs
commit 06d876f74e5d07cb82d02ca1222926a61a3e458b
Author: Stéphane Voltz <stef.dev@free.fr>
-Date: Tue Dec 15 06:05:07 2015 +0100
+Date: 2015-12-15 06:05:07 +0100
fix for #315050
@@ -2976,7 +2976,7 @@ Date: Tue Dec 15 06:05:07 2015 +0100
commit 753d123f36d08cdb8047adac7c89a9fe015c4b25
Author: m. allan noah <kitno455@gmail.com>
-Date: Sat Nov 28 08:34:58 2015 -0500
+Date: 2015-11-28 08:34:58 -0500
canon_dr desc update
@@ -2984,7 +2984,7 @@ Date: Sat Nov 28 08:34:58 2015 -0500
commit f1593204c72124f3077b0b29f3c128d30be415b5
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Nov 27 21:26:46 2015 +0900
+Date: 2015-11-27 21:26:46 +0900
Drop execute permission
@@ -2993,7 +2993,7 @@ Date: Fri Nov 27 21:26:46 2015 +0900
commit e094c5b43b6d8d8bec84bd5b1ab2c6009f38e14b
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Nov 13 22:06:30 2015 +0900
+Date: 2015-11-13 22:06:30 +0900
Invert sense of sanei_thread validity check
@@ -3001,7 +3001,7 @@ Date: Fri Nov 13 22:06:30 2015 +0900
commit fe12d31e6873f5c3de330f1de4c4fbc851df1e9f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Fri Nov 13 21:41:56 2015 +0900
+Date: 2015-11-13 21:41:56 +0900
Fix SANE_Pid related -Wsign-compare warnings
@@ -3009,7 +3009,7 @@ Date: Fri Nov 13 21:41:56 2015 +0900
commit ed59056d40a143b3cf9243ea0068448a88ce3108
Author: m. allan noah <kitno455@gmail.com>
-Date: Mon Nov 23 21:26:09 2015 -0500
+Date: 2015-11-23 21:26:09 -0500
canon_dr backend v54
@@ -3017,7 +3017,7 @@ Date: Mon Nov 23 21:26:09 2015 -0500
commit d0ea697ab83360bf0ccddcd02565f85ea0f96b50
Author: m. allan noah <kitno455@gmail.com>
-Date: Mon Nov 23 21:08:30 2015 -0500
+Date: 2015-11-23 21:08:30 -0500
fujitsu backend v129
@@ -3027,7 +3027,7 @@ Date: Mon Nov 23 21:08:30 2015 -0500
commit e6a249e0424f6854b7ed12f8272633a0edecfa90
Author: m. allan noah <kitno455@gmail.com>
-Date: Thu Nov 12 21:10:49 2015 -0500
+Date: 2015-11-12 21:10:49 -0500
revert mustek_usb2 backend upgrade
@@ -3037,19 +3037,19 @@ Date: Thu Nov 12 21:10:49 2015 -0500
commit 21c5f4d814f93a363377798635c7f1cbc1c79342
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:38:56 2015 +0900
+Date: 2015-11-11 22:38:56 +0900
Add missing #include for malloc()
commit 7dc416b7ae3f0db7c5ce97b5bce0f05f869d877f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:38:32 2015 +0900
+Date: 2015-11-11 22:38:32 +0900
Remove unnecessary cast
commit fff1c5962a94ab410dba4fed541312554c8edf8d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:35:34 2015 +0900
+Date: 2015-11-11 22:35:34 +0900
Fix "discards 'const' qualifier from pointer target type" warnings
@@ -3059,7 +3059,7 @@ Date: Wed Nov 11 22:35:34 2015 +0900
commit 38153b33e1657137e6956e63a9fcb76d665f86f2
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:33:34 2015 +0900
+Date: 2015-11-11 22:33:34 +0900
Fix "discards 'const' qualifier from pointer target type" warning
@@ -3067,7 +3067,7 @@ Date: Wed Nov 11 22:33:34 2015 +0900
commit d2576bbb948dd9d8e06f66dc4cede774c5518751
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:30:10 2015 +0900
+Date: 2015-11-11 22:30:10 +0900
Fix "discards 'const' qualifier from pointer target type" warnings
@@ -3077,7 +3077,7 @@ Date: Wed Nov 11 22:30:10 2015 +0900
commit e65fd1b4cb5e9463d16a6fb4cd8eeb129ba58e63
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Nov 11 22:28:17 2015 +0900
+Date: 2015-11-11 22:28:17 +0900
Fix "discards 'const' qualifier from pointer target type" warnings
@@ -3086,7 +3086,7 @@ Date: Wed Nov 11 22:28:17 2015 +0900
commit 497d59180649a831691220aefcc8ec81d5f90960
Author: m. allan noah <kitno455@gmail.com>
-Date: Sun Nov 8 17:17:37 2015 -0500
+Date: 2015-11-08 17:17:37 -0500
automake for recent changes
@@ -3094,103 +3094,103 @@ Date: Sun Nov 8 17:17:37 2015 -0500
commit db7f038f108ca12966b947dd80f3772e2133495e
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Jul 14 23:15:02 2012 +0200
+Date: 2012-07-14 23:15:02 +0200
Fix a bug introduced during refactoring that caused discolored stripes to appear at the left and right sides of the scan area.
commit a64477bf1a381458e0500ef7c62da521d6c4d97f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Jul 14 16:44:28 2012 +0200
+Date: 2012-07-14 16:44:28 +0200
Remove USB 2.0 mode, as it causes horrible backtracking for resolutions > 300 dpi.
commit 98248f6088850045579a1e46f2e8aa16302f9dd9
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Jun 30 22:37:21 2012 +0200
+Date: 2012-06-30 22:37:21 +0200
properly add new handle to linked list
commit 3b48a6d10560e855cef815ca5c1ecbb50fd02d00
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Jun 30 00:04:06 2012 +0200
+Date: 2012-06-30 00:04:06 +0200
fix integer overflow bug in image data conversion
commit d0ea79f00059a4a8c3a2ac710fd0443c8bbb3d3a
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 27 12:23:53 2012 +0200
+Date: 2012-05-27 12:23:53 +0200
Add model-specific functions for computing the number of motor steps.
commit 15fbbf60a6d8c9956a6b6a874f2d0b734ab1b935
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 15 22:42:17 2011 +0200
+Date: 2011-05-15 22:42:17 +0200
Split SetMotorSteps into a function that computes the number of steps for the various motor states and and a function that writes the step counts to the controller's registers.
commit 70dcfa4cedf3619575d413126d3530b28e490fd3
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 15 21:16:00 2011 +0200
+Date: 2011-05-15 21:16:00 +0200
Simplify SetMotorStepTable*.
commit 27b636d294876c7aac0b53922bacac627ba873c9
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 15 19:58:09 2011 +0200
+Date: 2011-05-15 19:58:09 +0200
Provide model-specific function for computing the motor current.
commit 8f405f5a937fd05a67a7554138c047fb5abe5e2c
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 15 18:13:44 2011 +0200
+Date: 2011-05-15 18:13:44 +0200
Update motor table generation according to new dumps.
commit 2fa054456e723d7741be4eeb09bb879b802fad9d
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 15 15:09:21 2011 +0200
+Date: 2011-05-15 15:09:21 +0200
Detect USB controller type.
commit d8a203a69373bb6f207de9ddc9c30a60da4a2cc9
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 15 14:35:06 2011 +0200
+Date: 2011-05-15 14:35:06 +0200
Add function to compute scan motor table for 4800H48U, rearrange code in Asic_SetWindow.
commit ceb7d29690f2ce8f32576caa4b7197fc91b024c1
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 8 17:39:31 2011 +0200
+Date: 2011-05-08 17:39:31 +0200
Fix some misuse of SENSOR_DPI constant.
commit 30e39071560412b362e03a105e20996093074d81
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 8 16:44:15 2011 +0200
+Date: 2011-05-08 16:44:15 +0200
Allow for model-specific parameters in mustek_usb2_high.c.
commit 47c56e3f19b38c97db4f2d14f780343adca9024f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 8 14:55:42 2011 +0200
+Date: 2011-05-08 14:55:42 +0200
Add some motor-related code for the Microtek 4800H48U.
commit 7b26e0e3fa48742b66bd4632772d70d140058c70
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun May 8 13:56:17 2011 +0200
+Date: 2011-05-08 13:56:17 +0200
Simplify SimpleMotorMove.
commit 0a1125895b3f1ed0058729fcc29d6858ac6d5e56
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat May 7 13:58:24 2011 +0200
+Date: 2011-05-07 13:58:24 +0200
Add some information about the values retrieved by GetChipStatus.
commit c691b0224130763239966c1d7856e96810289238
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat May 7 13:28:52 2011 +0200
+Date: 2011-05-07 13:28:52 +0200
Remove restriction to 8-bit color in negative mode.
@@ -3198,49 +3198,49 @@ Date: Sat May 7 13:28:52 2011 +0200
commit 4ced7a900a6463c460121eaed7583f4249ef74c2
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat May 7 12:45:50 2011 +0200
+Date: 2011-05-07 12:45:50 +0200
Improve debug logging and fix a bug in TestDRAM.
commit e1c00bd9ab9d3f4b568d5bb6d09e0812cbef7b7f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed May 4 23:30:14 2011 +0200
+Date: 2011-05-04 23:30:14 +0200
Introduce SetMotorCurrentAndPhase for Microtek scanner, fix old bug in simplification of Mustek variant.
commit 96b4950499d0cf44369fc8e50099925de2ac3c4f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Mon Apr 25 20:25:02 2011 +0200
+Date: 2011-04-25 20:25:02 +0200
Register related fixes.
commit 5d556cd5e65ba9d1df30e3a3beb0322549d040ff
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Mon Apr 25 19:26:32 2011 +0200
+Date: 2011-04-25 19:26:32 +0200
Introduce structure for specifying model-specific parameters on the ASIC level.
commit 529b6a1d6dc3ff52945f8bf3323bf571596e8088
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 21:01:10 2011 +0200
+Date: 2011-04-24 21:01:10 +0200
Fix bug in device list handling.
commit 877f250b5c32f8403ab321d14fd76afd7e2c2d1d
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 20:54:19 2011 +0200
+Date: 2011-04-24 20:54:19 +0200
Resolve issue with debug logging.
commit 272c1d6fdeb8af9d6d4b61f85b4a77ca2ebbb645
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 20:30:19 2011 +0200
+Date: 2011-04-24 20:30:19 +0200
Add preliminary model entry for the Microtek 4800H48U.
commit 7fda9bbf93f4565e1334ebafd0b6caf13d462de4
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 20:21:41 2011 +0200
+Date: 2011-04-24 20:21:41 +0200
Introduce support for multiple scanners.
@@ -3248,109 +3248,109 @@ Date: Sun Apr 24 20:21:41 2011 +0200
commit 6865eaf6edef0cc5ea30bcc0d72b52189132f4d6
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 14:49:06 2011 +0200
+Date: 2011-04-24 14:49:06 +0200
Simplify sane_read, other fixes to mustek_usb2.c.
commit 63793907e2c2120511603a504396f7053fdc5149
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 14:15:59 2011 +0200
+Date: 2011-04-24 14:15:59 +0200
Minor fixes to image processing.
commit bc203e8aa125f276ce84498091185482a22d3527
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 13:55:35 2011 +0200
+Date: 2011-04-24 13:55:35 +0200
Sanitize option handling and add support for scanner buttons.
commit b2b3cf767a9a91677b0ac13a6645ed918ca71d55
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 00:59:19 2011 +0200
+Date: 2011-04-24 00:59:19 +0200
Use standard macros for byte swapping.
commit 281f53aa1829a61286232efed7a9d6253cec32d4
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 24 00:39:59 2011 +0200
+Date: 2011-04-24 00:39:59 +0200
Remaining endian safety fixes.
commit 80b7249ebf9c57b60cbc0a25288cc04ba2302b56
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 22:42:45 2011 +0200
+Date: 2011-04-23 22:42:45 +0200
Resolve minor thread safety problem.
commit de84f51270f05ead6758d2811a2d36160c412cb1
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 19:31:50 2011 +0200
+Date: 2011-04-23 19:31:50 +0200
Simplify row stride calculation in Asic_SetWindow().
commit 7cd88d41222c85bd262fbf681401ae8c2dab1bce
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 19:21:52 2011 +0200
+Date: 2011-04-23 19:21:52 +0200
Remove Scanner_ScanSuggest.
commit 3f5592ef8e7eedc0a9ff52b8091f9b41b9c2d56f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 19:04:31 2011 +0200
+Date: 2011-04-23 19:04:31 +0200
Move global state variables of mustek_usb2_high.c into scanner structure.
commit 60a244ed1e1a4e4f8c4dbd83f12141c0c35202ab
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 18:08:28 2011 +0200
+Date: 2011-04-23 18:08:28 +0200
Store size of shading table in ASIC structure.
commit ed1997b22f5f11ccc96262ed841f03b705982737
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 17:22:15 2011 +0200
+Date: 2011-04-23 17:22:15 +0200
Do not test for NULL before calling free().
commit 35c6a52834271e41960030b0c24f8cda2245230d
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 23 15:28:26 2011 +0200
+Date: 2011-04-23 15:28:26 +0200
Fix error propagation in mustek_usb2_high.c and a layering violation.
commit babee5168909c8c3b8d01c36ab509ea4f7092c4f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Thu Apr 21 23:25:34 2011 +0200
+Date: 2011-04-21 23:25:34 +0200
Fix indentation of debug macros.
commit c0e44738a41c2cd772125d0774772a541dbac7c5
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Thu Apr 21 23:23:18 2011 +0200
+Date: 2011-04-21 23:23:18 +0200
Simplify debug output in mustek_usb2.c.
commit c377a0245332df3f5e07c3cbd5ead889f18e0549
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Thu Apr 21 23:10:08 2011 +0200
+Date: 2011-04-21 23:10:08 +0200
Simplify debug output in mustek_usb2_high.c.
commit eebbe92c4e73922f1fa1368852a77697c23a1ad1
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Thu Apr 21 22:45:21 2011 +0200
+Date: 2011-04-21 22:45:21 +0200
Simplify debug logging in mustek_usb2_asic.c.
commit 2c712f27c90109e2106d7e8d2f5eeb5af6314260
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Thu Apr 21 00:12:26 2011 +0200
+Date: 2011-04-21 00:12:26 +0200
Remove uninformative function name prefixes, move gamma table creation into separate function.
commit c1dc16d709459e054f50604f86f1ee41c0e7177f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Apr 20 23:10:53 2011 +0200
+Date: 2011-04-20 23:10:53 +0200
Extensive changes to reduce the amount of global variables in mustek_usb2_high.c.
@@ -3358,493 +3358,493 @@ Date: Wed Apr 20 23:10:53 2011 +0200
commit 9444bf1156f0ab52937d101ba6120ae8685b645b
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 22:54:14 2011 +0200
+Date: 2011-04-17 22:54:14 +0200
Reorganize some MustScanner_* functions.
commit bd7107ca057b1f45313d96114c6376bb5ee7c200
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 22:29:32 2011 +0200
+Date: 2011-04-17 22:29:32 +0200
Remove some unneeded global variables from mustek_usb2_high.c.
commit 589d6e15eee356121582eae90d7a938ff094c1e6
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 21:57:18 2011 +0200
+Date: 2011-04-17 21:57:18 +0200
Endian-safe macros; moved remaining ASIC state into structure.
commit f89a7962deafc3b015700469bc2976ac1b931165
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 21:00:26 2011 +0200
+Date: 2011-04-17 21:00:26 +0200
Fix indentation.
commit df045634cb6a9667c625fb88ecb36bcb58310cda
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 19:14:53 2011 +0200
+Date: 2011-04-17 19:14:53 +0200
Misc fixes.
commit 86f399bd21d7794ba07265b503fea39baa1bb859
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 19:00:30 2011 +0200
+Date: 2011-04-17 19:00:30 +0200
Code in mustek_usb2.c should not use global state of mustek_usb2_high.c.
commit 74effd61fd8c9663b994459e8f5a738cc95c4932
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 18:25:00 2011 +0200
+Date: 2011-04-17 18:25:00 +0200
Remove histogram stretching for negative images.
commit 4962b35abd7426b7b51a00d907a538a2a38dc859
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 15:56:40 2011 +0200
+Date: 2011-04-17 15:56:40 +0200
Use prefix 'p' instead of 'lp', fix other style issues.
commit 9e2aabc97690baae4dd5a7d79d5e7d18df2cf697
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 15:27:14 2011 +0200
+Date: 2011-04-17 15:27:14 +0200
If g_isCanceled is true, the thread has already been canceled.
commit a75bd3e8f789435ac5d86ef100dd04e8bd155f76
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 15:18:58 2011 +0200
+Date: 2011-04-17 15:18:58 +0200
Improve error handling in mustek_usb2_high.c.
commit 1d0f3ca42ee9d84bd4afc2f379e46bc6a376de96
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 14:51:01 2011 +0200
+Date: 2011-04-17 14:51:01 +0200
Fix remaining comments.
commit 9226162537706c982405a7469e7003c4d61808e0
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 14:23:46 2011 +0200
+Date: 2011-04-17 14:23:46 +0200
Normalize naming of constants, structures, and enums.
commit d7ebb1553b8e28a9291493aa94003737f0c87298
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 13:48:45 2011 +0200
+Date: 2011-04-17 13:48:45 +0200
Remove USB host type enum.
commit 41ac627e5f4dbd84c082d1756414ef9922c294e7
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 17 13:45:42 2011 +0200
+Date: 2011-04-17 13:45:42 +0200
Get rid of unnecessary forward declarations.
commit da64a1fc1efd8a2e8b8245d6101deb103eea1dc4
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 16 21:37:20 2011 +0200
+Date: 2011-04-16 21:37:20 +0200
First hack to build mustek_usb2* source files separately.
commit 3479acf538335e1290ca00a5e5fef3097a835579
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Apr 16 20:24:26 2011 +0200
+Date: 2011-04-16 20:24:26 +0200
Merge mustek_usb2_reflective/transparent.c into mustek_usb2_high.c.
commit a45931dd11e5fd270d963c5d4e1b882fa3755c90
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Apr 15 20:12:28 2011 +0200
+Date: 2011-04-15 20:12:28 +0200
Remove MustScanner_GetScannerState.
commit c9516d53656ed5a7e45dc63b1f2202c96269a7ef
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Apr 13 00:22:06 2011 +0200
+Date: 2011-04-13 00:22:06 +0200
Merge Reflective_Reset, Transparent_Reset, and MustScanner_Prepare into new function MustScanner_Reset.
commit b2f52afa321331bf5214cdfe00d15ef479b88651
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 10 18:53:37 2011 +0200
+Date: 2011-04-10 18:53:37 +0200
Further cleanup of mustek_usb2.c.
commit ccce2d4a9a9e2762f8802af051db3f9ed2922ac8
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Apr 10 18:42:05 2011 +0200
+Date: 2011-04-10 18:42:05 +0200
Further cleanup of mustek_usb2.c.
commit 39141a4c0265d97fe4d77084a5a63eaaafd8b8c4
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 30 20:57:54 2011 +0200
+Date: 2011-03-30 20:57:54 +0200
Return SANE_STATUS_UNSUPPORTED unconditionally in sane_set_io_mode and sane_get_select_fd.
commit d9c1df0bb84bffb23ee54be2fbd977e2a18ff4ed
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 30 19:41:05 2011 +0200
+Date: 2011-03-30 19:41:05 +0200
Remove vestigial support for custom gamma tables.
commit acf84e0c9474382d78ae85120c2671b5525bd079
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Tue Mar 29 18:25:19 2011 +0200
+Date: 2011-03-29 18:25:19 +0200
Clean up function StopScan.
commit 9158d10df92b7d96bda66d9e601f248c5474259f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Mar 19 14:55:33 2011 +0100
+Date: 2011-03-19 14:55:33 +0100
Further simplification of MustScanner_Get*Line functions.
commit 1f6b405451fda5fe349df1653e3423e8fc360e3b
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Mar 19 14:14:30 2011 +0100
+Date: 2011-03-19 14:14:30 +0100
First attempt at simplifying the Get*Line functions.
commit a6b15f18ccc430db08c638510bcd603d569723ee
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Mon Mar 14 00:50:30 2011 +0100
+Date: 2011-03-14 00:50:30 +0100
Break remaining long lines.
commit 25242ff9c85f06275ca190896fe37b6d8902e122
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Mon Mar 14 00:21:44 2011 +0100
+Date: 2011-03-14 00:21:44 +0100
Clean up mustek_usb2_high.c.
commit c8982a99392cb7c982f12201a978fb4ae5e9e15a
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 21:13:26 2011 +0100
+Date: 2011-03-13 21:13:26 +0100
Do not use prefix "by" for byte variable names.
commit d7b4e02780acd916ebbdd1cf8a9cc99945ea1acd
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 21:07:55 2011 +0100
+Date: 2011-03-13 21:07:55 +0100
Use SANE_Status and SANE_TRUE/SANE_FALSE consistently.
commit 8b3c78838ae099d0099b54fbd640c0db1bb3b88c
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 20:06:24 2011 +0100
+Date: 2011-03-13 20:06:24 +0100
Create common helper function for Asic_CarriageHome and Asic_MotorMove, remove MotorBackHome.
commit ed5dc8a7cdfb7c32faff37e7ea23446b5de9fc41
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 19:41:40 2011 +0100
+Date: 2011-03-13 19:41:40 +0100
Further refactoring of Asic_SetWindow.
commit 82a40d5dca84990f41c15998ae89425eaa576ff6
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 19:24:17 2011 +0100
+Date: 2011-03-13 19:24:17 +0100
Refactoring of Asic_SetWindow.
commit 93a79af5d3322fd06369c59a7e72f6773f9bed52
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 15:54:02 2011 +0100
+Date: 2011-03-13 15:54:02 +0100
Fix indentation.
commit b43f0688dbb309b7841e89074aab00d4aa61c3a2
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 15:15:47 2011 +0100
+Date: 2011-03-13 15:15:47 +0100
Use symbolic constants in more places.
commit 3c87b646b5831b24e6d9d13f26f2a08ec83b6cff
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 13 14:48:40 2011 +0100
+Date: 2011-03-13 14:48:40 +0100
First attempt at merging Asic_SetCalibrate into Asic_SetWindow.
commit 033ebe6d9b6db266fb8146a4ac17d82043b5636a
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Mar 12 19:25:59 2011 +0100
+Date: 2011-03-12 19:25:59 +0100
Made error handling in mustek_usb2_asic.c more consistent.
commit 96c6ee1dae3dffe2eae9cf3466a0d246d9e3317d
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Mar 12 16:20:36 2011 +0100
+Date: 2011-03-12 16:20:36 +0100
Cleaned up firmware state handling.
commit c1f22ef9a9a3be1db26fc03721156a72156870b5
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Mar 12 14:18:48 2011 +0100
+Date: 2011-03-12 14:18:48 +0100
Clean up Asic_SetCalibrate, make Asic_SetCalibrate and Asic_SetWindow more similar.
commit 3cd05daccad6bb1e50cc4030c0b471ed00897367
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sat Mar 12 02:13:34 2011 +0100
+Date: 2011-03-12 02:13:34 +0100
Refactoring the smaller high level ASIC functions.
commit de5b647c4a47938f186b4661615dfbbd3315636d
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 23:48:21 2011 +0100
+Date: 2011-03-11 23:48:21 +0100
Refactored medium level ASIC functions.
commit 693da258ce3bbcaf5c8ea31b9a08b77af615c0f2
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 18:36:07 2011 +0100
+Date: 2011-03-11 18:36:07 +0100
Move some definitions from mustek_usb2_asic.h to more appropriate headers.
commit 2776b336d15b0e8094271c69dfda7055cd1d896b
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 18:17:54 2011 +0100
+Date: 2011-03-11 18:17:54 +0100
Simplify LLFSetMotorCurrentAndPhase.
commit dea59ee824157d33c64df719869ee937749f5428
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 17:44:11 2011 +0100
+Date: 2011-03-11 17:44:11 +0100
Refactored all low-level motor functions except LLFSetMotorCurrentAndPhase.
commit e47fee8dcc88ef4fc3e68ed65def29aacb56d17d
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 16:27:03 2011 +0100
+Date: 2011-03-11 16:27:03 +0100
Simplified computation of motor current, removed a redundant register assignment.
commit 5688a78ace501c9a0ca36cee5f67a5929d652e81
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 16:08:35 2011 +0100
+Date: 2011-03-11 16:08:35 +0100
Simplify low-level ASIC functions, add missing error checks.
commit 1d8a008856d049df910b1d68599a622986ce85c4
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 14:25:09 2011 +0100
+Date: 2011-03-11 14:25:09 +0100
Simplify SetRWSize, use symbolic constants for registers whenever possible.
commit 794b15ff9e1daf87b80898aade0dc401e1f597d8
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 13:38:40 2011 +0100
+Date: 2011-03-11 13:38:40 +0100
Simplyfied Asic_SetShadingTable.
commit 6d5a5123ea3c41ada76e984670b988f847de2145
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 13:12:31 2011 +0100
+Date: 2011-03-11 13:12:31 +0100
Remove whitespace at the end of debug output lines.
commit d418094b64ad7ae2558860568c3e1e28a5a6cbc7
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 13:08:03 2011 +0100
+Date: 2011-03-11 13:08:03 +0100
Some motor table related fixes.
commit 3d1b409a1b526025c52c314f143cedd4d2d5d05f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 02:28:14 2011 +0100
+Date: 2011-03-11 02:28:14 +0100
Fix a few comments.
commit 88cac5b4ade1ad4ace0da5be843c879e9256c71c
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 02:25:43 2011 +0100
+Date: 2011-03-11 02:25:43 +0100
Begin simplifying LLFSetMotorCurrentAndPhase, ensure all fields of LLF_MOTOR_CURRENT_AND_PHASE are initialized.
commit fb55a9260404049e00f13e627d7e3c8e06b397b8
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 02:08:46 2011 +0100
+Date: 2011-03-11 02:08:46 +0100
Remove even more unused code from mustek_usb2_asic.c.
commit 77ea9b01c374833e061ecee271d81a37f38dad77
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Fri Mar 11 00:07:43 2011 +0100
+Date: 2011-03-11 00:07:43 +0100
Improved readability of functions in mustek_usb2_high.c.
commit ca1e0db16f6aeb5c92e2ddf08700981f6799fc4e
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Thu Mar 10 01:39:01 2011 +0100
+Date: 2011-03-10 01:39:01 +0100
Remove unused code and fix indentation in mustek_usb2_high.c.
commit 3f7cf8a65f48447fbc70808229ef6d2f50c3e412
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 9 01:56:04 2011 +0100
+Date: 2011-03-09 01:56:04 +0100
Remove DISABLE bit flag constants.
commit 073fe96611477986de970ab0c444f73024ecea33
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 9 01:26:09 2011 +0100
+Date: 2011-03-09 01:26:09 +0100
LLF_MOTOR_CURRENT_AND_PHASE: only first byte of arrays MotorCurrentTableA/B is ever used
commit 4b242a71394221a2155379b8e89340610a8ed725
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 9 01:18:10 2011 +0100
+Date: 2011-03-09 01:18:10 +0100
Remove unused parameter isOrderInvert from MustScanner_GetMono*Line.
commit 78863d13deacf657ef15b6078d0926fadbd9991a
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 9 01:05:41 2011 +0100
+Date: 2011-03-09 01:05:41 +0100
Remove redundant typecasts.
commit cf6c88bfd1debd288ca563b54120e8ff3903f634
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 9 00:41:21 2011 +0100
+Date: 2011-03-09 00:41:21 +0100
Try to reduce differences between mustek_usb2_reflective.c and mustek_usb2_transparent.c, part 1.
commit 972fc54793d767a6cd18c722ae36feb408f45f9f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Wed Mar 9 00:02:06 2011 +0100
+Date: 2011-03-09 00:02:06 +0100
Move some code that was duplicated in mustek_usb2_transparent.c and mustek_usb2_reflective.c to mustek_usb2_high.c.
commit db37c13bb337c153ddd83902b8c9ad0b4a445c2a
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Tue Mar 8 23:10:57 2011 +0100
+Date: 2011-03-08 23:10:57 +0100
Remove information-less comments, break long lines, fix indentation.
commit fa8101e05e0432a385e782acd663ce56e0c00367
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Tue Mar 8 18:37:55 2011 +0100
+Date: 2011-03-08 18:37:55 +0100
Remove unused enum FS_NULL.
commit ccde6b063555892ae55ac6c7bfeb8a7d44e02a4e
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Tue Mar 8 18:29:13 2011 +0100
+Date: 2011-03-08 18:29:13 +0100
Remove unused fields of struct GETPARAMETERS.
commit 2be2be76aec39dbef8bbe0501eabaaf0838b3cbc
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Tue Mar 8 18:26:32 2011 +0100
+Date: 2011-03-08 18:26:32 +0100
Unified style of struct and enum definitions.
commit ce6d7010d3fc0bfc5a54cd3411660db43e382bac
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Tue Mar 8 18:15:30 2011 +0100
+Date: 2011-03-08 18:15:30 +0100
Pixel flavor is never PF_WhiteIs0, so the associated code can be removed.
commit 76a23c3bc4c80f91f223f29ae8cc5c91a1a8e4f8
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 20:31:48 2011 +0100
+Date: 2011-03-06 20:31:48 +0100
Remove dead "auto level" code, sanitize key handling.
commit e7c44fe6799e5c1d4bce272b539927337b7a2aca
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 20:19:27 2011 +0100
+Date: 2011-03-06 20:19:27 +0100
Cleanup of Asic_SetWindow
commit 16485d47da8b2d0a829e378afa1443c1ef4839f8
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 19:37:25 2011 +0100
+Date: 2011-03-06 19:37:25 +0100
Optimize motor table calculation.
commit 8821c2882f51d309a7832b362407c46ff11ccd4a
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 19:16:16 2011 +0100
+Date: 2011-03-06 19:16:16 +0100
First attempt at cleaning up mustek_usb2_asic.c.
commit 30087b3f43f4e6f2dd83373145dbe0a533b27419
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 17:06:14 2011 +0100
+Date: 2011-03-06 17:06:14 +0100
Avoid some unorthodox language constructs.
commit 030c7fa122dccca2f47c949ca46a5972efca20b8
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 16:55:39 2011 +0100
+Date: 2011-03-06 16:55:39 +0100
Remove redundant code from mustek_usb2_high.c.
commit a554d61c17206e6b1585bacdfd41fe4aacea1a95
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 16:18:18 2011 +0100
+Date: 2011-03-06 16:18:18 +0100
Remove redundant code from mustek_usb2_asic.c, add a missing error check.
commit a49bff1a60386c88168d9aa8a94cdc0ccecac7fd
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 15:39:23 2011 +0100
+Date: 2011-03-06 15:39:23 +0100
Simplify DRAM test.
commit bc9252c09464b7ed460bf726dcca3d67f97cd74d
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 15:27:19 2011 +0100
+Date: 2011-03-06 15:27:19 +0100
Remove bogus automatic warmup and power saving functions.
commit 0f63d16121ea84f99f75331582c3bdd0cd0d4e1f
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 15:13:46 2011 +0100
+Date: 2011-03-06 15:13:46 +0100
Remove redundant code from mustek_usb2.c.
commit 694a69dcab0dddf2ab12eebba49c66c7ac20fdad
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 14:48:40 2011 +0100
+Date: 2011-03-06 14:48:40 +0100
Remove unused definitions from mustek_usb2.h.
commit 21be236e840be4f8ca4bead69844f7cd691a8353
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 13:57:10 2011 +0100
+Date: 2011-03-06 13:57:10 +0100
Remove unused definitions from mustek_usb2_asic.h.
commit 2404326ddeaf7552e094062b1ed57521e9a21cb4
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 02:41:42 2011 +0100
+Date: 2011-03-06 02:41:42 +0100
Remove unused definitions from mustek_usb2_high.h and ensure that the remaining ones are used consistently.
commit d1851a6512a113d1dc4f20beb86a8be29310b627
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 01:50:53 2011 +0100
+Date: 2011-03-06 01:50:53 +0100
Remove some particularly pointless comments, reduce size of block comments.
commit 047631050c262142a0f52ed4e1ecc053b03869ad
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 01:15:12 2011 +0100
+Date: 2011-03-06 01:15:12 +0100
Remove pointless indirection.
commit dedf0ac30d341b9bcbab7fb32050ff953cc73eff
Author: Jan Hauffa <jhauffa@gmail.com>
-Date: Sun Mar 6 01:03:14 2011 +0100
+Date: 2011-03-06 01:03:14 +0100
Remove unused global variable g_pDeviceFile and associated logic.
commit 3b73e1e8a3b0085ad5db38837f0bf44f5a5b8919
Author: m. allan noah <kitno455@gmail.com>
-Date: Sun Nov 8 09:24:37 2015 -0500
+Date: 2015-11-08 09:24:37 -0500
fujitsu backend v128
@@ -3852,19 +3852,19 @@ Date: Sun Nov 8 09:24:37 2015 -0500
commit 72ecee97ce9db13f148aedf52eb46911212d58e4
Author: Thomas Klausner <wiz-guest@users.alioth.debian.org>
-Date: Tue Oct 27 20:06:00 2015 +0900
+Date: 2015-10-27 20:06:00 +0900
Add DragonFly BSD support (fixes 315205)
commit a4cc05f677f110c9361f3274fc5d15087a2f8906
Author: Thomas Klausner <wiz-guest@users.alioth.debian.org>
-Date: Tue Oct 27 20:09:00 2015 +0900
+Date: 2015-10-27 20:09:00 +0900
Add DragonFly BSD support to sane-find-scanner (fixes 315206)
commit 1baab222e418275ec6fd14afad91b64d0110fdbd
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Nov 8 18:49:58 2015 +0900
+Date: 2015-11-08 18:49:58 +0900
Add missing include (fixes 315207)
@@ -3873,13 +3873,13 @@ Date: Sun Nov 8 18:49:58 2015 +0900
commit b0a99cb48938cae5a88c5f37a9a91b60589bad4e
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Nov 8 18:36:57 2015 +0900
+Date: 2015-11-08 18:36:57 +0900
Fix non-portable endian.h include issue (315209)
commit d7516a11ebd6a8d96380c5ee256b171be1cb5e35
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sun Nov 8 18:16:17 2015 +0900
+Date: 2015-11-08 18:16:17 +0900
Fix sane-desc testsuite logic
@@ -3889,7 +3889,7 @@ Date: Sun Nov 8 18:16:17 2015 +0900
commit 358cbd7f319c64055cd76fedf62a92500b0c5cf5
Author: m. allan noah <kitno455@gmail.com>
-Date: Fri Nov 6 21:39:35 2015 -0500
+Date: 2015-11-06 21:39:35 -0500
canon_dr v53 continued
@@ -3898,7 +3898,7 @@ Date: Fri Nov 6 21:39:35 2015 -0500
commit 398610336b6aadf1a0c37390a0a5e2bd926bdfdf
Author: m. allan noah <kitno455@gmail.com>
-Date: Fri Nov 6 12:19:20 2015 -0500
+Date: 2015-11-06 12:19:20 -0500
canon_dr backend v53
@@ -3906,7 +3906,7 @@ Date: Fri Nov 6 12:19:20 2015 -0500
commit b4bc0eb518ce74ffbfdbe0ce1a14bb404804cd57
Author: m. allan noah <kitno455@gmail.com>
-Date: Fri Nov 6 11:46:17 2015 -0500
+Date: 2015-11-06 11:46:17 -0500
canon_dr backend v53
@@ -3914,7 +3914,7 @@ Date: Fri Nov 6 11:46:17 2015 -0500
commit 666c9a74ff26fd530b40db28f03b447209cf419e
Author: m. allan noah <kitno455@gmail.com>
-Date: Thu Nov 5 21:42:29 2015 -0500
+Date: 2015-11-05 21:42:29 -0500
canon_dr backend v52
@@ -3923,7 +3923,7 @@ Date: Thu Nov 5 21:42:29 2015 -0500
commit 9dc79245291f6d4312c5656fff4232b07f70b673
Author: m. allan noah <kitno455@gmail.com>
-Date: Wed Nov 4 13:49:02 2015 -0500
+Date: 2015-11-04 13:49:02 -0500
canon_dr backend v52
@@ -3931,7 +3931,7 @@ Date: Wed Nov 4 13:49:02 2015 -0500
commit 01063a769d5431ca83069a9cf240894f893d01f0
Author: m. allan noah <kitno455@gmail.com>
-Date: Wed Nov 4 13:05:05 2015 -0500
+Date: 2015-11-04 13:05:05 -0500
canon_dr backend v52
@@ -3940,7 +3940,7 @@ Date: Wed Nov 4 13:05:05 2015 -0500
commit 0b822359b3e1798294e30a7ea9cfd6fd9a1e3e85
Author: m. allan noah <kitno455@gmail.com>
-Date: Wed Nov 4 13:00:10 2015 -0500
+Date: 2015-11-04 13:00:10 -0500
cardscan backend v3
@@ -3948,19 +3948,19 @@ Date: Wed Nov 4 13:00:10 2015 -0500
commit 33495ef9b42a783c8f5f2c056ac5699481d3cc7e
Author: Luiz Angelo Daros de Luca <luizluca@gmail.com>
-Date: Thu Oct 15 12:35:00 2015 +0900
+Date: 2015-10-15 12:35:00 +0900
Add missing <sys/types.h> includes
commit 4f803bff0872460433dae1ac2a2954ad1016b678
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Thu Oct 22 22:23:47 2015 +0900
+Date: 2015-10-22 22:23:47 +0900
Escape [] for configure help strings
commit 471453d2b825a569d467d60160b0eaaf6746bf67
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 20:51:04 2015 +0900
+Date: 2015-10-19 20:51:04 +0900
Drop unused INCLUDES substitution variable
@@ -3973,7 +3973,7 @@ Date: Mon Oct 19 20:51:04 2015 +0900
commit 32c25b8b8235762d9feb5dbd0e81496a56e15569
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 19 21:11:53 2015 +0900
+Date: 2015-10-19 21:11:53 +0900
Fix duplicate automake file variable initialization issue
@@ -3981,7 +3981,7 @@ Date: Mon Oct 19 21:11:53 2015 +0900
commit f8d35b8d2fdcacc9b664594d141102c2c80ac076
Author: m. allan noah <kitno455@gmail.com>
-Date: Mon Oct 26 08:34:17 2015 -0400
+Date: 2015-10-26 08:34:17 -0400
Update canon_dr.desc
@@ -3990,43 +3990,43 @@ Date: Mon Oct 26 08:34:17 2015 -0400
commit 716340e7320e7f946329ad7a3cd911d676c92f6d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Sat Oct 17 13:55:17 2015 +0900
+Date: 2015-10-17 13:55:17 +0900
Include sys/types.h for u_long. Fixes compile on OS X
commit 03d90ac2edf287bb0358044d7abdd9f6008dffc5
Author: Alessandro Zummo <a.zummo@towertech.it>
-Date: Wed Oct 14 21:55:31 2015 +0200
+Date: 2015-10-14 21:55:31 +0200
epsonds: do not enable double feed detection by default
commit a90d7c91b36b06bd002af890863c1d608dcdd7d4
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Oct 14 19:05:03 2015 +0200
+Date: 2015-10-14 19:05:03 +0200
changelog for recent work
commit 4a83d9c8a4f4c396f5261d62bf7d2f9b8684eba9
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Oct 14 19:04:27 2015 +0200
+Date: 2015-10-14 19:04:27 +0200
Pixma backend version 0.17.24
commit 3095ab46c45e004163f5fb36efa00ce378770a9e
Author: Rolf Bensch <roben-guest@alioth.debian.org>
-Date: Wed Oct 14 19:02:43 2015 +0200
+Date: 2015-10-14 19:02:43 +0200
new scanners Canon PIXUS MP5/SmartBase MPC190/imageCLASS MPC190 and Canon MP10/SmartBase MPC200/imageCLASS MPC200
commit 06b865cfd24f1e6c71506684d73ef79b43edc3cf
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Wed Oct 14 20:39:39 2015 +0900
+Date: 2015-10-14 20:39:39 +0900
Prevent possible buffer overflows [-Wstrncat-size]. Fixes 315198
commit 18e4c4a08622e2ee4536dcb423d4548a4bc7a7e3
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Tue Oct 13 23:32:40 2015 +0900
+Date: 2015-10-13 23:32:40 +0900
Revert "Prevent use of uninitialized variable"
@@ -4036,25 +4036,25 @@ Date: Tue Oct 13 23:32:40 2015 +0900
commit 36876a83663832cf89fa945737d004ce9b46fb01
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 12 20:55:19 2015 +0900
+Date: 2015-10-12 20:55:19 +0900
saned: minor improvement of help message wording
commit 32986192bd9ce14276e1ae144d71d42461e591b9
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 12 20:42:50 2015 +0900
+Date: 2015-10-12 20:42:50 +0900
fix: declaration-after-statement warning
commit 42aa01e4e558e0019df00702579c928f9fd126e6
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 12 20:42:01 2015 +0900
+Date: 2015-10-12 20:42:01 +0900
fix: missing-field-initializers warning
commit fa001c2193045844dd3318f9538b309e11089c9c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 12 20:49:07 2015 +0900
+Date: 2015-10-12 20:49:07 +0900
Follow getopt_long usage in scanimage.c
@@ -4063,19 +4063,19 @@ Date: Mon Oct 12 20:49:07 2015 +0900
commit 45e66aee952dcdada88293901580a111262fc1e9
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: Mon Oct 12 20:47:43 2015 +0900
+Date: 2015-10-12 20:47:43 +0900
Prevent use of uninitialized variable
commit eab8fd457d2b8f38f9425f87258cf4fe42dac15c
Author: Matteo Croce <matteo@openwrt.org>
-Date: Sun Oct 11 19:50:04 2015 +0200
+Date: 2015-10-11 19:50:04 +0200
saned: add '-b' option to bind to a specific address
commit fed2a2cf60511d87e413148f1b9063f9ea4e6917
Author: Matteo Croce <matteo@openwrt.org>
-Date: Sun Oct 11 19:50:03 2015 +0200
+Date: 2015-10-11 19:50:03 +0200
saned: use getopt_long() for option parsing
@@ -4083,13 +4083,13 @@ Date: Sun Oct 11 19:50:03 2015 +0200
commit 418d1ecea7571d10acd08df2edc7967a91e14b0d
Author: Matteo Croce <matteo@openwrt.org>
-Date: Sun Sep 20 19:55:37 2015 +0200
+Date: 2015-09-20 19:55:37 +0200
saned: move help message to usage() function
commit a79cd0abe7daed1a749c8ad2cd7e2a89cc6153e4
Author: Matteo Croce <matteo@openwrt.org>
-Date: Sun Sep 20 19:55:36 2015 +0200
+Date: 2015-09-20 19:55:36 +0200
saned: parse inetd args in main()
@@ -4097,7 +4097,7 @@ Date: Sun Sep 20 19:55:36 2015 +0200
commit 2c3cb206ce55a7ac9ff9b479de452a332ba2aa1a
Author: Matteo Croce <matteo@openwrt.org>
-Date: Sun Sep 20 19:55:35 2015 +0200
+Date: 2015-09-20 19:55:35 +0200
saned: parse standalone args in main()
@@ -4105,24 +4105,24 @@ Date: Sun Sep 20 19:55:35 2015 +0200
commit 2239d2aaff16964a5d67293f5e4220d235e2c84d
Author: Alexander Hofmann <alexander.hofmann@new-h.de>
-Date: Tue Oct 6 17:42:05 2015 +0200
+Date: 2015-10-06 17:42:05 +0200
Replace obsolete interface with standard include files
commit 56e69f0998005db432b4f7dd38693a870f663520
Author: m. allan noah <kitno455@gmail.com>
-Date: Mon Oct 5 08:21:39 2015 -0400
+Date: 2015-10-05 08:21:39 -0400
added kvs1025.conf.in and utsushi.desc
commit 69a9a3116eb18f8d0c618217e033a1c134215954
Author: m. allan noah <kitno455@gmail.com>
-Date: Sun Oct 4 21:25:08 2015 -0400
+Date: 2015-10-04 21:25:08 -0400
minor release doc update
commit 5e1d45cad7d7933b7120646ae5174ccdc8a9b49f
Author: m. allan noah <kitno455@gmail.com>
-Date: Sun Oct 4 21:13:39 2015 -0400
+Date: 2015-10-04 21:13:39 -0400
reopen sane-backends 1.0.26git
diff --git a/ChangeLogs/ChangeLog-1.0.28 b/ChangeLogs/ChangeLog-1.0.28
index 43479fa..5f496da 100644
--- a/ChangeLogs/ChangeLog-1.0.28
+++ b/ChangeLogs/ChangeLog-1.0.28
@@ -1,4 +1,4 @@
-commit 5aa523289f82d1c7f01dde601356214920646542 (HEAD, tag: 1.0.28, origin/master)
+commit 5aa523289f82d1c7f01dde601356214920646542
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-07-31 20:39:43 +0900
@@ -19,7 +19,7 @@ Date: 2019-07-29 22:34:13 +0200
https://alioth-lists.debian.net/pipermail/sane-devel/2019-July/036877.html
commit 9dce0eaf74facef88fae83ba4d7f9fe886307d4c
-Merge: 05bdcbd8 a4e122ad
+Merge: 05bdcbd81a5a a4e122add55e
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-07-29 17:27:07 +0200
@@ -38,7 +38,7 @@ Date: 2019-07-27 13:11:28 +0200
1st bunch of updated German translation
commit 05bdcbd81a5a92da12e1d4e1559d3f7faf7782ac
-Merge: 8eb5850f d4164a73
+Merge: 8eb5850f2749 d4164a7320e3
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-07-27 06:49:23 +0000
@@ -75,7 +75,7 @@ Date: 2019-07-23 21:15:24 +0900
po/*.po: Sync with latest source
commit 97f04e16e462f61cb87a0acc19868c3357c259eb
-Merge: 8ae2569a a8a5f58f
+Merge: 8ae2569a879c a8a5f58f2155
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-07-22 23:13:51 +0000
@@ -144,7 +144,7 @@ Date: 2019-07-10 22:58:40 +0900
utsushi.desc: Sync with upstream
commit 7b2d2cd0b3b6a2052635a35bdf4d0eeab10a3b5d
-Merge: 6f6a4928 4742f213
+Merge: 6f6a4928741c 4742f213185c
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-07-07 02:16:49 +0000
@@ -189,7 +189,7 @@ Date: 2019-06-30 17:48:34 +0900
because it is a non-generated file.
commit 2f14ac2fcc6124c7170fdc2bbb868813c5bdfeb7
-Merge: 72d68c73 640fa9db
+Merge: 72d68c7367e4 640fa9dbbaaa
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-07-05 23:39:04 +0000
@@ -236,7 +236,7 @@ Date: 2019-07-06 02:10:03 +0300
genesys: Support message argument to exceptions
commit 72d68c7367e4713a340ea1ab109360ce9788266d
-Merge: ec8017a8 14bbe802
+Merge: ec8017a8c023 14bbe802dbdd
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-06-30 23:16:47 +0000
@@ -246,16 +246,6 @@ Date: 2019-06-30 23:16:47 +0000
See merge request sane-project/backends!84
-commit ec8017a8c0238ba319b87d94fa7214cd2cb92c86
-Author: Alex Belkin <abc@telekom.ru>
-Date: 2019-06-30 18:54:46 +0300
-
- xerox_mfp: Mark SCX-4x16 as unsupported
-
- As reported by Andrew Sotnikov in issue #95 Samsung SCX-4216F is not
- really supported. Change SCX-4x16 status from untested to unsupported.
- Closes #95.
-
commit 14bbe802dbdd748d439bb54c62800ad73141880f
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-06-30 14:05:29 +0300
@@ -346,6 +336,16 @@ Date: 2019-06-30 14:05:15 +0300
genesys: Return void out of *_calculate_current_setup()
+commit ec8017a8c0238ba319b87d94fa7214cd2cb92c86
+Author: Alex Belkin <abc@telekom.ru>
+Date: 2019-06-30 18:54:46 +0300
+
+ xerox_mfp: Mark SCX-4x16 as unsupported
+
+ As reported by Andrew Sotnikov in issue #95 Samsung SCX-4216F is not
+ really supported. Change SCX-4x16 status from untested to unsupported.
+ Closes #95.
+
commit 7a07f47b4796f4d4c4f853b8bf76edd5c424f291
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-06-30 14:53:00 +0900
@@ -413,7 +413,7 @@ Date: 2019-06-29 15:57:04 +0900
Include an up-to-date ChangeLog with every build
commit 8b2fa76497f195208623298d129a2c3fd7917c1b
-Merge: bf00b9f4 0dd1feec
+Merge: bf00b9f49c1e 0dd1feec2d62
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-06-27 20:00:38 +0900
@@ -463,7 +463,7 @@ Date: 2019-06-20 19:47:32 +0900
if configure was not created in the current working directory.
commit ec1a614d6b73214a3510e9654c0f33d4a876bc3e
-Merge: f901462f 9173e5db
+Merge: f901462f9937 9173e5dbddf5
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-06-20 08:58:33 +0000
@@ -473,87 +473,6 @@ Date: 2019-06-20 08:58:33 +0000
See merge request sane-project/backends!82
-commit f901462f9937e884c4da7bfe9e96f6d12dfdccf1
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-19 21:12:51 +0900
-
- Fix AS_CASE clause matching
-
- See https://alioth-lists.debian.net/pipermail/sane-devel/2019-June/036809.html
-
-commit 46e98476acc831c43cc60fb82756aad19b214e5d
-Merge: 6d95bc19 8aa5318f
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-06-16 15:40:29 +0000
-
- Merge branch 'genesys-canoscan-8600f' into 'master'
-
- genesys: Add initial support for 2400 and 4800 dpi transparency scanning on CanoScan 8600F
-
- See merge request sane-project/backends!81
-
-commit 6d95bc191f796eef07da3f5334d840e8b31bf4cf
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-16 21:40:39 +0900
-
- Drop unneeded C++ compiler flag additions to AM_CXXFLAGS. Re #92
-
- The AX_CXX_COMPILE_STDCXX_11 macro takes care of doing so if needed
- already.
-
-commit a4862d8526ca238fb667658a4bcd83de27915cb8
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-16 21:39:45 +0900
-
- Predicate genesys compilation on documented variable. Re #92
-
-commit 424bb7d923965327a28e303d1c424d5fc00e977c
-Author: Rolf Bensch <rolf@bensch-online.de>
-Date: 2019-06-16 13:13:48 +0200
-
- INSTALL.linux: add missing development environment packages
-
-commit 4c05fb474282c64c8e700ab9852b465eda32617e
-Merge: cadf5a9b f111032e
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-15 06:50:27 +0000
-
- Merge branch 'backend/as6e' into 'master'
-
- as6e: Avoid out of bound access
-
- See merge request sane-project/backends!31
-
-commit cadf5a9b1a9e62829fe630b474d91c5a94c4e68a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-15 14:45:36 +0900
-
- Prevent segfault in case strndup cannot allocate memory
-
- This complements 18f9e5598c224e90554d333b7f9f05ba8fa14ad0
-
-commit f9eb32317abf2f109fe21478358e637750df7f32
-Merge: d22516c7 0b5ab0b5
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-15 05:43:06 +0000
-
- Merge branch 'sanei-usb-testing-mode-prep' into 'master'
-
- sanei: Preparation to support capture and replay of USB data for testing
-
- See merge request sane-project/backends!74
-
-commit d22516c76ac52c3b5208b62fc82312b223efc7ad
-Merge: 767cbfaa 9c42d6ac
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-12 10:48:14 +0000
-
- Merge branch 'remove-autoconf-generated-files' into 'master'
-
- Remove autoconf generated files
-
- See merge request sane-project/backends!72
-
commit 9173e5dbddf5f616ae2343222315310edfad2ccf
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-06-08 14:04:30 +0300
@@ -821,117 +740,24 @@ Date: 2019-06-08 14:03:47 +0300
genesys: Simplify sensor handling
-commit 9c42d6ac11fc0ef71d4712607381d19636829d9c
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-08 13:00:25 +0900
-
- Check AX_CXX_COMPILE_STDCXX macro expansion in configure
-
- If not expanded, the user is informed how to deal with this.
-
-commit c0b07792d948e46ef9cde8910a5b78f5f9e958fc
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-08 12:37:49 +0900
-
- Ignore harmless patch backups
-
- When patching `ltmain.sh` the `patch` utility creates this file if the
- patch did not apply cleanly, e.g. when it applied with an offset. Any
- hunks that *failed* to apply end up in `ltmain.sh.rej`. This file you
- probably want to see in `git status` so it is not ignored.
- It should not be committed, of course.
-
-commit 8b51e449f67aa220b515364bceae960e8b1090e8
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-08 12:36:06 +0900
-
- Add ignore patterns
-
- These files were removed in 1c143f630e3c8ef4b649a369260eebebf10c869c.
-
-commit b35e0184027c36e51fd73e1f52f8705f525cc4d8
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-08 12:34:58 +0900
-
- Remove files provided/created by Gettext. Re !72
-
-commit ee604e33653537db8825e76bcc8560dd8cb53910
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-07 20:48:40 +0900
-
- Update autotools related information. Re !72
-
-commit 165aad31bcc115013658683a53195279122c0800
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-06 20:50:29 +0900
-
- Make tar invocation work with Busybox tar version
-
-commit 03591a4c4a1014cac0cd39aff3daf8dde927563a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-06 20:37:08 +0900
-
- Fix current working directory assumptions
-
-commit 103be60e24a07e14b3c8bd98e53472f3822d8a16
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-05 23:44:43 +0900
-
- Really make it a no-op script. Re !72
-
-commit a367df0994ec7fb1e43a0e6e191096bca71d143a
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-05 23:39:44 +0900
-
- Add no-op script to satisfy GitLab CI requirements. Re !72
-
-commit 4ddd89dc16700cbe968c7627870be583bf6264d5
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-05 23:34:56 +0900
-
- Move source tarball creation to prepare stage. Re !72
-
- The build jobs use this tarball to exercise the build and only if all
- builds pass will it be "archived".
-
-commit b6f8053af8f2c2ef301c23fbf9e24fe75b4463d7
+commit f901462f9937e884c4da7bfe9e96f6d12dfdccf1
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-04 18:18:59 +0900
-
- Carry forward configure.ac tweak only. Re !72
-
-commit 767cbfaa7f8d190648345a97637d76120f3aa1c9
-Merge: 1f847e41 1f383b37
-Author: Ilia Sotnikov <hostcc@gmail.com>
-Date: 2019-06-03 06:10:26 +0000
-
- Merge branch 'hp5590-devel' into 'master'
-
- HP5590: Add options for reading out user settings from scanner panel.
-
- See merge request sane-project/backends!66
-
-commit 1f383b379540bc8a4b2300b066fe9ed6cfc7f550
-Author: Bernard B Badeer <bb3138@live.de>
-Date: 2019-06-03 06:10:26 +0000
+Date: 2019-06-19 21:12:51 +0900
- Add options for reading LCD counter and LED indicator.
+ Fix AS_CASE clause matching
- * Add command line parameters for readling LCD counter and LED indicator.
- * Code refactoring: Use static parameter strings instead of dynamically
- allocated string in order to avoid memory leak.
+ See https://alioth-lists.debian.net/pipermail/sane-devel/2019-June/036809.html
-commit 1c143f630e3c8ef4b649a369260eebebf10c869c
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-02 21:33:22 +0900
+commit 46e98476acc831c43cc60fb82756aad19b214e5d
+Merge: 6d95bc191f79 8aa5318f90a0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-06-16 15:40:29 +0000
- Remove more generated files. Re !72
+ Merge branch 'genesys-canoscan-8600f' into 'master'
-commit 93be23ccf5b0a29024d619f6cc13191c9088b32b
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-06-02 21:21:42 +0900
+ genesys: Add initial support for 2400 and 4800 dpi transparency scanning on CanoScan 8600F
- Fix libtool requirement for autogen.sh. Re !72
+ See merge request sane-project/backends!81
commit 8aa5318f90a084ae7fb0c27258a456723540f552
Author: Povilas Kanapickas <povilas@radix.lt>
@@ -1174,11 +1000,193 @@ Date: 2019-06-02 11:47:26 +0300
genesys: Improve type safety of Genesys_Register_Set
-commit 1f847e4128a3f1f2d425b5ebb5509f64f2d32f2b
+commit 6d95bc191f796eef07da3f5334d840e8b31bf4cf
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-16 21:40:39 +0900
+
+ Drop unneeded C++ compiler flag additions to AM_CXXFLAGS. Re #92
+
+ The AX_CXX_COMPILE_STDCXX_11 macro takes care of doing so if needed
+ already.
+
+commit a4862d8526ca238fb667658a4bcd83de27915cb8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-16 21:39:45 +0900
+
+ Predicate genesys compilation on documented variable. Re #92
+
+commit 424bb7d923965327a28e303d1c424d5fc00e977c
Author: Rolf Bensch <rolf@bensch-online.de>
-Date: 2019-06-01 18:23:41 +0200
+Date: 2019-06-16 13:13:48 +0200
- INSTALL.linux: add missing development package
+ INSTALL.linux: add missing development environment packages
+
+commit 4c05fb474282c64c8e700ab9852b465eda32617e
+Merge: cadf5a9b1a9e f111032e7f05
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-15 06:50:27 +0000
+
+ Merge branch 'backend/as6e' into 'master'
+
+ as6e: Avoid out of bound access
+
+ See merge request sane-project/backends!31
+
+commit f111032e7f05e735422d02a88b1d04cb7b5da1c2
+Author: Martin Güthle <mguethle@xunit.de>
+Date: 2018-10-25 08:53:58 +0200
+
+ as6e: Avoid out of bound access
+
+ This fixes a crash due to a stack corruption.
+ To reproduce the bug, set a path within the PATH variable, to something,
+ which exceeds 128 chars. Maybe more chars are needed, to reach the stack
+ corruption.
+
+commit cadf5a9b1a9e62829fe630b474d91c5a94c4e68a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-15 14:45:36 +0900
+
+ Prevent segfault in case strndup cannot allocate memory
+
+ This complements 18f9e5598c224e90554d333b7f9f05ba8fa14ad0
+
+commit f9eb32317abf2f109fe21478358e637750df7f32
+Merge: d22516c76ac5 0b5ab0b5e47f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-15 05:43:06 +0000
+
+ Merge branch 'sanei-usb-testing-mode-prep' into 'master'
+
+ sanei: Preparation to support capture and replay of USB data for testing
+
+ See merge request sane-project/backends!74
+
+commit 0b5ab0b5e47f74ddf7e6a609bf91c3f4b36c0369
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-27 12:16:10 +0300
+
+ sanei_usb: Fall through to the end of sanei_usb_get_descriptor()
+
+commit 422e0831757681e1ff3cd6d6c93b80c38a8d1e67
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-27 12:16:09 +0300
+
+ sanei_usb: Fall through the end in sanei_usb_control_msg()
+
+commit d865705ef13a5d9f261abf1ed39b02319d414004
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-27 12:16:08 +0300
+
+ sanei_usb: Don't change input size variable in USBCALLS bulk code paths
+
+commit 18f9e5598c224e90554d333b7f9f05ba8fa14ad0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-27 12:16:07 +0300
+
+ dll: Don't unnecessarily use alloca
+
+commit d22516c76ac52c3b5208b62fc82312b223efc7ad
+Merge: 767cbfaa7f8d 9c42d6ac11fc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-12 10:48:14 +0000
+
+ Merge branch 'remove-autoconf-generated-files' into 'master'
+
+ Remove autoconf generated files
+
+ See merge request sane-project/backends!72
+
+commit 9c42d6ac11fc0ef71d4712607381d19636829d9c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-08 13:00:25 +0900
+
+ Check AX_CXX_COMPILE_STDCXX macro expansion in configure
+
+ If not expanded, the user is informed how to deal with this.
+
+commit c0b07792d948e46ef9cde8910a5b78f5f9e958fc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-08 12:37:49 +0900
+
+ Ignore harmless patch backups
+
+ When patching `ltmain.sh` the `patch` utility creates this file if the
+ patch did not apply cleanly, e.g. when it applied with an offset. Any
+ hunks that *failed* to apply end up in `ltmain.sh.rej`. This file you
+ probably want to see in `git status` so it is not ignored.
+ It should not be committed, of course.
+
+commit 8b51e449f67aa220b515364bceae960e8b1090e8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-08 12:36:06 +0900
+
+ Add ignore patterns
+
+ These files were removed in 1c143f630e3c8ef4b649a369260eebebf10c869c.
+
+commit b35e0184027c36e51fd73e1f52f8705f525cc4d8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-08 12:34:58 +0900
+
+ Remove files provided/created by Gettext. Re !72
+
+commit ee604e33653537db8825e76bcc8560dd8cb53910
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-07 20:48:40 +0900
+
+ Update autotools related information. Re !72
+
+commit 165aad31bcc115013658683a53195279122c0800
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-06 20:50:29 +0900
+
+ Make tar invocation work with Busybox tar version
+
+commit 03591a4c4a1014cac0cd39aff3daf8dde927563a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-06 20:37:08 +0900
+
+ Fix current working directory assumptions
+
+commit 103be60e24a07e14b3c8bd98e53472f3822d8a16
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-05 23:44:43 +0900
+
+ Really make it a no-op script. Re !72
+
+commit a367df0994ec7fb1e43a0e6e191096bca71d143a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-05 23:39:44 +0900
+
+ Add no-op script to satisfy GitLab CI requirements. Re !72
+
+commit 4ddd89dc16700cbe968c7627870be583bf6264d5
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-05 23:34:56 +0900
+
+ Move source tarball creation to prepare stage. Re !72
+
+ The build jobs use this tarball to exercise the build and only if all
+ builds pass will it be "archived".
+
+commit b6f8053af8f2c2ef301c23fbf9e24fe75b4463d7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-04 18:18:59 +0900
+
+ Carry forward configure.ac tweak only. Re !72
+
+commit 1c143f630e3c8ef4b649a369260eebebf10c869c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-02 21:33:22 +0900
+
+ Remove more generated files. Re !72
+
+commit 93be23ccf5b0a29024d619f6cc13191c9088b32b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-06-02 21:21:42 +0900
+
+ Fix libtool requirement for autogen.sh. Re !72
commit 3b2ecec808b54543ec341a8028055b36d650e17e
Author: Povilas Kanapickas <povilas@radix.lt>
@@ -1210,8 +1218,35 @@ Date: 2019-05-25 09:12:15 +0300
autotools: Remove files generated by autotools from version control
+commit 767cbfaa7f8d190648345a97637d76120f3aa1c9
+Merge: 1f847e4128a3 1f383b379540
+Author: Ilia Sotnikov <hostcc@gmail.com>
+Date: 2019-06-03 06:10:26 +0000
+
+ Merge branch 'hp5590-devel' into 'master'
+
+ HP5590: Add options for reading out user settings from scanner panel.
+
+ See merge request sane-project/backends!66
+
+commit 1f383b379540bc8a4b2300b066fe9ed6cfc7f550
+Author: Bernard B Badeer <bb3138@live.de>
+Date: 2019-06-03 06:10:26 +0000
+
+ Add options for reading LCD counter and LED indicator.
+
+ * Add command line parameters for readling LCD counter and LED indicator.
+ * Code refactoring: Use static parameter strings instead of dynamically
+ allocated string in order to avoid memory leak.
+
+commit 1f847e4128a3f1f2d425b5ebb5509f64f2d32f2b
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-06-01 18:23:41 +0200
+
+ INSTALL.linux: add missing development package
+
commit 6b4759252043534f74caa18918ce6f2d91b52651
-Merge: 26b3d8aa 916d4e0d
+Merge: 26b3d8aaa085 916d4e0db9e6
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-06-01 02:40:24 +0000
@@ -1233,7 +1268,7 @@ Date: 2019-06-01 05:24:58 +0300
question not do anything in most scenarios.
commit 26b3d8aaa0854f87dd39dce1dbe5af3ae1adbfcc
-Merge: ceec219c 1df69527
+Merge: ceec219cecb4 1df6952788f1
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-30 21:17:10 +0000
@@ -1249,68 +1284,143 @@ Date: 2019-05-31 00:07:44 +0300
doc: Update description for CanoScan 8600F
-commit ceec219cecb467e9d2cd082f88096f0a1686200b
-Merge: dc42318d aeefb370
+commit c536f3cf7094a597fe389cfdb1acf2c7753522f2
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-30 20:51:27 +0000
+Date: 2019-05-18 14:56:12 +0300
- Merge branch 'genesys-fix-gl843-calib-pixel-count' into 'master'
+ genesys: Fix calibration size calculation for 8600F
- genesys: Fix read pixel count calculation during calibration on GL843
+ The current approach of marking the scanner as
+ GENESYS_FLAG_FULL_HWDPI_MODE is counter-productive, because only the
+ register value is always full DPI, the actual resolution is different.
+ For now, let's just work around this by having a special case for the
+ scanner.
- See merge request sane-project/backends!78
+commit 0a0a14042338ca26c77910ed08e1248578e16d30
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-18 14:56:11 +0300
-commit aeefb370724cd0bfa085f728d3bf7132a9134863
+ genesys: Correctly adjust pixels per line during calibration
+
+commit 190361b724b0bea6ec253b9296e02e17b8767387
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-30 23:33:13 +0300
+Date: 2019-05-18 14:56:10 +0300
- genesys: Fix read pixel count calc during calibration on GL843
+ genesys: Work around first line having artifacts during calibration
-commit dc42318d905e35f09a5e5d0a9560d296eb43cf06
-Merge: 9f461060 50b27fe8
+commit 3a4f67feefe8c262a6da95b9c64057ff1548e089
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-29 21:28:43 +0000
+Date: 2019-05-18 14:56:09 +0300
- Merge branch 'genesys-use-containers' into 'master'
+ genesys: Fix lockups on GL843 during calibration
- genesys: Use C++ containers to remove chances of memory leaks
+commit ed582c585841279827cd0a3117dfdb3fc1848e44
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-18 14:56:08 +0300
- See merge request sane-project/backends!76
+ genesys: Fix gain calibration on GL843
-commit 9f461060aac2c6517e471699a7efa7e254b8048d
-Merge: 5d7fc4e0 896385a0
+commit b2205121721306db13b75fa9400c93f92b20a27a
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-28 01:21:44 +0000
+Date: 2019-05-18 14:56:07 +0300
- Merge branch 'genesys-catch-exceptions' into 'master'
+ genesys: Add a separate shading line count param for TA mode
- genesys: Catch C++ exceptions when returning to C code
+ q
- See merge request sane-project/backends!75
+commit b7ef75d63f8acc8fb71d8fa74429dcc52eddb012
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-18 14:56:06 +0300
-commit 0b5ab0b5e47f74ddf7e6a609bf91c3f4b36c0369
+ genesys: Implement transparency support for 8600F
+
+commit 126e98524a3543f83e79dd1a15e3cd6674dc6324
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-27 12:16:10 +0300
+Date: 2019-05-18 14:56:05 +0300
- sanei_usb: Fall through to the end of sanei_usb_get_descriptor()
+ genesys: Remove special ADF handling for G4050
-commit 422e0831757681e1ff3cd6d6c93b80c38a8d1e67
+commit 091fdbe6d66315430cf227b5e92d30639d214f01
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-27 12:16:09 +0300
+Date: 2019-05-18 14:56:04 +0300
- sanei_usb: Fall through the end in sanei_usb_control_msg()
+ genesys: Use correct offsets for transparency scan
-commit d865705ef13a5d9f261abf1ed39b02319d414004
+commit d0c4f87ac793a7dafcf35796edfee9f23878fdde
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-27 12:16:08 +0300
+Date: 2019-05-18 14:56:03 +0300
- sanei_usb: Don't change input size variable in USBCALLS bulk code paths
+ genesys: Don't set exposure to zero on 8600F
-commit 18f9e5598c224e90554d333b7f9f05ba8fa14ad0
+commit 33a60dcc7bae671f63bbacc684c996167c5307df
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-27 12:16:07 +0300
+Date: 2019-05-18 14:56:02 +0300
- dll: Don't unnecessarily use alloca
+ genesys: Implement support for 8600F
+
+commit 41e2029e4bcb25371cc0b89170dfab8e47a40b96
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-18 14:56:01 +0300
+
+ genesys: Initialize 0x7e register on GL843
+
+commit 966ef337100c4143408a68a609bef8054442b65c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-18 14:56:00 +0300
+
+ genesys: Fix pixel calculation during calibration on gl843
+
+commit df889c96f5d979369ba702a87ae0cafcda9aba9a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-18 14:55:59 +0300
+
+ genesys: Deduplicate pixel count computation during calibration
+
+commit 695addaafd0d7de46309384587d4d864261083cb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-18 14:55:58 +0300
+
+ genesys: Fix pixel count when scanning in half-ccd mode on GL843
+
+commit d2b4a1b838eb5df1a27f5a0fde8e2297fd17b1e9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-18 14:55:57 +0300
+
+ genesys: Extract gl843_compute_physical_params()
+
+commit 76bf1ad072bc5b50743273060f3c4b3cd67e0950
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-18 14:55:56 +0300
+
+ genesys: Improve documentations for registers in various places
+
+commit ceec219cecb467e9d2cd082f88096f0a1686200b
+Merge: dc42318d905e aeefb370724c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-30 20:51:27 +0000
+
+ Merge branch 'genesys-fix-gl843-calib-pixel-count' into 'master'
+
+ genesys: Fix read pixel count calculation during calibration on GL843
+
+ See merge request sane-project/backends!78
+
+commit aeefb370724cd0bfa085f728d3bf7132a9134863
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-30 23:33:13 +0300
+
+ genesys: Fix read pixel count calc during calibration on GL843
+
+commit dc42318d905e35f09a5e5d0a9560d296eb43cf06
+Merge: 9f461060aac2 50b27fe8367c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-29 21:28:43 +0000
+
+ Merge branch 'genesys-use-containers' into 'master'
+
+ genesys: Use C++ containers to remove chances of memory leaks
+
+ See merge request sane-project/backends!76
commit 50b27fe8367cbe5f1e426d709be00aae478c6b15
Author: Povilas Kanapickas <povilas@radix.lt>
@@ -1420,6 +1530,17 @@ Date: 2019-05-25 11:15:25 +0300
genesys: Use std::vector instead of malloc for local allocations
+commit 9f461060aac2c6517e471699a7efa7e254b8048d
+Merge: 5d7fc4e0ed34 896385a082f0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-28 01:21:44 +0000
+
+ Merge branch 'genesys-catch-exceptions' into 'master'
+
+ genesys: Catch C++ exceptions when returning to C code
+
+ See merge request sane-project/backends!75
+
commit 896385a082f0d44a4fa4abb21c4c5fd110d51d8e
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-25 10:03:15 +0300
@@ -1433,7 +1554,7 @@ Date: 2019-05-25 10:03:14 +0300
genesys: Wrap exported functions to always catch exceptions
commit 5d7fc4e0ed3489982082be3c1845fa3f2eba42d9
-Merge: 216e8b28 58ee13d0
+Merge: 216e8b28a0b7 58ee13d057f0
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-24 18:25:58 +0000
@@ -1493,7 +1614,7 @@ Date: 2019-05-21 22:10:12 +0900
Expand AM_CXXFLAGS in our Makefiles. Fixes #84
commit 16a3945ce6b585c97a90461419b573a2d389d58f
-Merge: f498e5fa 0a66ed1d
+Merge: f498e5fa6671 0a66ed1dbcb3
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-20 09:47:38 +0000
@@ -1503,6 +1624,24 @@ Date: 2019-05-20 09:47:38 +0000
See merge request sane-project/backends!70
+commit 0a66ed1dbcb3f85bedab81581cb84320a8c3c2c1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-28 17:47:45 +0300
+
+ genesys: Use a function to sleep ms to reduce chance of errors
+
+commit d9f65eefc0fca4a45fb3ac1b944d55fb33fd319a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-28 17:47:44 +0300
+
+ genesys: Fix a bug in sleep duration calculation
+
+commit baaa934dce8db53bd1c4f0e0308f7dac1000201f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-28 17:47:43 +0300
+
+ genesys: Use a wrapper of usleep()
+
commit f498e5fa66718a76adbcd60be8228a50cc903ab1
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-05-20 18:32:48 +0900
@@ -1512,7 +1651,7 @@ Date: 2019-05-20 18:32:48 +0900
Fixes build on Fedora 29 and 30.
commit 2bb5ed655ade84281435d80cf133403f8e11bb29
-Merge: 2a116229 185303a1
+Merge: 2a11622967ff 185303a18d18
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-05-20 09:10:53 +0000
@@ -1522,8 +1661,44 @@ Date: 2019-05-20 09:10:53 +0000
See merge request sane-project/backends!61
+commit 185303a18d18e855df38b85a0647d595a1c0462f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-19 13:50:11 +0300
+
+ Enable warnings in C++ source
+
+commit 42fb5a3e038d1344534e5ff1b175dc4c7125ff0d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-19 13:39:42 +0300
+
+ Don't compile genesys backend when C++11 is not available
+
+commit ca051cc22736909c7eaddbb1ba549eb718ea36f8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-10 21:16:11 +0300
+
+ genesys: Compile library as C++ code
+
+commit 72121bc7d88bbd6577cd3ea88b301d91ac35d675
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-10 21:16:10 +0300
+
+ sanei: Use C linkage for internal functions in C++ mode
+
+commit 9e3b5d6381b5c8d49b71753e7b28b65f45feebee
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-10 21:16:09 +0300
+
+ Update generated files
+
+commit b93340b8623de865c73b7e12a5b448732f9a5f68
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-11 00:02:47 +0300
+
+ Enable C++ in autoconf
+
commit 2a11622967ff2f5f09d4b47ffc3e1817645f814a
-Merge: 75855385 7a8ae928
+Merge: 758553859589 7a8ae928626a
Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
Date: 2019-05-19 18:18:57 +0000
@@ -1533,6 +1708,21 @@ Date: 2019-05-19 18:18:57 +0000
See merge request sane-project/backends!65
+commit 7a8ae928626a2ccecc5dd40dd4564c47d8dcb9a4
+Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
+Date: 2019-05-08 11:03:15 +0300
+
+ ricoh2: Rearrange init/deinit code of ricoh2 to correctly support "code flow"
+
+ The backend worked incorrectly when scanning process was interrupted before the
+ current page was scanned completely. For example, scanimage tool could not scan
+ the next page if the previous one was interrupted. Now this issue is fixed.
+
+ See also "4.4. Code Flow" in SANE API specification v.1.06.
+
+ Also debug levels was changed to have better control over what should be
+ logged.
+
commit 758553859589a1c5ec0a7ff688fe4621e81b62db
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-05-19 21:41:16 +0900
@@ -1540,7 +1730,7 @@ Date: 2019-05-19 21:41:16 +0900
epson2: Add XP-255 as supported. Fixes #81
commit 71bf2daec6584db1228975c88cb737375244e57e
-Merge: 8cdd5ae2 a4ab6937
+Merge: 8cdd5ae22e3a a4ab69376c3f
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-19 12:02:50 +0000
@@ -1550,8 +1740,14 @@ Date: 2019-05-19 12:02:50 +0000
See merge request sane-project/backends!68
+commit a4ab69376c3f05a37d51953776a938731c277683
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-19 14:49:44 +0300
+
+ genesys: Remove uses of GENESYS_STATIC
+
commit 8cdd5ae22e3ac4c3b059edba56e174eafcfc404d
-Merge: e13b80fa 4c2c4eb6
+Merge: e13b80fa6ff3 4c2c4eb6397b
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-19 11:56:38 +0000
@@ -1561,12 +1757,6 @@ Date: 2019-05-19 11:56:38 +0000
See merge request sane-project/backends!67
-commit a4ab69376c3f05a37d51953776a938731c277683
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-19 14:49:44 +0300
-
- genesys: Remove uses of GENESYS_STATIC
-
commit 4c2c4eb6397b974c90a20c1f4f355730b700be27
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-19 14:46:46 +0300
@@ -1587,173 +1777,78 @@ Date: 2019-05-19 14:46:44 +0300
A git commit would be much more useful in log messages
-commit 185303a18d18e855df38b85a0647d595a1c0462f
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-19 13:50:11 +0300
-
- Enable warnings in C++ source
-
-commit 42fb5a3e038d1344534e5ff1b175dc4c7125ff0d
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-19 13:39:42 +0300
-
- Don't compile genesys backend when C++11 is not available
-
-commit c536f3cf7094a597fe389cfdb1acf2c7753522f2
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:12 +0300
-
- genesys: Fix calibration size calculation for 8600F
-
- The current approach of marking the scanner as
- GENESYS_FLAG_FULL_HWDPI_MODE is counter-productive, because only the
- register value is always full DPI, the actual resolution is different.
- For now, let's just work around this by having a special case for the
- scanner.
-
-commit 0a0a14042338ca26c77910ed08e1248578e16d30
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:11 +0300
-
- genesys: Correctly adjust pixels per line during calibration
-
-commit 190361b724b0bea6ec253b9296e02e17b8767387
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:10 +0300
-
- genesys: Work around first line having artifacts during calibration
-
-commit 3a4f67feefe8c262a6da95b9c64057ff1548e089
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:09 +0300
-
- genesys: Fix lockups on GL843 during calibration
-
-commit ed582c585841279827cd0a3117dfdb3fc1848e44
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:08 +0300
-
- genesys: Fix gain calibration on GL843
-
-commit b2205121721306db13b75fa9400c93f92b20a27a
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:07 +0300
-
- genesys: Add a separate shading line count param for TA mode
+commit e13b80fa6ff333cede132dc29377eec9b6c02f48
+Merge: ae871333ef09 0273c05c9504
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-05-12 03:11:00 +0000
- q
+ Merge branch 'add_sg3100' into 'master'
-commit b7ef75d63f8acc8fb71d8fa74429dcc52eddb012
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:06 +0300
+ Add support for Aficio SG3100SNw
- genesys: Implement transparency support for 8600F
+ See merge request sane-project/backends!57
-commit 126e98524a3543f83e79dd1a15e3cd6674dc6324
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:05 +0300
+commit 0273c05c95040b0cd3141117d67bbd08e4a03e5b
+Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
+Date: 2019-05-11 16:17:40 +0300
- genesys: Remove special ADF handling for G4050
+ Fix review comments; add the backend to dll.conf
-commit 091fdbe6d66315430cf227b5e92d30639d214f01
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:04 +0300
+commit 3514d06156424373b832f2e46a7d7e3311f6d15b
+Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
+Date: 2019-05-01 01:14:45 +0300
- genesys: Use correct offsets for transparency scan
+ Add support for Aficio SG3100SNw
-commit d0c4f87ac793a7dafcf35796edfee9f23878fdde
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:03 +0300
+commit ae871333ef09d867c6d95edd6c3adf3bd05c2fea
+Merge: 4df63ef54801 ee6d6da33945
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-05-12 02:36:36 +0000
- genesys: Don't set exposure to zero on 8600F
+ Merge branch 'scanimage-output-path' into 'master'
-commit 33a60dcc7bae671f63bbacc684c996167c5307df
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:02 +0300
+ scanimage: Allow specification of the output path via option
- genesys: Implement support for 8600F
+ See merge request sane-project/backends!46
-commit 41e2029e4bcb25371cc0b89170dfab8e47a40b96
+commit ee6d6da339459bc8393547005e087e97d3d4987b
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:01 +0300
+Date: 2019-04-28 23:28:21 +0300
- genesys: Initialize 0x7e register on GL843
+ scanimage: Update manual page
-commit 966ef337100c4143408a68a609bef8054442b65c
+commit 728de89d7166708331907726571c7027b4921d82
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:56:00 +0300
+Date: 2019-04-28 23:28:20 +0300
- genesys: Fix pixel calculation during calibration on gl843
+ scanimage: Guess --format from --output-file if possible
-commit df889c96f5d979369ba702a87ae0cafcda9aba9a
+commit 86e917b04b9bd1fbeb53d58323b118f30c8efc15
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:55:59 +0300
+Date: 2019-04-28 23:28:19 +0300
- genesys: Deduplicate pixel count computation during calibration
+ scanimage: Prevent --output-file and --batch to be used together
-commit 695addaafd0d7de46309384587d4d864261083cb
+commit 7f4944f0a7d1c7ce90d5f4f79078112bc5d52dff
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:55:58 +0300
+Date: 2019-04-28 23:28:18 +0300
- genesys: Fix pixel count when scanning in half-ccd mode on GL843
+ scanimage: Warn when output format is not set
-commit d2b4a1b838eb5df1a27f5a0fde8e2297fd17b1e9
+commit 877cc29d88529f9af8e898a52b4be99863a20eea
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:55:57 +0300
+Date: 2019-04-28 23:28:17 +0300
- genesys: Extract gl843_compute_physical_params()
+ scanimage: Raise an error if --format option is an unknown format
-commit 76bf1ad072bc5b50743273060f3c4b3cd67e0950
+commit 5dbd51d1ec36ba4389a7ec18ff041fd04ee3c5da
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-18 14:55:56 +0300
-
- genesys: Improve documentations for registers in various places
-
-commit 7a8ae928626a2ccecc5dd40dd4564c47d8dcb9a4
-Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
-Date: 2019-05-08 11:03:15 +0300
-
- ricoh2: Rearrange init/deinit code of ricoh2 to correctly support "code flow"
-
- The backend worked incorrectly when scanning process was interrupted before the
- current page was scanned completely. For example, scanimage tool could not scan
- the next page if the previous one was interrupted. Now this issue is fixed.
-
- See also "4.4. Code Flow" in SANE API specification v.1.06.
-
- Also debug levels was changed to have better control over what should be
- logged.
-
-commit e13b80fa6ff333cede132dc29377eec9b6c02f48
-Merge: ae871333 0273c05c
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-05-12 03:11:00 +0000
-
- Merge branch 'add_sg3100' into 'master'
-
- Add support for Aficio SG3100SNw
-
- See merge request sane-project/backends!57
-
-commit ae871333ef09d867c6d95edd6c3adf3bd05c2fea
-Merge: 4df63ef5 ee6d6da3
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2019-05-12 02:36:36 +0000
-
- Merge branch 'scanimage-output-path' into 'master'
+Date: 2019-03-20 23:09:03 +0200
scanimage: Allow specification of the output path via option
- See merge request sane-project/backends!46
-
-commit 0273c05c95040b0cd3141117d67bbd08e4a03e5b
-Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
-Date: 2019-05-11 16:17:40 +0300
-
- Fix review comments; add the backend to dll.conf
-
commit 4df63ef5480103edf5c2a92a1641afdc0eddca04
-Merge: 3c8b9b91 988a91ae
+Merge: 3c8b9b916794 988a91aec476
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-11 09:20:45 +0000
@@ -1763,17 +1858,6 @@ Date: 2019-05-11 09:20:45 +0000
See merge request sane-project/backends!64
-commit 3c8b9b9167947def05544160153d8f3bc5312548
-Merge: 74fffa64 8de5a1fd
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-11 09:14:06 +0000
-
- Merge branch 'genesys-reduce-duplication' into 'master'
-
- genesys: Reduce duplication in low level functions
-
- See merge request sane-project/backends!63
-
commit 988a91aec47697f1ec37ecc492819223df40b18f
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-11 12:12:29 +0300
@@ -1804,16 +1888,16 @@ Date: 2019-05-11 12:12:25 +0300
genesys: Don't write identical debug pnm files
-commit 74fffa64791f6e670942604eac27bc330afc339b
-Merge: 15fd9bc9 88775919
+commit 3c8b9b9167947def05544160153d8f3bc5312548
+Merge: 74fffa64791f 8de5a1fdb104
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-11 09:08:11 +0000
+Date: 2019-05-11 09:14:06 +0000
- Merge branch 'genesys-force-calibration' into 'master'
+ Merge branch 'genesys-reduce-duplication' into 'master'
- genesys: Add option to force calibration ignoring caches
+ genesys: Reduce duplication in low level functions
- See merge request sane-project/backends!62
+ See merge request sane-project/backends!63
commit 8de5a1fdb10498c85a998ad8eeb4e6b228019fb2
Author: Povilas Kanapickas <povilas@radix.lt>
@@ -1925,44 +2009,25 @@ Date: 2019-05-11 12:05:09 +0300
genesys: Create generic sanei_genesys_bulk_read_data out of gl124 impl
-commit 887759192bbf2f8265f5897ba43acdcf5a10cbe5
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-11 12:00:25 +0300
-
- genesys: Add option to force calibration ignoring caches
-
-commit ee6d6da339459bc8393547005e087e97d3d4987b
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-28 23:28:21 +0300
-
- scanimage: Update manual page
-
-commit 728de89d7166708331907726571c7027b4921d82
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-28 23:28:20 +0300
-
- scanimage: Guess --format from --output-file if possible
-
-commit 86e917b04b9bd1fbeb53d58323b118f30c8efc15
+commit 74fffa64791f6e670942604eac27bc330afc339b
+Merge: 15fd9bc9ce70 887759192bbf
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-28 23:28:19 +0300
+Date: 2019-05-11 09:08:11 +0000
- scanimage: Prevent --output-file and --batch to be used together
+ Merge branch 'genesys-force-calibration' into 'master'
-commit 7f4944f0a7d1c7ce90d5f4f79078112bc5d52dff
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-28 23:28:18 +0300
+ genesys: Add option to force calibration ignoring caches
- scanimage: Warn when output format is not set
+ See merge request sane-project/backends!62
-commit 877cc29d88529f9af8e898a52b4be99863a20eea
+commit 887759192bbf2f8265f5897ba43acdcf5a10cbe5
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-28 23:28:17 +0300
+Date: 2019-05-11 12:00:25 +0300
- scanimage: Raise an error if --format option is an unknown format
+ genesys: Add option to force calibration ignoring caches
commit 15fd9bc9ce70953d70fd3fa2f48bf725cb27a37d
-Merge: 85639110 16a8d554
+Merge: 856391100f00 16a8d5548091
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-05-11 08:13:18 +0000
@@ -1972,32 +2037,14 @@ Date: 2019-05-11 08:13:18 +0000
See merge request sane-project/backends!60
-commit ca051cc22736909c7eaddbb1ba549eb718ea36f8
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-10 21:16:11 +0300
-
- genesys: Compile library as C++ code
-
-commit 72121bc7d88bbd6577cd3ea88b301d91ac35d675
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-10 21:16:10 +0300
-
- sanei: Use C linkage for internal functions in C++ mode
-
-commit 9e3b5d6381b5c8d49b71753e7b28b65f45feebee
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-10 21:16:09 +0300
-
- Update generated files
-
-commit b93340b8623de865c73b7e12a5b448732f9a5f68
+commit 16a8d554809171156ed2727c6e1f4e2fdff5b5e3
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-11 00:02:47 +0300
+Date: 2019-05-10 21:05:51 +0300
- Enable C++ in autoconf
+ Don't use strings that are similar to conflict markers in debug msgs
commit 856391100f00b49bdf245930cd68c52f3116b6f7
-Merge: 56c01c00 47e7f087
+Merge: 56c01c005a8d 47e7f087c622
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-05-10 18:23:32 +0000
@@ -2013,14 +2060,8 @@ Date: 2019-05-10 21:04:15 +0300
genesys: Perform type casts explicitly
-commit 16a8d554809171156ed2727c6e1f4e2fdff5b5e3
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-05-10 21:05:51 +0300
-
- Don't use strings that are similar to conflict markers in debug msgs
-
commit 56c01c005a8ddda04d24e81a337e724f673faece
-Merge: f6038a70 29654290
+Merge: f6038a70ec2c 296542905e84
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-05-05 09:27:29 +0000
@@ -2045,7 +2086,7 @@ Date: 2019-05-04 09:19:26 +0900
Add a Fedora 30 build, drop the Fedora 28 one
commit 1b8f7926fe18b2d5c646480a4fa691f1984114a3
-Merge: fa940e86 25feb1be
+Merge: fa940e86bbac 25feb1be0c89
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-05-02 06:16:55 +0000
@@ -2063,14 +2104,8 @@ Date: 2017-08-03 18:50:05 +0900
See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=869673
-commit 3514d06156424373b832f2e46a7d7e3311f6d15b
-Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
-Date: 2019-05-01 01:14:45 +0300
-
- Add support for Aficio SG3100SNw
-
commit fa940e86bbac2ac21c969b80722d8cf341eac389
-Merge: 916ce82f 0921d366
+Merge: 916ce82f007e 0921d3661812
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-04-28 21:02:16 +0000
@@ -2080,29 +2115,11 @@ Date: 2019-04-28 21:02:16 +0000
See merge request sane-project/backends!48
-commit 5dbd51d1ec36ba4389a7ec18ff041fd04ee3c5da
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-03-20 23:09:03 +0200
-
- scanimage: Allow specification of the output path via option
-
-commit 0a66ed1dbcb3f85bedab81581cb84320a8c3c2c1
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-28 17:47:45 +0300
-
- genesys: Use a function to sleep ms to reduce chance of errors
-
-commit d9f65eefc0fca4a45fb3ac1b944d55fb33fd319a
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-28 17:47:44 +0300
-
- genesys: Fix a bug in sleep duration calculation
-
-commit baaa934dce8db53bd1c4f0e0308f7dac1000201f
+commit 0921d3661812615b4cb12d16d0754af49445bd05
Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-28 17:47:43 +0300
+Date: 2019-03-22 15:56:57 +0200
- genesys: Use a wrapper of usleep()
+ sanei_usb: Deduplicate endpoint setup code
commit 916ce82f007e0eb297dadda9a0577482f0fb2dc0
Author: Rolf Bensch <rolf@bensch-online.de>
@@ -2111,14 +2128,14 @@ Date: 2019-04-25 21:31:27 +0200
pixma: backend version 0.23.0
commit 28d87cb6e5400df519c703bc4769808a37b6f990
-Merge: 392beeec 9fe7d990
+Merge: 392beeec74b9 9fe7d990891c
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-04-25 21:27:53 +0200
Merge remote-tracking branch 'origin/master'
commit 9fe7d990891cd53ec6295610507be0238ad868c6
-Merge: d50f3330 a3c64bc0
+Merge: d50f33306f9c a3c64bc0cad1
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-04-25 19:26:50 +0000
@@ -2128,6 +2145,14 @@ Date: 2019-04-25 19:26:50 +0000
See merge request sane-project/backends!49
+commit a3c64bc0cad104d09ba14f833828ae963dbc72f9
+Author: MackPi <mack@prototypeiteration.com>
+Date: 2019-04-03 16:37:03 -0700
+
+ Added Imageclass MF634Cdw
+
+ Added MF634Cdw using MF733Cdw as reference
+
commit 392beeec74b97cd712469953962c2b3a6bf2b31f
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-04-25 21:24:40 +0200
@@ -2135,7 +2160,7 @@ Date: 2019-04-25 21:24:40 +0200
pixma: new scanners Canon i-SENSYS MF110, MF260, MF420, MF510, MF520, MF640 and MF740 Series
commit d50f33306f9c9ae0d976dce247c316c071ae3715
-Merge: a569bfbf a814df33
+Merge: a569bfbf02c1 a814df334311
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-04-22 22:07:19 +0000
@@ -2164,7 +2189,7 @@ Date: 2019-04-23 00:55:44 +0300
genesys: Add numeric model IDs to model tables
commit a569bfbf02c1d85b440db0b00f5e3a6564991564
-Merge: 595e1fc7 3cd8a4cd
+Merge: 595e1fc754cf 3cd8a4cd0157
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-04-22 21:38:29 +0000
@@ -2180,17 +2205,6 @@ Date: 2019-04-23 00:14:49 +0300
genesys: Use hex to print USB vendor and product IDs to debug log
-commit 595e1fc754cfa463f771f25daff5c7bea79715d8
-Merge: c9ebf2b5 23416187
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-04-22 21:15:44 +0000
-
- Merge branch 'genesys-bugs' into 'master'
-
- Several genesys bugfixes
-
- See merge request sane-project/backends!52
-
commit d7c17f75403aa5619c711b7d19e81932fa9a47b1
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-04-23 00:14:48 +0300
@@ -2211,6 +2225,17 @@ Date: 2019-04-23 00:14:46 +0300
genesys: Include genesys_low.h
+commit 595e1fc754cfa463f771f25daff5c7bea79715d8
+Merge: c9ebf2b5605e 23416187205c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-22 21:15:44 +0000
+
+ Merge branch 'genesys-bugs' into 'master'
+
+ Several genesys bugfixes
+
+ See merge request sane-project/backends!52
+
commit 23416187205c4d7ef4ec9c1a4b1eaa3f0e03a4c4
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-04-23 00:05:35 +0300
@@ -2230,7 +2255,7 @@ Date: 2019-04-23 00:05:33 +0300
genesys: Fix use of uninitialized memory
commit c9ebf2b5605e263d8d93f1132cb4df73ebee4516
-Merge: 4f5eb745 2fd3b562
+Merge: 4f5eb745ac68 2fd3b5622b39
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-04-22 20:56:38 +0000
@@ -2264,14 +2289,6 @@ Date: 2019-04-06 17:11:47 +0900
utsushi.desc: Sync with upstream
-commit a3c64bc0cad104d09ba14f833828ae963dbc72f9
-Author: MackPi <mack@prototypeiteration.com>
-Date: 2019-04-03 16:37:03 -0700
-
- Added Imageclass MF634Cdw
-
- Added MF634Cdw using MF733Cdw as reference
-
commit 155248dde28b2a9ec4114d59dc294b69b3260142
Author: Louis Lagendijk <louis.lagendijk@gmail.com>
Date: 2019-03-27 19:09:43 +0100
@@ -2291,14 +2308,8 @@ Date: 2019-03-23 14:09:24 +0900
utsushi.desc: Sync with upstream
-commit 0921d3661812615b4cb12d16d0754af49445bd05
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-03-22 15:56:57 +0200
-
- sanei_usb: Deduplicate endpoint setup code
-
commit 276670f3c249e4a59267bc5c45e170c8e7be7286
-Merge: e92a3d6e 2653cbae
+Merge: e92a3d6ebaca 2653cbaec799
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-03-22 14:27:53 +0000
@@ -2308,8 +2319,14 @@ Date: 2019-03-22 14:27:53 +0000
See merge request sane-project/backends!44
+commit 2653cbaec799fbfd365362c45e61796ce90b6466
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-03-20 23:09:07 +0200
+
+ Run autoreconf and automake
+
commit e92a3d6ebaca4fcedb262e7861155b9fd49e5bf0
-Merge: de5c63ee d866998f
+Merge: de5c63ee7cff d866998f102f
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-03-22 14:25:39 +0000
@@ -2319,8 +2336,20 @@ Date: 2019-03-22 14:25:39 +0000
See merge request sane-project/backends!45
+commit d866998f102f242ed421ff4b4480aa2a4073c166
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-03-20 23:09:05 +0200
+
+ genesys: Remove uses of unused UNIT_TESTING ifdef
+
+commit b7b5ca79c8f7a92d488d96d0b1d0963d01d86423
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-03-20 23:09:04 +0200
+
+ rts8891: Remove uses of unused UNIT_TESTING ifdef
+
commit de5c63ee7cff16115fa04ed998c988fb79087bda
-Merge: 13350ba4 265f4a96
+Merge: 13350ba4ba0a 265f4a96ea0d
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2019-03-22 14:24:48 +0000
@@ -2336,24 +2365,6 @@ Date: 2019-03-22 14:50:03 +0200
genesys: Prefer enums to #defines
-commit 2653cbaec799fbfd365362c45e61796ce90b6466
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-03-20 23:09:07 +0200
-
- Run autoreconf and automake
-
-commit d866998f102f242ed421ff4b4480aa2a4073c166
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-03-20 23:09:05 +0200
-
- genesys: Remove uses of unused UNIT_TESTING ifdef
-
-commit b7b5ca79c8f7a92d488d96d0b1d0963d01d86423
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2019-03-20 23:09:04 +0200
-
- rts8891: Remove uses of unused UNIT_TESTING ifdef
-
commit 13350ba4ba0a40e0fae4567bb23566575a0317e2
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-03-11 17:46:18 +0100
@@ -2405,7 +2416,7 @@ Date: 2019-03-11 17:15:54 +0100
pixma: fix some interface descriptions
commit 960a6d5d697bac72dd5d068eefe12741a5d68de5
-Merge: 9d69d94f 2915756a
+Merge: 9d69d94f0219 2915756ae426
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-03-08 20:56:26 +0000
@@ -2415,18 +2426,18 @@ Date: 2019-03-08 20:56:26 +0000
See merge request sane-project/backends!43
-commit 9d69d94f0219fa71b8e16968f08293f902d0016f
-Author: Rolf Bensch <rolf@bensch-online.de>
-Date: 2019-03-08 17:28:36 +0100
-
- add missing development packages to INSTALL.linux
-
commit 2915756ae4262b6a87490b5d96959f58c498307b
Author: Thierry <thierry@substantiel.fr>
Date: 2019-03-05 08:43:31 +0100
Add Driver Canon Pixma TS 6200 Series.
+commit 9d69d94f0219fa71b8e16968f08293f902d0016f
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-03-08 17:28:36 +0100
+
+ add missing development packages to INSTALL.linux
+
commit 9e4344b33a2d83aa7663b65d6d8a49c7306d72c7
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-02-27 19:37:58 +0100
@@ -2445,7 +2456,7 @@ Date: 2019-02-24 20:37:55 -0500
- minor comments and move a bit of code for consistency
commit 81faeb46f28c4b6c251123aabac118ff0262d9e7
-Merge: 2d0912af 60dffda6
+Merge: 2d0912afdcdb 60dffda6036a
Author: m. allan noah <kitno455@gmail.com>
Date: 2019-02-25 01:37:03 +0000
@@ -2455,6 +2466,36 @@ Date: 2019-02-25 01:37:03 +0000
See merge request sane-project/backends!12
+commit 60dffda6036ae15d89b2a94af269d32dcb300786
+Author: Manuel Argüelles <manuel.arguelles@smartmatic.com>
+Date: 2019-02-08 22:40:15 -0500
+
+ Add mention of company contributing to canon_dr.c
+
+commit 1bc6ade107d294d93ad4c50727bd9fd77caf63ec
+Author: Manuel Argüelles <manuel.arguelles@smartmatic.com>
+Date: 2018-11-30 10:50:13 -0500
+
+ Fix image displacement for lineart/halftone during hardware crop
+
+ Increases the width of the image if the reported size is less than the byte
+ boundary.
+
+commit ecac81eee2f79fc3f089f3a3d3509a2860e3f4c0
+Author: Manuel Argüelles <manuel.arguelles@smartmatic.com>
+Date: 2018-11-12 14:01:24 -0500
+
+ Set scan area to maximum when hardware crop is enable
+
+commit d61a59ca01b638474b6a847bf26e6dfb9420e064
+Author: Manuel Argüelles <manuel.arguelles@smartmatic.com>
+Date: 2018-07-30 17:26:13 -0500
+
+ Add support for Canon DR-X10C scanner
+
+ Added initial support for DR-X10C SSM2 scanner with dropout color, hardware
+ deskew and hardware crop.
+
commit 2d0912afdcdb174721dbad0cb2e200880e5ddb15
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-02-24 12:40:16 +0100
@@ -2474,7 +2515,7 @@ Date: 2019-02-24 12:38:37 +0100
pixma: add comment for MF733C
commit 73645abba08a0df68c43f798dee9cf28451b785d
-Merge: 5ae6f698 b327c3d7
+Merge: 5ae6f698aedd b327c3d780a4
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-02-24 11:22:07 +0000
@@ -2484,6 +2525,25 @@ Date: 2019-02-24 11:22:07 +0000
See merge request sane-project/backends!42
+commit b327c3d780a486b3069f2f17c589fcc083289788
+Author: Mike Ferrara <mikef@mrf.sonoma.ca.us>
+Date: 2019-02-22 11:01:51 -0800
+
+ Typo. fixed.
+
+commit eadd663676c17a30ba27854e82ad8dfebefb4aa6
+Merge: 7277cec027c8 ff04ede4adb4
+Author: Mike Ferrara <mikef@mrf.sonoma.ca.us>
+Date: 2019-02-22 10:40:29 -0800
+
+ Merge branch 'master' into mikef-MF733C
+
+commit 7277cec027c80386f90193b330aacf1b555d0c96
+Author: Mike Ferrara <mikef@mrf.sonoma.ca.us>
+Date: 2019-02-22 10:30:18 -0800
+
+ Mods to support imageCLASS MF733Cdw USA color laser MFP
+
commit 5ae6f698aedd58ad83802b0ecfe87d171f30ee72
Author: m. allan noah <kitno455@gmail.com>
Date: 2019-02-23 15:46:59 -0500
@@ -2524,25 +2584,6 @@ Date: 2019-02-23 14:50:49 -0500
Fix a few typos
-commit b327c3d780a486b3069f2f17c589fcc083289788
-Author: Mike Ferrara <mikef@mrf.sonoma.ca.us>
-Date: 2019-02-22 11:01:51 -0800
-
- Typo. fixed.
-
-commit eadd663676c17a30ba27854e82ad8dfebefb4aa6
-Merge: 7277cec0 ff04ede4
-Author: Mike Ferrara <mikef@mrf.sonoma.ca.us>
-Date: 2019-02-22 10:40:29 -0800
-
- Merge branch 'master' into mikef-MF733C
-
-commit 7277cec027c80386f90193b330aacf1b555d0c96
-Author: Mike Ferrara <mikef@mrf.sonoma.ca.us>
-Date: 2019-02-22 10:30:18 -0800
-
- Mods to support imageCLASS MF733Cdw USA color laser MFP
-
commit ff04ede4adb4f0267351150122fa63fea354f0bb
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-02-20 19:51:57 +0100
@@ -2586,7 +2627,7 @@ Date: 2019-02-20 18:47:24 +0100
pixma: add button support for CanoScan LiDE400
commit c784e82d65689fd1e315bb814e381959a56d2b98
-Merge: 2b0c7a31 d9784940
+Merge: 2b0c7a3170a6 d9784940968d
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2019-02-20 17:44:44 +0000
@@ -2604,12 +2645,6 @@ Date: 2019-02-20 17:44:44 +0000
See merge request sane-project/backends!36
-commit 60dffda6036ae15d89b2a94af269d32dcb300786
-Author: Manuel Argüelles <manuel.arguelles@smartmatic.com>
-Date: 2019-02-08 22:40:15 -0500
-
- Add mention of company contributing to canon_dr.c
-
commit 2b0c7a3170a6ef0ab74bbf652069aa06a069e8c6
Author: Alex Belkin <abc@telekom.ru>
Date: 2019-02-05 15:19:27 +0300
@@ -2619,7 +2654,7 @@ Date: 2019-02-05 15:19:27 +0300
Reported in #54 by Lambrigts walter.
commit 78ffe3235db28a1048561d32267dc69fdc3b79d1
-Merge: 66fed7c4 fd18d197
+Merge: 66fed7c4bfb2 fd18d197f834
Author: Alex Belkin <abc@telekom.ru>
Date: 2019-02-05 15:08:17 +0300
@@ -2643,7 +2678,7 @@ Date: 2019-02-02 10:38:35 +0900
Bump Alpine build from 3.8 to 3.9
commit 4354fc7f6da2ee65cbe940a715f11abecdad3f49
-Merge: 93340afd 00d31e14
+Merge: 93340afddfbc 00d31e14f8a5
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2019-01-21 11:51:48 +0000
@@ -2655,6 +2690,20 @@ Date: 2019-01-21 11:51:48 +0000
See merge request sane-project/backends!34
+commit 00d31e14f8a5339a2756af29697ec3c2ff6e7d4d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2018-12-16 22:25:12 +0900
+
+ genesys: fix [-Wunused-function] compiler warning
+
+commit d609de285b710ca0a9c76c653abee4b8f4315f57
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2018-12-16 21:56:52 +0900
+
+ Restore slow_back_home use, disable rewind for gl847
+
+ See #7.
+
commit 93340afddfbc4085a5297fe635b65dd7f7f3ef05
Author: Bernhard Übelacker <bernhardu@mailbox.org>
Date: 2018-12-17 00:05:43 +0100
@@ -2711,7 +2760,7 @@ Date: 2019-01-01 14:13:58 +0100
pixma: new scanner Canon imageCLASS D550
commit ac83c8110c47659993266dae3de6aafb29308716
-Merge: 36648cba d71f5e4b
+Merge: 36648cba52c9 d71f5e4bc875
Author: Gerhard Jäger <gerhard@gjaeger.de>
Date: 2018-12-31 14:13:26 +0000
@@ -2723,8 +2772,16 @@ Date: 2018-12-31 14:13:26 +0000
See merge request sane-project/backends!33
+commit d71f5e4bc87500c2de8e4297e140bab09e3f6272
+Author: Michał Wróbel <mvv@google.com>
+Date: 2018-12-09 22:21:18 +0100
+
+ backend/plustek: fix "color-banding" on 64bit
+
+ Fixes https://gitlab.com/sane-project/backends/issues/42
+
commit 36648cba52c90df11ee5a6c3d3a4a7506b0cc7cd
-Merge: 2d14283d 47f9b1ee
+Merge: 2d14283d0c44 47f9b1eeed2d
Author: Gerhard Jäger <gerhard@gjaeger.de>
Date: 2018-12-31 14:09:56 +0000
@@ -2734,6 +2791,31 @@ Date: 2018-12-31 14:09:56 +0000
See merge request sane-project/backends!32
+commit 47f9b1eeed2deb1f0d0f63c25f83dab5aeea0c8d
+Author: Mark Hills <mark@xwax.org>
+Date: 2018-12-01 21:01:57 +0000
+
+ Fix a bug with Canon LiDE 700 where bright areas overflow
+
+ On this scanner, white areas are easily seen to become yellow, implying
+ some kind of integer overflow in the blue channel first, followed by
+ others.
+
+ I can't be 100% sure this is the correct fix without knowing more about
+ the design or having a data sheet; this "target_code" was established
+ experimentally.
+
+ This is a fix to issue #43.
+
+commit 4423421806d727885918b81f94fde1d21409059e
+Author: Mark Hills <mark@xwax.org>
+Date: 2018-12-01 21:00:47 +0000
+
+ A switch statement prepares us for additional entries
+
+ Avoid the negative 'if' case which is harder to reason about. Preparing
+ for new entries to be added here.
+
commit 2d14283d0c443cfd505088f2503b6e59d47b192d
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2018-12-20 12:57:14 +0100
@@ -2757,28 +2839,6 @@ Date: 2018-10-06 17:50:47 +0200
See https://alioth-lists.debian.net/pipermail/sane-devel/2018-October/036411.html
-commit 00d31e14f8a5339a2756af29697ec3c2ff6e7d4d
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2018-12-16 22:25:12 +0900
-
- genesys: fix [-Wunused-function] compiler warning
-
-commit d609de285b710ca0a9c76c653abee4b8f4315f57
-Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
-Date: 2018-12-16 21:56:52 +0900
-
- Restore slow_back_home use, disable rewind for gl847
-
- See #7.
-
-commit d71f5e4bc87500c2de8e4297e140bab09e3f6272
-Author: Michał Wróbel <mvv@google.com>
-Date: 2018-12-09 22:21:18 +0100
-
- backend/plustek: fix "color-banding" on 64bit
-
- Fixes https://gitlab.com/sane-project/backends/issues/42
-
commit dc3e6e6e41f4698c0676bb8d0119777ed91d287a
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-12-08 20:33:20 +0900
@@ -2797,46 +2857,6 @@ Date: 2018-12-08 20:24:00 +0900
utsushi.desc: Sync with upstream
-commit 47f9b1eeed2deb1f0d0f63c25f83dab5aeea0c8d
-Author: Mark Hills <mark@xwax.org>
-Date: 2018-12-01 21:01:57 +0000
-
- Fix a bug with Canon LiDE 700 where bright areas overflow
-
- On this scanner, white areas are easily seen to become yellow, implying
- some kind of integer overflow in the blue channel first, followed by
- others.
-
- I can't be 100% sure this is the correct fix without knowing more about
- the design or having a data sheet; this "target_code" was established
- experimentally.
-
- This is a fix to issue #43.
-
-commit 4423421806d727885918b81f94fde1d21409059e
-Author: Mark Hills <mark@xwax.org>
-Date: 2018-12-01 21:00:47 +0000
-
- A switch statement prepares us for additional entries
-
- Avoid the negative 'if' case which is harder to reason about. Preparing
- for new entries to be added here.
-
-commit 1bc6ade107d294d93ad4c50727bd9fd77caf63ec
-Author: Manuel Argüelles <manuel.arguelles@smartmatic.com>
-Date: 2018-11-30 10:50:13 -0500
-
- Fix image displacement for lineart/halftone during hardware crop
-
- Increases the width of the image if the reported size is less than the byte
- boundary.
-
-commit ecac81eee2f79fc3f089f3a3d3509a2860e3f4c0
-Author: Manuel Argüelles <manuel.arguelles@smartmatic.com>
-Date: 2018-11-12 14:01:24 -0500
-
- Set scan area to maximum when hardware crop is enable
-
commit dc8b27c1eff4617596f7b9304ef743d415791c26
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-11-12 21:14:18 +0900
@@ -2852,7 +2872,7 @@ Date: 2018-11-09 20:31:29 +0900
[skip ci]
commit 0af6149aa8799f0d0b08570af34a99c3de63eaba
-Merge: 6f797d94 9cf0de75
+Merge: 6f797d94e572 9cf0de7559fe
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-11-04 11:33:33 +0000
@@ -2868,6 +2888,12 @@ Date: 2018-11-02 23:12:44 +0300
Address review comments
+commit d62ba623b2118ca009a8491e40daedbbd643f267
+Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
+Date: 2018-09-22 01:00:06 +0300
+
+ Add new backend ricoh2
+
commit 6f797d94e572e333341d11a32aa37a6b36018584
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2018-10-28 12:29:36 +0100
@@ -2886,17 +2912,6 @@ Date: 2018-10-28 12:11:49 +0100
pixma: Canon imageCLASS MF8030 is working
-commit f111032e7f05e735422d02a88b1d04cb7b5da1c2
-Author: Martin Güthle <mguethle@xunit.de>
-Date: 2018-10-25 08:53:58 +0200
-
- as6e: Avoid out of bound access
-
- This fixes a crash due to a stack corruption.
- To reproduce the bug, set a path within the PATH variable, to something,
- which exceeds 128 chars. Maybe more chars are needed, to reach the stack
- corruption.
-
commit 54aa154d918245d5090fc342d4d1b00cf12a2477
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2018-10-24 20:25:40 +0200
@@ -2910,7 +2925,7 @@ Date: 2018-10-24 20:24:00 +0200
pixma: Canon PIXMA E510 is working
commit e41090725370cf0abaf15cd9c34ad7e711fece3f
-Merge: ef85977e 1846b038
+Merge: ef85977ec4ba 1846b0381e06
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2018-10-24 20:05:00 +0200
@@ -2929,7 +2944,7 @@ Date: 2018-10-12 12:33:46 +0200
pixma: Canon PIXMA TS3100 Series is working
commit 54c42b04a8ccfce2c140782007a11d2b3a1627fe
-Merge: f633bad6 05400ad6
+Merge: f633bad6ec1d 05400ad69b80
Author: Gerhard Jäger <gerhard@gjaeger.de>
Date: 2018-10-11 07:36:54 +0000
@@ -2939,8 +2954,14 @@ Date: 2018-10-11 07:36:54 +0000
See merge request sane-project/backends!10
+commit 05400ad69b8047f0a2320a120519941fa99faf36
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2018-07-21 03:37:45 +0300
+
+ backend/genesys: Increase excessively low bright point on Lide 80 calib
+
commit f633bad6ec1dd4b306ea245dc10a602020df7bba
-Merge: 030153b3 92c40c44
+Merge: 030153b39b82 92c40c44b9a6
Author: Gerhard Jäger <gerhard@gjaeger.de>
Date: 2018-10-11 07:34:14 +0000
@@ -2950,8 +2971,14 @@ Date: 2018-10-11 07:34:14 +0000
See merge request sane-project/backends!9
+commit 92c40c44b9a6c7ce7a5cc865db1f4b61fb1bd3c0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2018-07-21 03:37:44 +0300
+
+ backend/genesys_gl841: Reduce extra dark area offset for LIDE 80
+
commit 030153b39b82aca45b724b940aa107fdfe0c4b37
-Merge: 6abb072d 065855e1
+Merge: 6abb072ded1d 065855e1da5c
Author: Gerhard Jäger <gerhard@gjaeger.de>
Date: 2018-10-11 07:33:24 +0000
@@ -2963,8 +2990,14 @@ Date: 2018-10-11 07:33:24 +0000
See merge request sane-project/backends!7
+commit 065855e1da5c088e561580c26d96ad2b051685c4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2018-07-21 03:37:46 +0300
+
+ backend/genesys_gl841: Disable LEDADD on Lide 80 since it's broken there
+
commit 6abb072ded1daea860c64375b140287fb180bfbd
-Merge: c980c732 a64f2096
+Merge: c980c73259de a64f20964389
Author: Gerhard Jäger <gerhard@gjaeger.de>
Date: 2018-10-11 07:29:59 +0000
@@ -2974,6 +3007,15 @@ Date: 2018-10-11 07:29:59 +0000
See merge request sane-project/backends!6
+commit a64f2096438970ca0c1b9a86f363a0f3ce8476ef
+Author: iosabi <iosabi@yahoo.com>
+Date: 2018-07-02 22:48:02 +0200
+
+ genesys: Add buttons to LiDE 60
+
+ Canon LiDE 60 has four buttons. These are already supported in the
+ GL841, we just needed to add them to the config. Tested it with scanbd.
+
commit c980c73259de59b5af1785068b21c5417173e47e
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-10-11 00:46:55 +0900
@@ -3015,7 +3057,7 @@ Date: 2018-10-02 22:09:18 +0900
utsushi.desc: SYnc with upstream
commit 30579b0f54dc079549bdf8190e59477814852799
-Merge: 428dc565 de8ab756
+Merge: 428dc5657d4e de8ab7560898
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-10-02 11:27:47 +0000
@@ -3025,8 +3067,14 @@ Date: 2018-10-02 11:27:47 +0000
See merge request sane-project/backends!24
+commit de8ab7560898550cbb6e3dcac655b46c52adaeaf
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-20 19:26:43 +0200
+
+ add .po~ to gitignore
+
commit 428dc5657d4e02d8eefabd0231e8117e73c17ccd
-Merge: 6bdb2486 37bbbed3
+Merge: 6bdb2486aeba 37bbbed3cbe8
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-10-01 21:17:45 +0000
@@ -3042,37 +3090,13 @@ Date: 2018-09-30 20:29:16 +0200
check-po.awk: Fix minor typos
-commit de8ab7560898550cbb6e3dcac655b46c52adaeaf
-Author: Michael Niewoehner <foss@mniewoehner.de>
-Date: 2018-09-20 19:26:43 +0200
-
- add .po~ to gitignore
-
commit 6bdb2486aeba08a4d75964b325da5a75b14c68bf
-Merge: 04fc0ca8 cfbc7448
+Merge: 04fc0ca8bd7b cfbc744826f5
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2018-09-29 20:39:05 +0200
Merge remote-tracking branch 'origin/master'
-commit 04fc0ca8bd7bd64a1d4fbee6790d4353a79275a4
-Author: Rolf Bensch <rolf@bensch-online.de>
-Date: 2018-09-29 20:37:59 +0200
-
- pixma: TS6100 Series is working
-
-commit d62ba623b2118ca009a8491e40daedbbd643f267
-Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
-Date: 2018-09-22 01:00:06 +0300
-
- Add new backend ricoh2
-
-commit 3437b6e48ed235d5fcec6a4625eddf6bb52b77df
-Author: Rolf Bensch <rolf@bensch-online.de>
-Date: 2018-09-22 12:54:05 +0200
-
- pixma: i-SENSYS MF730 Series is working
-
commit cfbc744826f5ca29936fd00ae05b385819ce9988
Author: Alex Belkin <abc@telekom.ru>
Date: 2018-09-21 21:35:03 +0300
@@ -3088,7 +3112,7 @@ Date: 2018-09-20 15:11:16 +0300
xerox_mfp: Update xerox_mfp.desc with useful comments
commit 9ee0d41f4a0529fc2dd17b976337f6902053acff
-Merge: 8bc33176 46e59346
+Merge: 8bc331761a88 46e59346ea4f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-09-17 00:36:35 +0000
@@ -3104,8 +3128,20 @@ Date: 2018-09-16 22:57:27 +0300
Add Hebrew translation by Elishai Shkury
+commit 04fc0ca8bd7bd64a1d4fbee6790d4353a79275a4
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2018-09-29 20:37:59 +0200
+
+ pixma: TS6100 Series is working
+
+commit 3437b6e48ed235d5fcec6a4625eddf6bb52b77df
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2018-09-22 12:54:05 +0200
+
+ pixma: i-SENSYS MF730 Series is working
+
commit 8bc331761a88491c80524cd7d4b1ae64c1fccc92
-Merge: 0b811391 eceeaa80
+Merge: 0b811391a9b3 eceeaa80afcf
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-09-16 13:07:31 +0900
@@ -3117,6 +3153,96 @@ Date: 2018-09-15 22:28:48 +0200
Add a new transtalion for Valencian Language
+commit 92dc8789be48297c4dca68b1150dfb0c83603c90
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-10 23:30:40 +0200
+
+ Sync source code
+
+commit 4bea45b632e68d7b6aa2972523d664fe42140a08
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-10 00:43:34 +0200
+
+ Fixes from Softcatalà.org mailing list
+
+commit f0f349b0ce2088dac9c8762959f9bf2f93313e9b
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-07 15:22:17 +0200
+
+ Last fixes reported
+
+commit 36d1618b76d692e58523e02e869d8eab0834c413
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-07 14:52:27 +0200
+
+ 100% translated, whaiting mailing list fixes... ;-)
+
+commit 210ea90b107337a79e4505c372124db4a6ad41b8
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-04 23:26:43 +0200
+
+ More updates
+
+commit 7f551a79e33df168b5faaa73ea0bcb7d5b8f7269
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-03 01:23:23 +0200
+
+ Updates and fixes for initial translation
+
+commit 617037837aff3952dae719265250f4a1e3d657d6
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-02 21:33:36 +0200
+
+ Fixes from SoftCatalà.org
+
+commit ceb6b2787e5f904c6a652988ef8f77f44ef4d826
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-02 21:06:41 +0200
+
+ Last fixes for initial translation
+
+commit 4a73b1cb0c0184cb7340fb398d39c63f649341cb
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-01 23:26:55 +0200
+
+ KDE fixes (pology) for initial translation
+
+commit 7459debf0ed2de477111f2246f15c24758e6b19e
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-09-01 20:52:05 +0200
+
+ Update initial translation
+
+commit a1f3fbcef869e865aef7a6817a12aba3f8cda58e
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-08-28 19:55:01 +0200
+
+ Sync all languages (test Catalan translations)
+
+commit 2143773b063e58754c9fe56a6cc5c9cfbf676964
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-08-28 19:31:57 +0200
+
+ Update initial translation
+
+commit 158898f2a4e26467f84ff15d01e0da8eeec38c7f
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-08-28 00:52:26 +0200
+
+ More updates for initial translation
+
+commit c187b6c36334789f9d71f1e74f89615725a9f068
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-08-27 02:05:11 +0200
+
+ Updates for initial translation
+
+commit a76b0b21543f38996fb6a516f7d8e25cb80d08c7
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2018-08-21 14:10:54 +0200
+
+ Add an initial translation
+
commit 0b811391a9b3bacfe17f8760da16b96663ba647e
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2018-09-13 19:07:42 +0200
@@ -3147,18 +3273,6 @@ Date: 2018-09-12 22:08:41 +0200
pixma: new scanner TS6100 Series
-commit 92dc8789be48297c4dca68b1150dfb0c83603c90
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-10 23:30:40 +0200
-
- Sync source code
-
-commit 4bea45b632e68d7b6aa2972523d664fe42140a08
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-10 00:43:34 +0200
-
- Fixes from Softcatalà.org mailing list
-
commit 4c562f8142b0b67e8646975f07a3d0ebb588703f
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-09-09 09:54:38 +0900
@@ -3175,20 +3289,8 @@ Date: 2018-09-08 20:15:15 +0900
See https://alioth-lists.debian.net/pipermail/sane-devel/2018-September/036340.html
-commit f0f349b0ce2088dac9c8762959f9bf2f93313e9b
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-07 15:22:17 +0200
-
- Last fixes reported
-
-commit 36d1618b76d692e58523e02e869d8eab0834c413
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-07 14:52:27 +0200
-
- 100% translated, whaiting mailing list fixes... ;-)
-
commit 3ee997194a7026085b3c390289bfec89fb81e40c
-Merge: 2f944738 1484b475
+Merge: 2f944738803f 1484b47582d2
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-09-06 12:30:34 +0000
@@ -3202,14 +3304,8 @@ Date: 2018-09-06 12:36:26 +0300
add support of Plustek OpticSlim 500+
-commit 210ea90b107337a79e4505c372124db4a6ad41b8
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-04 23:26:43 +0200
-
- More updates
-
commit 2f944738803fbaf90a37e3960b06f565274c1174
-Merge: 1d58e23c 32d05417
+Merge: 1d58e23c91bc 32d05417c898
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-09-04 12:24:52 +0000
@@ -3219,24 +3315,6 @@ Date: 2018-09-04 12:24:52 +0000
See merge request sane-project/backends!14
-commit 7f551a79e33df168b5faaa73ea0bcb7d5b8f7269
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-03 01:23:23 +0200
-
- Updates and fixes for initial translation
-
-commit 617037837aff3952dae719265250f4a1e3d657d6
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-02 21:33:36 +0200
-
- Fixes from SoftCatalà.org
-
-commit ceb6b2787e5f904c6a652988ef8f77f44ef4d826
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-02 21:06:41 +0200
-
- Last fixes for initial translation
-
commit 32d05417c898fad4985f3cb87b465826ec99fd60
Author: Yuri Chornoivan <yurchor@ukr.net>
Date: 2018-09-02 20:23:47 +0300
@@ -3249,36 +3327,6 @@ Date: 2018-09-02 20:52:51 +0900
utsushi.desc: Sync with upstream
-commit 4a73b1cb0c0184cb7340fb398d39c63f649341cb
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-01 23:26:55 +0200
-
- KDE fixes (pology) for initial translation
-
-commit 7459debf0ed2de477111f2246f15c24758e6b19e
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-09-01 20:52:05 +0200
-
- Update initial translation
-
-commit a1f3fbcef869e865aef7a6817a12aba3f8cda58e
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-08-28 19:55:01 +0200
-
- Sync all languages (test Catalan translations)
-
-commit 2143773b063e58754c9fe56a6cc5c9cfbf676964
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-08-28 19:31:57 +0200
-
- Update initial translation
-
-commit 158898f2a4e26467f84ff15d01e0da8eeec38c7f
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-08-28 00:52:26 +0200
-
- More updates for initial translation
-
commit 5230430a572c078605cf9cd3894de2ebb80b1956
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2018-08-27 21:57:24 +0200
@@ -3291,29 +3339,8 @@ Date: 2018-08-27 21:56:48 +0200
pixma: new scanner i-SENSYS MF731/733
-commit c187b6c36334789f9d71f1e74f89615725a9f068
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-08-27 02:05:11 +0200
-
- Updates for initial translation
-
-commit d61a59ca01b638474b6a847bf26e6dfb9420e064
-Author: Manuel Argüelles <manuel.arguelles@smartmatic.com>
-Date: 2018-07-30 17:26:13 -0500
-
- Add support for Canon DR-X10C scanner
-
- Added initial support for DR-X10C SSM2 scanner with dropout color, hardware
- deskew and hardware crop.
-
-commit a76b0b21543f38996fb6a516f7d8e25cb80d08c7
-Author: Antoni Bella Pérez <antonibella5@yahoo.com>
-Date: 2018-08-21 14:10:54 +0200
-
- Add an initial translation
-
commit 082cf4cdf3cad1f97f4d1a5c0ffb1ad2c69ab9df
-Merge: 1a2a8ee7 d6aace7d
+Merge: 1a2a8ee744ce d6aace7d5167
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-07-22 13:01:55 +0000
@@ -3323,24 +3350,6 @@ Date: 2018-07-22 13:01:55 +0000
See merge request sane-project/backends!8
-commit 05400ad69b8047f0a2320a120519941fa99faf36
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2018-07-21 03:37:45 +0300
-
- backend/genesys: Increase excessively low bright point on Lide 80 calib
-
-commit 92c40c44b9a6c7ce7a5cc865db1f4b61fb1bd3c0
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2018-07-21 03:37:44 +0300
-
- backend/genesys_gl841: Reduce extra dark area offset for LIDE 80
-
-commit 065855e1da5c088e561580c26d96ad2b051685c4
-Author: Povilas Kanapickas <povilas@radix.lt>
-Date: 2018-07-21 03:37:46 +0300
-
- backend/genesys_gl841: Disable LEDADD on Lide 80 since it's broken there
-
commit d6aace7d5167b39d474f57c5671f0a400cad0bc0
Author: Povilas Kanapickas <povilas@radix.lt>
Date: 2018-07-21 03:37:43 +0300
@@ -3356,7 +3365,7 @@ Date: 2018-07-15 14:09:49 +0300
Damiano Scaramuzza and Bernard Badr
commit bfc63709a796704005642edfacf0b4bb92732597
-Merge: fc88e525 1649d5bf
+Merge: fc88e5251130 1649d5bfea36
Author: Ilia Sotnikov <hostcc@gmail.com>
Date: 2018-07-15 11:00:18 +0000
@@ -3372,15 +3381,6 @@ Date: 2018-07-15 11:00:18 +0000
HP5590: scanbd integration is ready.
-commit a64f2096438970ca0c1b9a86f363a0f3ce8476ef
-Author: iosabi <iosabi@yahoo.com>
-Date: 2018-07-02 22:48:02 +0200
-
- genesys: Add buttons to LiDE 60
-
- Canon LiDE 60 has four buttons. These are already supported in the
- GL841, we just needed to add them to the config. Tested it with scanbd.
-
commit fc88e5251130ef39a7e56930c3323aa1d8d7762d
Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
Date: 2018-06-13 21:23:43 +0900
@@ -3397,7 +3397,7 @@ Date: 2018-06-11 11:11:53 +0300
* Use C-style comments instead of C++ ones
commit 8c912284299d37dd32ea8e3216d16cada180928e
-Merge: 85efea28 b1da51f7
+Merge: 85efea28aeb1 b1da51f7fe04
Author: Ilia Sotnikov <hostcc@gmail.com>
Date: 2018-06-11 07:56:28 +0000
@@ -3450,7 +3450,7 @@ Date: 2018-05-16 21:29:14 +0200
pixma: Canon MAXIFY MB2100 and MB2700 Series support 1200 dpi
commit 6a7e4141eb53876511829b5bb87aae311d828402
-Merge: 9d315bc2 5e5183c8
+Merge: 9d315bc2f71c 5e5183c84efe
Author: Rolf Bensch <rolf@bensch-online.de>
Date: 2018-05-16 18:08:42 +0000
@@ -3496,7 +3496,7 @@ Date: 2018-05-12 20:55:16 +0200
pixma: new scanners Canon Maxify MB2100 and MB2700 Series
commit 8c340a34a49312a29f959e22286c3b83be9bf19b
-Merge: c6bfe88c d90f9054
+Merge: c6bfe88c31f3 d90f9054c6fd
Author: Rolf Bensch <roben-guest@alioth.debian.org>
Date: 2018-05-12 20:35:41 +0200
@@ -4670,18 +4670,12 @@ Date: 2017-05-26 23:36:52 +0200
pixma_imageclass.c: reduce max. scan width to 216mm for particular scanners
commit 2b0028b4af61761420fbff4459310b799bc13c7b
-Merge: 35dc4426 2bba2739
+Merge: 35dc4426d2da 2bba2739937b
Author: Rolf Bensch <roben-guest@alioth.debian.org>
Date: 2017-05-23 21:16:52 +0200
Merge branch 'pixma/mf240_adf_only_300dpi'
-commit 35dc4426d2dad67167af40e6c136feb229b4f3ac
-Author: m. allan noah <kitno455@gmail.com>
-Date: 2017-05-22 21:08:33 -0400
-
- Open repo for 1.0.28 development
-
commit 2bba2739937ba26059701eec1ae5e4372ff9de2a
Author: Rolf Bensch <roben-guest@alioth.debian.org>
Date: 2017-05-19 11:21:59 +0200
@@ -4693,3 +4687,9 @@ Author: Rolf Bensch <roben-guest@alioth.debian.org>
Date: 2017-05-19 11:26:00 +0200
pixma_imageclass.c: MF240 Series supports only 300dpi for adf scans
+
+commit 35dc4426d2dad67167af40e6c136feb229b4f3ac
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2017-05-22 21:08:33 -0400
+
+ Open repo for 1.0.28 development
diff --git a/ChangeLogs/ChangeLog-1.0.29 b/ChangeLogs/ChangeLog-1.0.29
new file mode 100644
index 0000000..4b0d6af
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.29
@@ -0,0 +1,7781 @@
+commit e52a5bf71979365a028bbf8aa5bd5e5e6b983b7f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-02 20:19:37 +0900
+
+ NEWS: Update with changes committed to the release/1.0.29 branch
+
+commit f35aab0de76a720615da845e04b9f8863ed01bd7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-02 20:07:39 +0900
+
+ po/*.po: Update Project-Id-Version of several translations
+
+ This only affects those languages for which translatable messages have
+ been updated since the last release (1.0.28).
+
+commit 0c90e6bdef277bdc497d875f31d2dee6d5a71301
+Merge: 3c714b48afb7 8bc98d0f7d37
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-19 13:09:24 +0000
+
+ Merge branch '225-fix-genesys-testsuite-compiler-warning' into 'release/1.0.29'
+
+ Resolve "genesys test utility generates a compiler warning on Debian 10"
+
+ See merge request sane-project/backends!309
+
+commit 8bc98d0f7d37bec2dc77d8fea5d57e95ba1534a8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-13 18:37:21 +0900
+
+ testsuite/backend/genesys: Fix include path for out-of-tree builds
+
+commit ba84a8f69c5277723df6e77c53521365a7645558
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-13 18:35:33 +0900
+
+ testsuite/backend/genesys: Fix [-Wcatch-value=] compiler warning
+
+ Exceptions ought to be caught by reference.
+
+commit 3c714b48afb7eeaff54a4e6212c111647a803153
+Merge: 3825e0ca6496 fe38a70d73c0
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-18 19:59:38 +0000
+
+ Merge branch 'de-minimal-translation-updates' into 'release/1.0.29'
+
+ Minimal German translation updates
+
+ See merge request sane-project/backends!312
+
+commit fe38a70d73c0f677fb4b10b865be464252c6c32a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-18 12:13:30 +0900
+
+ po/de.po: Cherry pick fixes for fuzzies and untranslated messages
+
+commit 3825e0ca6496b1de08b847c802125c655ad025f2
+Merge: f22dc84b71a9 b91dca43d504
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-18 02:53:48 +0000
+
+ Merge branch 'bellaperez/cat_translations' into 'release/1.0.29'
+
+ Update Catalan and Valencian translations
+
+ See merge request sane-project/backends!311
+
+commit b91dca43d504e2019521e49b3abc8d259d92c9aa
+Author: Antoni Bella Pérez <antonibella5@yahoo.com>
+Date: 2020-01-18 02:53:48 +0000
+
+ Update Catalan and Valencian translations
+
+ Adapted and tested:
+ * msgmerge --silent --previous --width=75 --lang=
+ * msgfmt -vc
+
+commit f22dc84b71a95afb01a41ad38b87b10f9e2baa83
+Merge: 77c92f49af02 f72862ddf8b4
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-14 13:05:02 +0000
+
+ Merge branch 'undefined' into 'release/1.0.29'
+
+ Update Ukrainian translation
+
+ See merge request sane-project/backends!305
+
+commit f72862ddf8b4dac5857cc9858f2d3ee6efca63ff
+Author: Yuri Chornoivan <yurchor@ukr.net>
+Date: 2020-01-14 13:05:02 +0000
+
+ Update Ukrainian translation
+
+commit 77c92f49af02a9cb4389ddc2473e68dbed32642a
+Author: Gerhard Jäger <gja@sysgo.com>
+Date: 2020-01-13 09:38:30 +0100
+
+ Issue#113: Fix applied (thanks David Binderman).
+
+commit d36a9ba786d10b302a40a92cdeb55da74a363809
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-12 21:07:18 +0100
+
+ INSTALL.linux: add missing development packages
+
+ these packages are mandatory for building escl backend
+
+commit 4a9c723646cfbd7a6df976e24284f24986f28038
+Merge: ca63c6cf9a38 cc31c110c94d
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-01-12 19:37:39 +0000
+
+ Merge branch 'uk-english-translations' into 'release/1.0.29'
+
+ Update British English translations
+
+ See merge request sane-project/backends!306
+
+commit cc31c110c94d03f0895cd94bf82e139ba89b9e92
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-01-12 10:39:27 -0800
+
+ Updated British English translations
+
+commit ca63c6cf9a387c594e8995cfc3fdf94d1858a86c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 21:28:21 +0900
+
+ NEWS: Add most relevant changes for 1.0.29
+
+commit 7b45c89b023dd902cd6d8d81713e977df4caa444
+Merge: 0f394f55ed5d 055cd9f28211
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 08:26:50 +0000
+
+ Merge branch 'dll-conf-sync' into 'master'
+
+ Synchronize dll configuration file
+
+ See merge request sane-project/backends!304
+
+commit 055cd9f28211cc72436827f264a87d645f9212ad
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 17:11:40 +0900
+
+ dll: Sort dll.conf.in for ease of maintenance
+
+ Only the `net` backend is treated special to match the file comment.
+
+commit 4f77e6dcfa4532741370096f2d517cdc9d0fe8d8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 17:10:38 +0900
+
+ dll: Add kvs40xx and pieusb backends to dll.conf.in
+
+commit 0f394f55ed5daf742f62f4139b0f5c89572aa6e5
+Merge: 42b256247061 2b927f165b08
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 07:44:10 +0000
+
+ Merge branch 'i18n-update' into 'master'
+
+ I18n update
+
+ See merge request sane-project/backends!303
+
+commit 2b927f165b08dcef3c207e36597a45878c956676
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 16:26:15 +0900
+
+ po: Synchronize message catalogs with latest code
+
+commit f094033990ee1f1106299dbc70e5491328ed3700
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 15:10:32 +0900
+
+ po: Regenerate POTFILES.in
+
+ The file now contains only those backend files that mention SANE_I18N
+ and contains all of them.
+
+commit 8ae5ba0522c139f4958d91620fd5c94cc94905d6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 14:46:14 +0900
+
+ escl: Use standardized, translated option group titles
+
+commit 42b256247061aedf0c4adb3e324d122329b09118
+Merge: 75162d0f005a d40a8ff90da7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 03:37:34 +0000
+
+ Merge branch 'escl-debug' into 'master'
+
+ Log message improvements.
+
+ See merge request sane-project/backends!302
+
+commit d40a8ff90da71193762dc46518f2eba58799707b
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-11 09:15:51 +0100
+
+ Delete unused file.
+
+commit d8f983bbd9cd1e02ecf5a80b9250cd314ae4b541
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-11 08:56:46 +0100
+
+ Log message improvements.
+
+commit 75162d0f005a5e89f8815dce27abc9a2e0cbbc01
+Merge: d9188a7699a6 3e49c3af0b3a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 03:19:00 +0000
+
+ Merge branch '201-old-incorrect-link-in-sane-man' into 'master'
+
+ Resolve "Old, incorrect link in sane.man"
+
+ Closes #201
+
+ See merge request sane-project/backends!291
+
+commit 3e49c3af0b3a4034dd62df4ee46f7c959c1f929f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-04 15:37:51 +0900
+
+ sane.man: Drop outdated link for coolscan2 backend
+
+commit 70cfd20c206e0b248d08b8cc9ebd666fe620d7c7
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-03 18:32:01 +0100
+
+ update last edited date
+
+commit 59bd48ea7275c94b1d0590af7a72f334dad204c2
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-03 18:31:31 +0100
+
+ update pixma backend description
+
+commit d9188a7699a6db1f5925c1ac80c0ea7a880283ce
+Merge: 0830b8391590 c821f277f314
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-12 03:16:45 +0000
+
+ Merge branch '153-is-pthread_t-check-for-non-integers-still-neccesary' into 'master'
+
+ Resolve "Is pthread_t check for non-integers still necessary?"
+
+ Closes #153
+
+ See merge request sane-project/backends!289
+
+commit c821f277f3149a0ab57940e2512e893c6f886a20
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-31 12:33:13 +0900
+
+ build: Rename *THREAD_LIBS parameters
+
+ This aims to clarify the purpose of each parameter: SANEI_THREAD_LIBS
+ for any code that uses sanei/sanei_thread.c and a plain PTHREAD_LIBS
+ for code that uses the pthread library directly.
+
+commit 9050ae3b6a3489a78c791ca0c3aa71d13e68d966
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-31 12:14:46 +0900
+
+ mustek_usb2: Remove unneeded linking arguments
+
+commit 378a85fe0960e7969e552325f9cf774fdfc45852
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-31 11:55:31 +0900
+
+ Don't disable backends using pthreads directly. Fixes #153
+
+ The use of pthreads was disabled in case of a non-integral pthread_t
+ type in 756d286f3605143b26471eb7e1e7a45bc7ba356a as the sanei_thread
+ implementation assumes an integral type. This also disabled building
+ of the kvs40xx and mustek_usb2 backends which use pthreads directly.
+
+ This re-enables the build of these backends.
+
+commit 0830b83915900bb1f936372adaafd00f814a5eae
+Merge: aedebecef790 c4a88e6bf4a2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-11 15:50:06 +0000
+
+ Merge branch '188-hp-scanjet-3670-fails-to-scan-at-75dpi' into 'master'
+
+ Resolve "HP ScanJet 3670 fails to scan at 75dpi"
+
+ Closes #188
+
+ See merge request sane-project/backends!298
+
+commit c4a88e6bf4a2e153ec667f811dfdeb35ef2e9464
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-01-07 22:52:14 -0800
+
+ genesys: renamed HP ScanJet 3670C to 3670. Model has no C suffix
+
+commit 88ea0d48e7357799e33a7352e73694967857e502
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-01-07 22:36:09 -0800
+
+ genesys: added 50dpi to HP ScanJet 3670 backend
+
+ Windows driver supports 50dpi as the lowest mode.
+
+commit aedebecef790867c390e97e05741965f53a8e3e0
+Merge: 28264dcfd825 913be9367248
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-09 12:27:11 +0000
+
+ Merge branch 'escl-integration-fixes' into 'master'
+
+ Escl integration fixes
+
+ See merge request sane-project/backends!299
+
+commit 913be9367248966c2f346244d8968fa71787a73c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-09 21:09:47 +0900
+
+ escl: Mark backend as new for upcoming release
+
+commit e5e601379cef583a5541c9eeaa43cbbe5438f071
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-09 21:09:06 +0900
+
+ dll: Enable loading of escl backend
+
+commit 28264dcfd825d7c2f84e3cd7e117ee7e831ba11d
+Merge: 8b611a252d40 74131ede6c64
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-08 11:29:40 +0000
+
+ Merge branch 'escl-Securing-libcurl' into 'master'
+
+ Escl securing libcurl
+
+ See merge request sane-project/backends!297
+
+commit 74131ede6c6438d215b324a5ee23c09a0efc0a6a
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-01-07 14:14:19 +0000
+
+ Add header curl.
+
+commit 94daddc6bd15c1975dc66dcd97d5fb2ca4567c92
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-07 15:01:47 +0100
+
+ cURL global init/cleanup issues.
+
+commit 8b611a252d40b5bdab3c6b3135fe3300b63088b7
+Merge: bc804f56410c 66ec4dda2601
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-08 11:28:08 +0000
+
+ Merge branch 'escl-Memory-and-file-handle-leak' into 'master'
+
+ Escl memory and file handle leak
+
+ See merge request sane-project/backends!296
+
+commit 66ec4dda26016457d145f1438e8494c5f872f7c1
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-07 14:07:29 +0100
+
+ Buffer overflow.
+
+commit 7e192f8ba7f99fddb33862efad6d7ac8790f6296
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-07 14:06:11 +0100
+
+ Memory and file handle leak.
+
+commit bc804f56410c2eb4347650733eda8a3c415d6b32
+Merge: dad063068dc9 bd2d5f5e7d6d
+Author: Louis Lagendijk <louis@fazant.net>
+Date: 2020-01-07 16:07:46 +0000
+
+ Merge branch 'pixma_bjnp_model_not_found' into 'master'
+
+ pixma_bjnp: Report that scanner model is not supported as suggested in issue #69
+
+ See merge request sane-project/backends!293
+
+commit bd2d5f5e7d6dc2047448e5e027d94d753dc7baef
+Author: Louis Lagendijk <louis@fazant.net>
+Date: 2020-01-07 16:07:46 +0000
+
+ pixma_bjnp: Report that scanner model is not supported as suggested in issue #69
+
+ pixma: Improved logging for search for scanner model
+ Moved lookup_scanner from pixma_io_sanei.c to pixma_bjnp.c
+
+ pixma_io_sanei.c: fix whitespace
+
+commit dad063068dc9738143d417223e8780f7b6a480ba
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-05 12:49:20 +0100
+
+ pixma: backend version 0.27.0
+
+commit 4a0d222e88b6dd0699d7d98b660a3c6672d0a382
+Merge: ba2f14fde17e b7e0d9afae23
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-05 11:45:51 +0000
+
+ Merge branch 'pixma/move-to-subfolder' into 'master'
+
+ move pixma source files to subfolder
+
+ See merge request sane-project/backends!290
+
+commit b7e0d9afae230a8ae6b552297a58bc8b7efdf44b
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-02 13:56:05 +0100
+
+ pixma: fix comment
+
+commit 7b228be5e7dad536640abb91ec6db605c956e1f5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-02 12:36:49 +0100
+
+ pixma: move source files to subfolder
+
+commit ba2f14fde17ebff30261551d1fad1aa8c311ca40
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-04 12:39:59 +0100
+
+ pixma: backend version 0.26.1
+
+commit c2e512db8b438f40627c7d2de2b5fdbf9cb64729
+Merge: b30784a73015 d910d52dabb9
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-01-04 11:23:36 +0000
+
+ Merge branch '183-add-support-for-canon-mf743c' into 'master'
+
+ Resolve "Add support for Canon MF743C"
+
+ Closes #183
+
+ See merge request sane-project/backends!258
+
+commit d910d52dabb983fa190ac92864a1069895572ed8
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-19 20:07:16 +0100
+
+ pixma: restrict ADFDUP scans to 300dpi for i-SENSYS MF741C/743C
+
+commit cf506daab35626c10c690ee36ad0935f8da0d658
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-15 11:56:47 +0100
+
+ pixma: new scanner Canon i-SENSYS MF741/743
+
+commit b30784a73015fd00a5edf95628188f577158666a
+Author: Jakub Benda <jakub.benda@open.ac.uk>
+Date: 2020-01-03 19:48:37 +0300
+
+ xerox_mfp: Fix Samsung CLX-3175FW color scan "Not a JPEG file"
+
+ Exclude "Samsung CLX-3170 Series" from JPEG mode. Closes #200.
+
+ Reference: https://gitlab.com/sane-project/backends/issues/200
+
+commit 8d022c29b25f9529d0c090070f37e37b66aa9e10
+Merge: 3a1d6dbb96de 5927ecfa2a52
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-02 10:57:08 +0000
+
+ Merge branch 'escl-png' into 'master'
+
+ Added PNG and TIFF decoder.
+
+ See merge request sane-project/backends!283
+
+commit 5927ecfa2a5212eb71731926fea7e57d10e3a5e3
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-02 09:39:16 +0100
+
+ Using strcmp instead of strncmp, strncmp is not justified.
+
+commit 160b63a9c2c5fee2703c1e14fc8d5a77904cb055
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2019-12-29 10:52:11 +0100
+
+ Using strcmp instead of strncmp, strncmp is not justified.
+
+commit 925bf77419967cbd1fa667214cee31f7675dc76f
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2019-12-29 10:50:43 +0100
+
+ Removing the png and tiff test from the header.
+
+commit d527110a52569beddb5a631756bccf807a0ebf4e
+Merge: f956fd00ba42 5275b3bbd65a
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2019-12-27 15:23:02 +0100
+
+ Merge commit '5275b3bb' into escl-png
+
+commit f956fd00ba42da9202225aa1622d923a8a980033
+Merge: 5372f21810ce 45c670255273
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2019-12-27 15:22:38 +0100
+
+ Merge commit '45c67025' into escl-png
+
+commit 5372f21810ce6251b8753c694c25c579f3233f50
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2019-12-26 14:11:09 +0000
+
+ Fix typo.
+
+commit 1a95f30210c15f03e9fc54a4bd6ae5af492a98c2
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2019-12-26 14:08:15 +0000
+
+ Fixing the comparison.
+
+commit 2ea6552ed3220c0ff9495863c79bb0e366375a51
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2019-12-26 14:03:33 +0100
+
+ Fix style.
+
+commit 65470e95aad9ed66d8344343ac7619d964aa794b
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2019-12-26 14:01:00 +0100
+
+ Addition of the TIFF decoder.
+
+commit a23dfbfff569da2a02fa0d48f4b87f112a974c29
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2019-12-26 11:55:00 +0100
+
+ Standardization of method signatures.
+
+commit df59815895846505c5fccb84dd309405395dbccb
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2019-12-25 18:43:56 +0000
+
+ Remove unused function.
+
+commit 296a4b68f907013ddf43eed89ea5e06a5af73612
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2019-12-25 18:34:57 +0000
+
+ Fix syntaxe.
+
+commit d3efc20a0bf5815ccf0393d57bb7a766d4f92bcd
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2019-12-25 18:36:23 +0100
+
+ Decoding files in one phase.
+
+commit c6e8d381e070cfc8775401a7f35a0dcae23ed01c
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2019-12-25 00:49:52 +0100
+
+ Fix syntax.
+
+commit 5c15d372488bc4e5d6f08f232433ae3cbfde4bd4
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2019-12-25 00:39:04 +0100
+
+ Adding png support. The decompressors (Jpeg and Png) are in separate files.
+
+commit 3a1d6dbb96def4e7be4058a19ee29f0d0256a425
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-31 12:49:40 +0900
+
+ .gitignore: .dirstamp files and *-s.cpp files
+
+ [skip CI]
+
+commit fa882855be117ae74e49e72ac7d483209e414788
+Merge: 75310001f176 adaef0435a77
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-30 07:06:02 +0000
+
+ Merge branch '120-fix-all-compiler-warnings-on-the-debian-10-builds' into 'master'
+
+ CI: Turn compiler warnings into errors on Debian 10. Fixes #120
+
+ Closes #120
+
+ See merge request sane-project/backends!288
+
+commit adaef0435a77b48c777f720036f288611762cb5f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-30 15:48:56 +0900
+
+ CI: Turn compiler warnings into errors on Debian 10. Fixes #120
+
+commit 75310001f1765f6e9c083c89c3b894e6f97abf3a
+Merge: b2c83de8a412 b4ce719973a4
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-30 06:19:39 +0000
+
+ Merge branch 'fix-kvs40xx-cast-function-type-warning' into 'master'
+
+ kvs40xx: Fix [-Wcast-function-type] compiler warning. Re #120
+
+ See merge request sane-project/backends!229
+
+commit b4ce719973a45aeaf55d732c5847d5e460943bb5
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-10-30 20:28:33 +0900
+
+ kvs40xx: Fix [-Wcast-function-type] compiler warning. Re #120
+
+ The changes are meant to make explicit what the run-time or compiler
+ is thought to be doing anyway.
+
+commit b2c83de8a41286faee798b1300aa48de6f43a203
+Merge: a9ab9df99738 4c8e4dd934ef
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-30 03:11:15 +0000
+
+ Merge branch '196-fix-compiler-warning-for-pieusb-backend' into 'master'
+
+ pieusb: fix compiler warnings
+
+ Closes #196
+
+ See merge request sane-project/backends!287
+
+commit 4c8e4dd934efe3d204c3dd9b0bf15463fb640d4b
+Author: Klaus Kämpf <kkaempf@suse.de>
+Date: 2019-12-23 19:43:43 +0100
+
+ pieusb: fix compiler warnings
+
+ fixes #196
+
+commit a9ab9df99738d74759a9e8775b3aa2ffa2023f49
+Merge: 6f34396ab493 7f977124917b
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2019-12-29 19:08:01 +0000
+
+ Merge branch '198-fix-compiler-warning-in-scanimage-frontend' into 'master'
+
+ Resolve "Fix compiler warning in scanimage frontend"
+
+ Closes #198
+
+ See merge request sane-project/backends!286
+
+commit 7f977124917b4b9d65ce0e8ececd93777fbe07a1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-29 17:37:17 +0900
+
+ scanimage: Combine conditions to reduce nesting
+
+commit 4fbb5d2f1b7068ed8b312c43d72e88f69356a757
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-28 18:52:59 +0900
+
+ scanimage: Use destination size to limit strncpy()
+
+commit df114df05f8fdb8b3086608ed2d0bf5012b236b5
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-28 18:46:02 +0900
+
+ scanimage: Replace string length computations by temporary strings
+
+ This creates temporary strings that correspond to the colon-delimited
+ username and password that are read from file in `auth_callback()`.
+ The null-terminated strings are used directly to determine lengths.
+
+commit 6682223b260f00ebe936307997e90e79712cd94a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-28 18:26:43 +0900
+
+ scanimage: Improve readability of auth_callback implementation
+
+ Rather than repeatedly calling `strchr`, use descriptive variables to
+ hold the result.
+
+commit 5e6a111ffa3c8bd1218dd36284ddcb3537ecfe97
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-28 18:03:00 +0900
+
+ scanimage: Un-word-wrap auth_callback to improve readability
+
+ This is one of those cases where word-wrapping to less than 80 or so
+ characters isn't helpful in understanding the code.
+
+commit 6f34396ab4938bfabfbe3b7db1e24eb1b45706ab
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-28 13:58:11 +0100
+
+ pixma: backend version 0.26.0
+
+commit eae4137ae1ee19fc2743ae62558f9a62cf8be7b5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-28 13:55:26 +0100
+
+ pixma: update date of man page
+
+commit a7c78f41d6ba81d746384b3b43a15286b14ae578
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-28 13:45:02 +0100
+
+ pixma: reorder scanner defines
+
+commit c83b1a17d23512cd43fd1425f81923f0666c51e9
+Merge: b1ad53fff568 18670166a68c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-28 12:53:52 +0000
+
+ Merge branch 'master' into 'master'
+
+ Add model 2019: G6000, G6080, TS5300, TS5380, TS6300, TS6380, TS7330, TS8300,...
+
+ See merge request sane-project/backends!226
+
+commit 18670166a68c90394de1366e3d7fffcf69ed5136
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2019-12-28 12:53:52 +0000
+
+ pixma: Add model 2019: G6000, G6080, TS5300, TS5380, TS6300, TS6380, TS7330, TS8300, TS8380, TS8330, XK60, TS6330, TS3300 and E3300
+
+commit b1ad53fff5687df439b0cc2a3f50ffa731226e43
+Merge: bac0c4abcef1 a297073bc9d9
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-28 13:34:47 +0100
+
+ Merge branch 'perillamint/backends-add-canon-pixma-g2010-support'
+
+ pixma: Add support for Canon PIXMA G2010 Series
+
+ see merge request sane-project/backends!223
+
+commit a297073bc9d91aea9ebbfff721c6dd27dd415c0d
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-28 13:26:54 +0100
+
+ pixma: Canon PIXMA G2010 Series is working
+
+commit aa76967917e5118362f21f4fa9c67f4da2b8473d
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-28 13:26:11 +0100
+
+ pixma: fix device define for Canon PIXMA G2010 Series
+
+commit 66c17ebf846406ee68ba9dcd202c197fcdd086ff
+Author: perillamint <perillamint@quendi.moe>
+Date: 2019-10-22 15:34:04 +0900
+
+ pixma: Add support for Canon PIXMA G2010 Series
+
+ This commit adds support for Canon PIXMA G2010 Series.
+
+commit bac0c4abcef14bb6e777cf2a5294cc5ec0838593
+Merge: e80034a6e0d5 5275b3bbd65a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-28 05:55:59 +0000
+
+ Merge branch 'escl-discovery' into 'master'
+
+ Solves the problem of HP device discovery.
+
+ See merge request sane-project/backends!285
+
+commit 5275b3bbd65a56eaf0e5e27f48f7d44b7dd28620
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2019-12-27 15:07:10 +0100
+
+ Solves the problem of HP device discovery.
+
+commit 45c6702552733e04a3b2439172c842cdbf160b94
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2019-12-27 15:04:57 +0100
+
+ Formatting of the code to not exceed 80 characters.
+
+commit e80034a6e0d5f4cf5efccc64c9a986cfe15d5d8d
+Merge: 7a76f21ccdaa adf9bb837fc8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-27 11:22:05 +0000
+
+ Merge branch '199-hpsj5s-backend-generates-compiler-warnings-in-debian-10' into 'master'
+
+ Resolve "hpsj5s backend generates compiler warnings in Debian 10"
+
+ Closes #199
+
+ See merge request sane-project/backends!281
+
+commit adf9bb837fc85016ee8e83e8c300910fa43ac400
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2019-12-27 11:22:05 +0000
+
+ Resolve "hpsj5s backend generates compiler warnings in Debian 10"
+
+commit 7a76f21ccdaa27ca493dfdbb88c04d02c6bd7e5a
+Merge: d190c559c24f 53efe5822dcc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 15:31:53 +0000
+
+ Merge branch 'genesys-lide-fixes' into 'master'
+
+ genesys: Various fixes affecting LiDE 100,110,120,200,210,220
+
+ See merge request sane-project/backends!284
+
+commit 53efe5822dcc47d77e418d17218914ef8ac0c6ab
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:34 +0200
+
+ genesys: Remove excessive debug logs during data read
+
+commit 2b00ef39950e32447080687c4373bda1fae0e955
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:33 +0200
+
+ genesys: Improve calibration speed by making convergence faster
+
+commit fd13c10b5cebb6a2375a4ba40fd17748b97e66c4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:32 +0200
+
+ genesys: Fix invalid memory access in ImagePipelineNodeDesegment
+
+commit cacc68a6d45ccd656a71ca6b0593a9eeefda22ae
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:31 +0200
+
+ genesys: Fix initial register values on gl124
+
+commit 66ac8c62032829da854ff5a5b29957ee94c25160
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:30 +0200
+
+ genesys: Fix sensor table for LiDE 120
+
+commit 2661115251be1bb7dd53382773ce2db0066a59d9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:29 +0200
+
+ genesys: Fix sensor table for LiDE 110
+
+commit d7d227a3f7b58bd6cbae4a019042c3ea9230d798
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:28 +0200
+
+ genesys: Fix sensor table for LiDE 200
+
+commit 09a84d11d80b0b7cd18c440701ce15f2640c9526
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:27 +0200
+
+ genesys: Fix sensor table for LiDE 100
+
+commit 01bdc63d7d3c73465340c19075d5af5b3981d7f3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:26 +0200
+
+ genesys: Fix step selector masks on gl124
+
+commit 40a2a0d55491fae4b592b596ac2088b594eecfd3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:25 +0200
+
+ genesys: Remove unnecessary model check in calibration init
+
+commit 47431a8776881613a993e198c5a1b6330b2eae81
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:24 +0200
+
+ genesys: Fix exception on LiDE 210 when going back from unknown position
+
+commit e2bb81ef01e37cad50a4fde4cf11e24ab0476180
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-26 17:13:23 +0200
+
+ genesys: Add extra sleep during scan stop for gl646
+
+commit d190c559c24f0d984a4fba7394a60e2801572722
+Merge: 0ae128d1ab64 d1940cf9b843
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-26 10:27:47 +0000
+
+ Merge branch 'epjitsu-backend-generates-compiler-warning-in-debian-10' into 'master'
+
+ Resolve "epjitsu backend generates compiler warning in Debian 10"
+
+ Closes #193
+
+ See merge request sane-project/backends!267
+
+commit d1940cf9b843d871a8eae32a44d2967d9b2c92da
+Author: Ralph Little <skelband@gmail.com>
+Date: 2019-12-21 21:44:39 -0800
+
+ epjitsu: strncpy() compiler warning suppressed.
+
+commit 0ae128d1ab64bfacead805ab5f8177b672ad9f9d
+Merge: 6d9cb35b1faf 3d1242496118
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-24 12:03:09 +0000
+
+ Merge branch 'gt68xx-backend-generates-compiler-warnings-on-debian-10' into 'master'
+
+ Resolve "gt68xx backend generates compiler warnings on Debian 10"
+
+ Closes #194
+
+ See merge request sane-project/backends!268
+
+commit 3d1242496118536af32cd1865ffd177be26ffe83
+Author: Ralph Little <skelband@gmail.com>
+Date: 2019-12-21 22:53:16 -0800
+
+ gt68xx: suppressed strncpy compiler warnings.
+
+commit a4360b0a75fe730e78bf6722d7630eba4941a94a
+Author: Ralph Little <skelband@gmail.com>
+Date: 2019-12-21 22:07:39 -0800
+
+ gt68xx: suppress snprintf warning with return length check.
+
+commit 6d9cb35b1faf808f8da602617d0cc739e6deba49
+Merge: c77f89de6250 b02a208a943a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-24 09:05:30 +0000
+
+ Merge branch 'as6e-generates-compiler-warnings-in-debian-10' into 'master'
+
+ Resolve "as6e generates compiler warnings in Debian 10"
+
+ Closes #192
+
+ See merge request sane-project/backends!266
+
+commit b02a208a943a1a128d3b27bd9a63e33f316ef4a9
+Author: Ralph Little <skelband@gmail.com>
+Date: 2019-12-21 22:02:50 -0800
+
+ as6e: data type correction.
+
+ size_t is unsigned so -1 error from snprintf would not be properly detected.
+
+commit 2230614edec80c81868d1c0335b914e2fcd1d75c
+Author: Ralph Little <skelband@gmail.com>
+Date: 2019-12-21 21:24:19 -0800
+
+ as6e: compiler warnings suppressed for problematic use of strncat.
+
+ Replaced with snprintf which simplifies the code and suppresses the warning.
+
+commit c77f89de62502c4e4b86afb68729226d8787723d
+Merge: f506aceb33d3 3bb5e94d654a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-24 09:01:13 +0000
+
+ Merge branch 'artec-backend-produces-compiler-warnings-on-debian-10' into 'master'
+
+ Resolve "artec backend produces compiler warnings on Debian 10"
+
+ Closes #191
+
+ See merge request sane-project/backends!265
+
+commit 3bb5e94d654acae88aef0efef908459a054cd45a
+Author: Ralph Little <skelband@gmail.com>
+Date: 2019-12-21 20:57:48 -0800
+
+ artec: strncpy replaced with memcpy()
+
+ This was a cheeky strncpy hiding what is really the job of memcpy().
+
+commit f506aceb33d348b6cfca3149bc3deee19696e1d0
+Merge: 92308130f4ec 821efb262692
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-24 08:59:27 +0000
+
+ Merge branch 'ibm-backend-produces-compiler-warnings-in-debian-10' into 'master'
+
+ Resolve "IBM & Ricoh backends produces compiler warnings in Debian 10"
+
+ Closes #190
+
+ See merge request sane-project/backends!264
+
+commit 821efb262692b3782a948f8ad7cafdc744c1c502
+Author: Ralph Little <skelband@gmail.com>
+Date: 2019-12-21 20:21:52 -0800
+
+ ibm/ricoh: suppress warning by using snprintf instead of strncat
+
+commit 92308130f4ec5d978f629a6b78b13184c9407884
+Merge: 9527e72a53cd 328a5d654bef
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2019-12-23 17:04:19 +0000
+
+ Merge branch '197-fix-hp3900-backend-compiler-warning' into 'master'
+
+ hp3900: Fix [-Wtautological-compare] compiler warning
+
+ Closes #197
+
+ See merge request sane-project/backends!280
+
+commit 328a5d654bef3b8367eb696e3f5e0a9f169d88e0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-23 21:57:36 +0900
+
+ hp3900: Fix [-Wtautological-compare] compiler warning
+
+ Although the fix changes the backend's logic, it probably matches what
+ was the original code's intent.
+
+commit 9527e72a53cdef9f1922c588f4e4213876132efc
+Merge: 37f96cc800f2 70ef8db5d6f5
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2019-12-23 16:49:11 +0000
+
+ Merge branch '195-fix-hp-backend-compiler-warning' into 'master'
+
+ hp: Fix [-Wstringop-truncation] compiler warning
+
+ Closes #195
+
+ See merge request sane-project/backends!279
+
+commit 70ef8db5d6f5a640093a06d733c82fd56c6df429
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-23 21:36:13 +0900
+
+ hp: Fix [-Wstringop-truncation] compiler warning
+
+commit 37f96cc800f2705acf5ca1a6fad3ff059f455cc4
+Merge: 74f601188b4e fd407cc58bce
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2019-12-23 16:39:34 +0000
+
+ Merge branch 'fix-dll-compiler-warnings' into 'master'
+
+ Address dll compiler warnings
+
+ See merge request sane-project/backends!269
+
+commit fd407cc58bce4162a8329fb4ec587837f50c1fd0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-22 18:34:45 +0900
+
+ dll: Make previous change backwardly compatible
+
+ Older GCC do not know the cast-function-pragma and flag that as a
+ warning. That results in an error on our Debian 9 build.
+
+commit e7f6c6e864200fc51a05c8eb5963a78b3251adbd
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-22 17:58:39 +0900
+
+ dll: Ignore [-Wcast-function-type] compiler warnings
+
+commit a993e6438eff1e5b71f1dcc97df478ca954aae9f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-22 16:05:51 +0900
+
+ dll: Fix [-Wformat-truncation=] compiler warning
+
+ Per POSIX, `readdir` returns filenames that are at most `NAME_MAX` long.
+
+commit 74f601188b4ee0dc0737dfbc1418c36f748448e2
+Merge: 4bf176c73efc 2788328e1926
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-23 11:57:10 +0000
+
+ Merge branch 'escl-force-formatext' into 'master'
+
+ indicator of the presence of the DocumentFormatExt field
+
+ See merge request sane-project/backends!261
+
+commit 2788328e1926da293261c0410321565baf1cfe1b
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2019-12-22 13:48:55 +0100
+
+ Fix: better readability.
+
+commit afc9b62c7e43b99c0e951da9b2aec9484afd7471
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2019-12-22 09:50:04 +0100
+
+ Fix: better readability.
+
+commit 6506cd9595843d6a2eab0628dfd4b39c9dc4db3f
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2019-12-19 14:30:35 +0100
+
+ indicator of the presence of the DocumentFormatExt field, forces for certain printer the output format.
+
+commit 4bf176c73efc4f01a519e74d18800ef894b7f0bb
+Merge: a0e978d4aee3 538b34f418f9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-23 00:42:01 +0000
+
+ Merge branch 'genesys-fix-gl646-scanning' into 'master'
+
+ genesys: Work around invalid acceleration curves on certain gl646 scanners
+
+ See merge request sane-project/backends!278
+
+commit 538b34f418f9bf2a2b6f603a715ab9b30f5520a4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-23 02:27:20 +0200
+
+ genesys: Fix testing mode in gl646
+
+commit 5d83753b07871fd6e204c44eb74011f06795e0c6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-23 02:27:05 +0200
+
+ genesys: Work around bad acceleration curves on certain gl646 scanners
+
+commit a0e978d4aee319578aee0e2f8a393836d1ed089b
+Merge: e8f6a508ca2a fb1dea325cdb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 23:59:05 +0000
+
+ Merge branch 'genesys-fix-gl646-scanning' into 'master'
+
+ genesys: Fix completely broken scanning on GL646
+
+ See merge request sane-project/backends!277
+
+commit fb1dea325cdbdb8e1f72ee85a31f817d59395408
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-23 01:43:39 +0200
+
+ genesys: Fix crash when moving back hove on gl646
+
+commit 9f4cabb55c778446a3220e7bdf51128860f70afe
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-23 01:43:38 +0200
+
+ genesys: Fix random lock ups when waiting for motor to stop on gl646
+
+commit fffcb6254410c9da9841447d50e1d7c58528702e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-23 01:43:37 +0200
+
+ genesys: Fix completely broken backtracing calculation on gl646
+
+commit e8f6a508ca2a022512d5f1a55f058928158606ce
+Merge: b10c15595b26 e437f17b40ec
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 21:37:51 +0000
+
+ Merge branch 'genesys-8600f-enable-ir-resolutions' into 'master'
+
+ genesys: Enable additional IR resolutions on CanoScan 8600F
+
+ See merge request sane-project/backends!276
+
+commit e437f17b40ece55bd34b242d638057b21f444c05
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 23:23:18 +0200
+
+ genesys: Enable more infrared resolutions on 8600F
+
+commit d1a0c1589a5c22a5e0c36a18123bed3e6c797744
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 23:23:17 +0200
+
+ genesys: Sort 8600F sensor tables
+
+commit 216250361fd9639a6938c297c36a265545bc0dc6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 23:23:16 +0200
+
+ genesys: Fix uninitialized variable warning
+
+commit b10c15595b26d5cd49ff67f25cfefc7f7c240b31
+Merge: 408329e8cfc7 6fb588648c9b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 15:55:53 +0000
+
+ Merge branch 'genesys-use-fast-moving-home' into 'master'
+
+ genesys: Use fast moving when returning home
+
+ See merge request sane-project/backends!275
+
+commit 6fb588648c9bf57f7c03e2d19759671b00a1ec3d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:27 +0200
+
+ genesys: Fix infinite loop when we overestimate distance to home sensor
+
+commit 01ca9c9030cb1af5303c5d98ecb5ff044c5bd210
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:20 +0200
+
+ genesys: Use fast moving for most of the distance when moving back home
+
+commit 2397d8879a8208c00ad87b1becd8d0a730e53ef1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:18 +0200
+
+ genesys: Fix collection of scanhead movement information
+
+commit 29166d9b3b2b22b6f812192dae95bdcac112d014
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:16 +0200
+
+ genesys: Remove rewind() function due to unreliability
+
+commit 408329e8cfc7d7025c0798d78aafb5b615887e54
+Merge: 01bae1305f65 fd29cae64aad
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 15:24:48 +0000
+
+ Merge branch 'genesys-fix-motor-acceleration-calculations' into 'master'
+
+ genesys: Fix calculations of scan head acceleration tables
+
+ See merge request sane-project/backends!274
+
+commit fd29cae64aad017b09c3bc9e19e2a9b0988d6c1f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:26 +0200
+
+ genesys: Correctly set LINESEL on 4400F
+
+commit 69067f2f7f0f48cf2ae7c20277c18b166f7babce
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:25 +0200
+
+ genesys: Remove no longer used final_exposure
+
+commit 35385625deaa0b07c849ce536de4d4be88fb9223
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:24 +0200
+
+ genesys: Delete unused code
+
+commit 38f988dc39afa95d673f3db8caa8bcf28a036467
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:23 +0200
+
+ genesys: Use correct SHDAREA setting on 4400F
+
+commit 67638f55b21f6551252079dd853d21291a3dac29
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:22 +0200
+
+ genesys: Use a more reasonable backtract distance on gl843
+
+commit 2a6081affe9e8b84d648dd6c1b4079351783b5d0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:21 +0200
+
+ genesys: Fix scanning table length calculation on gl843
+
+commit 33bfa923d5dfc5c3ec2a9c8520a146eb0ec74ac5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:19 +0200
+
+ genesys: Add a way to create fastest motor acceleration table
+
+commit 83fa276b907cfbfbf65ef6bafa4e16fdd963dea6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:17 +0200
+
+ genesys: Fix bug in setting up motor tables 3,4,5 on gl843
+
+commit 48fd80d20829f36b2db43a6c9d5a5749be18b514
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:15 +0200
+
+ genesys: Simplify handling of motor step multiplier
+
+commit 1d7adfcfc19aaf64f8c192941f18b4b4fc219060
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:14 +0200
+
+ genesys: Fix naming of step multiplier
+
+commit 194920159d299c3450e335f378e7993823d62bc4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:13 +0200
+
+ genesys: Remove support for legacy curves
+
+commit 3d9113997f30de42066727e81d0cd24c51335b65
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:12 +0200
+
+ genesys: Switch remaining legacy curve uses to physical curves
+
+commit 9a245a1325a16da6a483d17f12905d3c55ebc71e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:11 +0200
+
+ genesys: Switch unused motor curves to physical format
+
+commit 7d477da4047886526e8a69f25ff8e22059ca3cb5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:10 +0200
+
+ genesys: Use MotorSlope in gl646 code
+
+commit dec996277331dbed6dfa6cb6e2267129a6c0e759
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:09 +0200
+
+ genesys: Make the size of slope tables configurable by asic type
+
+commit c685ac075be5cdc9771a8e36bb5a65ff54742b6f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:08 +0200
+
+ genesys: Return MotorSlopeTable out of *_generate_slope_table()
+
+commit 8731a6cc5d0f025ba3800872eb8bc3c83f595d2c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:07 +0200
+
+ genesys: Return MotorSlopeTable out of *_create_slope_table3()
+
+commit 7c6229f272bace0d022f08842afeffb9ef28e958
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:06 +0200
+
+ genesys: Rename MotorSlopeTable::{scan_steps -> steps_count}
+
+commit 54034c3fae484974898ec162cc9825b608c5983a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:05 +0200
+
+ genesys: Fix Opticfilm 7200i and 7500i motor curves
+
+commit 868c4378962f1dade54a6ef2ea1fe97dd97348da
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:04 +0200
+
+ genesys: Convert hardcoded motor slopes to physical slope config
+
+commit 465077c6cb6c832708f1da28563864d910e64fac
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:03 +0200
+
+ genesys: Remove manual override of the first value in motor tables
+
+commit f605e7c2297e6d26c8d3521301206b25c3ae40a8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:02 +0200
+
+ genesys: Fix testing mode recording of scanner_slow_back_home_ta()
+
+commit c1d791f11cdbfbf2090570b68be17bf3749204a2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:20:01 +0200
+
+ genesys: Raise error when TA scan head takes too long to return home
+
+commit 01bae1305f656794f82b58a78751220efde4fec6
+Merge: e0679c316e85 5cfb44366bb6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 14:48:28 +0000
+
+ Merge branch 'genesys-remove-broken-resolutions' into 'master'
+
+ genesys: Disable broken resolutions on LiDE 50 and 80
+
+ See merge request sane-project/backends!273
+
+commit 5cfb44366bb6e2405a573c03c980bd85445fe3bd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:13:09 +0200
+
+ genesys: Disable broken resolutions on LiDE 50 and 80
+
+commit e0679c316e85c001c15a2afc0fb13bfa6dec8c18
+Merge: 053a2c10d33a 49934f067884
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 14:44:01 +0000
+
+ Merge branch 'genesys-fix-4850c' into 'master'
+
+ genesys: Fix black scans on HP 4850C
+
+ See merge request sane-project/backends!272
+
+commit 49934f0678843df5c4b1543fade1b60902682c10
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:11:37 +0200
+
+ genesys: Fix black side calibration on HP 4850c
+
+commit 8d8157b96edee51392084b56480000d5dc0cb5bd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:11:36 +0200
+
+ genesys: Fix scan area Y position on HP 4850c
+
+commit 355f2ddd4db6c51168f20111ffdafd0d836152ad
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 10:11:35 +0200
+
+ genesys: Fix black scans on HP 4850c
+
+commit 053a2c10d33aac78f863fb24dfa882b354bac576
+Merge: 42070a606cd5 8c99dc4819d6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 14:38:58 +0000
+
+ Merge branch 'genesys-fix-stagger-config' into 'master'
+
+ genesys: Fix staggerred CCD configuration on OpticFilm 7200i/7300/7500i and Canon 8400F/8600F scanners
+
+ See merge request sane-project/backends!271
+
+commit 8c99dc4819d6ef68330a043e8617519df3a938cc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 09:42:58 +0200
+
+ genesys: Fix stagger configuration on 8600F
+
+commit a8df8201e9d8c083fcc65c5836d231d8eb95e4f3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 09:42:57 +0200
+
+ genesys: Fix stagger configuration on 8400F
+
+commit 8a2af6d4b2458a155e1bacc932f0b66bfed6710b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 09:42:56 +0200
+
+ genesys: Fix stagger configuration on OpticFilm scanners
+
+commit 42070a606cd5c5df73ac1d5d095d6a7c8716c676
+Merge: e0d669acfe01 02b0f0d474fd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-22 14:23:17 +0000
+
+ Merge branch 'genesys-stagger-convert' into 'master'
+
+ genesys: Convert old broken stagger configuration to a per-sensor configuration
+
+ See merge request sane-project/backends!270
+
+commit 02b0f0d474fddffa0097a549336f8e389d6bd50c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 09:12:29 +0200
+
+ genesys: Convert old broken stagger configuration to per-sensor config
+
+commit 4c0f63052b6c91b51c9ef2d57ffccb62ec6c6fa7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-14 09:12:28 +0200
+
+ genesys: Add a way to configure per-sensor stagger config
+
+commit e0d669acfe01e26c619cbbdf342b6ad475c0b9b3
+Merge: 3b0ab4f09716 809ccfe695cc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-22 03:49:59 +0000
+
+ Merge branch 'bump-alpine-to-3.11' into 'master'
+
+ CI: Bump Alpine from 3.10 to 3.11
+
+ See merge request sane-project/backends!263
+
+commit 809ccfe695ccad9607207140829f86a4626fb4aa
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-22 12:33:27 +0900
+
+ CI: Bump Alpine from 3.10 to 3.11
+
+commit 3b0ab4f097166725ff1f2f718a9a9437371453ca
+Merge: 3a4d5a002c1c 790bdd822a29
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-22 02:05:53 +0000
+
+ Merge branch 'plustek-silence_compiler_warning' into 'master'
+
+ Resolve "Plustek backend generates compiler warnings on Debian 10"
+
+ Closes #189
+
+ See merge request sane-project/backends!262
+
+commit 790bdd822a29779a90e7f903b5daf655bc5258cf
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2019-12-22 02:05:53 +0000
+
+ plustek: Fix [-Wformat-overflow=] compiler warnings on Debian 10
+
+ Also fixes a format truncation warning observed elsewhere.
+
+commit 3a4d5a002c1c5db5055974bed11b6f8edffb3a76
+Merge: 02251c6489f9 97dea9495982
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-19 12:14:16 +0000
+
+ Merge branch '120-fix-all-compiler-warnings-on-the-debian-10-builds' into 'master'
+
+ Fix umax_pp compiler warnings
+
+ See merge request sane-project/backends!259
+
+commit 97dea949598220dba43fd1dcadf0f8930f81260f
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2019-12-19 12:14:16 +0000
+
+ Revert "plustex: suppressed format truncated compiler warning."
+
+ This reverts commit cc7fbd35e535e22cd13cd58979921e0c01fb38b4
+
+commit 02251c6489f9923a9492bf0eedbce402bf342789
+Merge: 277194d5347d 8de208c24c56
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-19 11:57:25 +0000
+
+ Merge branch 'add_sp112' into 'master'
+
+ Add SP-112SU model
+
+ See merge request sane-project/backends!260
+
+commit 8de208c24c5618009e99dc5cb44b7a98a17649ed
+Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
+Date: 2019-12-19 11:57:25 +0000
+
+ Add SP-112SU model
+
+commit 277194d5347ddc978ad76f10f76156126a2deab9
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2019-12-17 20:00:19 +0100
+
+ Revert "uniformise signature."
+
+ This reverts commit 2eff3e82bad5b03dd5af6cf491fe206c48b6e928.
+
+commit 2eff3e82bad5b03dd5af6cf491fe206c48b6e928
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2019-12-17 19:58:14 +0100
+
+ uniformise signature.
+
+commit f95fcf9d56e44869e4185a595c0a2ad08d13a2be
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-15 11:37:41 +0100
+
+ pixma: Canon imageCLASS D570 is working
+
+ See issue sane-project/backends#182
+
+commit 8270a82bc0423df7739813c734307e3a2ac87052
+Merge: fdcb2fa5e8d6 7c34046a3960
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-14 08:13:54 +0000
+
+ Merge branch 'escl-2019' into 'master'
+
+ See merge request sane-project/backends!242
+
+commit 7c34046a396045c8e042d80674c6ef1ea880d97d
+Author: Touboul Nathane <nathane.touboul@gmail.com>
+Date: 2019-12-14 08:13:54 +0000
+
+ Add escl backend
+
+commit fdcb2fa5e8d6a1a4856c88fbf8787ecc4cfc768c
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2019-12-11 21:10:07 -0500
+
+ Update fujitsu.desc status for iX1500
+
+commit 58b4371bb50ee68c5eafcf4757a9d25d525e4e4f
+Merge: ae732126b94a 4ef2e3987234
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-10 23:39:25 +0000
+
+ Merge branch 'genesys-remove-sensor-profile' into 'master'
+
+ genesys: Remove sensor profile struct
+
+ See merge request sane-project/backends!257
+
+commit 4ef2e3987234f03e765a5290c34823dcb9aef693
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:32 +0200
+
+ genesys: Remove remaining uses of SensorProfile
+
+commit 7971ee56934e300ebd564fdf0045eaaeaf232193
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:31 +0200
+
+ genesys: Use sensor profile information directly from profiles
+
+commit 524c9de1fa0cc953fc3b441db22ca141cf2d52d4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:30 +0200
+
+ genesys: Fix calibration exposure in testing mode
+
+commit 791433c895a0ed67aebd0696bf857cdbf0cfd938
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:29 +0200
+
+ genesys: Duplicate SensorProfile information into Genesys_Sensor struct
+
+commit 716689161dd3013b093c75e3a18dea95efc03f0d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:28 +0200
+
+ genesys: Use correct sensor for scanning on gl124
+
+commit 1f33bafe5d561660d0a414a45b6788e5e9e32f88
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:27 +0200
+
+ genesys: Remove unused fallback sensor profile code
+
+commit a7fd1d6ae1fc499605cba9bea5bb8aad0b5113dd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:26 +0200
+
+ genesys: Simplify sensor profile definition
+
+commit 99101d43194999dfe032e473351aea46dd9a833b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:25 +0200
+
+ genesys: Move ResolutionFilter definition above SensorProfile
+
+commit 7a2d3df0e3c9f0c2a9a99d08a4c90d44ba4fde77
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:24 +0200
+
+ genesys: Use correct sensor for calibration on gl847
+
+commit 6c8c4bb74f48f01a46d5f80ac94abf035164ca91
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:23 +0200
+
+ genesys: Use correct sensor for calibration on gl846
+
+commit 4dfa7d25a327ea84225700545ec81556c3c16115
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:22 +0200
+
+ genesys: Use correct sensor for calibration on gl124
+
+commit 059da17ac06a880c329af6ab16713c83689bc092
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:21 +0200
+
+ genesys: Simplify register definitions on gl846
+
+commit cb64243e5dcf4132abb24238104735eea2fbee3b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:20 +0200
+
+ genesys: Simplify register definitions on gl847
+
+commit 06742ab7d44a8764a4f760da806e20a1c71405d9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-08 11:42:19 +0200
+
+ genesys: Simplify register definitions on gl124
+
+commit ae732126b94a867ba59d7e55e67c4d4d48722bd1
+Merge: 037f06712ecb 3d068a9eee49
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-09 17:33:39 +0000
+
+ Merge branch 'genesys-motors-refactor' into 'master'
+
+ genesys: Extract move chip-specific motor handling code to the common area
+
+ See merge request sane-project/backends!256
+
+commit 3d068a9eee49cae318aa9b14e7d69f26d219e896
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:43:12 +0200
+
+ genesys: Fix TA support in scanner_move()
+
+commit 6a5fd2d36c288c396be576612c00e4db0c5d6e17
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:43:11 +0200
+
+ genesys: Support multiple scan methods in scanner_move()
+
+commit 27aea235b47c7ba6c98f6788f57d1d87c104e330
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:43:10 +0200
+
+ genesys: Rename slow_back_home() to move_back_home()
+
+commit 35c8cb84f81102dc8c9483a9f7175291c500d0b1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:43:09 +0200
+
+ genesys: Extract slow_back_home_ta() to common code
+
+commit 037f06712ecbba2033ae514b18f54b32e529a02e
+Merge: 4156fae159d7 5b7c19a7d58f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-09 17:06:05 +0000
+
+ Merge branch 'genesys-reduce-duplication' into 'master'
+
+ genesys: Reduce duplication in scan head movement routines
+
+ See merge request sane-project/backends!255
+
+commit 5b7c19a7d58f5fac6752fd2b53b1cf376db1e003
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:08:59 +0200
+
+ genesys: Reduce duplication of *_stop_action() across the ASICs
+
+commit 9e092f9d67651b5db82500098b1b5c7f96d1547a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:08:58 +0200
+
+ genesys: Extract scanner_is_motor_stopped() to use across the asics
+
+commit c2863d6ba14cccd615eb43a371c22d3d2cac23f3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:08:57 +0200
+
+ genesys: Fix inconsistent check of scanner status in *_stop_action()
+
+commit a90ab552a9e78b6b0aec318998865b0659483eb5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:08:56 +0200
+
+ genesys: Extract scanner_stop_action_no_move() to use across the asics
+
+commit 6913513dc26c98a0965429086831f306d3279c91
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:08:55 +0200
+
+ genesys: Extract regs_set_optical_off() to use across the ASICs
+
+commit 052aa0162608fdb435f6f90733ca6d34911a2df9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:08:54 +0200
+
+ genesys: Reduce duplication of *_feed() across different ASICs
+
+commit e435036b97fb0876804b06be7b043e280f2c8caf
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 10:08:53 +0200
+
+ genesys: Use single function to set exposure on all ASICs
+
+commit 4156fae159d707a145ac9728f21d7adb7a7573f0
+Merge: 560af93a391f 738444cd1ca2
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-04 16:10:27 +0000
+
+ Merge branch 'debug_add_timestamp' into 'master'
+
+ add timestamp to debug outputs
+
+ See merge request sane-project/backends!228
+
+commit 738444cd1ca29d0bfe4633f17f1183d5c8e3f1ad
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-26 17:33:07 +0100
+
+ add µsec to timestamp
+
+commit d9f35d1b5e582b99a1e286cff80d6d22906fd885
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-19 22:00:35 +0200
+
+ add timestamp to debug outputs
+
+commit 560af93a391f94bf57b202f5f95b88b00659e638
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-12-04 17:07:20 +0100
+
+ pixma: update manpage
+
+commit 34922d957413688469627fb9d9761fe2df4bd8bc
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-12-04 00:56:37 +0100
+
+ pixma: fixed MB5400 ADF scan. MB5400 works upto 1200DPI and with ADF or ADF-duplex
+
+commit 0bbb7ef3ba837162929f946595aa177963c3de19
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-12-03 22:05:13 +0100
+
+ tstbackend: make it compile again
+
+commit 46eacadc78a3aa34aaa68a4ecd9e2b9316a2399a
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-12-03 22:01:08 +0100
+
+ pixma_bjnp.c: fix parsing of mfnp in pixma config file
+
+commit 22c1bceda2c4bd1992a279ebc35f3f1c93567a10
+Merge: fa75eff7b4df 3a1c1bad32f9
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-03 11:02:34 +0000
+
+ Merge branch 'update_uk' into 'master'
+
+ Update Ukrainian translation
+
+ See merge request sane-project/backends!254
+
+commit 3a1c1bad32f983037bc537d10007c691b61a7558
+Author: Yuri Chornoivan <yurchor@ukr.net>
+Date: 2019-12-03 11:02:34 +0000
+
+ Update Ukrainian translation
+
+commit fa75eff7b4df9bf98f64567697487b9a9a9e902b
+Merge: f41bd003d065 311b9ff5bfb3
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-02 11:59:50 +0000
+
+ Merge branch '178-ci-requires-remote-resources-to-succeed-in-tools-update-upstreams-sh' into 'master'
+
+ Resolve "CI requires remote resources to succeed in ./tools/update-upstreams.sh"
+
+ Closes #178
+
+ See merge request sane-project/backends!253
+
+commit 311b9ff5bfb3ca2a14d48c5c00a08597b65fb40a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-02 20:40:20 +0900
+
+ Remove dependency on external resources during CI. Fixes #178
+
+ The update-upstreams.sh script is kept for the convenience of those who
+ want or need to use it. It has been slightly modified to provide more
+ feedback in case of error conditions.
+
+commit f41bd003d06505c4d4cf6b10f103a143b1fdfa58
+Merge: 1c4cff20050f f98bec2afb2a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-12-01 13:22:45 +0000
+
+ Merge branch 'genesys-use-full-scan-ta' into 'master'
+
+ genesys: Use full scan initialization in slow_back_home_ta()
+
+ See merge request sane-project/backends!251
+
+commit f98bec2afb2a093cfbc5b86cabcea478e907cb3e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:19:21 +0200
+
+ genesys: Use full scan initialization in slow_back_home_ta()
+
+commit 66a95875d402ef27ef49771f663f06a5a8cc4d60
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:19:20 +0200
+
+ genesys: Remove duplicate operation a register
+
+ The same value is set just several lines above.
+
+commit 4743a0235359ef9f5749aa9a38850b199a437368
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:19:19 +0200
+
+ genesys: Remove duplicate operation on a register
+
+ init_regs_for_scan_session() already sets the value of the register to
+ what we expect.
+
+commit 8aee1f0982dbca641b5553766d692c0626b3d8f8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:19:18 +0200
+
+ genesys: Expose slow_back_home_ta() to the cmd set
+
+commit 1c4cff20050fcfe9238a32b9ad4fdd2d919e081d
+Merge: 6b4be81e9002 c24a956685cc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-12-01 08:11:28 +0000
+
+ Merge branch 'pixma-fix-usbid-case-warning' into 'master'
+
+ canon_pixma: Use lowercase in usbid description to avoid warning
+
+ See merge request sane-project/backends!249
+
+commit c24a956685cc13b17a435514f25d5651722d162a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 17:51:12 +0200
+
+ canon_pixma: Use lowercase in usbid description to avoid warning
+
+commit 6b4be81e9002006b9c675bfa40f73e0490b183ce
+Merge: 072487ee7bcd 97ae3fc94621
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 23:40:52 +0000
+
+ Merge branch 'genesys-motors-refactor' into 'master'
+
+ genesys: Motors refactor
+
+ See merge request sane-project/backends!250
+
+commit 97ae3fc94621ecbf6e01d0ddbefcf2bc176155fa
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:52 +0200
+
+ genesys: Reduce duplication of slow_back_home() across different asics
+
+commit cba6086ce79fcc0debce0a47925b8b73c61ed29b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:51 +0200
+
+ genesys: Expose init_regs_for_scan_session() to the cmd set
+
+commit 79b4d1560ad0121dcd58edb4273fa5a05b502839
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:50 +0200
+
+ genesys: Remove no longer needed global settings modification
+
+commit a355df168a6f0990559dd6eb574f89c5fa451257
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:49 +0200
+
+ genesys: Expose update_home_sensor_gpio() in the cmd set
+
+commit 326733a479888716a4d690b04cc6f288e8570a95
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:48 +0200
+
+ genesys: Simplify slow_back_home() on gl646
+
+commit 98dbd206eebda52f704b06b032f9cd8032c682a9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:47 +0200
+
+ genesys: Reduce duplication of slope upload on gl646
+
+commit 66264538048e89679cc17bc0cea0b37b1f1f39ce
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:46 +0200
+
+ genesys: Reduce duplication of scanner status printing
+
+commit df8a411de386ed632b6cda98ec8e9bef0fce121f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:45 +0200
+
+ genesys: Extract reliable reading of home sensor to separate function
+
+commit 2ca325c63854c3287800d82bc9abdab9cd2d4e50
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:44 +0200
+
+ genesys: Simplify scanner status handling
+
+commit 7385e0d305ecac52e5fff85079d2e60928d0488c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:43 +0200
+
+ genesys: Simplify get_gain4_bit() implementation
+
+commit 3ada79c35ab6fcb5cea56595573510bc5781ec6c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:42 +0200
+
+ genesys: Move motor direction register adjustment to low level functions
+
+commit 50149e90642d6ba99e04af04eccc68888e2cc630
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 19:06:41 +0200
+
+ genesys: Use enum class for motor flags
+
+commit 072487ee7bcd0489e722d59df8e09a2a7410f144
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-30 23:51:03 +0100
+
+ pixma: made backend obey local_only setting in sane_get_devices
+
+commit 6c0282e06f190ffcc023f6ba145d54c052853bf4
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-30 17:52:19 +0100
+
+ INSTALL.linux: add missing dev package "libusb-1.0.0-dev"
+
+commit 0b4165b27f43b646063ca89c956b8dbefd1a266c
+Merge: 3dff8085e771 837ec33c7fe0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-30 15:04:14 +0000
+
+ Merge branch 'genesys-motors-refactor' into 'master'
+
+ genesys: Motors refactor
+
+ See merge request sane-project/backends!248
+
+commit 837ec33c7fe0babb020c1b56aa7029fa310ccf89
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:51 +0200
+
+ genesys: Make scan flags an enum
+
+commit 05e3091d5fb12a853c71e9eb189a4203ea284554
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:50 +0200
+
+ genesys: Remove duplication of motor startup
+
+commit 9cd373fe6c5e4b9d1aa68e54ba72aa1bddf3bc2c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:49 +0200
+
+ genesys: Return MotorSlopeTable out of sanei_genesys_slope_table()
+
+commit 63b0366b43cb256b9e7b83df29fe8884c335dce7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:48 +0200
+
+ genesys: Store motor profile tables in std::vector
+
+commit cbe45396feb3796e3d9e7a0aac34490832fff9e0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:47 +0200
+
+ genesys: Move static initialization functionality to a separate file
+
+commit f6f27e053953661c7bbf3261a91ca71553772945
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:46 +0200
+
+ genesys: Implement building of motor tables based on physical slope
+
+commit 34bba237b5c0ed6b29fd93150b4be6d3f341aaf6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:45 +0200
+
+ genesys: Don't select motor profile twice during setup of same scan
+
+commit b43a21d25a4ae4d4fdeb37d7f5156e90a6cdf17d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:44 +0200
+
+ genesys: Add new motor slope type
+
+commit 15819a7d12eef1e10921b0f4b1f1d10746786bcb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:43 +0200
+
+ genesys: Add tests for sanei_genesys_create_slope_table3()
+
+commit ddcce5295faa5cfdc822f308391d917d496a3656
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:42 +0200
+
+ genesys: Use StepType enum more
+
+commit c6784d2f1db40a65721766b6fc6442a93bc6eab8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:41 +0200
+
+ genesys: Simplify API of sanei_genesys_create_slope_table3()
+
+commit ce59a69224cb24a07f27f6f8ccd4a38f54476e9e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:40 +0200
+
+ genesys: Record motor slope tables in the config test
+
+commit d8e8899a760fc24e175f2641f69af7ba3eb674af
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 12:38:39 +0200
+
+ genesys: Remove unused code
+
+commit 3dff8085e771ca945fc46fd93cdf2eb8454e8470
+Merge: 9bee993c3cd2 acc5fd318c3d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-24 12:19:20 +0000
+
+ Merge branch 'genesys-remove-macros' into 'master'
+
+ genesys: Use enums instead of macro constants
+
+ See merge request sane-project/backends!246
+
+commit acc5fd318c3d3010f001cf72a16e4f3cc6c99370
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-18 22:10:29 +0200
+
+ genesys: Replace unneeded uses of macros with enums
+
+commit 10662d297336c712ac7499cf293e723ab268d550
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-18 22:10:28 +0200
+
+ genesys: Remove uses of SETREG and INITREG macros
+
+commit 185fdcc9ce0b45e93fff54df24ce35b61c9ccc97
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-18 22:10:27 +0200
+
+ genesys: Replace defines with constants in register lists
+
+commit 6d9259bd4853fa1299816910a7bbaad89cc66604
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-18 22:10:26 +0200
+
+ genesys: Put chip-specific functionality into namespaces
+
+commit 9bee993c3cd25dac13481a2d641838df77e1b1e7
+Merge: f1cf1ff1d97a 9472dce5f7cb
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-11-24 01:59:29 +0000
+
+ Merge branch 'fix-scanimage-overflow' into 'master'
+
+ scanimage: Fix 32-bit overflow when calculating total bytes to transfer
+
+ See merge request sane-project/backends!234
+
+commit 9472dce5f7cbd4446fc1bc2bc4a580f3e0a981a4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:58:30 +0200
+
+ scanimage: Fix 32-bit overflow when calculating total bytes to transfer
+
+commit f1cf1ff1d97ac7387c4fac22c6e27406b7741e6c
+Merge: 5cd65e6e1954 f366073b0835
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 13:10:15 +0000
+
+ Merge branch 'genesys-canon-4400f' into 'master'
+
+ genesys: Add initial support for flatbed mode on Canon 4400F
+
+ See merge request sane-project/backends!245
+
+commit f366073b0835c4005f4f4fc891f407cc4c25a6c3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 14:54:10 +0200
+
+ genesys: Add initial support for flatbed mode on Canon 4400F
+
+commit 5cd65e6e19544d4421bee51336eb61d7841347fe
+Merge: 7e7f02773e1e e46b6927dd34
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-23 13:09:27 +0000
+
+ Merge branch 'correct-man' into 'master'
+
+ Mention correct man file for ricoh2
+
+ See merge request sane-project/backends!243
+
+commit e46b6927dd344c8b0aa1ab4d5021c2b7163885a5
+Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
+Date: 2019-11-17 17:08:42 +0300
+
+ Mention correct man file for ricoh2
+
+commit 7e7f02773e1e62ef3ae16229863fa8561e78d3e2
+Author: Alex Belkin <abc@telekom.ru>
+Date: 2019-11-05 22:01:53 +0300
+
+ xerox_mfp: Fix crash in test mode
+
+ Do not decode JPEG into output buffer if it's NULL.
+ Also, I add assert() for `dev->decData` size, which is never
+ checked anywhere. Thanks to Michal Nowak for report and
+ testing. Fixes #128.
+
+ References:
+ https://gitlab.com/sane-project/backends/issues/128
+
+ Tested-by: Michal Nowak <Mno-hime@gitlab>
+
+commit 3c863c2bd9a2f06b3a92b93bc1031fe03c44c0a0
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-11 13:22:59 +0100
+
+ sane-pixma.man: fixed typos
+
+commit 2cffe0e7a6a836091b47d301f3018f42d6678b69
+Merge: aeadb8ef1eaf e2e72535b5ca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 20:36:01 +0000
+
+ Merge branch 'genesys-smoke-tests' into 'master'
+
+ genesys: Add smoke tests
+
+ See merge request sane-project/backends!241
+
+commit e2e72535b5caa86707fa0ff37e929a45a44a41c5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 12:42:50 +0200
+
+ genesys: Record data that is important for shading data upload
+
+commit 67588e46ef343839795933d22bf6e1299d0cbd6a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 12:42:49 +0200
+
+ genesys: Add checkpoints to record internal state
+
+commit eadfdb57a460f7197cf6cc9aef7e50d3e799ebac
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 12:42:48 +0200
+
+ genesys: Add a way to record backend internals using test scanner iface
+
+commit 95366b1f1b7d640e1a512546b4a622dfe4a5cc13
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 12:42:47 +0200
+
+ genesys: Add a way to record arbitrary data for debugging
+
+commit 3ac009abe207873627b709544c63a775982ab7b3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 12:42:46 +0200
+
+ genesys: Add more debug printers
+
+commit 38c32ff7029553aadf0e17689a27fe605fe4635a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 12:42:45 +0200
+
+ genesys: Extract formatting functionality out of debug_dump()
+
+commit 105f7fbfaddd762455430bb787b2283d9b13899a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 12:42:44 +0200
+
+ genesys: Add utility to restore stream state
+
+commit aeadb8ef1eaf9853d9a40dc2dc0dc692633ef5c8
+Merge: fa01471c9287 391d4721273e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 19:45:16 +0000
+
+ Merge branch 'genesys-scanner-interface' into 'master'
+
+ genesys: Low-level scanner interface
+
+ See merge request sane-project/backends!240
+
+commit 391d4721273eeeb94b5b111d396c5f085c1c1fde
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:48 +0200
+
+ genesys: Rename record_{test => progress}_message
+
+commit e2e3ea094770b888b6cdad8866fae622b403b66b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:47 +0200
+
+ genesys: Route sleep calls through low level scanner interface
+
+commit 521c0428892fd001a4db9e00c5e8c5e836422cdd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:46 +0200
+
+ genesys: Route low-level status debug messages through scanner interface
+
+commit 779725ab55cebb0a9f3c2800f2ce411c91ba4584
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:45 +0200
+
+ genesys: Extract attach_usb_device()
+
+commit 908053751f32faf162d44dd4dc098f94ad1ad091
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:44 +0200
+
+ genesys: Use generic USB device interface througout the backend
+
+commit 978ad5e52bdafbf4c713e005b86c4174efa06b7e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:43 +0200
+
+ genesys: Add interface for USB devices to allow mocking of them
+
+commit 4e9b47de56a8ce97e069ea9cbbf9c7eaa4c672e0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:42 +0200
+
+ genesys: Move low level data writing API to scanner interface
+
+commit 0fed92b0ff541ccccad04bd8afbe133cd303181c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:41 +0200
+
+ genesys: Remove unneeded wrapper for scanner interface functions
+
+commit 0582b5448c1943ea73ba51f7c2e8a9b19c3f566c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:40 +0200
+
+ genesys: Move low-level protocol implementation to ScannerInterfaceUsb
+
+commit c6e60013eff280689e44f3febde0fce622784a17
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:39 +0200
+
+ genesys: Add low level scanner test interface
+
+commit 0ea8ec115cf69dce5735700dfd4b68726f78f436
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:38 +0200
+
+ genesys: Add low level interface for interaction with the scanner
+
+commit 655c6b14b654585bb65d43bb2bbdf2256a3018c7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:37 +0200
+
+ genesys: Extract low level register set functionality to separate class
+
+commit 309ee441de2875f7e6d498dcad7c3d78262b1166
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-26 11:38:36 +0200
+
+ genesys: Remove trivial bulk_{read,write}_data() wrapper
+
+commit fa01471c9287663bba02225e2b9c0c300271ec67
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2019-11-10 10:46:50 -0500
+
+ fujitsu backend v135
+
+ - set has_MS_lamp=0 for fi-72x0, bug #134
+
+commit 8c4879c835256a5d02f15f0fbdabd3b3d73304de
+Merge: 99d1abe1e7fd 9d9552575d6c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 14:56:00 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!239
+
+commit 9d9552575d6c578cda0a3892403158db33d0e00e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-02 17:13:20 +0200
+
+ genesys: Extract MethodResolutions::get_resolutions()
+
+commit 42a58387b6847ab820dbd80ab1a54597eb04db96
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-02 17:13:19 +0200
+
+ genesys: Extract conversion of ScanColorMode to separate functions
+
+commit 3ad5a9241486b8fa785d37c92892919d1cda8ec0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-02 17:13:18 +0200
+
+ genesys: Move conversion of ScanMethod to option strings to enums.cpp
+
+commit 6fe1db1c734b9df8afe3c7a5c46203a7c858ece4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-02 17:13:17 +0200
+
+ genesys: Use std where needed
+
+commit 429d8e4d5b811fa70383ab5d3f8d414733181158
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-02 17:13:16 +0200
+
+ genesys: Remove unused code
+
+commit a7ca16a415e526bae47d9e98eae282408875c001
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-02 17:13:15 +0200
+
+ genesys: Add file with class forward declarations
+
+commit f5410b7738e46689a64e95279ea17b5178356785
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-02 17:13:14 +0200
+
+ genesys: Add an easy way to override SANE API linkage
+
+commit 99d1abe1e7fd210570e3b55503114efe87f6d678
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2019-11-10 09:40:47 -0500
+
+ fujitsu backend: add iX1500 IDs
+
+ - updated per bug #131
+
+commit 5c0838e42383d37256dc775c246d3f476234b95a
+Merge: 779d09a0b56c 7213738359a7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 14:32:41 +0000
+
+ Merge branch 'genesys-fix-calibration' into 'master'
+
+ genesys: Fix calibration issues
+
+ See merge request sane-project/backends!238
+
+commit 7213738359a7b54018711f2300ae4f2bf128a9a9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 10:32:11 +0200
+
+ genesys: Make sure correct session data is used for saving calibration
+
+commit 68f388eb6a9427d340a21a7aeb6bb6082d054aeb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 10:32:10 +0200
+
+ genesys: Remove is_compatible_calibration() wrappers
+
+commit ced1ee03066edcc4513ff8364940e238c20ce930
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 10:32:09 +0200
+
+ genesys: Use common impl of is_compatible_calibration() on gl646
+
+commit 8659536e1b8b820e281a5a8f8fc264fa6bbffb9d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 10:32:08 +0200
+
+ genesys: Implement calculate_scan_session() on gl646
+
+commit 84e4ababa517063514cfc4395fe8d35df787f5f0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 10:32:07 +0200
+
+ genesys: Correctly serialize GenesysFrontendLayout
+
+commit 8557e0c2204e4d1ffae17b05341e3e0a60fb31ca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 10:32:06 +0200
+
+ genesys: Don't modify global state in *_is_compatible_calibration()
+
+commit f4f58f6c185123f907e0fd71d067ae009e61a816
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 10:32:05 +0200
+
+ genesys: Remove no longer used Genesys_Current_Setup
+
+commit 8c6987e5a1002bbe40a5b52b1bd761e090cd3947
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 10:32:04 +0200
+
+ genesys: Rewrite is_compatible_calculation() to use session data
+
+commit 9662a501a9bc5347884644a9aa746c9ee3192678
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 10:32:03 +0200
+
+ genesys: Use data from session directly when possible
+
+commit 779d09a0b56c65cfdd776c16b46d4efec0fe256b
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2019-11-10 09:01:06 -0500
+
+ canon_dr backend v58
+
+ - adjust wait_scanner to set runRS only as a last resort, bug #154
+
+commit a15d960228c028154766a0018a4dcffa304da95d
+Merge: e4a908d88b17 d2aaa822f36c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 12:12:41 +0000
+
+ Merge branch 'genesys-logging-improvements' into 'master'
+
+ genesys: Miscellaneous logging improvements
+
+ See merge request sane-project/backends!237
+
+commit d2aaa822f36c0643323eb6abe6f2c7c04591c990
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 11:48:36 +0200
+
+ genesys: Allow use of TIE() macro outside the genesys namespace
+
+commit 87b5a78e377b5febc2acb79974e30029586bb974
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 11:48:35 +0200
+
+ genesys: Add more logging
+
+commit 1faa3223089cad06d99061cc8c9706079aa08e24
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 11:48:34 +0200
+
+ genesys: Add a way to log messages using DBG_HELPER
+
+commit 9ca0a109381ebe7d9a4d737bee8cd3b5020811d3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 11:48:33 +0200
+
+ genesys: Improve class method identifiers in debug messages
+
+commit 6d7365ba897890ec75eaa83c9981393677239fac
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 11:48:32 +0200
+
+ genesys: Return errors as exceptions
+
+commit 46876064d7ccff723d422a8c42fb2da94f61f3fe
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 11:48:31 +0200
+
+ genesys: Improve error logging
+
+commit e4a908d88b1736902c30f23caa6a3ace032a71aa
+Merge: 05f313cc5310 a1bc0d33cd02
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 12:04:51 +0000
+
+ Merge branch 'genesys-session-cleanup' into 'master'
+
+ genesys: More cleanup for ScanSession
+
+ See merge request sane-project/backends!236
+
+commit a1bc0d33cd0283f015fd5663f5fe6764b028803e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 10:42:01 +0200
+
+ genesys: Move line-distance correction data to session
+
+commit 0fa25a233b4306a9d8f3e78a80f900974179fd6c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 10:42:00 +0200
+
+ genesys: Merge chip-specific compute_session functions
+
+commit 05f313cc53106de0a284f157aac646bf4ce9205d
+Merge: fae6080630ee c2479ed0e938
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-10 11:22:41 +0000
+
+ Merge branch 'genesys-improve-8400f' into 'master'
+
+ genesys: Add support for 3200 dpi resolution on 8400F
+
+ See merge request sane-project/backends!235
+
+commit c2479ed0e938b54b115b84679f81132ab417acd7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 10:29:56 +0200
+
+ genesys: Add support for 3200dpi flatbed resolution on 8400F
+
+commit 7f49bd2a2ef39c09a2a75db7fb7dbc0f2513d3b5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 10:29:55 +0200
+
+ genesys: Enable all transparency resolutions for infrared scans on 8400F
+
+commit 7336ec8969015fb77ad2e8e5a25217af82473335
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-27 10:29:54 +0200
+
+ genesys: Fix 1600 dpi flatbed / 3200 dpi TA support on 8400F
+
+commit fae6080630ee1c03186e5fb1e36e74d7e3778b65
+Merge: 71b817cef8e2 44812981295b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 21:09:17 +0000
+
+ Merge branch 'genesys-misc-fixes' into 'master'
+
+ genesys: Miscellaneous fixes
+
+ See merge request sane-project/backends!233
+
+commit 44812981295b0300b65aadd9e7958c0c6cd81a6f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:42 +0200
+
+ genesys: Fix invalid memory access on DSMobile 600 and DocketPort 467
+
+commit c6b85390323fa357573ef0f604494bfcd1c4bfe1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:41 +0200
+
+ genesys: Disable support for Canon Image Formula 101
+
+commit 3632d4ec3795ce498be0285991285c92d57a6573
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:40 +0200
+
+ genesys: Fix out of bounds write during initialization of shading data
+
+commit e967d98aabe326bb1d6d043edd55adf8f5b7e060
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:39 +0200
+
+ genesys: Disable broken support for 4800 dpi on LiDE 210 and 220
+
+commit cb7521e7c11e63abcc4c72ff580987805541b568
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:38 +0200
+
+ genesys: Remove currently unsupported resolutions on 8600F
+
+commit 18206d845d92ea036384cc8b20140cf6012ae541
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:37 +0200
+
+ genesys: Fix crash on startup on Canon 4400F
+
+commit a5a03dfce2dc1e7237180ff17b710de65ad4385b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:36 +0200
+
+ genesys: Remove incorrect assert on gl841
+
+commit a7be52a5a11aaa602fdd782af11b4e98156fff4d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:35 +0200
+
+ genesys: Fix crash on gl646 when sensor matches any resolution
+
+commit ddb8685755783b59053ae072c68755abfeb6cce3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:34 +0200
+
+ genesys: Fix null name of the "extras group" option leading to crashes
+
+commit 54edeaf69d187c5301204b8ac40152a4023af8f6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:33 +0200
+
+ genesys: Inherit from std::exception publicly
+
+commit ecb1d899b936f83638adbf704ef4b8f91435c799
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:32 +0200
+
+ genesys: Fix typo which prevented calibration data from being used
+
+commit cac57c3e9fa1f38ec8e6b886639c08005d69c535
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-11-09 22:51:31 +0200
+
+ genesys: Remove duplicate handling of document end
+
+ This duplicates work done in genesys_fill_read_buffer()
+
+commit 71b817cef8e28c3c4a8aa1a7cbc23478e66ce783
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-11-07 20:24:31 +0900
+
+ hpaio.desc: Sync with hplip-3.19.11
+
+ Re #166
+
+commit ee3f9b47ece844262f4614ebedfd9f21bebc3f24
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-06 18:08:41 +0100
+
+ pixma: backend version 0.25.1
+
+commit eca978c258fb4e6e1f24dd47ff77dbaa36b80230
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-05 23:03:27 +0100
+
+ pixma_bjnp: added options to completely disable networking or skip auto detection.
+
+commit 0f493e155aae4b3411fef89f7cdc98eb373c7a7f
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-05 20:09:42 +0100
+
+ Fixed pixma_bjnp.c
+
+commit a1ecd8c15887c62c052f02952f4f90e32b38f197
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-05 19:45:30 +0100
+
+ Fixed completely messed up pixma_bjnp.c
+
+commit bda9ae39bad41b32992a84ddec8fddc24ce7ee74
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-05 19:22:11 +0100
+
+ pixma_bjnp.c sane-pixma.doc Fix trailing spaces
+
+commit 462df7d6ad72b1c35e155987ec9f173f45a1ee91
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-05 18:31:39 +0100
+
+ usane-pixma:
+ - Document that Canon seems to be remving the supported MFNP and BJNP
+ protocols in new printers/scanners
+ - Added an mfnp example in the pixma.conf file
+
+commit 739cfc8d83f6b1903c6694a7e5d24e081dd12a18
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-05 17:16:09 +0100
+
+ pixma_bjnp.c: redsign of timeout code
+
+commit 5dd50be523375c888ac0c16a32bb046c256e43ca
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-05 14:35:11 +0100
+
+ xma_bjnp.c: fixed parsing of model in parse_IEEE1284_to_model
+
+commit 766b4937c3bad766c422951b07125e424bdf5efb
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-11-05 13:56:23 +0100
+
+ pixma_bjnp.c Retry TCP connect in case the scanner is not yet ready
+
+commit c9a2b3bd23cbe6496aca2f0d977c60341cb4c056
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-11-04 11:17:44 +0900
+
+ utsushi.desc: Sync with upstream
+
+commit 572c5e6e6100da229dfcc6aef0a10d5551703298
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:53:41 +0100
+
+ pixma: backend version 0.25.0
+
+commit 27cac478e72ca6dbdd035f33d2eefb4574d284c5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:52:57 +0100
+
+ pixma: CanoScan LiDE 300 & 400 support all scan resolutions
+
+commit 053e5fd7526b08795e9a4e20bc9b03d887e532db
+Merge: 69e40e9a62a4 e16a2b05b1a6
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:30:53 +0000
+
+ Merge branch 'pixma/lide400_low_dpi' into 'master'
+
+ CanoScan LiDE400 scans below 300dpi
+
+ See merge request sane-project/backends!231
+
+commit e16a2b05b1a6584b3ef9fd0506f0645accb70a2d
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:46:16 +0100
+
+ pixma_mp150: activate image down-scaling for LiDE300 & 400
+
+ we don't need to force >=300 dpi scans anymore
+
+commit cffeb11ee63905ae44fb1f4454081674cd21cbb3
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:44:27 +0100
+
+ pixma_mp150: special image format handling only needed for existing sub-images
+
+commit 95e208527a1eadc5c4e11e2c083990fe1cde11ea
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:42:16 +0100
+
+ pixma_mp150: new function shrink_image()
+
+ call shrink_image() from post processing image data
+
+commit 452b28a81fba249d4afd2071ad7e79b849c37e17
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:21:50 +0100
+
+ pixma_mp150: use mp->scale to calculate scan parameters for down-scaling images
+
+ the values for xdpi, ydpi, x, xs, y and wx must be expanded to minimum image size
+
+commit b4cf3343bd0b253ad5df00772983e390336fcfda
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:16:14 +0100
+
+ pixma_mp150: add comments and some debug outputs
+
+commit 5d64760f0f61092c2f18b04414bd41a75d163e63
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:06:53 +0100
+
+ pixma_mp150: new sub-driver parameter scale
+
+commit bd811cb0b0b7d4e41910193608a8a7c3b02c178c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-01 19:02:01 +0100
+
+ pixma: new device option: min_xdpi
+
+ used for scaling scanned images
+
+commit 69e40e9a62a4157165c9865dc3653f293ccaeaab
+Merge: e97112fa9649 1bd2dcc9c81c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-10-31 12:03:33 +0000
+
+ Merge branch 'ci-fedora-31' into 'master'
+
+ CI: Bump Fedora from 30 to 31
+
+ See merge request sane-project/backends!230
+
+commit 1bd2dcc9c81c9d930cf943a4024deb3716d18817
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-10-31 18:23:15 +0900
+
+ CI: Bump Fedora from 30 to 31
+
+commit e97112fa9649a4a7f9f5fda57ca9eac94d564447
+Merge: fe30fbe893a9 ffcc232b6cc2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-10-29 11:28:57 +0000
+
+ Merge branch 'patch-1' into 'master'
+
+ Added the list of devices supported by scangearmp2.
+
+ See merge request sane-project/backends!227
+
+commit ffcc232b6cc2ec5e4fd4079742ece7558cd8c48b
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2019-10-29 11:28:57 +0000
+
+ Add list of devices supported by scangearmp2
+
+commit fe30fbe893a9842470768bfbc3fd204bacb74e97
+Merge: 99ae5490a677 82e971a7862a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-25 20:22:38 +0000
+
+ Merge branch 'glibcxx-assertions-abort' into 'master'
+
+ genesys: Fix #156 - [Fedora] Abort due out-of-bound access
+
+ Closes #156
+
+ See merge request sane-project/backends!224
+
+commit 82e971a7862a9c87c3f49e62e39a34da67d0b069
+Author: Zdenek Dohnal <zdohnal@redhat.com>
+Date: 2019-10-25 13:06:15 +0200
+
+ Fix #156 - [Fedora] Abort due out-of-bound access
+
+commit 99ae5490a677c3210e23c770b2032dc235bcd8b7
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-24 15:10:23 +0200
+
+ pixma: backend version 0.24.1
+
+commit 7b388d14da4ef9cf76cd987c575494fe6256fdc5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-24 15:04:09 +0200
+
+ pixma_mp150: fix scan height calculation
+
+ this fixes: pixma_mp150: remove (ccd) color shifting (fc300be)
+
+commit 63ce5153760cddfc6b15a1f2fc20bfa69d80fc82
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-22 20:09:00 +0200
+
+ pixma_mp800: remove double PIXMA_CAP_CCD settings
+
+commit 2f2bce2ae9f259646512ce7b1be3791001e08245
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-22 19:41:49 +0200
+
+ pixma: backend version 0.24.0
+
+commit 7db4449fa044e8ee06b7c7f83a54a7725f861da4
+Merge: 2b1ce918aef1 ab0314399a26
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-22 19:40:06 +0200
+
+ Merge branch 'pixma/separate_ccd_from_cis'
+
+commit ab0314399a26b470d7f601a69649f7ce7975d1c0
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-22 19:32:07 +0200
+
+ pixma_mp810: rename => pixma_mp800
+
+ 1st ccd scanner in pixma_mp810 is MP800
+
+commit fc300be715eeee3b719824b694a660672de99d78
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-22 19:23:18 +0200
+
+ pixma_mp150: remove (ccd) color shifting
+
+commit 1b8fe029a256d6ef4202838a1c69fc2e9307daa7
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-22 19:10:53 +0200
+
+ pixma_mp150: remove unused code
+
+ unused scanner functions: ccd, tpu
+
+commit 83a0a1c55f973db2d4fb7ce9d664477e46516651
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-22 18:03:33 +0200
+
+ pixma_mp150: move ccd scanners => pixma_mp810
+
+commit 657f1d8e26f0259f380c11aa16cdcfc00249648a
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-22 17:46:19 +0200
+
+ pixma_mp810: all scanners have ccd
+
+commit 97cd2e10bb6149cbdaab8fc306ea2761aa83f972
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-22 17:46:01 +0200
+
+ pixma_mp750: all scanners have ccd
+
+commit 2b1ce918aef19061bf5f0cc3cba625314bb6f1c3
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2019-10-18 19:45:37 +0200
+
+ pixma_bjnp.c: Fixed compile warnings on My Fedora build
+
+commit 6b0f3ca124fc3e31db1d4750f9e6e006f135976d
+Merge: 9ee689c6f67e 0b4a5f941ad2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 19:44:38 +0000
+
+ Merge branch 'genesys-misc-fixes' into 'master'
+
+ genesys: Miscellaneous fixes for numerous scanners
+
+ See merge request sane-project/backends!222
+
+commit 0b4a5f941ad2550e90d06ff1c6ba7f7e909312d5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:27 +0300
+
+ genesys: Use correct min resolution for feeding
+
+commit abec99006c78353a300747e34ae39f9be7d5673d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:26 +0300
+
+ genesys: Add missing <cmath> includes
+
+commit 2d0a1a34709670d2e7946e8f0695af4b73b75847
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:25 +0300
+
+ genesys: Enable 1200 Y resolution on HP ScanJet 2300
+
+commit 2a8be5e191550dadc44ca8eaf9fafe45171bb76d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:24 +0300
+
+ genesys: Use motor base dpi for shading calibration on gl847
+
+commit 87969174bd9d68983f6b4b47aae51f813e64054e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:23 +0300
+
+ genesys: Fix shading target for Canon LiDE 110, 120, 210, 220
+
+commit 36f0685d0a5db1c2b361ad250b8235b5e07aaafd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:22 +0300
+
+ genesys: Improve robustness of calibration on gl847
+
+commit 67d6a194e588fffdea15e5f3c0e2279de519f5f8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:21 +0300
+
+ genesys: Fix geometry for Canon LiDE 110
+
+commit 0096d56cb61dbeb7426c6699cea4c0bf0eb7f2de
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:20 +0300
+
+ genesys: Fix X resolution list for Canon LiDE 100 and 120
+
+commit dab38144a03cd1da055cc9ab06defb6d0a79872e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:19 +0300
+
+ genesys: Fix geometry of HP G4050
+
+commit 661fa1d590c5ab7ef1d8f85513c55aa63d3c78a5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:18 +0300
+
+ genesys: Add missing resolutions for Canon 5600F
+
+commit 2c7f7fcac283c1f3e073908601f5da0444fc3819
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:17 +0300
+
+ genesys: Fix sensor gamma of LiDE 100, 110, 120, 200, 210, 220 scanners
+
+commit b391b35fd9180af4222ed0c9ff71e7aa62baca4b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:16 +0300
+
+ genesys: Fix uninitialized variable warning in SaneException c-tor
+
+commit 1ac04c6266dd1bf721b9b950ebe3540112af0beb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:30:15 +0300
+
+ genesys: Don't enable gamma when not needed
+
+commit 9ee689c6f67e48b3e94a2ff0d129c28476ff855b
+Merge: 680ebd9f3f65 93e980d0c1d3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 19:20:11 +0000
+
+ Merge branch 'genesys-median-shading' into 'master'
+
+ genesys: Use median filter during to average columns during shading calculations
+
+ See merge request sane-project/backends!221
+
+commit 93e980d0c1d3b03bea1d2db45ea588f2272c94ab
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:07:01 +0300
+
+ genesys: Use median instead of mean when computing shading calib data
+
+commit f9d36d1a1b5150866d2a714380c7e7579e4e1189
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:07:00 +0300
+
+ genesys: Add utility to compute percentille of columns in image
+
+commit 051ff59e0c21e512823093a125e1a1da4a70a79a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-17 22:06:59 +0300
+
+ testsuite: Add a way to test exception throwing
+
+commit 680ebd9f3f6576686a25e721138f01c5ae8d9c72
+Merge: efb693e0b7fa bc2f40b274ce
+Author: ABC <abc@telekom.ru>
+Date: 2019-10-16 15:48:10 +0000
+
+ Merge branch 'samsungc460-no-jpeg-support' into 'master'
+
+ xerox_mfp: Samsung C460 does not have the JPEG mode
+ So blacklist it from jpeg parser.
+
+ See merge request sane-project/backends!218
+ https://gitlab.com/sane-project/backends/merge_requests/218
+
+ Downstream references:
+ https://bugzilla.redhat.com/show_bug.cgi?id=1760916
+
+commit bc2f40b274ceb9292c3665ea55755e43d0b99487
+Author: Zdenek Dohnal <zdohnal@redhat.com>
+Date: 2019-10-15 12:49:48 +0200
+
+ Samsung C460 does not have the JPEG mode
+
+commit efb693e0b7fa1ad020bf7e0c0d1cf06b7a9dd61e
+Merge: 82b1a8922ef9 885eb8280120
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 15:49:07 +0000
+
+ Merge branch 'genesys-per-scan-method-resolutions' into 'master'
+
+ genesys: Support different resolutions depending on scan method
+
+ See merge request sane-project/backends!217
+
+commit 885eb8280120fc9e41c151d15ee01973125df515
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 18:30:28 +0300
+
+ genesys: Update resolutions specific to scan method in model list
+
+commit a5fe12a37fbc200475a03c7644ec429e213107da
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 18:30:27 +0300
+
+ genesys: Allow supported resolutions to vary depending on scan method
+
+commit 24230aea7d1865b0a1fac649f53c7fdcac0aee51
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 18:30:26 +0300
+
+ genesys: Simplify option setup
+
+commit b716c1a45760a79ea8a31d4296270d0605f669b7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 18:30:25 +0300
+
+ genesys: Remove duplicate definitions of SCAN_FLAG_*
+
+commit 82b1a8922ef981ae03126d492389bdc897fc7243
+Merge: f04ab61eaab8 3037ba1eafb5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 10:41:13 +0000
+
+ Merge branch 'genesys-searchable-register-names' into 'master'
+
+ genesys: Use a searchable name for register enums
+
+ See merge request sane-project/backends!216
+
+commit 3037ba1eafb551524b30865323900bc5afa1dd6a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-02 14:28:59 +0300
+
+ genesys: Use a searchable name for register enums
+
+commit f04ab61eaab8335866cce7c48796c080b2729db2
+Merge: 9fe2026accee 0ab82e9f86d4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 10:15:12 +0000
+
+ Merge branch 'genesys-fix-warnings' into 'master'
+
+ genesys: Fix floating-point conversion warnings
+
+ See merge request sane-project/backends!215
+
+commit 0ab82e9f86d4b1d94e6e1eb1e501498570c89cb2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 06:18:51 +0300
+
+ genesys: Resolve various floating-point conversion warnings
+
+commit f4a295754159acb6d4df0868f02b69531667cd92
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 06:18:50 +0300
+
+ genesys: Use unsigned for resolution in various places
+
+commit 59e356ac1340c930bd8a2f2ffc79ac36cd3d837d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 06:18:49 +0300
+
+ genesys: Don't use variants of M_PI that aren't guaranteed to be present
+
+commit a694002364761f179db8d0694b46afe5a3509750
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 06:18:48 +0300
+
+ genesys: Switch session startx and starty to unsigned
+
+ The sources and destinations are integer in most cases for these
+ variables.
+
+commit 0840c6e9d9e1a878b625ba6547958e5bc41645d8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-13 06:18:47 +0300
+
+ genesys: Fix float conversion warnings in the tables
+
+commit 9fe2026accee3bdfcfd81fbb158934d2a2f5d37c
+Merge: 41ce1eb20413 68e5f8a91206
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 20:06:18 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!214
+
+commit 68e5f8a912067731af262c7218d9eaf88e032721
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-02 12:01:28 +0300
+
+ genesys: Put the backend code into a separate namespace
+
+commit e32a45fef814c36756bedb259c2baa692da25c39
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-02 12:01:27 +0300
+
+ genesys: Retrieve depth from session in genesys_warmup_lamp()
+
+commit 17740df924c692d8585bc24258a357cc5f3d17b2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-02 12:01:26 +0300
+
+ genesys: Remove support for binary logging
+
+commit 41ce1eb204130a974e15c63cec418b6197cf41c4
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-12 18:49:10 +0200
+
+ pixma: backend version 0.23.5
+
+commit a89ffe8f2c02d45cbd7a26608c02535b972d1dfa
+Merge: d5c0240f43a9 eb2f8364818d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 16:09:29 +0000
+
+ Merge branch 'genesys-remove-1bit-support' into 'master'
+
+ genesys: Remove support for scanning 1 bit output
+
+ See merge request sane-project/backends!212
+
+commit eb2f8364818d5fbd30e06e7a2b296699a1ad5af8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 18:11:52 +0300
+
+ genesys: Remove low-level support for 1-bit depth scans
+
+commit 0180c4c5d871c55ecd38c8ad9891c4a51dc70c1a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 18:11:51 +0300
+
+ genesys: Remove SCAN_FLAG_DYNAMIC_LINEART
+
+commit 8be96ecd6072a9199ab2cb6f105b79efab97b9e2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 18:11:50 +0300
+
+ genesys: Simplify code as dynamic_lineart is always enabled for lineart
+
+commit 3263b986ce7afc802c96276d4b876632bcdf3146
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 18:11:49 +0300
+
+ genesys: Remove support of --disable-dynamic-lineart option
+
+commit bff9f2fdc4a31f1f498223144814168f64aaf802
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 18:11:48 +0300
+
+ genesys: Fix crash during sane_exit() on high debug level
+
+commit 158cc81e206a03f4c25a66b2e3147c1c4c31abf8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 18:11:47 +0300
+
+ genesys: Simplify setup of session depth parameter
+
+commit d5c0240f43a9186f3149fc57b8c2ebcd30725208
+Merge: f6c9b83dcd7b 6638f00b8496
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-12 18:07:03 +0200
+
+ Merge remote-tracking branch 'origin/master'
+
+commit 6638f00b8496977d02ceda8f90208e029a6616f2
+Merge: 9581f29f135d 09336e0286ce
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 16:05:18 +0000
+
+ Merge branch 'genesys-fix-warnings' into 'master'
+
+ genesys: Fix warnings
+
+ See merge request sane-project/backends!211
+
+commit 09336e0286ce828c5288ac361ae3bd83e671cffb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 15:41:27 +0300
+
+ genesys: Remove code that has no effect
+
+commit cccd1e949ab53f6463bb8f97431dde9a0bc5e632
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 15:41:26 +0300
+
+ genesys: Fix unused exception warning
+
+commit 60b6465115eb391b93e84a237cabdfa7e88e2cb4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 15:41:25 +0300
+
+ genesys: Emit single vtable of ImagePipelineNodeCallableSource
+
+commit c8f2a815c03478bd61b16ad35f34cab7edf7ed30
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 15:41:24 +0300
+
+ genesys: Don't use std types from global namespace
+
+commit 1423db661858e566dbf17430c82e5471a69c0b2a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 15:41:23 +0300
+
+ genesys: Include missing includes
+
+commit 9581f29f135db2e4c23056d37997fe35416a3d5f
+Merge: 5ca0acd19a2a 42cace02c52e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 15:43:04 +0000
+
+ Merge branch 'genesys-fix-warnings' into 'master'
+
+ genesys: Fix warnings not enabled in regular build
+
+ See merge request sane-project/backends!209
+
+commit 42cace02c52e19a9520dcafaf56dfeb442eb7c50
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 12:09:51 +0300
+
+ genesys: Simplify version logging
+
+commit 4c90bfcaeea4c470c96cf7bc6c4b0f277742ec17
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 12:09:50 +0300
+
+ genesys: Remove uses of old-style casts where possible
+
+commit 8537ba21b7fa9dfca25068735d11916b1b8869e2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 12:09:49 +0300
+
+ genesys: Don't emit symbols of internal objects
+
+commit 9c7199c09ec88832b285add6178272e158f6101d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 12:09:48 +0300
+
+ genesys: Don't use std identifiers from global scope
+
+commit bb84d6d9e4b7c6de55cb432892af26ed89750354
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 12:09:47 +0300
+
+ genesys: Remove unused code
+
+commit e20e73f43465e79336a30792c16adb0dffc6084b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 12:09:46 +0300
+
+ genesys: Don't use C-style casts where possible
+
+commit 5ca0acd19a2a8958c4de78eb0ccffe520ca7d1b1
+Merge: ebfb939647c3 f8623e8f5380
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 15:41:59 +0000
+
+ Merge branch 'genesys-plustek-7300-7500i' into 'master'
+
+ genesys: Implement support for Plustek OpticFilm 7300 and 7500i scanners
+
+ See merge request sane-project/backends!210
+
+commit f8623e8f538063ba209b8b5fd235e3a5f9f866c3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 18:23:56 +0300
+
+ genesys: Add support for Plustek OpticFilm 7500i
+
+commit 20da3df5014abfc6b380a65853d5b522f02ded7e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 18:23:55 +0300
+
+ genesys: Add support for Plustek Opticfilm 7300
+
+commit ebfb939647c301bf2b4d9af87321c3e57596fa7d
+Merge: 6959c2d14e7f d3d86a457ed7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 15:39:20 +0000
+
+ Merge branch 'genesys-move-to-dir' into 'master'
+
+ genesys: Move the backend to a separate directory
+
+ See merge request sane-project/backends!207
+
+commit d3d86a457ed71884eb42efd2003599ea9beceec8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 17:43:32 +0300
+
+ po: Sync with latest source
+
+commit b5e4d86eb2699ef61c79e81835db0d0598267735
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 08:42:09 +0300
+
+ genesys: Use separate translation unit for conversion functions
+
+commit 9f44bab6e094527a323d4c4bf057fd65d399d39b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 08:42:08 +0300
+
+ genesys: Move backend files to a separate directory
+
+commit f6c9b83dcd7b6d9afcfcf337ec30d2ba5d8966e9
+Merge: 6959c2d14e7f ba9bc24fd204
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-12 18:00:51 +0200
+
+ Merge branch 'pixma/fix-debian10-compiler-warning_format-truncation'
+
+ See issue sane-project/backends#120
+
+commit ba9bc24fd2040351f5d00b9a6d4624bab57b0d4c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-12 17:59:13 +0200
+
+ pixma: replace snprintf() by strftime()
+
+ strftime() uses format specifiers with fixed lengths.
+
+commit 6959c2d14e7fff2c61bee5972304782dc84e07ea
+Merge: 9ce4cb089f1a 497c9aeba2f4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 15:06:44 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!208
+
+commit 497c9aeba2f4dc2a7a472b643b884fd4a7b3753c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 10:52:44 +0300
+
+ genesys: Wrap SANE_Fixed into class which automatically converts values
+
+commit b176366dcf375499868eb54057e5f4c8cbbf4924
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 10:52:43 +0300
+
+ genesys: Increase wait for home timeout to 200 seconds
+
+commit 8a1bc90521e205f7747cf2f12e0849ca7c0772aa
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 10:52:42 +0300
+
+ genesys: Simplify sanei_genesys_wait_for_home()
+
+commit 9ce4cb089f1ad10e91a5ce5d9bd222a06f764c41
+Merge: 9ccf586575ed 61e1f1bf08f6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 14:13:44 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!206
+
+commit 61e1f1bf08f6483608f876ffb085eb6c2d2a7317
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 08:18:47 +0300
+
+ genesys: Simplify usage of sanei_genesys_get_status()
+
+commit 26e418537ff694e1b92074d7032fa93aeaa6dc72
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 08:18:46 +0300
+
+ genesys: Reduce duplication of waiting for non-empty buffer state
+
+commit bf9d69d20df3c0b80a683cada2c23999699e6d5d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 08:18:45 +0300
+
+ genesys: Replace uses of SANE_Bool with bool
+
+commit 6da4e69d95f47db0afe8f020d4fc0dd926281069
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 08:18:44 +0300
+
+ genesys: Mark overridden functions consistently
+
+commit 44ac90d309e68d447026e375b02996fa54800219
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 08:18:43 +0300
+
+ genesys: Fix misuses of comma operator
+
+commit 7ac53bce10264644fe70b55af2a5fd13d4b16f82
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-01 08:18:42 +0300
+
+ genesys: Replace uses of nullptr
+
+commit 9ccf586575ed274fa9a11084dd831709e8b1fd08
+Merge: 0e4a2d107a95 0781f3fd3960
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 00:13:59 +0000
+
+ Merge branch 'genesys-fix-gl841-init-crash' into 'master'
+
+ genesys: Make sure calib_reg are available before writing into them
+
+ Closes #136
+
+ See merge request sane-project/backends!205
+
+commit 0781f3fd3960ae30d1b1f8ecfd842b82bc7df2bb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-12 02:59:11 +0300
+
+ genesys: Make sure calib_reg are available before writing into them
+
+commit 0e4a2d107a957e7476cee994c3373cdc7e1d7354
+Merge: 6933315e16a0 fc699d2bf573
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-10-06 02:47:36 +0000
+
+ Merge branch 'hh' into 'master'
+
+ uClibc-ng fixes
+
+ See merge request sane-project/backends!198
+
+commit fc699d2bf573444a55ada47ad2317dc47b67c6d7
+Author: Rosen Penev <rosenp@gmail.com>
+Date: 2019-10-02 18:41:07 -0700
+
+ treewide: Replace bzero with memset
+
+ bzero was removed in POSIX 2008. It is optionally unavailable with
+ uClibc-ng.
+
+ Signed-off-by: Rosen Penev <rosenp@gmail.com>
+
+commit 428bec49bfda8bf6502b97bb02e1eb292aa6e4e6
+Author: Rosen Penev <rosenp@gmail.com>
+Date: 2019-10-02 18:27:36 -0700
+
+ sanei_scsi: Replace bcopy with memcpy
+
+ bcopy was deprecated in POSIX 2008 and is optionally unavailable with
+ uClibc-ng.
+
+ Signed-off-by: Rosen Penev <rosenp@gmail.com>
+
+commit 5c0f0eb12896b26553de88401605391aefc84d02
+Author: Rosen Penev <rosenp@gmail.com>
+Date: 2019-10-02 18:25:02 -0700
+
+ pieusb_buffer: Define L_tmpnam if not available
+
+ uClibc-ng does not make it available for some reason.
+
+ Signed-off-by: Rosen Penev <rosenp@gmail.com>
+
+commit c320a72e32eb6651bd6f1918b83a7a44ca6fcc87
+Author: Rosen Penev <rosenp@gmail.com>
+Date: 2019-10-02 18:21:59 -0700
+
+ treewide: Replace mktemp by mkstemp
+
+ mktemp has been removed in POSIX 2008. uClibc-ng optionally does not make
+ it available.
+
+ Signed-off-by: Rosen Penev <rosenp@gmail.com>
+
+commit 6933315e16a04ba2a5170aeccc29e5de694d8889
+Merge: f8131fd6fe36 eb7d173916b6
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-05 21:29:57 +0200
+
+ Merge remote-tracking branch 'origin/master'
+
+commit eb7d173916b6dc56139d10f56f243eff75a8dbe1
+Merge: 9e8f7805742d ec8dadc0a065
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 08:14:36 +0000
+
+ Merge branch 'genesys-use-consistent-enum-names' into 'master'
+
+ genesys: Use consistent enum names
+
+ See merge request sane-project/backends!204
+
+commit ec8dadc0a065e038821ba27cd079e5eb504fd6a0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:52:07 +0300
+
+ genesys: Use consistent names for enums of Canon scanners
+
+commit 6a1055143f32bd0bef1cef3ae91594f496894bf1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:52:06 +0300
+
+ genesys: Use consistent names for enums of Plustek scanners
+
+commit 9e8f7805742db9318125ce77838cb61109a8632b
+Merge: 290d19a0974f a42a177a7ad5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 07:06:51 +0000
+
+ Merge branch 'genesys-strongly-typed-enums' into 'master'
+
+ genesys: Convert weakly typed enums to strongly typed enums
+
+ See merge request sane-project/backends!203
+
+commit a42a177a7ad54eb26e079b80f61a9bc7739212c0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:52:05 +0300
+
+ genesys: Bump calibration version
+
+commit 98b4742aab09eaa58c232b434fdd3f46a3c02b35
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:52:04 +0300
+
+ genesys: Use strong enum for motor step type
+
+commit 719a0cf55ce7ad84d2fc561fb9859c823113b783
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:52:03 +0300
+
+ genesys: Use strong enum for motor id
+
+commit 45aec261047cdb7a68e85bba93ced441cfb434ce
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:52:02 +0300
+
+ genesys: Use strong enum for gpio type
+
+commit d4ca0177a13cf21fce320a876ddcfa66c2490acb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:52:01 +0300
+
+ genesys: Use strong enum for ADC id
+
+commit df14234297f969ccab005227760bfb2bedc168ec
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:52:00 +0300
+
+ genesys: Use strong enum for sensor id
+
+commit 66937f646827fe558a96828980552f94fe6edde9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:51:59 +0300
+
+ genesys: Remove invalid comment
+
+commit 6971301590e5cbd7c8932ea9b2246c0df8253c33
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:51:58 +0300
+
+ genesys: Rename Genesys_Sensor::{CCD -> ccd}_start_xoffset
+
+commit 591309a29e4667ea9e5bb27b6535b0400e8738da
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-30 13:51:57 +0300
+
+ genesys: Use strongly typed enum for model id
+
+commit 290d19a0974f68a5037fb6a17e44af8f95fe9793
+Merge: 7a7009a79d86 7fb6582157ae
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 06:27:44 +0000
+
+ Merge branch 'genesys-model-flag-inverted-output' into 'master'
+
+ genesys: Introduce a model flag for inverted 16-bit output
+
+ See merge request sane-project/backends!202
+
+commit 7fb6582157ae2b55f38936e58b1ed8bf174b6055
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 09:01:32 +0300
+
+ genesys: Introduce a model flag for inverted 16-bit output
+
+commit 7a7009a79d86b772de70113b305ce9595537fe07
+Merge: 303cc7dedd3d 32dea7695672
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 06:21:12 +0000
+
+ Merge branch 'genesys-virtual-functions-for-cmdset' into 'master'
+
+ genesys: Use virtual functions for command set actions
+
+ See merge request sane-project/backends!201
+
+commit 32dea7695672d89245dff98448b0e697e83086f9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 09:01:31 +0300
+
+ genesys: Use virtual functions for command set actions
+
+commit 303cc7dedd3d1fb8b4cd64b53c1a40065f931835
+Merge: 65d9497ff30d 1face9299d86
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 05:30:18 +0000
+
+ Merge branch 'fix-memory-errors' into 'master'
+
+ Fix memory errors in various places
+
+ See merge request sane-project/backends!200
+
+commit 1face9299d866996e0d30d8692e7345c2388b254
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 01:01:32 +0300
+
+ genesys: Fix uninitialized option group names
+
+commit 6b3ba8af8a62545c90051b0dbf30b955d2462841
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 01:01:31 +0300
+
+ sanei_usb: Fix memory leak in USB testing mode
+
+commit 643ac8eab272cf1fe528bf79a94c873227d84614
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-05 01:01:30 +0300
+
+ genesys: Fix memory leaks in global data
+
+commit f8131fd6fe3652ce8930275898578ba56fc3ddc6
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-05 21:29:14 +0200
+
+ pixma: i-SENSYS MF640 Series networking tested
+
+commit 65d9497ff30dcc4748a9a5940d1c73b2a8a47c5c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-04 21:29:13 +0200
+
+ pixma: fix network scanner model for Canon i-SENSYS MF640 Series
+
+commit 67c732f2f03fa6528099990065a073c02d404f27
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-04 15:46:30 +0200
+
+ pixma: PIXMA MG3000 Series is working
+
+commit 8841b4e593141f70532379ec83c64c62855b7cce
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-04 12:32:56 +0200
+
+ pixma: i-SENSYS MF640 Series is working
+
+commit d78dc1a30be2fb8ac740f9f19a348ae134f5627d
+Merge: 4239428c87d0 3c449a75154e
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-04 11:22:09 +0200
+
+ Merge remote-tracking branch 'origin/master'
+
+commit 3c449a75154e9f7cdd2c599b2c2c81ec8300c1fe
+Merge: 899d6968fada 0146888d79e7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-10-04 04:16:07 +0000
+
+ Merge branch 'genesys-plustek-opticfilm-7200i' into 'master'
+
+ genesys: Implement infrared scanning support on OpticFilm 7200i
+
+ See merge request sane-project/backends!199
+
+commit 0146888d79e7abfb81d977df1dd6a75e65bb0e11
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-19 01:28:17 +0300
+
+ genesys: Implement infrared scanning support on OpticFilm 7200i
+
+commit 4239428c87d021825f554ca5a9c376df5a03136c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-04 11:21:43 +0200
+
+ pixma: backend version 0.23.4
+
+commit 14851d780d9c4743e8d5df55ebcc668a603b1a22
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-04 11:21:14 +0200
+
+ pixma: CanoScan LiDE 300 supports max. 2400 dpi
+
+commit 899d6968fada5caabde4f4c81a701354f6fbe666
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-01 22:58:54 +0200
+
+ pixma: backend version 0.23.3
+
+commit af09cf3ac8e33ca17875d6f3f6b5f05cf8c8e9f5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-01 22:57:18 +0200
+
+ pixma: add document feeder support for i-SENSYS MF260 Series
+
+commit cc6afc02ea9095204f364ad5231dcb922824dcfb
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-01 22:41:19 +0200
+
+ pixma: uncomment and edit experimental scanners list in sane-pixma.man
+
+ We have no experimental scanners yet. But environment variable PIXMA_EXPERIMENT
+ is specified and may be used again in future.
+
+commit 607eacaa7104c62cd6082c02f4fcf83c4523ddd9
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-10-01 22:37:15 +0200
+
+ pixma: reorder scanners in pixma.desc
+
+commit 9824dfe8b027de2aa8d09ad11eb05e5a3f14922f
+Merge: 1dc1da59428e ef29ed60c2a5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 22:15:02 +0000
+
+ Merge branch 'genesys-opticfilm-7200i' into 'master'
+
+ genesys: Implement support for Plustek Opticfilm 7200i
+
+ See merge request sane-project/backends!197
+
+commit ef29ed60c2a5928d6be916fc7e85efc692cb8a2f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-19 00:30:23 +0300
+
+ genesys: Implement support for Plustek Opticfilm 7200i
+
+commit 1dc1da59428ec6715dae67f0bc8a99f150fc73b3
+Merge: 4c9f9f0847ee 1bab4037f56f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 19:18:59 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!196
+
+commit 1bab4037f56fa36c59a32b809cbe8407890db2fb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-18 23:31:47 +0300
+
+ genesys: Remove unused command set name property
+
+commit 60534b89ae5217e55ea23eaf1b56d025d9764173
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-18 23:31:46 +0300
+
+ genesys: Store the calibration session into device struct
+
+commit 17fe9d8393147f4af94463c6212bba299724f0b1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-18 23:31:45 +0300
+
+ genesys: Print debug image of raw data coming from the scanner
+
+commit 4c9f9f0847ee6d2e9ebc406a28f63889473068c4
+Merge: 7df7acbafd58 323f37753a66
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 18:44:12 +0000
+
+ Merge branch 'genesys-host-side-calibration' into 'master'
+
+ genesys: Implement support for host-side calibration
+
+ See merge request sane-project/backends!195
+
+commit 323f37753a66a8f1ebe35fff8a12fd6e3c6a6963
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-18 03:54:52 +0300
+
+ genesys: Implement support for host-side calibration
+
+commit 7df7acbafd584bb041d0ef73220edcedafd4cc31
+Merge: cf5f30dec309 5e2a0f572407
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 18:31:46 +0000
+
+ Merge branch 'genesys-gl843-image-calibration' into 'master'
+
+ genesys: Use image pipeline for calibration on gl843
+
+ See merge request sane-project/backends!194
+
+commit 5e2a0f5724070d8813657812c54c82c2f5e2292c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-17 17:21:06 +0300
+
+ genesys: Use Image in gl843_search_strip()
+
+commit 08a4d8455f8248577324e2441f29db83589c3d9e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-17 17:21:05 +0300
+
+ genesys: Use Image in gl843_coarse_gain_calibration()
+
+commit 074603598085a1850005076dde3b8793772aae3d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-17 17:21:04 +0300
+
+ genesys: Use Image in gl843_offset_calibration()
+
+commit ac54f7f9bd511c1dd545037d49390f5046384014
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-17 17:21:03 +0300
+
+ genesys: Use Image in gl843_led_calibration()
+
+commit 4a6216501416bd8b1d84e90c5072b91be0329f1e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-17 17:21:02 +0300
+
+ genesys: Use Image in gl843_search_start_position
+
+commit 93395bd24e21d9555fbe69d7bae89f9e22c49d33
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-17 17:21:01 +0300
+
+ genesys: Add wrapper to retrieve raw channel value from image
+
+commit 4f74dceaba9e02e967c0b94390642ace399b16e3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-17 17:21:00 +0300
+
+ genesys: Add wrapper that reads Image from the scanner
+
+commit a5006703a33c4a14a6a65bcdda608175cdc7d096
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-17 17:20:59 +0300
+
+ genesys: Implement wrapper that writes Image to pnm file
+
+commit 093439153e553d10824598ba935097307ef4c807
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-17 17:20:58 +0300
+
+ genesys: Add a way to retrieve full output of pipeline as an image
+
+commit cf5f30dec30902be8172721eb8130ec299080346
+Merge: b3445a1803ef 3c99d405e0ce
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 18:23:12 +0000
+
+ Merge branch 'genesys-fix-depth-option' into 'master'
+
+ genesys: Fix handling of the `--depth` option
+
+ See merge request sane-project/backends!193
+
+commit 3c99d405e0ced32f9cca9fb5de0f6362ec48ccbf
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 12:44:01 +0300
+
+ genesys: Fix the default value of the depth option
+
+commit a93d80651f5bf2658a412eb31013f7052140972d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 12:44:00 +0300
+
+ genesys: Don't disable depth option even if one value is possible
+
+commit b3445a1803ef372240485b0de8a7c14bbe02fb19
+Merge: a30daa96d150 b09aa6584d8e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 18:09:59 +0000
+
+ Merge branch 'genesys-move-register-lists-to-separate-files' into 'master'
+
+ genesys: Move register address lists to separate files
+
+ See merge request sane-project/backends!192
+
+commit b09aa6584d8e52a3565b7c775cad37842c039885
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 11:36:02 +0300
+
+ genesys: Add include guards to headers where missing
+
+commit dc1350781f7874cb580b25397dceb4e779f58b7e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 11:36:01 +0300
+
+ genesys: Move register address lists to separate files
+
+commit a30daa96d150b1c79fac765a7f01be5bc45407d6
+Merge: 7bd4a1db49b9 11c80b129ee9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 18:00:13 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!191
+
+commit 11c80b129ee92b2d80dab4e895cc4e9463075b8c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:50:12 +0300
+
+ genesys: Extract wait_until_has_valid_words()
+
+commit b58192493e33a54ae53a209f8a8d181795e17b44
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:50:11 +0300
+
+ genesys: Properly use 16-bit data when calibrating
+
+commit 7bd4a1db49b94ed4c72aa445626cadda0d7ef30d
+Merge: 32c49e5ec1e4 599443bf72aa
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 17:49:38 +0000
+
+ Merge branch 'genesys-image-limit-output-sheetfed-scanners' into 'master'
+
+ genesys: Fix output limiting for sheetfed scanners
+
+ See merge request sane-project/backends!190
+
+commit 599443bf72aac832d4602c56556d996b5127651e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:34:15 +0300
+
+ genesys: Remove uses of dev->read_bytes_left_after_deseg
+
+commit 5e60cc3636b85d01f26a731194c9ec443149e98a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:34:14 +0300
+
+ genesys: Simplify calculations when on early document end
+
+commit 20ad0c8c2efa34d65fc5da887892ffc6c12dcc96
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:34:13 +0300
+
+ genesys: Add output_line_bytes_requested to the session struct
+
+commit 88adea9cd6697674bace583a48e05019bd4a4c90
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:34:12 +0300
+
+ genesys: Add the number of total bytes to the session struct
+
+commit c3e7411aca85515ae6c0f20e7e372a764f272788
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:34:11 +0300
+
+ genesys: Allow limiting the amount of data read from pipeline sources
+
+commit 663e3a99ed9008cd1eb8650f15b6211104d558c9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:34:10 +0300
+
+ genesys: Add a way to report persistent eof() status from pipeline
+
+commit 2e10f4ac172b3431dbf852668589533bfda8a8f8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:34:09 +0300
+
+ genesys: Report failures to produce full lines in pipeline
+
+commit f2b1b4449e5d4af6b852877fcf7a22afd76e420f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-16 09:34:08 +0300
+
+ genesys: Add a way to use an image as a source for a pipeline
+
+commit 32c49e5ec1e4b204f1da2320b6323abb9c6293f1
+Merge: b6eef0861081 e53058e8b085
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 17:25:50 +0000
+
+ Merge branch 'genesys-image-full-ownership' into 'master'
+
+ genesys: Add class that handles full ownership of image data
+
+ See merge request sane-project/backends!188
+
+commit e53058e8b085351ac907fe72897f32483cd77126
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 15:27:11 +0300
+
+ genesys: Add class that handles data ownership for full image
+
+commit 6ced865d53570f04a66855fb324817fa24e5fb50
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 15:27:10 +0300
+
+ genesys: Move pixel-related functionality to separate file
+
+commit b6eef08610810a9b38f98fc5c233f4138c230358
+Merge: 28b216513e86 ab62a1448cb1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-29 04:33:06 +0000
+
+ Merge branch 'genesys-session-calib-pixel-offsets' into 'master'
+
+ genesys: Use session for pixel coordinates during calibration
+
+ See merge request sane-project/backends!189
+
+commit ab62a1448cb11a2dfb6fd9b3393850f087acc202
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 15:40:31 +0300
+
+ genesys: Use session for pixel coordinates during calibration
+
+commit 28b216513e86ae57f9baea5bce464e825245313a
+Merge: 7b66a8f732b0 050b0c1d8af5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-28 18:22:42 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!185
+
+commit 050b0c1d8af5930b9f3faa64b7de1f15abfaeb1e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 14:46:48 +0300
+
+ genesys: Invert meaning of GENESYS_FLAG_LAZY_INIT
+
+commit c7bb34c998a08802e5eba1e2d5a87686d1e0e8e5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 14:46:47 +0300
+
+ genesys: Simplify calibration calculations on GL843
+
+commit 079fa25b0d6e864124fe2bb8c198cebab202836f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 14:46:46 +0300
+
+ genesys: Allow full value range of the frontend registers to be set
+
+commit 2bb31ed5d8c2f107bb32235d7d2442f30a30a92f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 14:46:45 +0300
+
+ genesys: Remove duplicate logs of information included into session
+
+commit 7b66a8f732b01f6366694c941180dab7bd2e6735
+Merge: f2019befd755 b9346f0f79b8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-28 18:19:58 +0000
+
+ Merge branch 'genesys-override-dpi' into 'master'
+
+ genesys: Add a way to override logical dpi and physical pixel counts
+
+ See merge request sane-project/backends!187
+
+commit b9346f0f79b87a25a58814dddfc9b6331feda5b4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 15:14:18 +0300
+
+ genesys: Add a way to multiply the pixel counts sent to the scanner
+
+commit 00b8441dfab058e01d5b9168755f241d16e3deeb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 15:14:17 +0300
+
+ genesys: Add a way to override logical HW dpi
+
+commit 34c7a4cb2910848da5beeace0ceefe165f274d6c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 15:14:16 +0300
+
+ genesys: Rename {dpihw => register_dpihw}_override
+
+commit f2019befd7558421ae13022d0e92798fd032f145
+Merge: 345be52f9e32 db36dd81036a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-28 18:02:33 +0000
+
+ Merge branch 'genesys-session-pixel-offsets' into 'master'
+
+ genesys: Move pixel coordinate calculation to a single place
+
+ See merge request sane-project/backends!186
+
+commit db36dd81036ac7ee9d5c15efc7f117805546f81d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-15 10:36:58 +0300
+
+ genesys: Move pixel coordinate calculation to a single place
+
+commit 345be52f9e322b30a28910238492a9ea30631096
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-09-28 20:33:26 +0900
+
+ nec: Fix [-Werror=implicit-fallthrough] warning
+
+ The fallthrough would log a message that is probably misleading.
+
+commit b0b8e8f980692c67ba8aff760344c9305ea02013
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-09-28 18:07:27 +0900
+
+ Revert "CI: Speed up compile stage jobs"
+
+ The additional variables: section in the template hides any variables
+ set for each job that uses the template!
+
+ This reverts commit 14e7ba47dda2ee7389e8db21268cd49e80ea968a.
+
+commit e00d5462dee98bd6fa7d8672fba730af9874db87
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-09-28 17:43:06 +0900
+
+ Fix libusb related [-Werror=deprecated-declarations] warnings
+
+ See http://libusb.sourceforge.net/api-1.0/group__libusb__lib.html
+
+commit 29580b08b55a60209c03ce4bf17a834f0904ead3
+Merge: bf3e170dba7a be4c3c1f699c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-28 05:49:11 +0000
+
+ Merge branch 'genesys-deduplicate-shading-calibration' into 'master'
+
+ genesys: Deduplicate shading calibration
+
+ See merge request sane-project/backends!184
+
+commit be4c3c1f699cef1aa1f169fba9a736f4c51467cb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-14 13:49:23 +0300
+
+ genesys: Reduce duplication of shading calculations
+
+commit 580b9db56238ee8f98a9d6e1b4cbc7c7cad1ce04
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-14 13:49:22 +0300
+
+ genesys: Don't duplicate actions when DARK_CALIBRATION flag is off
+
+commit 8790940cc343b892a1a4c4912da6ed09e22bd8df
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-14 13:49:21 +0300
+
+ genesys: Remove code that has no effects
+
+commit 154ab4578b1f87d9791e359473f2003caa4ba5e6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-14 13:49:20 +0300
+
+ genesys: Extract calculation of dummy dark shading
+
+commit 6f29caef0d7125c91e488b13e826c115a6ab8998
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-14 13:49:19 +0300
+
+ genesys: Extract post-shading repark out of white calibration function
+
+commit bf3e170dba7a1c0a01ae8e207247a368f75fa00c
+Merge: f3d0a7c17cc2 bee1179e0efa
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-28 05:48:28 +0000
+
+ Merge branch 'genesys-use-image-pipeline' into 'master'
+
+ genesys: Use new image operations pipeline for image data reading and conversion
+
+ See merge request sane-project/backends!183
+
+commit bee1179e0efa7a00d45bddaedd74f5819ee1ad74
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 17:04:05 +0300
+
+ genesys: Print debug images of intermediate pipeline output
+
+commit 41addb973065b0b8e68f975ae060df49ebe57ded
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 17:04:04 +0300
+
+ genesys: Fix debug identifiers
+
+commit 9cd1de5c5268a89b20c21e2777229bde08f8e3d6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 17:04:03 +0300
+
+ genesys: Add a way to debug image pipelines
+
+commit cd712f9f9942c424ee1c554f81ba8fa038ed41c7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 17:04:02 +0300
+
+ genesys: Use new image pipeline for row scaling
+
+commit bf7e890fa4d6c17d2313d3eaf0f90d68c9ae98cd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 17:04:01 +0300
+
+ genesys: Use new image pipeline for CCD line shifts and unstagger
+
+commit 0b1bfa3f1201b5cfa9e93ecbc4fcf00a57d6b63d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 17:04:00 +0300
+
+ genesys: Swap 16-bit pixel endian on big endian machines
+
+commit cae3015b66ab340cf585fb224745e73ae6c53ae6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 17:03:59 +0300
+
+ genesys: Use new image pipeline for format and CIS reordering
+
+commit f3d0a7c17cc2244059773116091e481ed5ee116b
+Merge: d1badffa886b 8cf5735278af
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-28 05:34:34 +0000
+
+ Merge branch 'genesys-fix-pow-ambiguity' into 'master'
+
+ genesys: Fix ambiguity of std::pow() on old compilers
+
+ See merge request sane-project/backends!182
+
+commit 8cf5735278af26afd6c0b563915f3be879ad14c4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-28 06:56:03 +0300
+
+ genesys: Fix ambiguity of std::pow() on old compilers
+
+commit d1badffa886b1065322978a8ea8e5b94d88abde5
+Merge: 9eefac82ca98 802a62ee2cd1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-28 03:54:56 +0000
+
+ Merge branch 'genesys-fix-output-line-bytes-raw' into 'master'
+
+ genesys: Fix calculation of session output_line_bytes_raw
+
+ See merge request sane-project/backends!181
+
+commit 802a62ee2cd13336ef0889281aa2da1a7bf2bbe7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 16:40:42 +0300
+
+ genesys: Fix incorrect calculation of output_line_bytes_raw on gl646
+
+commit 40b2d8928f22e5885dedc8eb424bd5590ce57647
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 16:40:41 +0300
+
+ genesys: Fix definition of output_line_bytes_raw on gl841 CIS scanners
+
+commit 434b03d4986febf22bd65c06521540a0296fe2c9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 16:40:40 +0300
+
+ genesys: Fix definition of output_line_bytes_raw on gl124
+
+commit 9eefac82ca98faf28bb56271b8526331413a2c75
+Merge: a500f577c04a 97387e208900
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-09-28 03:09:07 +0000
+
+ Merge branch '103-add-old-changelogs-to-source-tarball' into 'master'
+
+ Resolve "Source tarball does not include older ChangeLogs"
+
+ Closes #103
+
+ See merge request sane-project/backends!127
+
+commit 97387e20890035b4685b939415af46b21958903f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-28 21:21:07 +0900
+
+ Install ChangeLogs/ files in $docdir/ChangeLogs/
+
+ This makes the trailing comment in ChangeLog correct for both the
+ repository and installed documentation.
+
+ Complements ee2653b02b75e6b99a0ff77745a4a738049d58db.
+
+commit 8f3b84f6f4e166cfbae73220d888eaa9d7d7025d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-26 21:53:09 +0900
+
+ Adjust ChangeLog trailer comment to match Makefile.am comment
+
+commit 2baee4914d0d31aac01e939d91885b6695bcc47d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-26 21:48:52 +0900
+
+ umax_pp: Drop reference to ChangeLog in code comment
+
+commit eb5382c7535caf2deedfe54bc5e455de4dd55b11
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-26 21:48:09 +0900
+
+ mustek_pp: Drop unused ChangeLog: references from comments
+
+commit fe6bac727f6c557df01f0385a56b8b5133561ea0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-26 21:43:52 +0900
+
+ doc: Drop moving of ChangeLog files with each release. See #103
+
+commit 47f0b5dee2af853c6f024edc4d8affd9f225656d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-26 21:43:25 +0900
+
+ doc: Update ChangeLog related documentation
+
+commit 2a9d98be6e9ec22507c13b3c5cceba3bd234ec8a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-24 17:24:23 +0900
+
+ Resurrect ChangeLog-1.0.11
+
+ It was missing in the ChangeLogs/ directory. Content has been dug up
+ from the ChangeLog file for the RELEASE_1_0_11 tag.
+
+commit ee2653b02b75e6b99a0ff77745a4a738049d58db
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-24 17:10:27 +0900
+
+ Include ChangeLogs/ directory content in source tarball. Re #103
+
+ The files are installed next to the ChangeLog file in $docdir. There
+ will be *no* $docdir/ChangeLogs/ directory.
+
+commit a500f577c04a300cddcacccffd52de59c3f80909
+Merge: c9e95999f350 efbfcb0a7fc8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 22:43:07 +0000
+
+ Merge branch 'genesys-calibration-variable-names' into 'master'
+
+ genesys: Improve clarity of calibration offset variable names
+
+ See merge request sane-project/backends!180
+
+commit efbfcb0a7fc88fdfda0aeb13d0b32379d7e9100d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 16:03:21 +0300
+
+ genesys: Improve clarity of calibration offset variable names
+
+commit c9e95999f350a2145797954adcc770da91d4ffd7
+Merge: da745b2f3007 661aa3bcdb42
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 22:38:55 +0000
+
+ Merge branch 'genesys-generic-register-set' into 'master'
+
+ genesys: Make GenesysRegisterSettingSet generic
+
+ See merge request sane-project/backends!179
+
+commit 661aa3bcdb42a30ff02ffbe7d3f74ad09573a4a6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 15:56:44 +0300
+
+ genesys: Make GenesysRegisterSettingSet generic
+
+commit da745b2f3007d3450845af1fde87265f23366aa3
+Merge: dc52dc84f047 d4e4bf35c127
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 22:35:42 +0000
+
+ Merge branch 'genesys-image-pipeline-segmented-sensors' into 'master'
+
+ genesys: Use the new image pipeline for segmented sensor desegmentation
+
+ See merge request sane-project/backends!178
+
+commit d4e4bf35c1275448bb212e33ee5eebe9afa505cf
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 15:37:33 +0300
+
+ genesys: Fix a bug in segmented sensors when scanning 16-bit data
+
+commit af17797d3ce91aad2b7ff9cb604955716a1195ad
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 15:37:32 +0300
+
+ genesys: Use new image pipeline for handling segmented sensors
+
+commit 7f852e0417a7524b6abb7bc6e428cee87dbef20d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 15:37:31 +0300
+
+ genesys: Fix depth calculation for segmented sensors in lineart mode
+
+commit e89c6a0aab188938b77c885946ab163ba1cbfa64
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 15:37:30 +0300
+
+ genesys: Remove accidental uses of C++14 APIs
+
+commit dc52dc84f047749abf5e226f2d4c23c0c8fa131c
+Merge: 7a8da5c40bf4 9a844e1eded5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 21:56:17 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!177
+
+commit 9a844e1eded54687aa4094359fdabe5f233f24d2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 11:36:56 +0300
+
+ genesys: Compute what image processing will be needed in session
+
+commit a5efb969789f1ea8f663267ed5e1012ac7c35831
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 11:36:55 +0300
+
+ genesys: Replace uses of Genesys_Color_Order with ColorOrder
+
+commit 05ed63fa34edd1e3c842b996f85d554bee8d8df1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 11:36:54 +0300
+
+ genesys: Move setup of read buffer to a single function
+
+commit 28d15784e4e3ee5750203f7bb401d716037df436
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 11:36:53 +0300
+
+ genesys: Remove unused code
+
+commit 8ed2cd991b24f64ff6945ee67adaa93e40dcd43a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 11:36:52 +0300
+
+ genesys: Initialize frontend state from the outset
+
+commit 7a8da5c40bf4c4e08f7da21a4a4f33e0ac2bd228
+Merge: 0440123bdc5b d73915ba197a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 21:32:02 +0000
+
+ Merge branch 'genesys-analog-devices-adc-calibration' into 'master'
+
+ genesys: Implement gain calibration for Analog-Devices ADC
+
+ See merge request sane-project/backends!176
+
+commit d73915ba197a9d33dc9e3e8131660c01d2c6b833
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 11:01:48 +0300
+
+ genesys: Implement gain calibration for Analog-Devices ADC
+
+commit e45e668326a4499a8586ab94b6a7bb2a2380efa3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 11:01:47 +0300
+
+ genesys: Extract gain computation into a separate function
+
+commit 94c1cf1d5a640aa6a40b93d3f37dba3a60816477
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 11:01:46 +0300
+
+ genesys: Add clamp() utility function
+
+commit 0440123bdc5b6104a44098c4d066d8c3404cd413
+Merge: 4cd9dbb73d74 ad1067ad03b4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 21:21:09 +0000
+
+ Merge branch 'genesys-gl843-segmented-sensors' into 'master'
+
+ genesys: Add support for segmented sensors on gl843
+
+ See merge request sane-project/backends!175
+
+commit ad1067ad03b4a043372ce6c2ec6408448e65e4ff
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 10:52:35 +0300
+
+ genesys: Add support for segmented sensors on gl843
+
+commit 4cd9dbb73d745891732f3ba3c2b48268f7b1a713
+Merge: c59f9a037bc5 1c7ef4b55ee9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 21:06:44 +0000
+
+ Merge branch 'genesys-image-library' into 'master'
+
+ genesys: Implement a streaming image library
+
+ See merge request sane-project/backends!174
+
+commit 1c7ef4b55ee998af7612a68e50de97a5fbc5a0e8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 10:38:05 +0300
+
+ genesys: Implement image data source that mimics current reading from USB
+
+commit 7d7a3952773258027c92d331f9d7e6e9d6ba6f69
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-13 10:38:04 +0300
+
+ genesys: Implement library for image manipulation
+
+commit c59f9a037bc5a53ad4dfd23f28c602a8e0bac557
+Merge: 17dc1aee81b2 2f3d9e9d7682
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 20:55:51 +0000
+
+ Merge branch 'genesys-default-scan-method' into 'master'
+
+ genesys: Add a way to specify default scan method
+
+ See merge request sane-project/backends!173
+
+commit 2f3d9e9d7682bce0cd87bdf3e7322943a27742ab
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 23:48:16 +0300
+
+ genesys: Don't crash when default scan method is not supported
+
+commit 4c18ef27a247c4a1d04ee34d2d7f00c7063683e7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 23:48:15 +0300
+
+ genesys: Raise exception when device structs are not found
+
+commit c2115543db126832450bbf4d2a66b82d53ce4a85
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 23:48:14 +0300
+
+ genesys: Implement a way to set default scan method used internally
+
+commit c0010fcd9f26f9af34de7b49f3aef90dc938896e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 23:48:13 +0300
+
+ genesys: Fix incorrect scan method in move function on gl646
+
+commit 17dc1aee81b247c973d82a045e66fec871d5af9b
+Merge: 60ce6b5c0128 9b7ab9372786
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 20:44:47 +0000
+
+ Merge branch 'genesys-desegmentation-refactor' into 'master'
+
+ genesys: Simplify desegmentation state (part 6)
+
+ See merge request sane-project/backends!172
+
+commit 9b7ab9372786c63a90c01817f25ad17dbb12808e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:39:22 +0300
+
+ genesys: Add unit test for genesys_fill_segmented_buffer()
+
+commit 502478a40d66030895abcc351250fc040bfe41a9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:39:21 +0300
+
+ genesys: Reindent genesys_fill_segmented_buffer()
+
+commit c2c65f29c9a2fa6695141532f104f00d1d7bfd17
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:39:20 +0300
+
+ genesys: Simplify genesys_fill_segmented_buffer()
+
+commit 60ce6b5c0128676b6d5aed75ee6ddd73e91776c8
+Merge: 015252e4a828 e0974ab74ac9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 20:37:08 +0000
+
+ Merge branch 'stv-werror-fix-constant-redefinition' into 'master'
+
+ stv: Fix macro constant redefinition
+
+ See merge request sane-project/backends!171
+
+commit e0974ab74ac90b47975739d69b04ff8e2b86a7cb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-20 17:29:41 +0300
+
+ stv: Fix macro constant redefinition
+
+commit 015252e4a8285c9b39cb0e8ba9aaf883ef7187e5
+Merge: 3618a244af39 0290a263946e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 20:35:13 +0000
+
+ Merge branch 'sanei-usb-optimize-test-mode-bulk-transfers' into 'master'
+
+ sanei_usb: Optimize bulk USB transfers in testing mode
+
+ See merge request sane-project/backends!170
+
+commit 0290a263946e233c743b4721e56fdc98b1624b1f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 23:19:52 +0300
+
+ sanei_usb: Optimize bulk USB transfers in testing mode
+
+commit 3618a244af39ea26cf7c9cbfc914d9ccd2706e69
+Merge: 86b9768dd323 0267eeeeae4b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 19:44:15 +0000
+
+ Merge branch 'genesys-desegmentation-refactor' into 'master'
+
+ genesys: Simplify desegmentation state (part 5)
+
+ See merge request sane-project/backends!169
+
+commit 0267eeeeae4be4b2dbf45d8be3e1d0be5efb0e12
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:22:00 +0300
+
+ genesys: Remove the desegmentation state struct
+
+commit 3d023060a35fb8b1cf2311746340f83d1118c59e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:21:59 +0300
+
+ genesys: Move desegmentation skip_bytes to session struct
+
+commit 192dd886cd9e7fd368c339f4ef3526b082a18c83
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:21:58 +0300
+
+ genesys: Use common code path to compute ..._segment_pixel_group_count
+
+commit 4870a9f97529b09fa9cf013c76b3e40329078024
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:21:57 +0300
+
+ genesys: Properly set conseq_pixel_dist_bytes on gl124
+
+commit 95eb6a72ddf52a1d95b5427a6d441d9992bd9ce1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:21:56 +0300
+
+ genesys: Use single code path to compute session output_line_bytes_raw
+
+commit 1f4a5311d74b518b25411bc12da4e7d5974b7d20
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:21:55 +0300
+
+ genesys: Rename DesegmentationState::raw_{channel => line}_bytes
+
+commit 61d4779402c7c79852187f7e8916ff661d8963f2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:21:54 +0300
+
+ genesys: Remove erroneously named raw_line_bytes
+
+ The raw_channel_bytes is what we store the line information to. Turns
+ out raw_line_bytes is unnecessary and only ever used by error.
+
+commit 4df8872ab3559e7162f99fab4d1078f5db1827e4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:21:53 +0300
+
+ genesys: Simplify raw_channel_bytes computation more
+
+ On the chipsets in question, session.hwdpi_divisor == sensor.optical_res
+ / sensor.get_register_hwdpi(...), so the divisor cancels out with the
+ rest of the expression.
+
+commit 95a3836f1a08252d5d7f32748389d1175bf93d1c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:21:52 +0300
+
+ genesys: Simplify raw_channel_bytes calculation
+
+commit 98320f5b8126e638e0e0064d43555b63b80f9515
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:21:51 +0300
+
+ genesys: Don't overflow in multiply_by_depth_ceil
+
+commit 86b9768dd3238b9238751e4a969edb476f084b93
+Merge: 16b0033439fd eb0882ecc445
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 19:22:08 +0000
+
+ Merge branch 'genesys-desegmentation-refactor' into 'master'
+
+ genesys: Simplify desegmentation state (part 4)
+
+ See merge request sane-project/backends!168
+
+commit eb0882ecc4459d6e8982e97446b34f1f9357b517
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:11:20 +0300
+
+ genesys: Use common code path to compute session optical_pixels_raw
+
+commit 3a323a751a60e1091d8bde2a569a7daadd072db1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:11:19 +0300
+
+ genesys: Use common code path to compute session conseq_pixel_dist_bytes
+
+commit 16b0033439fd56280abd124a4d94852f3e033b0e
+Merge: 4f1890f19536 693ff3e77a46
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 00:32:05 +0000
+
+ Merge branch 'genesys-fix-cxx11-build' into 'master'
+
+ genesys: Remove accidental use of C++14 features
+
+ See merge request sane-project/backends!166
+
+commit 693ff3e77a46ed2318b4528e94c595fddf1b537f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-27 03:10:53 +0300
+
+ genesys: Remove accidental use of C++14 features
+
+commit 4f1890f19536637f0b697dcb21a3998171cb2e04
+Merge: a4729cff19aa b856c2cb6f89
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-24 22:46:08 +0000
+
+ Merge branch 'genesys-desegmentation-refactor' into 'master'
+
+ genesys: Simplify desegmentation state (part 3)
+
+ See merge request sane-project/backends!165
+
+commit b856c2cb6f8946a2560959783d6c85bbbb766fed
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:24:32 +0300
+
+ genesys: Remove used_pixels to simplify segment setup
+
+commit 0a10bcef59bc1cd021cc6b97fb561e551f468845
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:24:31 +0300
+
+ genesys: Refactor the segment setup code to expose chip similarities
+
+commit 41b5e5f5ff3932758348e2d673fa9ab492617dda
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:24:30 +0300
+
+ genesys: Use common code path to compute session segment_count
+
+commit ae784d9927b9c0c5395d3eb7b7189971a146fdc2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:24:29 +0300
+
+ genesys: Simplify segment count calculation
+
+commit a4729cff19aa736fa5c0fb1c2941774bfee2e3e2
+Merge: e4e1a02733dd a830fca943fc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-24 21:11:09 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!164
+
+commit a830fca943fcf6c2a30669392b8dea3ab68e65ca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:40:57 +0300
+
+ genesys: Remove GL123 enum
+
+commit 322a9a6810f18a45055eae2c90e73c457ee02880
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:40:56 +0300
+
+ genesys: Don't modify session in *_init_scan_regs()
+
+commit 80d0129f4415a55325f53f3622802f05d4e8f6e5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:40:55 +0300
+
+ genesys: Pass start pixel to *_init_optical_regs_scan() via session
+
+commit c0e465784e7fd85ce811b15159ee8b849b68f158
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 22:40:54 +0300
+
+ genesys: Deduplicate different get_sensor_profile implementations
+
+commit e4e1a02733dd3c7733e747bb6e2f7b30db7c9fcf
+Merge: 37b60ada834d 52baae02dca2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-24 15:08:50 +0000
+
+ Merge branch 'genesys-session-hwdpi-divisor' into 'master'
+
+ genesys: Use common code path to compute session hwdpi divisor
+
+ See merge request sane-project/backends!163
+
+commit 52baae02dca2f0bd346d9f9453b6afeff03874da
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:55:30 +0300
+
+ genesys: Use common code path to compute session hwdpi_divisor
+
+commit f480521a231596f5c3ce35dbc7466b6913aa34af
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:55:29 +0300
+
+ genesys: Pass sensor profile directly to *_setup_sensor() where possible
+
+commit 37b60ada834d707618e494d6b94f4f7b5d0217f9
+Merge: 8539f350fd3b 676831dc7bf9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-24 14:41:17 +0000
+
+ Merge branch 'genesys-desegmetation-refactor' into 'master'
+
+ genesys: Simplify desegmentation state (part 2)
+
+ See merge request sane-project/backends!162
+
+commit 676831dc7bf9cab36fe72786e8a89d935ea8da0b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:26:58 +0300
+
+ genesys: Move Genesys_Device::curr to DesegmentationState
+
+commit f92253adc86b425abc228ddbed6de1dac67f40c3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:26:57 +0300
+
+ genesys: Move Genesys_Device::segnb to DesegmentationState
+
+commit 15996983ba34868927750665dd49b3d13b76a2c8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:26:56 +0300
+
+ genesys: Rename SensorProfile::segment_{count => size}
+
+commit 31820384de76a71e83b6fa003b2d2c95d2a85272
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:26:55 +0300
+
+ genesys: Move Genesys_Device::skip to DesegmentationState
+
+commit 9bd14f535059e674016a96b1f04a38533bc15a4b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:26:54 +0300
+
+ genesys: Move Genesys_Device::len to DesegmentationState
+
+commit 07d8db5423cae48cbe247f3a3b6f42a1c33aa6ca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:26:53 +0300
+
+ genesys: Move Genesys_Device::dist to DesegmentationState
+
+commit dd702968279b4328d0650853a15cc4bf96542494
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:26:52 +0300
+
+ genesys: Move desegmentation line width data to a separate struct
+
+commit 827c3a049db4391501dda81f2999df8e4d011403
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 21:26:51 +0300
+
+ genesys: Rename ScanSession::output_{line_channel => channel}_bytes
+
+commit 8539f350fd3bfe654a5fd680428fa97cea352034
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-09-24 21:22:13 +0900
+
+ sanei_wire: Fix sanei_w_void function signature
+
+ This function needs to have the same number of arguments as any other
+ functions passed to sanei_w_array() via its w_element argument, i.e.
+ sanei_w_char and sanei_w_word, in the w_option_value() implementation
+ in sanei/sanei_net.c.
+
+ Fixes [-Werror=cast-function-type] compiler warning.
+
+commit cad4085565437579884698e42c38eb0a685ad4a7
+Merge: ce2d9840a741 cbb7e953505e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-22 20:47:19 +0000
+
+ Merge branch 'genesys-session-buffer-sizes' into 'master'
+
+ genesys: Use common code path for computing session buffer sizes
+
+ See merge request sane-project/backends!161
+
+commit cbb7e953505e09f049e142f8cf30d903fb1d1d50
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 20:28:46 +0300
+
+ genesys: Use common code path to compute session buffer sizes
+
+commit a0cead1cd5d43bba44fc400676ee52b86fc8c186
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 20:28:45 +0300
+
+ genesys: Pass asic type to sanei_genesys_get_bulk_max_size()
+
+commit ce2d9840a741906844de36e5cf96575e33d02f4d
+Merge: f44c0bb6802a 88d6cdcc32c1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-22 18:29:02 +0000
+
+ Merge branch 'genesys-desegmentation-refactor' into 'master'
+
+ genesys: Simplify desegmentation state (part 1)
+
+ See merge request sane-project/backends!160
+
+commit 88d6cdcc32c13114531b9879ece1410b56e3de09
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 20:06:38 +0300
+
+ genesys: Rename read_bytes_left -> read_bytes_left_after_deseg
+
+commit 96a893bb0d9c46ae2ce0a4824d7fc63f863e8c0d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 20:06:37 +0300
+
+ genesys: Simplify words_per_line calculations
+
+commit 463f5f4364b8e702369af10f28fb78bc7b253633
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 20:06:36 +0300
+
+ genesys: Don't duplicate data passed to *_init_optical_regs_scan()
+
+commit f44c0bb6802a6263ff692d0bcdebef21f2c64ea8
+Merge: 37734c880d46 ed4419e73d63
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-22 17:39:15 +0000
+
+ Merge branch 'genesys-session-line-sizes' into 'master'
+
+ genesys: Use common code path to compute session line sizes
+
+ See merge request sane-project/backends!159
+
+commit ed4419e73d631f04e9f6b2da07ea1adc2429f3fc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 19:49:51 +0300
+
+ genesys: Use common code path to calculate session line sizes
+
+commit 9915608309a803c4cc306158c896117cb64ccf76
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 19:49:50 +0300
+
+ genesys: Extract multiplication by depth to a separate function
+
+commit 37734c880d467cc14c143a43e963e746ab36ca09
+Merge: 0cf4c1d55567 991eec63d57e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-22 17:17:29 +0000
+
+ Merge branch 'genesys-session-output-line-count' into 'master'
+
+ genesys: Use common code path to compute session output_line_count
+
+ See merge request sane-project/backends!158
+
+commit 991eec63d57ef58a6c67af7e18f182edf13aaf7c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 19:34:43 +0300
+
+ genesys: Use common code path to compute session output_line_count
+
+commit 0cf4c1d555671058ef9e3a77167891822199b56e
+Merge: 6f51393bd7a9 605fcf97626f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-22 16:58:14 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup in gl646 motor code
+
+ See merge request sane-project/backends!157
+
+commit 605fcf97626fcc66fd3f7b0c9e2e1aa9e29afa1a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 19:11:07 +0300
+
+ genesys: Assume correct resolution is passed from high-level
+
+commit 73951b4bf80a498ec238a6a9ef951fc598b3b7ae
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 19:11:06 +0300
+
+ genesys: Simplify motor code on gl646 by retining real motor dpi prop
+
+commit 6f51393bd7a935086989f1c10a012d4fccd91141
+Merge: d0365bd7e4d3 ce144ed46fe7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-21 15:59:41 +0000
+
+ Merge branch 'genesys-session-max-color-shift-lines' into 'master'
+
+ genesys: Use common code path to compute session max_color_shift_lines
+
+ See merge request sane-project/backends!155
+
+commit ce144ed46fe7b28b4e1753753651796af70fc47d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 18:27:45 +0300
+
+ genesys: Use common code path to compute session max_color_shift_lines
+
+commit d0365bd7e4d37c45668c7aa7da3c11da5fbabd8a
+Merge: 9afaf9a2cf37 c69e22eb766d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-21 15:56:34 +0000
+
+ Merge branch 'sanei-fix--usb-testing-mode-in-release' into 'master'
+
+ sanei_usb: Fix uninitialized device struct in USB testing code
+
+ See merge request sane-project/backends!156
+
+commit c69e22eb766d9cb1505099f5075c44a24dd412c8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-21 18:42:56 +0300
+
+ sanei_usb: Fix uninitialized device struct in USB testing code
+
+commit 9afaf9a2cf373f40fafd26b3c69414ec15294076
+Merge: da9307c7a63b 77e0acde229f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-20 14:37:24 +0000
+
+ Merge branch 'genesys-fix-total-bytes-to-read' into 'master'
+
+ genesys: Fix computation of total_bytes_to_read
+
+ See merge request sane-project/backends!154
+
+commit 77e0acde229f89efaf3fbea1e990b90ae1d9f932
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 18:22:57 +0300
+
+ genesys: Fix computation of total_bytes_to_read
+
+commit da9307c7a63b8c05c5275e3768de2760325f2f29
+Merge: bd35742b789a 0961c5d32fc1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-19 22:51:01 +0000
+
+ Merge branch 'genesys-session-output-pixels' into 'master'
+
+ genesys: Use common code path to compute session output_pixels
+
+ See merge request sane-project/backends!153
+
+commit 0961c5d32fc173bb55a30cdd55d7b28ac6c5a1ab
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 18:23:32 +0300
+
+ genesys: Use common code path to compute session output_pixels
+
+commit bd35742b789ac1ea1b528880afca75b0489020bc
+Merge: c1b8cb5c31b3 50e5c804346b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-19 22:32:54 +0000
+
+ Merge branch 'genesys-handle-non-uniform-scans-at-high-level' into 'master'
+
+ genesys: handle non-uniform scans at high level
+
+ See merge request sane-project/backends!152
+
+commit 50e5c804346bf92528b7aad384dbc4749dec0f98
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 18:21:18 +0300
+
+ genesys: Remove low-level handling of xdpi < ydpi case
+
+ The high-level code ensures that the xdpi is always natively supported
+ by the scanner.
+
+commit 548eff4a329b9ee0ff860cc0edb332f20b3ab201
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 18:21:17 +0300
+
+ genesys: Fix support for scans when xdpi<ydpi on gl646
+
+commit 21254ad9297faca43a0ae5a083edd97a9da8ba08
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 18:21:16 +0300
+
+ genesys: Use Sensor::optical_res directly where possible
+
+commit c1b8cb5c31b39f375881f12f73d91a61a610d50f
+Merge: 1e2f64dc3dee 453a6b75be86
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-19 22:17:43 +0000
+
+ Merge branch 'genesys-session-num-staggered-lines' into 'master'
+
+ genesys: Use common code path to compute session num_staggered_lines
+
+ See merge request sane-project/backends!151
+
+commit 453a6b75be86522aa03d666ceddd77c0950880dd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-12 17:59:47 +0300
+
+ genesys: Use common code path to compute session num_staggered_lines
+
+commit 1e2f64dc3dee2f53cf9a8eb5f9201660cff5cd6c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-09-12 22:09:22 +0200
+
+ pixma: backend version 0.23.2
+
+commit aacdd88a274e2ebaf702ce161292529f41946a35
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-09-12 22:08:49 +0200
+
+ pixma: update doc files
+
+commit fd94a7e60c24d7564cbf1bf49c99fedda377f036
+Merge: 7e3a68c9e7ce 7f491519d106
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-09-12 19:42:12 +0000
+
+ Merge branch 'MF633_635_645' into 'master'
+
+ pixma: new scanners Canon i-SENSYS MF633C/MF635C, MF645C
+
+ See merge request sane-project/backends!126
+
+commit 7f491519d106ecd672e5ef2bb16693056e21ea1d
+Author: Mikael Vallerie <mikael.vallerie@gmail.com>
+Date: 2019-08-27 15:34:47 +0200
+
+ Removing MF635_PID, using MF630_PID instead
+
+commit d08e4c9000808aba840b7f8e7e5b26f2af2326c1
+Author: Mikael Vallerie <mikael.vallerie@gmail.com>
+Date: 2019-08-27 15:33:58 +0200
+
+ Removing MF633C/MF635C from docs, as it's just a variant of MF630
+
+commit 13008723cd9f6954ecc86f51fb612171ec183570
+Author: Mikael Vallerie <mikael.vallerie@gmail.com>
+Date: 2019-08-26 18:41:29 +0200
+
+ Right PIDs for MF633C/MF635C and MF645C
+
+commit f38f0b868117eff208460ba0e77a6270247c71fd
+Author: Mikael Vallerie <mikael.vallerie@gmail.com>
+Date: 2019-08-26 18:41:06 +0200
+
+ Right pid for MF645C
+
+commit 62284c2ed5739e51accaa4e3c8b96e0047425996
+Author: Mikael Vallerie <mikael.vallerie@gmail.com>
+Date: 2019-08-19 20:21:23 +0200
+
+ Docs for MF633C/MF635C and MF645C
+
+commit 5d21800b51f86b7d6e4d8be8c89b7e2186a7daa7
+Author: Mikael Vallerie <mikael.vallerie@gmail.com>
+Date: 2019-08-18 18:53:08 +0200
+
+ pixma: new scanners Canon i-SENSYS MF633C/MF635C, MF645C
+
+commit 7e3a68c9e7ceee244ad7cbe1ed0842ae5dd7cf2e
+Merge: 489a80088abc f2ce27f44130
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-09 21:54:13 +0000
+
+ Merge branch 'sanei-usb-fix-build-without-usb' into 'master'
+
+ sanei_usb: Fix build when USB support is disabled
+
+ Closes #123
+
+ See merge request sane-project/backends!150
+
+commit f2ce27f441307ae42c888a033328c8007e62bc36
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-09-10 00:39:08 +0300
+
+ sanei_usb: Fix build when USB support is disabled
+
+commit 489a80088abc289be23c2ab6f44840030b8f8293
+Merge: 6b7052c4cf24 8f1615f3337d
+Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
+Date: 2019-09-07 18:20:19 +0000
+
+ Merge branch 'ricoh2' into 'master'
+
+ ricoh2: Add support for Aficio SG3110SFNw
+
+ See merge request sane-project/backends!149
+
+commit 8f1615f3337d401961094cd707d2271c5b281f12
+Author: Vladislav Bogdanov <bubble@hoster-ok.com>
+Date: 2019-09-04 11:07:26 +0300
+
+ ricoh2: Add support for Aficio SG3110SFNw
+
+commit 6b7052c4cf24c3a01d1871bdeb90c6627c083e51
+Merge: fc85e7d15d4a 2757475dd998
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 18:19:57 +0000
+
+ Merge branch 'genesys-misc-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!148
+
+commit 2757475dd99863eeb5e59ea38333c362bfd26604
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-24 10:13:44 +0300
+
+ genesys: Use session.params.xres directly where possible
+
+commit ba3013b1aae35b57e35dc38c4027e182f2fb519f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-24 10:13:43 +0300
+
+ genesys: Handle full sensor scans on gl841 consistently to other chips
+
+commit 48251cf8b22dec638861cd8832bbf1fe0d1e38bc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-24 10:13:42 +0300
+
+ genesys: Simplify start pixel computation on gl841
+
+commit 6ca11bfd719fdf6e08fd5c8711356af0f9bca97d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-24 10:13:41 +0300
+
+ genesys: Always dump session after computing it
+
+commit fc85e7d15d4a8631e9777cf7704d3115fdc8058a
+Merge: 3db2278bea1a 5226a163ab60
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 18:02:54 +0000
+
+ Merge branch 'genesys-session-optical-pixels' into 'master'
+
+ genesys: Use common code path to compute session optical_pixels
+
+ See merge request sane-project/backends!147
+
+commit 5226a163ab606178474bcbdc12466689a53a2604
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-24 10:05:53 +0300
+
+ genesys: Use common code path to compute session optical_pixels
+
+commit 3db2278bea1af5d74923ff6b746ed390a16f769a
+Merge: 66c804a7ea40 ec5225e1f8a1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 17:44:21 +0000
+
+ Merge branch 'genesys-misc-simplify' into 'master'
+
+ genesys: Miscellaneous simplifications
+
+ See merge request sane-project/backends!146
+
+commit ec5225e1f8a165fd50786459383b16f5c0c39524
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-24 10:00:52 +0300
+
+ genesys: Assume correct resolution is passed from high-level
+
+commit 9a21a8335fadc7f5722b85dc0172ee24f221b3b1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-24 10:00:51 +0300
+
+ genesys: Remove dead code related to SCAN_FLAG_USE_OPTICAL_RES
+
+commit 21f949bd8736ecffe0ed0ad1409bbe01d882d148
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-24 10:00:50 +0300
+
+ genesys: Remove *_compute_exposure() wrappers
+
+commit 66c804a7ea40f30fe771421a9eab4ccac90ac8be
+Merge: 6fcfab3fdad1 a2ade508700a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 17:18:37 +0000
+
+ Merge branch 'genesys-ensure-correct-resolution-high-level' into 'master'
+
+ genesys: Ensure that correct resolution is passed from high level
+
+ See merge request sane-project/backends!145
+
+commit a2ade508700adab5ecffca3301170fa0f3ed8ca0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-18 11:13:01 +0300
+
+ genesys: Ensure that resolution is set to a supported one at high-level
+
+ Previously we relied on low-level implementation to detect when the
+ requested resolution is higher than one supported by the scanner and
+ seamlessly patch around so that the high-level code does not notice.
+ This complicates the low level implementation and results to duplicate
+ code.
+
+commit 61a055a8cfb8fb8874ba077cb602a9447dd5f128
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-18 11:13:00 +0300
+
+ genesys: Pass the line width requested by the frontend separately
+
+commit 0b2840a3ff61a791f8a19c0f9e5d0343f6d9a229
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-18 11:12:59 +0300
+
+ genesys: Clarify frontend param processing a little
+
+commit ec0ceaebb5fa61390f38655c2e497063aa021608
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-18 11:12:58 +0300
+
+ genesys: Use correct resolution to select sensor during option parsing
+
+commit 6fcfab3fdad1783765fa48c280d586bce03ac3ca
+Merge: dc7c1f81f384 f48239419ab3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 17:02:03 +0000
+
+ Merge branch 'genesys-session-optical-resolution' into 'master'
+
+ genesys: Use common code path to compute session optical_resolution
+
+ See merge request sane-project/backends!144
+
+commit f48239419ab3756fd84e51e05625d54b142341df
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-18 10:39:36 +0300
+
+ genesys: Use common code path to compute session optical_resolution
+
+commit dc7c1f81f384bf23b8275d56229d689258eb42c6
+Merge: da5d0bc91698 687b549f0ad1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 16:45:04 +0000
+
+ Merge branch 'genesys-session-ccd-size-divisor' into 'master'
+
+ genesys: Use ScanSession to compute ccd_size_divisor on all chips
+
+ See merge request sane-project/backends!143
+
+commit 687b549f0ad1f25d31d045d9a10098a4001444c9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-18 10:37:49 +0300
+
+ genesys: Use ScanSession to compute ccd_size_divisor on all chips
+
+commit da5d0bc91698dd4f923398b1b1fad7534201283a
+Merge: 1a02dfc8cb07 510b6d0d86be
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 16:22:45 +0000
+
+ Merge branch 'genesys-gl646-simplify-setup-registers' into 'master'
+
+ genesys: Simplify gl646 register setup
+
+ See merge request sane-project/backends!142
+
+commit 510b6d0d86be7892e284ddb7a0e592faa5a8bc12
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-26 00:29:18 +0300
+
+ genesys: Remove gl646-specific get_ccd_size_divisor
+
+commit e0efbd37b80022f1451b19aa558775d22300bdf5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-25 23:40:39 +0300
+
+ genesys: Use sensor functionality instead of compute_ccd_size_divisor()
+
+commit a6a785e28d95d644c48a03f201519712f5cc7c1c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-25 23:34:38 +0300
+
+ genesys: Use common path to compute ccd_size_divisor on gl646
+
+commit e2e1efae804fb3f1e2fb2a2c083e332fd6878048
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-25 23:24:19 +0300
+
+ genesys: Use the sensor passed to gl646_setup_registers()
+
+commit 1a02dfc8cb072bde4cde5f46ff297da0cacd623f
+Merge: ab9f5531c1f2 ceb56a8b3b5d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 15:44:23 +0000
+
+ Merge branch 'genesys-gl646-common-sensor-table' into 'master'
+
+ genesys: Use common sensor table on gl646
+
+ See merge request sane-project/backends!141
+
+commit ceb56a8b3b5d4ebf8515a2e2d4d496d9b9264344
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 12:02:45 +0300
+
+ genesys: Move gl646 sensor settings to the common sensor table
+
+commit a31da79e076155b1ea2d743b5f7f06687f4125db
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 12:02:44 +0300
+
+ genesys: Compute cksel from register descriptions on gl646
+
+commit ab9f5531c1f23e36bd891c90b32f5be442079b2c
+Merge: 0c6d7cd4a40d 5532f2f277f5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 15:23:06 +0000
+
+ Merge branch 'genesys-identify-sensor-channel-count' into 'master'
+
+ genesys: Identify sensor by supported channel count
+
+ See merge request sane-project/backends!140
+
+commit 5532f2f277f5fdaad17b870138555e125c89f415
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:51:35 +0300
+
+ genesys: Add channel count to the parameters that identify a sensor
+
+commit f2871ca81dd29512be9af19dcad5ad6e191f788e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:51:34 +0300
+
+ genesys: Reduce duplication in channel count and depth calculation
+
+commit 0c6d7cd4a40d29dfb9139cf0739cf6149dd739ef
+Merge: 3e2b6cead083 eb4fb4404868
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 14:56:23 +0000
+
+ Merge branch 'genesys-fix-missing-return-after-refactor' into 'master'
+
+ genesys: Fix missing return from a previous refactor
+
+ See merge request sane-project/backends!138
+
+commit eb4fb440486846cdca3c14811c12c324f9ddb9ef
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:30:33 +0300
+
+ genesys: Fix missing return from a previous refactor
+
+commit 3e2b6cead083f441ec68e32e62e31c1bd1acf80d
+Merge: 6216ada2e7ca d9fab3a7d8fd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 14:55:57 +0000
+
+ Merge branch 'genesys-gl646-simplify-sensor' into 'master'
+
+ genesys: Simplify sensor setup on GL646
+
+ See merge request sane-project/backends!139
+
+commit d9fab3a7d8fd4b5a9ce196f0125c1e6648eea13f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:10 +0300
+
+ genesys: Fix incorrect channel count when fetching ccd_size_divisor
+
+ All current scanners use the same divisor on both 1 and 3 channels, so
+ this commit does not change behavior.
+
+commit e8d9b6ff5dde80f69e80632ce715e0ad7e9902b6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:09 +0300
+
+ genesys: Reduce duplication in the Sensor_Master struct list
+
+commit f228e427a958c4aa80d6c9fd4d35cdad20d557d1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:08 +0300
+
+ genesys: Store sensor settings in std::vector on gl646
+
+commit a8ed3df0fd486400d14927b5ec53684bcacacf1f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:07 +0300
+
+ genesys: Merge Sensor_Settings struct to Sensor_Master
+
+commit c001662c0506c9e6bc4a0ee94b31e8b515c8b5c8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:06 +0300
+
+ genesys: Reorder the components on Sensor_Master struct
+
+commit 71a467ddf34d61f8abc9e7edef4898ad222490be
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:05 +0300
+
+ genesys: Remove unused data from Sensor_Master on gl646
+
+commit b19720cfa17047c2030225e59174dd1bace6eda8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:04 +0300
+
+ genesys: Simplify sensor register desc by matching ccd_size_divisor
+
+commit e36d6b8fb5ad09ab1b70616b0a79223fb273f099
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:03 +0300
+
+ genesys: Simplify exposure setting on gl646
+
+commit a4a1003ffc8e5e0133592e0830978597ac9932a7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:02 +0300
+
+ genesys: Rename Sensor_Master::{exposure->exposure_lperiod}
+
+commit a3a3647006882f8671395d107df791064d9086f4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:01 +0300
+
+ genesys: Compute dpiset instead of storing it in tables on gl646
+
+commit d2d43d5ed8e564d74c2529c1fda12cc56c2cbd55
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:49:00 +0300
+
+ genesys: Make sensor table initialization more generic on gl646
+
+commit 1330d2289ba081d1ac11e83ef5644332ba1e5884
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:48:59 +0300
+
+ genesys: Correctly initialize Sensor_Master struct
+
+commit 6216ada2e7cabb2620aa947980152476f224ffa8
+Merge: 5b99a428d2cd 86ac877d8225
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 14:43:05 +0000
+
+ Merge branch 'genesys-fix-sensor-write' into 'master'
+
+ genesys: Fix writing to sensors
+
+ See merge request sane-project/backends!137
+
+commit 86ac877d8225722fa2ec3fc52ad518a9c5f812e4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:05:38 +0300
+
+ genesys: Remove unused code
+
+commit eb1c4fadb9497992691b4407c93cf77fa2a31512
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:05:37 +0300
+
+ genesys: Pick correct sensors during option parsing
+
+commit 1902c9fbcbb108e1fe7fa4588fa140ac29acfc84
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:05:36 +0300
+
+ genesys: Fix sensor const safety in *_search_start_position()
+
+commit f019f9e7b80f3a7c2aa6f4099e2fda1529b17365
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:05:35 +0300
+
+ genesys: Don't modify sensor in *_led_calibration()
+
+commit 5b99a428d2cdf45b35daa5ecbeb9eaddb30f2f0f
+Merge: 6e950209b688 0cd26a8adf3d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 14:39:01 +0000
+
+ Merge branch 'genesys-resolution-filter-class' into 'master'
+
+ genesys: Extract resolution filtering to separate class
+
+ See merge request sane-project/backends!136
+
+commit 0cd26a8adf3d4a7190b8565897df236bfd466632
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:56:45 +0300
+
+ genesys: Extract resolution filtering to separate class
+
+commit 6e950209b688cd82dd6804d108ad2a4eb8b2b6ad
+Merge: c34cd7cd8661 107404dcd05e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 14:09:52 +0000
+
+ Merge branch 'genesys-session-ccd-size-divisor' into 'master'
+
+ genesys: Use common code path for ccd_size_divisor computation
+
+ See merge request sane-project/backends!135
+
+commit 107404dcd05e442068f112e339bc996e8c82be7f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:11:15 +0300
+
+ genesys: Move ccd_size_divisor computation to compute_session()
+
+commit 92412a90b25f11a866f6c68c132a47edc7d9e459
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:11:14 +0300
+
+ genesys: Create compute_session() for common session computation
+
+commit c34cd7cd8661e7b046e1974c2f9eda55cadd0f42
+Merge: 302932c1dbb5 53d447b6dcbb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 13:25:34 +0000
+
+ Merge branch 'genesys-common-sensor-profiles' into 'master'
+
+ genesys: Use the sensor description list for sensor profiles
+
+ See merge request sane-project/backends!134
+
+commit 53d447b6dcbb8d4fc2cc4653888e4b36febb0b6a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:02:39 +0300
+
+ genesys: Move GL846 sensor profiles to a common sensor array
+
+commit 4978eceda330ae361e79d301f591c475fe6cf204
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:02:38 +0300
+
+ genesys: Move GL847 sensor profiles to a common sensor array
+
+commit 63cc11bce15428fd76918a6e91ece1d742949d00
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:02:37 +0300
+
+ genesys: Move GL124 sensor profiles to a common sensor array
+
+commit 4348451e47fdd1e006b121786e4f065710ef56f3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:02:36 +0300
+
+ genesys: Add sensor profile to the sensor struct
+
+ This will allow moving per-chip sensor profile tables to a common
+ configuration
+
+commit ba546d5370e4df85dd6cd002c03f67e890b0bef9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 11:02:35 +0300
+
+ genesys: Store segment order as a std::vector
+
+commit 302932c1dbb592797e15042c61c79eba5f91360c
+Merge: 4a9738b71958 7872f87475c6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 13:20:00 +0000
+
+ Merge branch 'genesys-gl843-single-gpio-setting-list' into 'master'
+
+ genesys: Move all gpio settings to a single struct on GL843
+
+ See merge request sane-project/backends!133
+
+commit 7872f87475c6aeb1e6b7152247f7abf66e7eb802
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:38:58 +0300
+
+ genesys: Move all gpio settings to a single struct on GL843
+
+commit 4a9738b71958e81704c5f257ef9eb82bc29520d5
+Merge: 2896c21ffe9d 759e450b6b0a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 13:04:53 +0000
+
+ Merge branch 'genesys-simplify-reg-setting-set' into 'master'
+
+ genesys: Reduce duplication in GenesysRegisterSettingSet
+
+ See merge request sane-project/backends!132
+
+commit 759e450b6b0aaf5d68456ec2397d5d73a426243c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:02:40 +0300
+
+ genesys: Reduce logical duplication in GenesysRegisterSettingSet
+
+commit 543ba367bcaeb2e9c28a79d8fabe83f89404319a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:02:39 +0300
+
+ genesys: Rename GenesysRegisterSettingSet::{regs_->registers_}
+
+commit 2896c21ffe9d75b0b0a36f25b7de273ef3172986
+Merge: 562f900337be 8fce6b624c03
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 12:58:50 +0000
+
+ Merge branch 'genesys-frontend-type' into 'master'
+
+ genesys: Add frontend type to the frontend description
+
+ See merge request sane-project/backends!131
+
+commit 8fce6b624c03db44b8cd5b1c56739f408b0802c3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:27:42 +0300
+
+ genesys: Don't perform offset and gain calibration on unknown frontends
+
+commit 5580fc0db1c85902867761db90aeaf5575a194dc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:27:41 +0300
+
+ genesys: Add frontend type to the layout struct
+
+commit 562f900337be1a94eb980b960288cba83f7e2185
+Merge: e452e869c267 a76a2a096e37
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 12:54:14 +0000
+
+ Merge branch 'genesys-override-dpiset' into 'master'
+
+ genesys: Implement a way to override dpiset
+
+ See merge request sane-project/backends!130
+
+commit a76a2a096e377e887357ddf0754fea9205bc7ff6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:21:04 +0300
+
+ genesys: Implement a way to override DPISET on GL124 and GL843
+
+commit db15a755044cdc723ebbd4febd7b2fbcf3d75334
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:21:03 +0300
+
+ genesys: Add a way to override dpihw
+
+commit 458e31a0c0918a2a824fb878673a936b3859fe71
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:21:02 +0300
+
+ genesys: Extract setting of DPIHW to a separate function
+
+commit e452e869c267452756c11704adeffb058e371e9c
+Merge: c73a7b5b0601 503797c2480b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 12:46:46 +0000
+
+ Merge branch 'genesys-simplify-shading-calibration' into 'master'
+
+ genesys: Simplify shading calibration
+
+ See merge request sane-project/backends!129
+
+commit 503797c2480b046aefe27043467ab000efd7d34e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:53:56 +0300
+
+ genesys: Simplify shading computation by using enum for color order
+
+commit 3a1163480a28214cb2f92c395e6b8a7b5dc96d86
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-17 10:53:55 +0300
+
+ genesys: Store calibration data using correct type internally
+
+commit c73a7b5b0601016ee5b75b1d962879891ad1d4fd
+Merge: e6b278638076 5e5a1a6fc3ab
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 12:24:34 +0000
+
+ Merge branch 'genesys-fix-std-accumulate' into 'master'
+
+ genesys: Use correct type for std::plus
+
+ See merge request sane-project/backends!128
+
+commit 5e5a1a6fc3abe9418090438b235ffa7b2f4f8dc2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-31 15:11:40 +0300
+
+ genesys: Use correct type for std::plus
+
+commit e6b27863807654e24c0d2c6169bb506be68d4f2d
+Merge: b4c95a8ade91 f18ef0e282f1
+Author: Stanislav Yuzvinsky <yu-stas@yandex.ru>
+Date: 2019-08-30 14:16:41 +0000
+
+ Merge branch 'macos-malloc-fix' into 'master'
+
+ ricoh2_buffer: fix malloc header location on macOS
+
+ See merge request sane-project/backends!90
+
+commit f18ef0e282f1a5437adce032b735f47b00f91168
+Author: Caleb Xu <calebcenter@live.com>
+Date: 2019-08-01 23:51:20 -0400
+
+ ricoh2_buffer: fix malloc header location on macOS
+
+commit b4c95a8ade91463a9f2d5c9f51daad9f6548d0e5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-08-20 13:30:25 +0200
+
+ pixma: backend version 0.23.1
+
+commit f64489bd7179e148f50d9586be2c5f064a4c1804
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-08-20 13:16:32 +0200
+
+ pixma: fix ADF scanning for Canon MAXIFY MB2000 and MB2300 Series
+
+commit 8446baf4f9eb7f11d56b5b0771bc452dca7e6507
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-08-20 13:11:57 +0200
+
+ pixma: fix ADF scanning for Canon MAXIFY MB5000 Series
+
+commit 5e74e1b7940e32b2a6f387410755149d21672a4f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-19 22:06:33 +0900
+
+ genesys: Make std::plus<> template type instantiation explicit
+
+ This fixes compile errors on older versions of gcc and possibly other
+ C++ compilers.
+
+commit f37326784dcf71e498383fbe3317e45b1f669caf
+Merge: 21bb96d61e5b 740f013292fd
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-12 09:16:37 +0000
+
+ Merge branch 'ci-tweaks' into 'master'
+
+ CI tweaks
+
+ See merge request sane-project/backends!125
+
+commit 740f013292fdda3d45726a6a9595396f2d26c7f5
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-12 18:01:35 +0900
+
+ CI: Document the various jobs
+
+commit 5aa84ed9ead0c1d24757ea18a7782bf6ce0a092b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-12 17:39:54 +0900
+
+ CI: Drop Debian 9 mini build
+
+ The "mini" build scenario is sufficiently covered by Debian 10 mini.
+ Considering the Debian 9 is now oldstable, there is not much value in
+ keeping it around.
+
+commit 69044bdffe6d6ff1b8ce8181abe75b4074eed006
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-12 17:38:54 +0900
+
+ CI: Drop Fedora 29 compile job
+
+ It's package version make up is too similar to Debian 10 for it to be
+ worth the CPU cycles.
+
+commit 08bff060f8cbf12c4299f46eaf233522956893af
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 17:20:47 +0900
+
+ CI: Fix make distclean target
+
+ Implicit compile dependencies prevent automake from adding dependency
+ tracking files to the list of files to clean up.
+
+commit 1f1b9dcd56e67c9b7dac1164505f60859da7d076
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 12:59:07 +0900
+
+ CI: Only keep snapshots for 90 days
+
+ The snapshots aren't meant to stay around forever, that's for releases.
+
+commit 8cb53a191ea04f32075a447da26b72a6d3f390a6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 12:52:03 +0900
+
+ CI: Move after_script: from stretch to buster
+
+ This follows c90e9674e74f15b0839ea944de47f887566d07ee.
+
+commit 14e7ba47dda2ee7389e8db21268cd49e80ea968a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 12:49:19 +0900
+
+ CI: Speed up compile stage jobs
+
+commit 68d70def14542af1862eeb6edbd07c50c2626f95
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 12:22:19 +0900
+
+ autofoo: Fix ltmain.sh.patch offsets to match new version
+
+commit 041ea5f53c3330b84a9462b42032783ed770b51d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 12:10:07 +0900
+
+ japi: Fix BUILT_SOURCES dependency
+
+ Newer automake versions have the dist target depend on BUILT_SOURCES
+ so that variable should not heavy build dependencies. This fixes the
+ dist target sufficiently, for CI purposes at least, in that it leads
+ to inclusion of the same list of files. Note that CI does not build
+ anything in the japi/ directory.
+
+commit c90e9674e74f15b0839ea944de47f887566d07ee
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 12:08:50 +0900
+
+ CI: Build our source tarball on Debian's Buster
+
+ This bumps the build distribution's version, up from Stretch.
+
+commit 6fdbc95bf3386492f0787e730a2404c222ab08ba
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-06 22:36:57 +0900
+
+ CI: Fix broken dependency after job renames
+
+commit 2874d215146924b2cf8aab279c770a41c1aeae76
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-06 21:42:08 +0900
+
+ CI: Rename stages and jobs for clarity
+
+ It drops the common `compile:` prefix because the web UI ellipsizes
+ job names. This leads to names that are hard to tell apart when the
+ prefix is applied.
+
+ The archive stage has been renamed to snapshot to differentiate it
+ more from the release stage. The prepare moniker did not clearly
+ describe the stage's intent and has been renamed to tarball. The
+ job names for these stages now reflect the `make` invocations used
+ in an attempt to be more descriptive.
+
+commit 21bb96d61e5b9f1507f6d973c51230ce7b591d78
+Merge: f80cb86a1f67 5cba3bd465f1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 01:48:16 +0000
+
+ Merge branch 'fix-warnings' into 'master'
+
+ Fix -Wimplicit-fallthrough warnings
+
+ See merge request sane-project/backends!85
+
+commit 5cba3bd465f128784306214f07c9ee334f723518
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 10:37:10 +0900
+
+ saned: Fix misleading log messages caused by fall through
+
+commit e42e3bc849ab98a45c27b30c4a44fe10cdf462a3
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 10:23:29 +0900
+
+ scanimage: Fix misleading fall through annotation
+
+ The `scanimage_exit()` call exits the program.
+
+commit 9344a957ed2e67cf1cd285eac66ed7dd159d8d13
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-11 10:16:00 +0900
+
+ apple: Fix [-Wimplicit-fallthrough] compiler warning
+
+ It doesn't make sense to log a value as both `Fixed` *and* `Int`.
+
+commit 797cd1fb37ee87185ad79fd4bf87648b33599e83
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-10 21:05:48 +0900
+
+ epson2, epsonds, kodakaio, magicolor: Don't set invalid value
+
+ If the value to be set is not valid, it should not change the sval
+ structure (even if doing so has no negative side effects).
+
+ This also makes the fallthrough less confusing by removing the first
+ cast of two for the br-x and br-y values.
+
+commit fcd537e2077eea1c8e00a1875a7fed56852bfb9b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-10 20:49:09 +0900
+
+ sm3600: Fix [-Wimplicit-fallthrough] warning
+
+ This fixes the warning for both #define SM3600_SUPPORT_EXPOSURE values.
+
+commit 3dde8f28f094f8440050c773720312383ea73933
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-06-30 11:58:33 +0300
+
+ niash: Fix an implicit fallthrough bug in handling of threshold option
+
+commit e40596c2a59e188a0a44f44877aa91e41a5698aa
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-06-30 11:58:32 +0300
+
+ Fix -Wimplicit-fallthrough warnings by adding standard annotations
+
+commit f80cb86a1f677f32a9f612db0fbc99d73bf01247
+Merge: 7159bbee3296 6912400cf48a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 15:53:39 +0000
+
+ Merge branch 'genesys-split-tables' into 'master'
+
+ genesys: Split tables into separate files
+
+ See merge request sane-project/backends!124
+
+commit 6912400cf48ab027dd17569003d9385fd161a5f0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 18:21:08 +0300
+
+ genesys: Move motor profile tables to a single file
+
+commit aa4ee9c49e7e603c283ca48d41e75f979550c470
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 18:21:07 +0300
+
+ genesys: Split genesys_devices.cc file to separate files for each table
+
+commit 6592692448f8b4f35e2eb8fc9d6e31375a6a4ae3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 18:21:06 +0300
+
+ genesys: Compile genesys_devices.cc as a separate translation unit
+
+commit 7159bbee3296fbe13e82293e8fd1e3fb61edd31f
+Merge: 8a48e8774109 8cb6130cfe7d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 15:33:38 +0000
+
+ Merge branch 'genesys-cleanup-gpo' into 'master'
+
+ genesys: Cleanup the gpo setup
+
+ See merge request sane-project/backends!123
+
+commit 8cb6130cfe7d08a4c8bea6d6d8cb528aa1039c44
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 14:01:50 +0300
+
+ genesys: Cleanup the gpo setup
+
+commit 8a48e8774109d62642404729ee5917331188e45e
+Merge: b5ff3b4f4372 ca54462bd287
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 12:28:50 +0000
+
+ Merge branch 'genesys-simplify-gl843-dpi' into 'master'
+
+ genesys: Simplify GL843 DPI calculation
+
+ See merge request sane-project/backends!122
+
+commit ca54462bd287cbf8b48d04e703cddac18f8ffc37
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 13:17:52 +0300
+
+ genesys: Simplify shading upload on gl843
+
+commit 2df86f551f128248550485ec26dbe07f6fdb64dc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 13:17:51 +0300
+
+ genesys: Fix incorrect dpi computation for G4050
+
+commit d365637dfc7687313c39375d4140462875e95ce9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 13:17:50 +0300
+
+ genesys: Simplify optical regs setup on gl843
+
+commit 3e09ba18fa4e7e5c7818faeb6e85b9a354548d5f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 13:17:49 +0300
+
+ genesys: Move pixel coordinate calculation to gl843_compute_session()
+
+commit 6a0f17cecca0536c5689aafaaee46bf658b2d5b0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 13:17:48 +0300
+
+ genesys: Raise an exception if input resolution is out of bounds
+
+commit b5ff3b4f43722cf8cee420d824daa5a979ae1071
+Merge: 608680f8b80f ae525fb91b69
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 12:23:20 +0000
+
+ Merge branch 'genesys-cleanup-motors' into 'master'
+
+ genesys: Cleanup motor definitions
+
+ See merge request sane-project/backends!121
+
+commit ae525fb91b69e8956298d9a3b0cc59667f5464b2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 15:10:31 +0300
+
+ genesys: Remove trailing whitespace
+
+commit 1c61d3692a236d3d86903c1d6f00ca72e004d3b6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 12:01:52 +0300
+
+ genesys: Rewrap extremely long lines in motor step definitions
+
+commit ea602f7ebc38d84858d18727621af91d6748b667
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 12:01:51 +0300
+
+ genesys: Rewrite and document sanei_genesys_calculate_zmod()
+
+commit 6f20e6d341c67fe394c860de716d2771f97e81ca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 12:01:50 +0300
+
+ genesys: Use std::vector for the motor slope tables
+
+commit 510e8123f3826938cfe3fdda68d4eef0a9519976
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 12:01:49 +0300
+
+ genesys: Remove support for multiple motor power modes
+
+commit 239eab6ea661654fc7134684b8c8bb07b2478fc6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 12:01:48 +0300
+
+ genesys: Simplify motor setup to make it easier to expand
+
+commit 608680f8b80fc7b8f684beeac6568da3673be47e
+Merge: 7d6897ecb4bd b85a83f6af03
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 12:10:27 +0000
+
+ Merge branch 'genesys-remove-optical-flags' into 'master'
+
+ genesys: Remove optical flags
+
+ See merge request sane-project/backends!120
+
+commit b85a83f6af03b5300a1808cef0b68330c70f1d9a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 10:52:58 +0300
+
+ genesys: Remove no longer used optical flags variables
+
+commit 306b160f00661f488337b906e5a83eda67f6eeaa
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 10:52:57 +0300
+
+ genesys: Pass OPTICAL_FLAG_DISABLE_SHADING flag via session
+
+commit 86d4828ece1db3e42cef876c344bd7d5b91cd010
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 10:52:56 +0300
+
+ genesys: Pass OPTICAL_FLAG_DISABLE_GAMMA flag via session
+
+commit d503701fb754c9d152866440f7382aa6f9fd650e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 10:52:55 +0300
+
+ genesys: Pass OPTICAL_FLAG_USE_XPA flag via session
+
+commit 773170af094193209992739a07c9f220f25a4290
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 10:52:54 +0300
+
+ genesys: Pass OPTICAL_FLAG_DISABLE_LAMP flag via session
+
+commit 8618a49182ea59bd6d25e282f877437d5d3d7f63
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 10:52:53 +0300
+
+ genesys: Pass OPTICAL_FLAG_STAGGER flag via session
+
+commit a4b551be0c07f26b54c1cda8c631f920dcc9eac9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 10:52:52 +0300
+
+ genesys: Pass OPTICAL_FLAG_ENABLE_LEDADD flag via session
+
+commit 7d6897ecb4bd23e90bf106aa0d8f945a2157cce3
+Merge: 6bf49297c215 e5a90e800537
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 11:55:49 +0000
+
+ Merge branch 'genesys-fix-search-reference-point' into 'master'
+
+ genesys: Fix search reference point to update all sensors
+
+ See merge request sane-project/backends!118
+
+commit e5a90e8005375577fc795f3f71c111e2467c70a8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 02:48:29 +0300
+
+ genesys: Update all sensors when searching for reference point
+
+commit 91b20fb268e649249ce062cbca7afc835874a5d0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 02:48:28 +0300
+
+ genesys: Make sanei_genesys_search_reference_point() non-destructive
+
+commit d0dbfa6ec33c04e3f1973b478ce912966411deb3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 02:48:27 +0300
+
+ genesys: Print traces of more data
+
+commit 824f922e49de40fe4bb4cac263732c6ad09c0ac9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 02:48:26 +0300
+
+ genesys: Don't do additional scans in case of debug
+
+commit 6bf49297c21538462323efef2d27c2d68475e1f9
+Merge: 8897f787535b e733f669601f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 11:55:03 +0000
+
+ Merge branch 'genesys-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanups and refactors
+
+ See merge request sane-project/backends!119
+
+commit e733f669601f0ae2184680107e46ec70b3b19d02
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 01:11:08 +0300
+
+ genesys: Add a way to customize per-sensor divisor management
+
+commit ea78c00882a1db9322062d4efa271d5ecaedebff
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 01:11:07 +0300
+
+ genesys: Fix duplicate hwdpi conversion on gl124
+
+commit 1ba4018a6e71090d5d92c8ba30f0987442b0056d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-04 01:11:06 +0300
+
+ genesys: Pass session directly to gl843_init_optical_regs_scan()
+
+commit 8897f787535bca06de3c9d40cbd07639dba05f06
+Merge: a18ec0faac2c cafb97d2935a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 11:40:53 +0000
+
+ Merge branch 'genesys-session-settings' into 'master'
+
+ genesys: Use session struct to pass data to the setup functions
+
+ See merge request sane-project/backends!117
+
+commit cafb97d2935a58d86976cbd7c73d57c1849cc2ff
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-03 22:42:20 +0300
+
+ genesys: Use session struct to pass data to the setup functions
+
+commit a18ec0faac2c1cf7fe26d780dacaeb116b87e806
+Merge: 0df7e1ab5021 38b97f1402e9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-10 11:19:29 +0000
+
+ Merge branch 'genesys-session-settings' into 'master'
+
+ genesys: Session settings refactor
+
+ See merge request sane-project/backends!116
+
+commit 38b97f1402e9def3ce0536e187cb439661781e53
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 05:12:31 +0300
+
+ genesys: Include full session description into the device struct
+
+commit f4401d501fb28da8045bfa6b3b2d42ff89cf56bd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 05:12:30 +0300
+
+ genesys: Make asic type an enum
+
+commit e34814aef85d11fe09d0fd86745fc1717d86d9ae
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 05:12:29 +0300
+
+ genesys: Remove duplicate fields out of settings struct
+
+commit 808cc5737d4abe5d229cf31c767f7f25fd15a7d1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 05:12:28 +0300
+
+ genesys: Move ScanSession to genesys_settings.h
+
+commit d0ed3795f625e39f56f2d4ad2e316fe911a62805
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 05:12:27 +0300
+
+ genesys: Remove unused code
+
+commit 0df7e1ab5021e5e79ee22d90443dc220763bf0ce
+Merge: 6ef288855ed5 408469d94e67
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-10 07:08:56 +0000
+
+ Merge branch 'patch-1' into 'master'
+
+ Update hp3900_rts8822.c
+
+ See merge request sane-project/backends!92
+
+commit 408469d94e67725fb3f9a87f4e1a5527fdca49bf
+Author: Cor <corphorum@outlook.com>
+Date: 2019-08-08 14:58:09 +0000
+
+ Update hp3900_rts8822.c
+
+ After increase the timeout from 10 to 60 seconds, the hp3970 can scan black and white 35mm films using the parameters Gray, 16 bit and 2400 dpi. More information in https://gitlab.com/sane-project/backends/issues/77
+
+commit 6ef288855ed5e0068902ce9cb2772b8ed6a32158
+Merge: 1267a9a5cc09 d2653efbd9db
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-10 06:06:38 +0000
+
+ Merge branch 'sanei-usb-capture-debug-msg' into 'master'
+
+ sanei_usb: Add a way to record debug messages to USB captures
+
+ See merge request sane-project/backends!93
+
+commit d2653efbd9dbe8b8f6611c10209864eeb5c5be58
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-08 20:51:24 +0300
+
+ sanei_usb: Add a way to record debug messages to USB captures
+
+commit 1267a9a5cc09c424cc2f1f95c7d5ffb7a33a8785
+Merge: a2085a973ff1 df580b9480ea
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-08-09 20:18:55 +0200
+
+ Merge remote-tracking branch 'origin/master'
+
+commit df580b9480eaacf02348742df064ab22daebf100
+Merge: 9085260541c2 cdb14d9fef9e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 11:10:43 +0000
+
+ Merge branch 'genesys-simplify-register-set-access' into 'master'
+
+ genesys: Simplify register set access
+
+ See merge request sane-project/backends!115
+
+commit cdb14d9fef9e2f9137c9be6cb210649b516a2760
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-21 18:41:50 +0300
+
+ genesys: Remove uses of sanei_genesys_set_reg_from_set()
+
+commit 36714a781044f431f078fc269ad21a41f2a0b643
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-21 18:41:49 +0300
+
+ genesys: Remove uses of sanei_genesys_read_reg_from_set()
+
+commit e6dbfd64a352e8d7702d73f5be3e1a4465a4b871
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-21 18:41:48 +0300
+
+ genesys: Remove uses of sanei_genesys_set_triple()
+
+commit 08c98e13b2c59bf192f122a8714363bd6a4a2be6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-21 18:41:47 +0300
+
+ genesys: Remove uses of sanei_genesys_set_double()
+
+commit 98546ecff05239ab1c864b246092312d499e09e0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-21 18:41:46 +0300
+
+ genesys: Remove uses of sanei_genesys_get_triple()
+
+commit fa9fcc31a13cc0400cacb5c5cbf01683af6c98da
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-21 18:41:45 +0300
+
+ genesys: Remove uses of sanei_genesys_get_double()
+
+commit 9085260541c288e765af7183ab2abf3826e66a6a
+Merge: 041389e57f74 598aa99778fc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 10:51:06 +0000
+
+ Merge branch 'genesys-remove-half-ccd' into 'master'
+
+ genesys: Improve code clarity by retiring half_ccd
+
+ See merge request sane-project/backends!114
+
+commit 598aa99778fc178fd6dd62f8aa42deca31f0cb66
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-03 01:31:07 +0300
+
+ genesys: Improve code clarity by retiring half_ccd
+
+commit 041389e57f748ce6e38f11c2db836e3cc12b7f0c
+Merge: 035951933b19 16c55bf330f8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 10:46:36 +0000
+
+ Merge branch 'genesys-cleanup-cmd-set' into 'master'
+
+ genesys: Cleanup cmd_set implementation
+
+ See merge request sane-project/backends!113
+
+commit 16c55bf330f80db64f886cd5bc9ceda588e00ba0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:39:05 +0300
+
+ genesys: Init cmd_set directly instead of going through a function
+
+commit a58b20d2c8663ae75356663b68a1734936f4d0dd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:39:04 +0300
+
+ genesys: Move cmd_set from model to device struct
+
+commit 035951933b19472f0f548afed4cd8df113db847b
+Merge: a3e492d6d59a f9a9d3f84a45
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 10:28:10 +0000
+
+ Merge branch 'genesys-physical-register-state' into 'master'
+
+ genesys: Cache physical register state
+
+ See merge request sane-project/backends!111
+
+commit f9a9d3f84a45d58b2e4d94901ff74c1b0597787c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:39:01 +0300
+
+ genesys: Cache physical register state in the device on writes
+
+commit faab7b02e0ee513834d35e313f7186245b2584a1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:39:00 +0300
+
+ genesys: Cache physical register state in the device on bulk writes
+
+commit 7836ea5778cbaba908a6cdb27014e723fdce8e6c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:38:59 +0300
+
+ genesys: Remove bulk_write_register from the cmd_set structures
+
+commit 60146456640985f46c8319f8acdc2f535f66e9cb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:38:58 +0300
+
+ genesys: Cache physical register state in the device on reads
+
+commit a3e492d6d59a75e869d8f35122a2d1044d4dc579
+Merge: ccd40d396980 f9b87de44a6a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 10:23:15 +0000
+
+ Merge branch 'genesys-remove-manual-alloc' into 'master'
+
+ genesys: Remove manual allocations
+
+ See merge request sane-project/backends!112
+
+commit f9b87de44a6ab4ae74c10be6eb242798a2b88fc3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:38:54 +0300
+
+ genesys: Remove manual allocations from calibration functions
+
+commit 6b2919db9a14d6b7ddffb7fe504060a3eec9df65
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:38:53 +0300
+
+ genesys: Remove manual allocations in device class
+
+commit ccd40d3969806c67b973a7e7466c76690de395c0
+Merge: 5bd9ab4941f7 fc9159b4075c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 10:15:53 +0000
+
+ Merge branch 'genesys-improve-readability-model-struct' into 'master'
+
+ genesys: Improve readability of model struct setup
+
+ See merge request sane-project/backends!110
+
+commit fc9159b4075ca16ae41090f55ca785757762b65b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:36:12 +0300
+
+ genesys: Improve readability of model struct setup
+
+commit 5bd9ab4941f749047944e2748f9c711cf047b17d
+Merge: 239147d4c71a 49b94dc09e1d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 09:57:02 +0000
+
+ Merge branch 'genesys-split-genesys-low' into 'master'
+
+ genesys: Split genesys_low.h into several files
+
+ See merge request sane-project/backends!109
+
+commit 49b94dc09e1dd2c9af99e85d88a0a5dacd1b9f2a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:35:16 +0300
+
+ genesys: Split genesys_low.h into several files
+
+commit 239147d4c71ae2d39798172e2752318bf9c228bf
+Merge: c4468f998ace 3c6635559f32
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 08:45:38 +0000
+
+ Merge branch 'genesys-cleanup' into 'master'
+
+ genesys: Cleanups
+
+ See merge request sane-project/backends!106
+
+commit 3c6635559f3221b6c839532ceeb18121a76002a0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:31:58 +0300
+
+ genesys: Remove unused code
+
+commit 13b2d09a42e22e35993cad5e170310d0b81c07ea
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:31:57 +0300
+
+ genesys: Fix printing of errors on exceptions
+
+commit 025ec317e32dba0b269a5f5e9dea0e056b6d40b1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-02 22:31:56 +0300
+
+ genesys: Move logical and register dpi computation to sensor struct
+
+commit c4468f998acedb2ebf6b80aa37171435c15ce1c5
+Merge: ebac8aee75bc faa078cd213a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 08:26:52 +0000
+
+ Merge branch 'genesys-return-errors-as-exceptions' into 'master'
+
+ genesys: Return errors as exceptions instead of error codes
+
+ See merge request sane-project/backends!105
+
+commit faa078cd213a2c27f43a4c52599b65302d1f49f2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:36 +0300
+
+ genesys: Return errors as exceptions from remaining functions
+
+commit c0360248108e39604a0a0378a62b60e1a5641869
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:35 +0300
+
+ genesys: Return errors as exceptions from genesys_buffer_image()
+
+commit 748acbbb818919ed78b7084c5a287e5fef108442
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:34 +0300
+
+ genesys: Simplify code by removing uses of RIE() macro
+
+commit c6bbc5f7739711100ed6ec3a4a861c14af8fd2ff
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:33 +0300
+
+ genesys: Return errors as exceptions from genesys_read_ordered_data()
+
+commit 1c030da1c29963ad815db4c4a5e2ea6e28092af1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:32 +0300
+
+ genesys: Return errors as exceptions from image manipulation functions
+
+commit 39e5daa7b452b422b5135e7016ea6582fc1950f2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:31 +0300
+
+ genesys: Remove unused code
+
+commit db2bb793d4a25aa900117d82bb15c9ac2a97b4f0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:30 +0300
+
+ genesys: Remove obsolete comments
+
+commit 107019c5de73d3efc7f23285b4ce3dd2ca32d3bb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:29 +0300
+
+ genesys: Return errors as exceptions from init_options()
+
+commit 1fd16cd16bd61b2d578cb4ccbcaee6b5517e8406
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:28 +0300
+
+ genesys: Return errors as exceptions from calc_parameters()
+
+commit 10947b94f115ccb0016408ba4a28bd2a534d56f2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:27 +0300
+
+ genesys: Return errors as exceptions from pixel format conv functions
+
+commit f727f1a01ba2d2e630c4f1c878290f712667ec81
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:26 +0300
+
+ genesys: Return errors as exceptions from genesys_fill_read_buffer()
+
+commit a6855efb575e6fb40413d6f36c9c33413f48ac05
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:25 +0300
+
+ genesys: Return errors as exceptions from genesys_fill_segmented_buffer()
+
+commit a18ef2e17ffd0963b12e10caa8f64d70ddb89ef9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-27 10:12:24 +0300
+
+ genesys: Return errors as exceptions from genesys_fill_line_interp_buffer()
+
+commit a2085a973ff1fcdf5e0a3021eb819710d331c9a5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-08-09 20:16:59 +0200
+
+ po/de.po: add/fix some German translations
+
+commit 97dd074595622948e456a9d8f20fb8457bd39b19
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-08-09 20:11:05 +0200
+
+ po/de.po: recreate German translations file
+
+commit 453b48180d22012b65fa9712be47d24c3e75cf93
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-08-09 19:51:18 +0200
+
+ pixma: Canon PIXMA TS6200 Series is working (#109)
+
+commit ebac8aee75bc231a9b6975562e1208100ba86fcd
+Merge: 153602308cd8 c6dacdf01490
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 07:51:05 +0000
+
+ Merge branch 'genesys-return-errors-as-exceptions' into 'master'
+
+ genesys: Return errors as exceptions instead of error codes
+
+ See merge request sane-project/backends!104
+
+commit c6dacdf0149063057dc9446abd9393155d86df4b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:41 +0300
+
+ genesys: Return errors as exceptions from accurate_line_read()
+
+commit 53450b681051b5c71746af5d4bfeb53f7c25d5df
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:40 +0300
+
+ genesys: Return errors as exceptions from genesys_start_scan()
+
+commit 1ad6aca5018dd8c5f204f6db9bafd5ceef701095
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:39 +0300
+
+ genesys: Return errors as exceptions from genesys_load_lut()
+
+commit 7c70d30f63e62f23c69845e2c2a1354bc041c831
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:38 +0300
+
+ genesys: Return errors as exceptions from genesys_*_calibration()
+
+commit b41ad140ad64c878342edb07136b5b6ff88534bf
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:37 +0300
+
+ genesys: Return errors as exceptions from *genesys_warmup_lamp()
+
+commit fa07b4806c08af6f2dfbb5a45bdf4d9fc868b532
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:36 +0300
+
+ genesys: Return errors as exceptions from genesys_save_calibration()
+
+commit e3d4b8fb9138c7c08ad6fade46c79330f0fb399a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:35 +0300
+
+ genesys: Return errors as exceptions from genesys_send_shading_coefficient()
+
+commit 82afcfae2d9e6fd76b904cf06f84ac6f2001a27e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:34 +0300
+
+ genesys: Return errors as exceptions from genesys_*_shading_calibration()
+
+commit edb442afe8b9f2890295c70e772b078b5113b0ae
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:33 +0300
+
+ genesys: Return errors as exceptions from genesys_dummy_dark_shading()
+
+commit cd87e4e6626a33feacaa45cdd389a78301a83539
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:32 +0300
+
+ genesys: Return errors as exceptions from genesys_average_white()
+
+commit 05a9a0837458cf62e38626381b70d1b811344d14
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:31 +0300
+
+ genesys: Return errors as exceptions from *rewind()
+
+commit 579df0d0b75c6519982e19466aa1e55069bf4648
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:30 +0300
+
+ genesys: Return errors as exceptions from *move_to_ta()
+
+commit 92d1817c2454a528c2f5b714f7b0d3193d51f838
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:29 +0300
+
+ genesys: Return errors as exceptions from *search_strip()
+
+commit 4247ced84ae6a3315a9c24a4b19e97de71d2ec3b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:28 +0300
+
+ genesys: Return errors as exceptions from *detect_document_end()
+
+commit 3862f53f24c06988a0be6b60931053b761279085
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:27 +0300
+
+ genesys: Return errors as exceptions from *load_document()
+
+commit 24625dcc2ca173728f89b037d19c8e4393da6c75
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:26 +0300
+
+ genesys: Return errors as exceptions from *update_hardware_sensors()
+
+commit 0db604d4dd2113639eb9a2a82cfc63bbfc6f05fc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:25 +0300
+
+ genesys: Return errors as exceptions from *led_calibration()
+
+commit dd29e02457bbaf5b10b539d866fb8a318e8f0ab3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:24 +0300
+
+ genesys: Return errors as exceptions from *coarse_gain_calibration()
+
+commit faea78eae6ea9b1f491e5e327117754dfb5c0351
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:23 +0300
+
+ genesys: Return errors as exceptions from *offset_calibration()
+
+commit 1eaa88963285026bb7b3be57efeac4688b4acee1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:22 +0300
+
+ genesys: Return errors as exceptions from *search_start_position()
+
+commit d46d5cd0277dcc3be13bde79c2fededca2bf9a6f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:21 +0300
+
+ genesys: Return errors as exceptions from *init_regs_for_scan()
+
+commit 8837f8adcc55d65bd093c560851a553d8d53c087
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:20 +0300
+
+ genesys: Return errors as exceptions from *init_regs_for_shading()
+
+commit 61f74af2498081206cef56733a71a71686d2441e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:19 +0300
+
+ genesys: Return errors as exceptions from *init_regs_for_warmup()
+
+commit 75144683328632702bfd6d0cb63a4a6b22e870b0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:18 +0300
+
+ genesys: Return errors as exceptions from *coarse_calibration()
+
+commit 88e7268bbe0525388bad97b3d350d65d2d029195
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:17 +0300
+
+ genesys: Return errors as exceptions from *for_coarse_calibration()
+
+commit 7019901aa57ca630fd0ac09f29275a802e1eae97
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:16 +0300
+
+ genesys: Return errors as exceptions from *simple_scan()
+
+commit 94abc7f964d1b97ce7bfd2d26cdea8da099d91c4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:15 +0300
+
+ genesys: Return errors as exceptions from *read_data_from_scanner()
+
+commit 867d907bb9fed29cee3408ae5d4b8ed4c66ad0dc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:14 +0300
+
+ genesys: Return errors as exceptions from *init()
+
+commit 67f187bceb609d3981299edcb7f4ae5023bd91f6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:13 +0300
+
+ genesys: Return errors as exceptions from *end_scan()
+
+commit eaeb05ead5ab691f2a40e4f682442487814506d7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:12 +0300
+
+ genesys: Return errors as exceptions from *search_reference_point()
+
+commit 196e0824549b84c9c1a186050987e49c39077bca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:11 +0300
+
+ genesys: Return errors as exceptions from *write_file()
+
+commit 241a4ea913c5796506c807b3f469c1eb919c2f61
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:10 +0300
+
+ genesys: Return errors as exceptions from *write_pnm_file()
+
+commit a6cbb980699e385168f954d665bdce1d41c054cf
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:09 +0300
+
+ genesys: Return errors as exceptions from *eject_document()
+
+commit 0bc253de07abc3e2348b16dcd1a105e4648dfd4c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:08 +0300
+
+ genesys: Return errors as exceptions from *start_motor()
+
+commit 3477b827ee178f22098da4b8a9389f2119eae091
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:07 +0300
+
+ genesys: Return errors as exceptions from *get_paper_sensor()
+
+commit 5d2d8e9509f5459fba74fca0409ac7738a4c25b3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:06 +0300
+
+ genesys: Return errors as exceptions from *send_gamma_table()
+
+commit e614c9e102629bcf34547eee2082dcfbd384adf6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:05 +0300
+
+ genesys: Return errors as exceptions from *repark_head()
+
+commit d8d1638fdedec78832cb926bce56ea1614843a64
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:04 +0300
+
+ genesys: Return errors as exceptions from *asic_test()
+
+commit a0aa335d90cb74fcfbf4c9817f5219d2cb0a7901
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:03 +0300
+
+ genesys: Return errors as exceptions from *set_powersaving()
+
+commit fd12b4052f9933247288474ea3f3f5d5016740e3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:02 +0300
+
+ genesys: Return errors as exceptions from *save_power()
+
+commit d75aa89c9f12502cf30402da84a72c495db0be27
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:01 +0300
+
+ genesys: Return errors as exceptions from *slow_back_home()
+
+commit 075d733613bbe0ee4ba82f5267d5367dcb241eea
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:02:00 +0300
+
+ genesys: Return errors as exceptions from *feed()
+
+commit 104ad9b44877563718d93023ef2e42b418d623af
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:59 +0300
+
+ genesys: Return errors as exceptions from setup_for_scan()
+
+commit 32a3faa3b56635fe54b24b452bc604c0e69e0ab8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:58 +0300
+
+ genesys: Return errors as exceptions from *setup_registers() and deps
+
+commit 06367877202dfff9a1f92302c9c3c04febe5b8f4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:57 +0300
+
+ genesys: Return errors as exceptions from *stop_motor()
+
+commit e5e9b5dc0d5797fb1e387e8dd3eeb8d942a06a83
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:56 +0300
+
+ genesys: Return errors as exceptions from *begin_scan()
+
+commit 02efbdee43054a02c21ebf2640486ab04fcb3166
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:55 +0300
+
+ genesys: Return errors as exceptions from *xpa_motor_power()
+
+commit 8a3b5a88a5ee356fb95402ac5c6f69656c6c9c80
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:54 +0300
+
+ genesys: Return errors as exceptions from *stop_action()
+
+commit fa6e4ab4c3961e4377091aa99bda80ca672bb319
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:53 +0300
+
+ genesys: Return errors as exceptions from *setup_scan_gpio()
+
+commit 86a151a4f2c021c3d0433f060f89e04a1b733591
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:52 +0300
+
+ genesys: Return errors as exceptions from *boot() and friends
+
+commit 67ecc10b81030d6d95addd5ad58fff8972d29b1c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:51 +0300
+
+ genesys: Return errors as exceptions from *init_gpio()
+
+commit 8e9253e301458fd299c9ba77b1976edeea391211
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:50 +0300
+
+ genesys: Return errors as exceptions from *genesys_init_shading_data()
+
+commit 24775d6e0eb398a3f02f781c09882d2ae57f6830
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:49 +0300
+
+ genesys: Return errors as exceptions from *homsnr_gpio()
+
+commit 08a1ae562543c842b8fafe2df43690e2a80af9c1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:48 +0300
+
+ genesys: Return errors as exceptions from *start_action()
+
+commit c843e3e83db31f0d42f48f21b9c46b4e689ee95f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 11:01:47 +0300
+
+ genesys: Return errors as exceptions from *init_scan_regs()
+
+commit 153602308cd87e99b19c8f2b339c633daa95e4c6
+Merge: b30567c271a4 bd6afe373684
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 07:33:28 +0000
+
+ Merge branch 'genesys-refactor-model-list' into 'master'
+
+ genesys: Refactor model list
+
+ See merge request sane-project/backends!103
+
+commit bd6afe373684672d3e50503b8e40726f86fa6325
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 09:16:36 +0300
+
+ genesys: Store available DPI into proper array
+
+commit bca1ab1d99ac48138881f7dc3c57abebd9d4012f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 09:16:35 +0300
+
+ genesys: Store available resolutions into proper array
+
+commit 341061f3df51a0c2339aea1112b026c6832cfdd2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 09:16:34 +0300
+
+ genesys: Correctly initialize Genesys_Model
+
+commit 7d4e7efa4ef9c9e2b36bddd2c5cf948a94814f73
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 09:16:33 +0300
+
+ genesys: Initialize usb device list in a function
+
+commit b30567c271a4fb3a1f6855fb356f11bec9a7e833
+Merge: 326b2a04f7c1 847a3a6e7c8e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 07:12:47 +0000
+
+ Merge branch 'genesys-canoscan-8400f-infrared' into 'master'
+
+ genesys: Add infrared channel support for CanoScan 8400F
+
+ See merge request sane-project/backends!102
+
+commit 847a3a6e7c8e85bd26f7d3bb67699c6877788910
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 21:17:31 +0300
+
+ genesys: Fix 8400F 2400 dpi scans
+
+commit b29bb66a36481bc906b2ad09403102f08b177a49
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 21:17:30 +0300
+
+ genesys: Add support for infrared scanning on 8400F
+
+commit ce713f95c0470e1afb20148e1c886310bcc09eb4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 21:17:29 +0300
+
+ genesys: Refactor XPA lamp setup function to be more extensible
+
+commit 326b2a04f7c1d5d6bf3d06540e096039bcf3e2c2
+Merge: 7d1617e4c067 57d8eb565ffb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 06:53:42 +0000
+
+ Merge branch 'genesys-return-errors-as-exceptions' into 'master'
+
+ genesys: Return errors as exceptions instead of error codes
+
+ See merge request sane-project/backends!101
+
+commit 57d8eb565ffbaacb5e23d8b02d659775f21e8650
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-09 09:40:54 +0300
+
+ genesys: Add missing dependencies to the unit tests
+
+commit c19ab1fce57481b061e1b829bf4461d4cea4fef2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:41:05 +0300
+
+ genesys: Return errors as exceptions from *init_motor_regs_scan()
+
+commit 9c9a118e12fcc9986d73824ccca40f917b924c78
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:41:04 +0300
+
+ genesys: Return errors as exceptions from *send_slope_table()
+
+commit 7d9f4d2c58e2d94521e7e6901572b4e2a2f164f3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:41:03 +0300
+
+ genesys: Return errors as exceptions from *init_optical_regs_scan()
+
+commit 876b7bba4e19f33a775a91a5f0b63d8710167cba
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:41:02 +0300
+
+ genesys: Return errors as exceptions from *set_fe()
+
+commit ce06801d5537cdfef728438d22841a6cca266cf9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:41:01 +0300
+
+ genesys: Support variadic format string in SaneException
+
+commit 290f71d6c1f9e1579efcac6a9dfe9e7494bf6ae7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:41:00 +0300
+
+ genesys: Move SaneException implementation to source file
+
+commit f258158ff3ab84d127170dd7873d46b4c8a3978d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:59 +0300
+
+ genesys: Return errors as exceptions from *send_offset_and_shading()
+
+commit 2f6052046fdbb908381f4118a1538197b8a981f9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:58 +0300
+
+ genesys: Return errors as exceptions from gl843_set_buffer_address()
+
+commit 4303877059c1f05f5493faf43012c4f3088e7fea
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:57 +0300
+
+ genesys: Return errors as exceptions from *init_cmd_set()
+
+commit d29f6862c63d401dff116103498c6546021b3e22
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:56 +0300
+
+ genesys: Return errors as exceptions from *wait_for_home()
+
+commit 2a9764b4fd50ca3ea15f206c6587efc6c98e5aae
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:55 +0300
+
+ genesys: Return errors as exceptions from *send_shading_data()
+
+commit 99b5f1e94e355e2cb0ae626f203a49ca957a90c1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:54 +0300
+
+ genesys: Return errors as exceptions from *gamma_buffer()
+
+commit e78cfa750feab63b4796392c3087196e4da0b5dc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:53 +0300
+
+ genesys: Return errors as exceptions from *fe_read_data()
+
+commit ad231613db7ad1e0cd183ebb04aebe504ed6fba2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:52 +0300
+
+ genesys: Return errors as exceptions from *read_feed_steps()
+
+commit 612ff9487c9ab72e722892236c5d726ded07b977
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:51 +0300
+
+ genesys: Return errors as exceptions from *fe_write_data()
+
+commit 32a2eeaa5f163afd3e25c0c29c62acfb0befd1da
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:50 +0300
+
+ genesys: Return errors as exceptions from *write_ahb()
+
+commit 693d42c0250d1e7d43ded9e7eb141bef5d808cee
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:49 +0300
+
+ genesys: Return errors as exceptions from *read_valid_words()
+
+commit 478ddd5d01853a135830c36284e577447a9621a6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:48 +0300
+
+ genesys: Return errors as exceptions from *read_scancnt()
+
+commit 5c0a382bc9cde7f1d409d020db9563df6b8fa76a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:47 +0300
+
+ genesys: Return errors as exceptions from *test_buffer_empty()
+
+commit f153fb109e82db4ef0821af69cbf7408933e1c8c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:46 +0300
+
+ genesys: Return errors as exceptions from *get_status()
+
+commit e388fc505884819a5168495c05b9c05706b6dd98
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:45 +0300
+
+ genesys: Return errors as exceptions from *bulk_write_register()
+
+commit 0dc3342be12be1c99660b4a8f608397faa98736e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:44 +0300
+
+ genesys: Return errors as exceptions from *bulk_write_data()
+
+commit 1c5960f9aa568c167fc68e7a10d9d1f8b9d6d180
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:43 +0300
+
+ genesys: Replace explicit DBG messages with DBG_HELPER
+
+commit 3a47a9ed4da8aa5f9c5505d879e9ad4ece02d38d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:42 +0300
+
+ genesys: Return errors as exceptions from *set_buffer_address()
+
+commit 17a619a927b11671d331dc63723d5f9ee6b18a3e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:41 +0300
+
+ genesys: Return errors as exceptions from *write_register()
+
+commit d1cffab8f4500247e3f865c3ce5ea4faec8a3083
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:40 +0300
+
+ genesys: Return errors as exceptions from *write_gl847_register()
+
+commit 3d17645fade5945e5aefa7a73ef9fa9425937e0c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:39 +0300
+
+ genesys: Return errors as exceptions from *read_register()
+
+commit bfef12cc4941f61700fb2e9563bf2d8c6b3253b4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:38 +0300
+
+ genesys: Return errors as exceptions from *read_gl847_register()
+
+commit 9e15623411b81a345aeac8e12d409190bdac48d2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:37 +0300
+
+ genesys: Return errors as exceptions from *write_0x8c()
+
+commit 1e5a7bd4d88d830a59d748272df575adda0ea035
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:36 +0300
+
+ genesys: Return errors as exceptions from *write_hregister()
+
+commit f856a3dacfff8eefc9468b4b73c12020d7aa55b7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:35 +0300
+
+ genesys: Return errors as exceptions from *read_hregister()
+
+commit a79f1404f3bd504ad51a5dc4b24a2287ff6ee668
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-14 23:40:34 +0300
+
+ genesys: Return errors as exceptions from *bulk_read_data()
+
+commit 7d1617e4c067704704b5b828fc192a534ee09d1d
+Merge: 9a8eb90dc369 5c32aefd0f4d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-08 20:09:54 +0000
+
+ Merge branch 'genesys-canoscan-8400f' into 'master'
+
+ genesys: Implement regular and transparency scans for Canon CanoScan 8400F
+
+ See merge request sane-project/backends!100
+
+commit 5c32aefd0f4d79a43b4f20bc23dc80a7416a7612
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 03:11:24 +0300
+
+ genesys: Implement transparency scanning support for 8400F
+
+commit ab2952d1df2acd1935d8db451984621e05ee7017
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 03:11:23 +0300
+
+ genesys: Add support for regular scans on CanoScan 8400F
+
+commit 0c1dded259055a5136556875d982fd2bf0da5c50
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-20 03:11:22 +0300
+
+ genesys: Enable support for CanoScan 8400F
+
+commit 9a8eb90dc3694d259a82853fa82be368457f59ed
+Merge: 820ff5293aca 6d6dbd81d32d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-08 19:51:06 +0000
+
+ Merge branch 'genesys-canoscan-8600f-infrared' into 'master'
+
+ genesys: Add infrared support to Canon CanoScan 8600F
+
+ See merge request sane-project/backends!99
+
+commit 6d6dbd81d32d1754208512c09d6bdeb9fc6c8fda
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:47 +0300
+
+ genesys: Improve documentation of Genesys_Model struct
+
+commit 644314bdad83cc0213c88b899343e2f9f3da35a5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:46 +0300
+
+ genesys: Put 0x72/0x73 registers to sensor definition on GL843
+
+commit 1a5e3944b3ae64ab4d95d189a978d2ceb999f17f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:45 +0300
+
+ genesys: Add option to get a raw scan ignoring offsets
+
+commit 144ed1f29b5d6869d40dc495edb5fda813a0de4c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:44 +0300
+
+ genesys: Implement infrared channel support for 8600F
+
+commit 78cdb347bea6e0fbfacd10a73537c6d680a99258
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:43 +0300
+
+ genesys: Fix lperiod on transparency scans on 8600F
+
+commit 3137639aca481b8a3257c0e78d07c8469b4b602f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:42 +0300
+
+ genesys: Make scan method explicit when selecting sensor
+
+commit c96a34f4a8b65f3390fac427124fffca619328df
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:41 +0300
+
+ genesys: Fix partial width during calibration support
+
+commit 7e2a1eed97d2cf77830d282acc522a878c2a7b2f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:40 +0300
+
+ genesys: Fix alignment of lamp and sensor during of transparency scan
+
+ The calibration area does not necessarily need to be at the zero
+ position. We may need to drive sensor to the lamp and then drive both to
+ the calibration.
+
+commit 7d32dca50e2f7ae3c9b5d795dae3c938e7a93b7e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:39 +0300
+
+ genesys: Sync GPIO with window driver on transparency scans on 8600F
+
+commit 0db759d996c1bd6f05e867a687f4de30f7055c19
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-13 04:14:38 +0300
+
+ genesys: Don't enable buggy behavior on newly supported scanners
+
+commit 820ff5293acaafe1ca218c7943d6cdc2a9c258be
+Merge: 45646240bf43 ac6ccfc1844f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-08 18:51:09 +0000
+
+ Merge branch 'genesys-repark-before-setting-shading-regs' into 'master'
+
+ genesys: Repark before regs are setup in white_shading_calibration()
+
+ See merge request sane-project/backends!98
+
+commit ac6ccfc1844f7212ed6bb274874046e16edcae81
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-02 23:30:53 +0300
+
+ genesys: Repark before regs are setup in white_shading_calibration()
+
+ Reparking after registers have been setup is very brittle approach, as
+ it must preserve everything intact.
+
+commit 45646240bf4322702d0f270e44b33f684734ef77
+Merge: 8d3369f68ecf af0f8e7e460e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-08 18:33:41 +0000
+
+ Merge branch 'genesys-fix-gl843-gain-calibration' into 'master'
+
+ genesys: Improve gain calibration on GL843
+
+ See merge request sane-project/backends!97
+
+commit af0f8e7e460ef61571ef347ec7242a6c61643b98
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-02 23:30:50 +0300
+
+ genesys: Improve gain calibration on GL843
+
+commit 8d3369f68ecf171c8a4e6dc319b8b5d501206dc5
+Merge: 1491a1067e6c 74854a85aab4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-08 18:13:30 +0000
+
+ Merge branch 'genesys-reinit-regs-before-shading' into 'master'
+
+ genesys: Reinit registers before each shading calibration step
+
+ See merge request sane-project/backends!96
+
+commit 74854a85aab4d5c35e9570fcfc1c86544cd174a1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-02 23:30:48 +0300
+
+ genesys: Reinit registers for shading again before white shading
+
+commit a5c5ea56ada665769f4819a59953ceae0820666d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-02 23:30:47 +0300
+
+ genesys: Add debug markers to data captured during calibration
+
+commit 1491a1067e6cdf39d0088ed788fabf66b2216a75
+Merge: 0fc4eb80e366 aa6bdba74d07
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-08 17:49:06 +0000
+
+ Merge branch 'genesys-usb-capture-debug-msg' into 'master'
+
+ genesys: Add a way to record debug messages to USB captures
+
+ See merge request sane-project/backends!95
+
+commit aa6bdba74d07fa140c60cd354d8cab6faa086edb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-06-28 18:18:28 +0300
+
+ genesys: Add a way to record debug messages to USB captures
+
+commit 0fc4eb80e3665af8aecedcdab2cd5110325f52cf
+Merge: eae96342d838 34d378347c93
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-08-08 16:51:43 +0000
+
+ Merge branch 'genesys-cleanup' into 'master'
+
+ genesys: Various cleanups
+
+ See merge request sane-project/backends!94
+
+commit 34d378347c93976f37e985f273b1f37a863c51bd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-06 21:02:28 +0300
+
+ genesys: Remove unused register read
+
+commit 8c9d6d7208ab7f88f479411153cf33add777cae1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-06 21:02:27 +0300
+
+ genesys: Read the value of CKSEL from the sensor definition directly
+
+commit 1a641316b0921abdc6882f9df7b5692968d6a406
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-06 21:02:26 +0300
+
+ genesys: Remove duplicate entry of Canon 5600F in config file
+
+commit f84f1b9d4252cc0686c45c824478f9f977cf3fc8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-06 21:02:25 +0300
+
+ genesys: Sort the initial register map by register on GL843
+
+commit a6a09f5dc5941a67ea0809064c7086846432cc1c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-06 21:02:24 +0300
+
+ genesys: Don't reuse non-applicable macro just because its value matches
+
+commit f4d5fd4ad6520ac4d54cbf8dd1f9bcdde1680867
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-07-06 21:02:23 +0300
+
+ genesys: Add a way to dump Genesys_Register_Set to debug
+
+commit eae96342d838347479565e8870e0686dca5be2a3
+Merge: 1be824f2c5bd fdc23d129ab2
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2019-08-08 16:44:19 +0000
+
+ Merge branch 'text_corrections' into 'master'
+
+ Some fixes to US messages in source.
+
+ See merge request sane-project/backends!91
+
+commit fdc23d129ab2746ba19b2c2d405b8d9965cd53cb
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2019-08-05 20:54:18 -0700
+
+ 1) Correct some spelling mistakes
+ 2) Convert some British spellings to US
+ 3) Modified some longer sentences to improve readability.
+ 4) Modified en_GB to suit
+
+commit 1be824f2c5bdf81998dc875cd43c28ce617fc871
+Merge: 953ed4c2b0b2 f8f90f8b98c2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-08 14:01:30 +0000
+
+ Merge branch 'sanei-usb-testing-mode' into 'master'
+
+ sanei: Support capture and replay of USB data for testing
+
+ See merge request sane-project/backends!55
+
+commit f8f90f8b98c29c6a823b14a71be411b3efd63bda
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-06-30 22:31:14 +0300
+
+ configure: Make --with-usb-record-replay opt-in rather than opt-out
+
+commit baa4eb30483c59e0b34c045a1476562286ffa25b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-06-30 22:18:11 +0300
+
+ testsuite: Add missing libs to `make check` programs
+
+commit 599bfe519c4d3e835e9825ea9ceb9d0360d0166a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-06-16 21:12:42 +0300
+
+ sanei_usb: Fix build when USB replay-record mode is disabled
+
+commit f3df7b9db14eeaae3915fb96d25877e1f61ff897
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-06-16 21:12:41 +0300
+
+ genesys: Don't sleep during tests
+
+commit 4edfb7a287635c28fde1201f57e183efbf1b89b9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-29 23:18:38 +0300
+
+ sanei_usb: Add function to check whether we are using fake data
+
+commit fd6adf2a46e8776ea0f133481bb7f14e3a1277d8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-09 00:38:45 +0300
+
+ sanei_usb: Don't crash when recording failed reads
+
+commit b30406873c81ebd922f805747a58aa4ffdce2ed5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-27 12:16:13 +0300
+
+ sanei_usb: Add support for record testing mode
+
+commit 7de8efd395375f84629a8d8c980009f5292841da
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-27 12:16:12 +0300
+
+ sanei_usb: Add support for "development mode" replay testing
+
+commit 21ed18b230bd542055a4f3c8e7271777f71b893f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-27 12:16:11 +0300
+
+ dll: Report when testing backend is unknown
+
+commit 0122c060b7dad349584cbe11a1cc348a92f65bc1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-04-27 12:16:10 +0300
+
+ sanei_usb: Add support for replay testing
+
+commit a88b6241cd7fc849619d81063663a5e609dfe951
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2019-05-25 09:12:30 +0300
+
+ configure: Add option to enable USB record-replay
+
+commit 953ed4c2b0b2927516382927e1cb1f8f8863ba8d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-08 21:41:22 +0900
+
+ mustek_usb2: Fix sprintf invocation. Fixes #110
+
+commit 90684c53bb646e6db98b4547cde9aeb2d41cf602
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-01 21:14:08 +0900
+
+ doc: Remove :new markers in external backend descriptions
+
+ External backends are per definition not new sane-backends. Removing
+ the commented out info makes for fewer false hits when searching.
+
+commit 85674f12138882ef34f493749cb1731b07f26b9e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-01 21:13:33 +0900
+
+ doc: Update as per post-release instructions
+
+commit 9a16b62e33ac55ecc5c4fdfd9f17f407541ab6ab
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2019-08-01 21:13:19 +0900
+
+ doc: Update post-release instructions
+
+ This reflects the post-release changes that have been taken care of
+ and are still considered somewhat meaningful.
+
+ MD5 checksums have been replaced by SHA512 and SHA256 checksum files
+ on the Releases page. The descriptions.db was used by the no longer
+ existant Search Engine on the website.
diff --git a/ChangeLogs/ChangeLog-1.0.30 b/ChangeLogs/ChangeLog-1.0.30
new file mode 100644
index 0000000..2ed543c
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.30
@@ -0,0 +1,196 @@
+commit d5187355f6e0de529b562569509a1851dda7ad84
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-17 20:16:28 +0900
+
+ NEWS: Document changes for 1.0.30 release
+
+commit 1fe94e6674d0572d2408361903730f012c60fc6c
+Merge: 898ab1834864 5104b80fc8f0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-17 16:26:00 +0900
+
+ Merge branch '279-confidential-issue' into release/1.0.30
+
+commit 5104b80fc8f0d6528b856233a52846a414ae6616
+Merge: f38c9f0d64a5 30b1831a28f2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-14 09:36:25 +0000
+
+ Merge branch 'mitigate-epsonds-net-security-issue' into '279-confidential-issue'
+
+ epsonds: Mitigate potential network related security issues. Re #279
+
+ See merge request paddy-hack/backends!9
+
+commit 30b1831a28f24ab2921b9f717c66d37f02bb81cc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-11 21:07:12 +0900
+
+ epsonds: Mitigate potential network related security issues. Re #279
+
+ This pre-empts the possibility of triggering GHSL-2020-079, GHSL-2020-080
+ and GHSL-2020-081.
+
+commit f38c9f0d64a52697562abdfbf9c9044cb1b7e897
+Merge: 3d005c2570a7 b9b0173409df
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-07 09:42:42 +0000
+
+ Merge branch 'issue09-esci2-img-buffer-size-check' into '279-confidential-issue'
+
+ epsonds: Prevent possible buffer overflow when reading image data
+
+ See merge request paddy-hack/backends!8
+
+commit b9b0173409df73e235da2aa0dae5edd21fb55967
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-27 18:48:29 +0900
+
+ epsonds: Prevent possible buffer overflow when reading image data
+
+ Addresses GHSL-2020-084, re #279.
+
+commit 3d005c2570a71fe93a63192d9c47ee54cb39049b
+Merge: 226d9c92899f 27ea994d23ee
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-06 04:06:49 +0000
+
+ Merge branch 'issue05-out-of-bounds-read-decode_binary' into '279-confidential-issue'
+
+ epsonds: Do not read beyond the end of the token
+
+ See merge request paddy-hack/backends!5
+
+commit 27ea994d23ee52fe1ec1249c92ebc1080a358288
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-30 21:15:45 +0900
+
+ epsonds: Do not read beyond the end of the token
+
+ Addresses GHSL-2020-082, re #279.
+
+commit 226d9c92899facf4b22b98c73be6ad2cd0effc4a
+Merge: 02b5d33b7a7c db9480b09ea8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-06 04:05:59 +0000
+
+ Merge branch 'issue07-out-of-bounds-read-in-esci2_check_header' into '279-confidential-issue'
+
+ epsonds: Read only up to seven hexdigits to determine payload size
+
+ See merge request paddy-hack/backends!6
+
+commit db9480b09ea807e52029f2334769a55d4b95e45b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-27 18:24:56 +0900
+
+ epsonds: Read only up to seven hexdigits to determine payload size
+
+ Addresses GHSL-2020-083, re #279.
+
+commit 02b5d33b7a7c0b72137f5b968c46a1d52a75aa63
+Merge: 4c9e4efd4a82 8682023faa27
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-06 04:04:18 +0000
+
+ Merge branch 'issue08-integer-overflow-sanei_tcp_read' into '279-confidential-issue'
+
+ sanei: Integer overflow sanei tcp read
+
+ See merge request paddy-hack/backends!7
+
+commit 8682023faa27c61156a354955c89617a3304d66f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-04 11:54:35 +0900
+
+ sanei_tcp: Address possible integer overflow. Re #279, issue 8
+
+commit fe08bbee6b238ea0be73af67b560ffc2c47562fd
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-04 11:48:46 +0900
+
+ epsonds: Handle error condition. Re #279, issue 8
+
+commit 4c9e4efd4a82214719eeb1377a900e3a85c1c369
+Merge: 2b4aa45bad61 fff83e7eacd0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-06 04:03:19 +0000
+
+ Merge branch 'issue01-null-pointer-deref-sanei_epson_net_read' into '279-confidential-issue'
+
+ epson2: Rewrite network I/O
+
+ See merge request paddy-hack/backends!3
+
+commit fff83e7eacd0f27bb2d71c42488e0fd735c15ac3
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-30 18:24:51 +0900
+
+ epson2: Rewrite network I/O
+
+ This addresses GHSL-2020-075 as well as all other problematic code
+ uncovered as a result of investigating that. This includes:
+
+ - buffer overflows due to use of unchecked lengths
+ - integer overflows due to type conversions
+ - potential memory leaks
+ - checking for memory allocation failures
+
+ Re #279.
+
+commit 2b4aa45bad61d5e34996645581a606fd8795a48c
+Merge: 37b142494bf6 07e3834127f8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-04 08:24:19 +0000
+
+ Merge branch 'issue11-read_of_uninitialized_data' into '279-confidential-issue'
+
+ magicolor: Added security mediation to device discovery
+
+ See merge request paddy-hack/backends!2
+
+commit 07e3834127f8bcd9dac02b91c17127dc41fbfb5b
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-04-30 23:21:00 -0700
+
+ magicolor: Added security mediation to device discovery
+
+ Extraction of values from the SNMP response were not checked.
+ Also fixed a bug that mistakenly matched any SNMP OIDs with the
+ first model in the model list, in function mc_get_device_from_identification().
+
+commit 37b142494bf659d8147b6f0fcb8629408717d14d
+Merge: e52a5bf71979 af0442f15cc9
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-04 05:28:37 +0000
+
+ Merge branch 'issue10-SIGFPE-in-mc_setup_block_mode' into '279-confidential-issue'
+
+ magicolor: Added security remediation for pixels_per_line.
+
+ See merge request paddy-hack/backends!1
+
+commit af0442f15cc966bbc3d7d9322380005ea0ee8340
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-04-26 13:04:41 -0700
+
+ magicolor: Added security remediation for pixels_per_line.
+
+ This implements a security issue reported by GitHub Security Lab.
+ The details are disclosed in GitLab issue #279.
+ The issue relates to an invalid scan parameter block being sent to
+ the backend containing 8 bytes of 0x00 which leads to pixels_per_line
+ being set to 0. Later arithmetic involves the division by this value
+ which causes a div by zero crash.
+
+commit 898ab1834864e3b813f0d0ae234f38ac05813756
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-06 20:56:21 +0900
+
+ Really remove libxml2 linker/loader flags from dependencies. Re #239
+
+commit 76bf742aba32ec1ed4ae641285f8e6a0b038326d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-05 21:30:11 +0900
+
+ Remove libxml2 linker/loader flags from dependencies. Re #239
diff --git a/ChangeLogs/ChangeLog-1.0.31 b/ChangeLogs/ChangeLog-1.0.31
new file mode 100644
index 0000000..b422c2f
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.31
@@ -0,0 +1,7289 @@
+commit 871813a22db1b03adcbf4f5dc4ea9eb29f12a36d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-23 20:25:14 +0900
+
+ NEWS: Document changes for 1.0.31 release
+
+commit b21f1cfd2748979b4e036575293a18eba28bf685
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-23 15:15:13 +0900
+
+ Revert spurious source code file reference changes in !512
+
+commit a2075317e38502dd2eb9058d54015e9faecf8a56
+Merge: 8f19b77f45e9 d65d121e6d2a
+Author: Oliver Schwartz <oliver.schwartz@gmx.ch>
+Date: 2020-08-20 19:55:50 +0000
+
+ Merge branch '38-macos-device-0x03f0-0x1305-at-020-002-is-not-configured' into 'release/1.0.31'
+
+ Resolve "[macOS] device 0x03f0/0x1305 at 020:002 is not configured"
+
+ See merge request sane-project/backends!504
+
+commit d65d121e6d2ab48832e1b4f9d2172a500cfabbfa
+Author: Oliver Schwartz <oliver.schwartz@gmx.ch>
+Date: 2020-08-08 09:55:47 +0000
+
+ Use SANEI_ALLOW_UNCONFIGURED_DEVICES macro to skip test of unconfigured devices instead of platform test.
+
+commit 8f19b77f45e955345da7cfc2ae48777009203ec7
+Merge: 80643db457d1 48fee0b33f4b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-20 10:07:25 +0000
+
+ Merge branch 'release/1.0.31' into 'release/1.0.31'
+
+ Italian translation update
+
+ See merge request sane-project/backends!512
+
+commit 48fee0b33f4b9b998be27857d9239da5049820c4
+Author: Vincenzo Reale <smart2128@baslug.org>
+Date: 2020-08-19 12:07:30 +0200
+
+ Italian translation update
+
+commit 80643db457d1893cd39bd333ff3bb08fb145f3e6
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-15 14:29:18 +0200
+
+ pixma: MP495 is working
+
+ Pixma backend supports only symmetric scan resolutions, here 600dpi.
+
+ See issue sane-project/backends#32
+
+commit 7ac9296a1940b81372e46ac2e94126792fa87985
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-14 19:58:15 +0200
+
+ pixma: backend version 0.28.5
+
+commit 3113d546c893ad9c8b4a3d7245e083272db8f6db
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-14 20:27:06 +0200
+
+ Revert "pixma: MP490 Series doesn't need special image formatting @ high dpi"
+
+ This reverts commit 1675697366e0d69edf1e413265c6fc15e6f3ab97.
+
+ See issue sane-project/backends#338
+
+commit e76b1e4863a23de7d740a46738af762c66935349
+Merge: 0d5ea59d4378 743290300a22
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-12 00:36:57 +0000
+
+ Merge branch 'for-upstream/avision_fix_fastfeed' into 'release/1.0.31'
+
+ backend/avision: fix lock-up of scanners not supporting fastfeed
+
+ See merge request sane-project/backends!505
+
+commit 743290300a2269398b2c6986eaa603ae73c75526
+Author: Michael Niewöhner <foss@mniewoehner.de>
+Date: 2020-08-10 19:26:24 +0200
+
+ backend/avision: fix lock-up of scanners not supporting fastfeed
+
+ de19ebc introduced a regression, where some scanners would lock-up
+ completely and require a full power cycle.
+
+ To fix that, do not call release_unit for any scanners not supporting
+ fastfeed for now, since that leads to lock-ups on at least one device.
+ Currently, it isn't clear what exactly is causing the problems, so it
+ maybe be enabled in a correct way again, later.
+
+ Resolves issue !337.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 0d5ea59d43780e5fc22238f3929e5ccd968a5587
+Merge: 4a4199c33033 0082a9af569a
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-10 21:09:40 +0000
+
+ Merge branch 'german-translation-revision' into 'release/1.0.31'
+
+ Update German translation
+
+ See merge request sane-project/backends!487
+
+commit 0082a9af569ad8f5a7ae719ac0c4d54c3dbd5469
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-10 22:52:45 +0200
+
+ some translations need some rework
+
+commit c1297cddfb54cca6a6cb506a1abbf106fb35f66a
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-10 22:51:38 +0200
+
+ rework some translations
+
+commit 85fcab62f5a0bf140e2fd9f85cf4af4cd26d597c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-10 22:46:30 +0200
+
+ translations start in capital letters
+
+commit 66e3e318afc5452c7c9d3f7b4e4589cb6d8770b8
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-10 22:41:33 +0200
+
+ remove outdated translations
+
+commit 5e07b8ad0be1df462439ecfea5227913cf5f9865
+Merge: 3ab937a3f171 4a4199c33033
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-08 14:15:23 +0200
+
+ Merge branch 'release/1.0.31' into german-translation-revision
+
+commit 4a4199c33033e786260f88866245b4322266dee1
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-08 13:51:25 +0200
+
+ pixma: E410 Series is working
+
+ See issue sane-project/backends#334
+
+commit 3f1fea952c46d0a07222a5154c8a5f0d45cb325a
+Merge: f23107f43d97 5447fd3d375d
+Author: Oliver Schwartz <oliver.schwartz@gmx.ch>
+Date: 2020-08-08 11:50:35 +0000
+
+ Merge branch '293-epson-perfection-3590-photo' into 'release/1.0.31'
+
+ Resolve "Epson Perfection 3590 Photo"
+
+ See merge request sane-project/backends!503
+
+commit 5447fd3d375d40b1e589171f2619f347974f7637
+Author: Oliver Schwartz <oliver.schwartz@gmx.ch>
+Date: 2020-08-08 09:25:01 +0000
+
+ Added "PHOTO" suffix to some Epson scanners to have unified model names across backends.
+
+commit f23107f43d974c692c2c6750db910e8c6f82b97c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-02 21:46:21 +0900
+
+ I18N: Update metadata (version, date, last translator)
+
+commit e7ab1b620fbdef94268c7d5af8911fde97457874
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-02 21:45:42 +0900
+
+ I18N: Sync message catalogs with current code.
+
+commit ddf30425462a97c7928d4b8608e7e5062e50e1ef
+Merge: d289b42ad736 823176c0fe99
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-02 12:15:21 +0000
+
+ Merge branch 'undefined' into 'release/1.0.31'
+
+ Update Ukrainian translation
+
+ See merge request sane-project/backends!493
+
+commit 823176c0fe9957cfa0c71915f99937af73379691
+Author: Yuri Chornoivan <yurchor@ukr.net>
+Date: 2020-07-22 12:37:35 +0000
+
+ Update Ukrainian translation
+
+commit d289b42ad736ca68a7f2e89ae23fa5217c293417
+Merge: 7a3e090efcc2 72d09e0bfa01
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2020-08-01 12:10:17 +0000
+
+ Merge branch 'p208ii' into 'master'
+
+ canon_dr: update P-208II status, add second mode
+
+ See merge request sane-project/backends!499
+
+commit 72d09e0bfa015e2ff899cc5ff53c4da737a90b00
+Author: Florian Klink <flokli@flokli.de>
+Date: 2020-07-29 15:01:19 +0200
+
+ canon_dr: update P-208II status, add second mode
+
+commit 7a3e090efcc2682a14d476cec8b198e97cd70b1c
+Merge: 7056b4826b28 d90b9e0292ef
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-01 06:15:30 +0000
+
+ Merge branch 'master' into 'master'
+
+ Mark PLANon DocuPen RC800 as supported by gPhoto2.
+
+ See merge request sane-project/backends!489
+
+commit d90b9e0292ef8347d7ec3c0d805a20d77fd48fc0
+Author: Ondrej Zary <ondrej@zary.sk>
+Date: 2020-07-04 13:38:07 +0200
+
+ Mark PLANon DocuPen RC800 as supported by gPhoto2.
+
+ Docupen RC800 support was merged into libgphoto:
+ https://github.com/gphoto/libgphoto2/pull/533
+
+commit 7056b4826b28d9b509a60f52f9bfe11d4932d761
+Merge: a277ea5ff1f4 9793d4f64eaf
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-01 06:14:15 +0000
+
+ Merge branch 'mingw-fixes' into 'master'
+
+ MinGW build fixes
+
+ See merge request sane-project/backends!483
+
+commit 9793d4f64eaffff57e02c2247830b4eaf595d7b5
+Author: Michael Cronenworth <mike@cchtml.com>
+Date: 2020-06-17 17:24:55 -0500
+
+ MinGW build fixes
+
+ - Fix define check on S_IFSOCK, looked like a typo
+ - Need a define check around syslog usage
+ - libdll_preload already has sanei_usb symbols and linking fails with
+ duplicate symbol errors if this is left in
+
+commit a277ea5ff1f407ff208c413c7e619f3e9b32093e
+Merge: e44672cdf8d4 8e21bd58063f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-01 03:45:15 +0000
+
+ Merge branch '279-issue02-null-pointer-deref-epsonds_net_read' into 'master'
+
+ Resolve "memory corruption bugs in libsane"
+
+ See merge request sane-project/backends!500
+
+commit 8e21bd58063fa3c2807025b6d7c932283788158a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-08 21:02:32 +0900
+
+ epsonds: Read whole payload of welcome message
+
+commit 6c07abf763bcb99d1fa419b999b1e4551990dea6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-30 19:45:42 +0900
+
+ epsonds: Rewrite network I/O
+
+ This follows the changes made to the epson2 backend and addresses
+ GHSL-2020-079, GHSL-2020-080 and GHSL-2020-081. Re #279.
+
+commit e44672cdf8d4d8c2636ceca6b0f73710dbd22195
+Merge: be666bb03762 df451265125a
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2020-08-01 01:10:17 +0000
+
+ Merge branch 'canon_dr/fix_get_pixelsize' into 'master'
+
+ canon_dr: Report early error
+
+ See merge request sane-project/backends!333
+
+commit df451265125a0ed8eb0c58690f8bb537a4694a27
+Author: Denis West <denis.perez@smartmatic.com>
+Date: 2020-02-13 11:06:55 -0500
+
+ canon_dr: Report early error
+
+ Exits get_pixelsize function when error is detected on previous
+ operation, avoiding unnecessary retries and reporting the correct
+ error code.
+
+commit be666bb03762116932e4c66c9af60c1b22ba5e70
+Merge: 08790ef7cb7f 5dd9eeb0837b
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-07-27 14:38:12 +0000
+
+ Merge branch '6-gt68xx-scanimage-batch-segfault' into 'master'
+
+ Resolve "gt68xx scanimage --batch segfault"
+
+ Closes #6
+
+ See merge request sane-project/backends!498
+
+commit 5dd9eeb0837b8fdef3c3f75a5d518616680fdcc4
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-07-26 11:19:31 -0700
+
+ gt68xx: Restore cancel "stop_scan" call and fix whitespace issue
+
+ The original issue that I had with this patch was in the cancel function
+ where the patch author had commented out the "stop scan" call for cancel.
+ This made no sense to me. I have put it back in for testing.
+ It might have been accidentally left out.
+
+commit 462419cc68e1469ca5426f6c82dc17d9b1bd2a88
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-07-26 11:02:40 -0700
+
+ gt68xx: Initial check-in of proposed patch for crash.
+
+ Ulf and I will review and test this patch on this branch.
+ It does seem to fix the issue, but I want to check it out a little more
+ before we commit it to master.
+
+commit 08790ef7cb7f15f2c925b22af8fd14fa5c631bef
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-07-27 12:45:07 +0200
+
+ lide 600 support promised in man-page
+
+commit 1b9e7016053e2b5dbb96ad255b8d16b3f4d5fd5d
+Merge: f29bbab5facd 1bd4fc283a08
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-07-26 17:53:48 +0000
+
+ Merge branch 'en_GB-translations-update' into 'master'
+
+ po: Updated en_GB translations.
+
+ See merge request sane-project/backends!497
+
+commit 1bd4fc283a08117bceb51e6613831fa6d4412dfd
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-07-26 10:35:04 -0700
+
+ po: Updated en_GB translations.
+
+commit f29bbab5facd85f376b6e60fb20db83444064932
+Merge: 21a3bfad71eb 37bc4598a249
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-07-26 17:19:15 +0000
+
+ Merge branch 'hp5400-fix-option-warning-bug' into 'master'
+
+ hp5400: initialize options bit mask to avoid compiler warning and glitchy operation
+
+ See merge request sane-project/backends!496
+
+commit 37bc4598a24993e8aa69aa9e9381c8b5382a34d7
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-07-26 10:00:48 -0700
+
+ hp5400: initialize options bit mask to avoid compiler warning and glitchy operation
+
+ This was picked up as a compiler warning in Ubuntu build and was a
+ real functional issue.
+
+commit 21a3bfad71eb28f61815d9cc4935d7de38e500db
+Merge: 890eb452b9d3 7f8acc85341a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-07-26 12:20:04 +0000
+
+ Merge branch 'for-upstream/backend_avision_i1120' into 'master'
+
+ backend/avision: support for Kodak i1120
+
+ See merge request sane-project/backends!19
+
+commit 7f8acc85341a8228b53991e63fee106e223f8ed1
+Author: Michael Niewöhner <foss@mniewoehner.de>
+Date: 2018-10-28 16:05:08 +0100
+
+ backend/avision: i1120: add description entry
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit e8ae2ca16f57cc13af2efe2a2c7c9c84c36a20ac
+Author: Michael Niewöhner <foss@mniewoehner.de>
+Date: 2018-10-28 14:48:55 +0100
+
+ backend/avision: fix: use fabs instead of abs for double values
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit fa6dfcc44e770fee8ad3e772ab88fdbea9990ec7
+Author: Michael Niewöhner <foss@mniewoehner.de>
+Date: 2018-10-28 11:38:01 +0100
+
+ backend/avision: i1120: finally set correct offsets for duplex
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 7d7184a209007731b41985b91de716f9fd177302
+Author: Michael Niewöhner <foss@mniewoehner.de>
+Date: 2018-10-28 09:39:08 +0100
+
+ backend/avision: add missing offsets for bry
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 6a6927b198b3b6352e33165bebce808ed8a6900c
+Author: Michael Niewöhner <foss@mniewoehner.de>
+Date: 2018-10-27 18:43:39 +0200
+
+ backend/avision: implement ADF first-sheet offset compensation
+
+ i1120 has another offset. When scanning in ADF multi-page mode (the
+ default), the very first sheet is moved 1.5mm down. That leads to 1.5mm
+ being cut off at the bottom.
+ This implements the (hopefully last) offset setting for multi-sheet ADF
+ scans.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit e96ce8887e64b396789aacba73493ff642f6caa2
+Author: Michael Niewöhner <foss@mniewoehner.de>
+Date: 2018-10-21 11:35:19 +0200
+
+ backend/avision: add ADF front-only offset compensation
+
+ This adds offset compensation for ADF front-only scans, which may
+ have different offsets than ADF duplex scans.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 58a3cdd042a7668ced79f007235a519dbb471c52
+Author: Michael Niewöhner <foss@mniewoehner.de>
+Date: 2018-10-14 18:54:40 +0200
+
+ backend/avision: Rewrite offset compensation
+
+ This is a complete rewrite of the offset compensation using a
+ combination of overscan and line skipping. It replaces the option
+ AV_REAR_OFFSET by specifying exact offset values for each scanner.
+ This was needed for Kodak i1120 which needs bottom line skipping.
+ The old implementation could not skip bottom lines since we could
+ not know how many lines we will get in the end from ADF.
+ The new implementation redirects the output file descriptor to a
+ temporary file. After the current page is completely scanned,
+ offsets are applied and the output is passed to the original
+ output file descriptor.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit b4716f626435c2eb71ef31bbf977c1040399dff8
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-10-03 14:45:58 +0200
+
+ backend/avision: i1120: Add option AV_MULTI_SHEET_SCAN
+
+ Kodak i1120 has single-sheet and multi-sheet scan modes. This option sets
+ bitset3[7] which enables multi-sheet scan by default so there is no pause
+ of 1s between two sheets in ADF scan mode. This also fixes some offsets
+ when scanning multiple sheets.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit e54c9602e9fdd75611b8f0904d640168cd6414c4
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-10-01 18:10:09 +0200
+
+ backend/avision: i1120: add option AV_GAMMA_UINT16
+
+ Kodak i1120 has a different gamma table format that looks like a
+ uint16/double array. Implement it and add an option for it.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit d8bf3924244899ba0eb0af1aeafb949eb9ba67a6
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-30 18:35:31 +0200
+
+ backend/avision: i1120: add option AV_GAMMA_10
+
+ Kodak i1120 needs gamma to be set to 1.0 to give decent scan results.
+ Add an option for this.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 886bf85d880d1eac4add0bc43da3768c2af6a217
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-30 18:18:41 +0200
+
+ backend/avision: i1120: add option AV_NO_QCALIB_MODE
+
+ i1120 does not have an explicit "quality-calibration" mode. Add an
+ option to disable this mode.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit de19ebc61aff535edfb3e465a4a4d89f9b9e9dc2
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-29 21:35:55 +0200
+
+ backend/avision: i1120: add option AV_FASTFEED_ON_CANCEL
+
+ Some scanners like i1120 support fast feed-out of the sheet when
+ cancelling a running scan. Add a new option for this release type.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 8b467b248ef8307d71b01d55aea868be35ec530c
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-29 21:58:24 +0200
+
+ backend/avision: i1120: set AV_NO_REAR
+
+ Kodak broke rear-only scan (bitset3[3]) when they modified the Avision
+ firmware. It would be possible to add a work-around that drops front data and
+ writes rear data only. Because of deinterlacing, offsets etc. this is way too
+ complicated. The simpliest solution to scan rear-only is to turn around the
+ paper stack and use front scan instead.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 692f87389b5e023d4b427c50762afb74cb6882c8
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-29 21:56:43 +0200
+
+ backend/avision: i1120: add option AV_OVERSCAN_OPTDPI
+
+ i1120 uses optical DPI for overscan calculation. Add an option for it.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 74e94e69016c9b14f9ddde5789679c451d826980
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-21 21:25:11 +0200
+
+ backend/avision: i1120: add option AV_NO_QSCAN_MODE
+
+ i1120 does not have an explicit quality-scan mode. Add an option to disable it.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit aff30cbb21d36bc43bf5a522c2c02dc6a0574c37
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-21 20:49:46 +0200
+
+ backend/avision: ability[3] seems to be a typo since ability[2] is dark cal indicator
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit de1a873cb7020a7faa382e5f6b74cabe2c56dbd0
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-20 20:13:53 +0200
+
+ backend/avision: i1120: use AV_SOFT_SCALE
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit c1c8ee8ea603652fee85c6dba824a82107e7ca7c
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-20 18:03:59 +0200
+
+ backend/avision: i1120: Enable gray filter to match windows driver
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit f393f8f24688b0bdca7d14286728382455c31fb5
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-16 21:32:51 +0200
+
+ backend/avision: i1120: add option AV_FORCE_CALIB
+
+ Add option AV_FORCE_CALIB to force calibration when scanner claims it is
+ not needed but it is.
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 196ce0b046e4eb5960c7c108f57cce3562b0e88e
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-20 18:43:31 +0200
+
+ backend/avision: Add basic support for KODAK i1120
+
+ Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
+
+commit 890eb452b9d3eed5aba317c203d160f8607c3ccd
+Merge: f06c18b7aebf 5683aab66bc7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-07-26 09:39:23 +0000
+
+ Merge branch 'Add-gamma-tables-to-test-backend' into 'master'
+
+ Add gamma test options
+
+ See merge request sane-project/backends!301
+
+commit 5683aab66bc704a884c2aa10589840d4ec020a56
+Author: Kåre Särs <kare.sars@iki.fi>
+Date: 2020-07-26 09:39:23 +0000
+
+ Add gamma test options
+
+commit f06c18b7aebf44de0aaa732a43e2163bd680187b
+Merge: e7fc728e2867 8bb62701c1e8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-07-26 09:10:21 +0000
+
+ Merge branch 'french-translation-revision' into 'master'
+
+ Update French translation
+
+ See merge request sane-project/backends!494
+
+commit 8bb62701c1e841836b1ac3b038bacff33368eaec
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-07-24 21:53:26 +0000
+
+ Update fr.po
+
+commit 0ca69fdc2e3e3d2cb864ee8aefb1b2d42d63e583
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-07-24 12:33:25 +0200
+
+ Update French translation
+
+commit e7fc728e2867a25abdafe20ae7c57a17193eca18
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2020-07-18 21:12:52 -0400
+
+ fujitsu: add USB IDs for fi-7800 and fi-7900
+
+commit 8bdd27d149113a7e8cbea878829bb8adb3c09fab
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-14 19:36:17 +0200
+
+ pixma: remove auto generated files @ 'make clean'
+
+ See merge request sane-project/backends!491
+
+commit e390b351a019b34c70b752d50bf97ea32c266070
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-14 18:02:11 +0200
+
+ pixma: backend version 0.28.3
+
+commit f1ebc352ae46730c8b31cfe4a4244217dc7c3f68
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-14 18:01:22 +0200
+
+ pixma: update man page
+
+commit bc814909961465e044f198f4581937865ece25e3
+Merge: 7481254f1bed 1da5ae889a2a
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-14 15:57:31 +0000
+
+ Merge branch '302-pixma-status-of-pixma-tr-4500-series' into 'master'
+
+ Resolve "pixma: Status of PIXMA TR 4500 Series"
+
+ Closes #302
+
+ See merge request sane-project/backends!485
+
+commit 1da5ae889a2a389cdfdd0c7f4ecf8f4335d1d777
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-11 00:28:39 +0200
+
+ pixma: add new button options
+
+ some scanners return more options from push-button:
+ document-type, adf-status and adf-orientation
+
+commit b8cf6b4b49ff08111b153790fbd09608b995b219
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-07 19:56:55 +0200
+
+ pixma: TR4500 Series is working
+
+commit ec918e5c74ab4e787ea576135cd1a119513a8a29
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-07 19:43:10 +0200
+
+ pixma: TR4500 Series supports max. 600dpi
+
+commit 0febc8166584d3ecf58c3c39973408aeee67b658
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-23 23:00:36 +0200
+
+ pixma: add button support for TR4500 Series
+
+ this scanner provides additional button information
+
+commit 1943d34d606d1a0aae22661d2517f57406692a3f
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-23 22:49:56 +0200
+
+ pixma: TR4500 Series returns JPEG images from ADF scans
+
+commit 7481254f1bed0311fe25596421771a02f5b7ba59
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-14 17:13:06 +0200
+
+ pixma: auto generate options files with python[23]
+
+ see issue sane-project/backends#327
+
+commit 7525fda505d3d12bc103954f4f4873c5d4d2ee94
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-11 20:15:43 +0200
+
+ INSTALL.linux: add python to mandatory develop environment list
+
+ See merge request sane-project/backends!491
+
+commit 819cc8cd611f1e2670cfeb1e18bfa9f5cc7c5de8
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-11 20:04:46 +0200
+
+ pixma: add comment how to generate new pixma_sane_options.[ch]
+
+commit 684efcef23283706ee69c80f8b2870d4e84ab382
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-11 19:51:26 +0200
+
+ pixma: add "do not edit" comment on top of generated files
+
+commit 8ad42d2967f3321a880c38a7e1dfbc9228022f95
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-11 19:46:56 +0200
+
+ pixma: PIXMA TS5100 Series is working
+
+ see issue sane-project/backends#325
+
+commit ff1e8b85c9d21192e9c1f302272d8196109881ec
+Merge: 537fbc9bf652 4a2cabe3be65
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-07-11 08:42:36 +0000
+
+ Merge branch 'pixma-autogen_options' into 'master'
+
+ pixma: auto generate sane options files
+
+ See merge request sane-project/backends!491
+
+commit 4a2cabe3be6593effa1004279e39a44f39f8e13f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-07-11 16:51:23 +0900
+
+ pixma: Fix sane options file generation
+
+ This now generates files in the source tree and includes them in the
+ source tarball together with the script used. Explicit dependencies
+ are added to trigger generation. Rules have been rewritten to use
+ implicit variables for brevity.
+
+commit b957674f65d65536458fd2ccb9e65294f4399f86
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-07 22:24:35 +0200
+
+ pixma: auto generate sane options files
+
+ This prevents from fixing stuff in generated files.
+
+ Generated from pixma.c, bottom comment area.
+
+commit 537fbc9bf652d2aad2eee1a70023682f6febe868
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-06 23:34:07 +0200
+
+ pixma: backend version 0.28.2
+
+commit 0b22eecf867c9d3701d96a19e2a6d8e19167336d
+Merge: 37c597d8df18 8f93b4cc622c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-06 21:38:06 +0000
+
+ Merge branch '318-canoscan-lide-400-potentially-supports-48-bit-depth' into 'master'
+
+ Resolve "CanoScan LiDE 400 potentially supports 48-bit depth"
+
+ Closes #318
+
+ See merge request sane-project/backends!486
+
+commit 8f93b4cc622c002b8b1dea63b1a210fc6dbfa210
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-06 22:36:25 +0200
+
+ pixma_mp800: remove TODO for 16-bit scans
+
+ mp800 scanners need min. 150dpi for 16-bit scans
+
+commit 3a18629f1190d78c48241e061448d8d500a50c41
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-06 22:31:48 +0200
+
+ pixma: in dpi list set min. scan resolution for 16-bit scans
+
+commit 0f1850fe4fbb019f87aa62e94168b41a8faf459d
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-06 22:30:28 +0200
+
+ pixma: new parameter to set min. xdpi for 16-bit scans
+
+ 16-bit scans have different min. scan resolutions: 75 and 150dpi
+
+commit b0efdd89cbb4a6869d03629a2b5fb6cee16f955a
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-07-06 23:04:59 +0200
+
+ pixma_mp150: scan 48bit color and convert
+
+commit c4f0d4505e7d35185f675eadd90f8c8e1680eea8
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-24 16:58:36 +0200
+
+ pixma_mp150: enable 48bit support for LiDE 400
+
+commit 3ab937a3f171a40ab117198074d726e7bda9036c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-27 13:42:04 +0200
+
+ fix some translations
+
+commit 463f833aa98da010ddf5b42f79e04f5bcf6599a2
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-27 13:35:08 +0200
+
+ add missing translations
+
+commit 6cc9fbdbbb98ef6780b25dc0f826224b5adc05ce
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-27 12:19:34 +0200
+
+ update German translation from source
+
+commit 37c597d8df18601e4b8f374cc99275b0aad85f99
+Merge: 7e2361d42e2a b0c42c0f5f52
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-06-26 22:04:27 +0000
+
+ Merge branch 'genesys-lide-90' into 'master'
+
+ genesys: Add support for Canon CanoScan LiDE 90
+
+ See merge request sane-project/backends!488
+
+commit b0c42c0f5f525660dfc5ebe861ae0abb03ed744d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-06-27 00:47:20 +0300
+
+ genesys: Implement support for LiDE 90
+
+commit ea15fb29b73a3d90b0dc003e307a666caa3c5f3e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-06-27 00:47:19 +0300
+
+ genesys: Simplify motor table upload on gl842
+
+commit d948f5eb697de719183a445faacc22949a18f0f0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-06-27 00:47:18 +0300
+
+ genesys: Fix cis scanner support on gl842
+
+commit 02782651a36bc43b2dd009dbb440bd2f41eec60e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-06-27 00:47:17 +0300
+
+ genesys: Add model option to disable fast feeding
+
+commit 86c15ff4a027163fc7955c8ee4cbeb507bb5d1b1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-06-27 00:47:16 +0300
+
+ genesys: Add option to fill dark calibration with constant
+
+commit 6fdc5e6e1fd0b569cda494776b3d3054ee843d5f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-06-27 00:47:15 +0300
+
+ genesys: Throw an exception when motor speed is too low
+
+commit f6f891bd9387445f8176fffd02c60d1ad5114c77
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-06-27 00:47:14 +0300
+
+ genesys: Call update_home_sensor_gpio() for all chip types
+
+commit 7e2361d42e2af44d29b395394abab9ebce0ad835
+Merge: 278d2c236eda c5c9c6a9405c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-26 22:16:32 +0200
+
+ Merge branch 'german-translation-revision'
+
+commit c5c9c6a9405c126a3a26b1f80e3f53bb83c06e65
+Author: Ulf Zibis <Ulf.Zibis@CoSoCo.de>
+Date: 2020-01-13 23:34:08 +0100
+
+ po/de.po: First batch of full blown revision (15% done)
+
+commit 278d2c236eda1279d824ea458d0f8f58bbeeb0ea
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-26 21:37:21 +0200
+
+ pixma: i-SENSYS MF4700 Series support is complete
+
+ see issue sane-project/backends#262
+
+commit 1a429257c136b066353c56658891790a9a616620
+Author: Alex Belkin <abc@telekom.ru>
+Date: 2020-06-25 19:07:59 +0300
+
+ xerox_mfp: Mark M288x Series as unsupported
+
+ Device is reported by @dominicjaeger.
+
+ Also, reference sane-airscan as suggested in #317 by @alexpevzner.
+
+commit 621e7dbf29fe18ad5e5bde4d24eb192ca5dec0b3
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-06-24 20:34:13 +0900
+
+ utsushi.desc: Sync with upstream
+
+commit 7efeb82f16376a8f796a6ca516884de953595365
+Merge: 8c9002772caf ce03cd0ad360
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-06-21 19:41:32 +0000
+
+ Merge branch 'escl-add-hp-officejet-pro-8610' into 'master'
+
+ Add HP officeJet Pro 8610
+
+ See merge request sane-project/backends!484
+
+commit ce03cd0ad360f7c6ffd373bb1d82674065fc52bd
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-06-21 21:19:24 +0200
+
+ Add HP officeJet Pro 8610
+
+commit 8c9002772caf7012383ea8e7bc7c9ef878b371cf
+Merge: fa0d3886641b 6bb87fdf1f3d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-06-17 10:05:03 +0000
+
+ Merge branch '314-sane-1-0-30-unable-to-compile-without-libusb' into 'master'
+
+ Resolve "sane 1.0.30: unable to compile without libusb"
+
+ Closes #314
+
+ See merge request sane-project/backends!482
+
+commit 6bb87fdf1f3dc190cfc4b7d64b0c8c8c3d10151b
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-06-14 08:09:44 -0700
+
+ sanei: added missing include file stdint.h
+
+commit fa0d3886641b5afd05c039156daf0ec801accbc3
+Merge: 67a2fe57717a 5a8ee2bd5b1d
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-06-08 21:08:46 +0000
+
+ Merge branch 'escl-add-model-hp' into 'master'
+
+ Add 2 models HP.
+
+ See merge request sane-project/backends!481
+
+commit 5a8ee2bd5b1d8ac41ebd6f6436b078b0fa253bf8
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-06-08 22:30:16 +0200
+
+ Add 2 models HP.
+
+commit 67a2fe57717a896a5d4d01cbc038f94868c4c76d
+Merge: af3acaf0303a 58c755d37400
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-06-07 13:56:32 +0000
+
+ Merge branch 'add-model-working' into 'master'
+
+ escl : Add model working
+
+ See merge request sane-project/backends!480
+
+commit 58c755d37400e6674fff12070fd6e9d63e6d8662
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-06-07 15:38:11 +0200
+
+ Add model and mfg.
+
+commit 76dfd392e3da6458ebe771c1f6b9467a94a604fa
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-06-07 13:46:47 +0200
+
+ Fix style.
+
+commit 7bd186acf0dad312991464cb52ae7007c0f8f901
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-06-07 13:39:19 +0200
+
+ Ajout des premiers modèles identifiés et soutenus par l'escl.
+
+commit af3acaf0303adadc27a65faacf327873c33a95a2
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-06 14:42:09 +0200
+
+ pixma: G4000 Series is working
+
+ See issue sane-project/backends#245
+
+commit e859ea108ae4b0f3180c34cfc3043cb774345a98
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-06 13:16:54 +0200
+
+ pixma: backend version 0.28.1
+
+commit e58ccba918d0e9307941b0661f21226ced620abf
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-06 13:16:16 +0200
+
+ pixma: TR8500 Series returns JPEG images from ADF scans
+
+ See issue sane-project/backends#270
+
+commit dc25c9f48dc0bf4d3c3ab6035fcda1cbc5cdab89
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-05 23:20:41 +0200
+
+ pixma: backend version 0.28.0
+
+commit d2ae0ee6970a9a3d57d8dd7d86fd3d947d7bdcb5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-05 23:17:51 +0200
+
+ pixma: update coryright
+
+commit 190f2874dbbce6b087fb78b2b57cc8d2e8569e29
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-05 23:17:24 +0200
+
+ pixma man page: refer to scanimage and gamma4scanimage man pages
+
+commit edace214b25766860dc3f71a4201fca9f052e5c4
+Merge: b9b82f25e1e5 4b9dddb76365
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-05 20:58:07 +0000
+
+ Merge branch 'pixma/gamma_table' into 'master'
+
+ Pixma: fix internal generated gamma table
+
+ See merge request sane-project/backends!295
+
+commit 4b9dddb76365165070711e4b4f262a02dd9eefe1
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-05 22:41:32 +0200
+
+ remove debug outputs from send gamma table
+
+commit 0118111c6fa935374800d1cf5cbb5f41d443712c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-06-05 22:07:19 +0200
+
+ use capability to select gamma table size
+
+commit 16ddd3b9722f628ae82d7fb742718b54b2d6daa7
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-05-30 16:21:05 +0200
+
+ get 1024 and 4096 size gamma tables from frontend
+
+ Default gamma table has 1024 entries of 16 bits values. Only generation 1
+ scanners need a gamma table with 4096 entries of 8 bits values.
+
+commit 16ff7c0bba68e9c39a90ab4394a1adcebcfa8adf
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-05-30 16:17:15 +0200
+
+ generate gamma table from control option
+
+ we need to generate gamma table only once, after getting gamma from the frontend
+
+commit 057aa02b34567ae51d828fdf9d054eec0aac1c58
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-05-30 16:04:25 +0200
+
+ new capability for scanner generation 1 4096 bytes gamma table
+
+commit 11126468ef880bf7f0ee6520247ac97ecdd59a9f
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-05-30 16:02:01 +0200
+
+ calculate 16-bit gamma table
+
+ Generation 1 scanners need a 8-bit gamma table, with 4096 bytes size.
+ All other scanners need a 16-bit gamma table, with 1024 bytes size. For
+ these scanners values of the generated gamma table are close by the values
+ used from the manufacturers proprietary driver.
+
+commit 103c77ddee320d38620dcbfe933fb341dc08a657
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-05-30 15:26:20 +0200
+
+ new global variable for gamma
+
+ get gamma value from 'opt_gamma'
+
+commit 24c016f40836dad746174711a7675833c8b9d278
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-05-30 15:12:46 +0200
+
+ pixma_gen_options.py: fix print whitespace
+
+commit b9b82f25e1e595260003e272ad0d354ffeeada08
+Merge: 1486b81dd9e1 f52f4917e549
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-06-05 10:03:25 +0000
+
+ Merge branch 'corrupted-data-image-with-scanimage' into 'master'
+
+ Replacement of printf by DBG
+
+ See merge request sane-project/backends!479
+
+commit f52f4917e54941f4dcaf924afaf09e35dbf4ac6d
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-06-05 11:45:21 +0200
+
+ Error syntax
+
+commit 641c736c37ce8033d7084106893c58c2c2e7e122
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-06-05 10:20:21 +0200
+
+ Replacement of printf by DBG.
+
+commit 1486b81dd9e187f8b4ac893d0cdf55f344a71b26
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-05-30 16:21:44 +0200
+
+ pixma: fix description of adf-wait
+
+commit 4a5c7d6889c5a7361ea892ec1264a545e249c5a0
+Merge: 9165864eef83 db20a613c37b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-30 04:20:44 +0000
+
+ Merge branch 'ci-updates' into 'master'
+
+ CI updates
+
+ See merge request sane-project/backends!478
+
+commit db20a613c37b4f4cd3fe109d93d2d9015eb2d06a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-30 13:04:03 +0900
+
+ CI: Bump Alpine from 3.11 to 3.12
+
+commit 299af98cb2bd21ac3aded75a2ad3ad03b7f94c67
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-30 13:02:14 +0900
+
+ CI: Sync full set of configure options with ci-envs settings
+
+commit 9165864eef83dd86e176c5ab266f06c0cf9ce95c
+Merge: e1be18fbef07 96f60115dfee
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-25 23:10:01 +0000
+
+ Merge branch 'genesys-5600f' into 'master'
+
+ genesys: Add support for 5600F
+
+ See merge request sane-project/backends!477
+
+commit 96f60115dfee4b9795b5d3101a3517271dcac2ea
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:51:23 +0300
+
+ genesys: Bump calibration version
+
+commit 970b831ffe94a4b2445aa749c35e49c40f4c35ed
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:51:22 +0300
+
+ genesys: Remove a couple of no longer relevant links
+
+commit 069d8a7db06379c185ce0d44931ea91c8f1bc00e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:51:21 +0300
+
+ genesys: Mark 5600F support as complete
+
+commit 23079e00612bc513a3414c80ad1d0853cfa255f0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:51:20 +0300
+
+ genesys: Increase timeout in wait_until_has_valid_words()
+
+commit 3cca2593fc5bf1fc8afcf72c078ae14ef9d26eb4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:51:19 +0300
+
+ genesys: Add support for Canon 5600F
+
+commit b9e4113ef083f6d272a53a3d25055df5b66e0228
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:51:18 +0300
+
+ genesys: Add functions to write to register according to mask
+
+commit e1be18fbef070f0eebd1e4311c5065d06594f189
+Merge: 7c378476e856 7c74cb7ce973
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-25 22:49:33 +0000
+
+ Merge branch 'genesys-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!476
+
+commit 7c74cb7ce9730315bf762a6b9619cc0f662f63a9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:32:45 +0300
+
+ genesys: Remove no longer used code
+
+commit 8ec6bc2e5d1e2a8c18a293a553887ed288ab8280
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:32:44 +0300
+
+ genesys: Deduplicate move_to_ta()
+
+commit c4135d63a7d6f35b95b9bfab9f521b900460ea26
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:32:43 +0300
+
+ genesys: Simplify move_to_ta() on gl843
+
+commit bc973a21c25159e8d4f19a9b916602e645d6bba5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:32:42 +0300
+
+ genesys: Simplify move_to_ta() on gl842
+
+commit b8a24ee409e42dfce728d9f83de1f564418d8a9a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:32:41 +0300
+
+ genesys: Remove useless debug statements
+
+commit 57a398888d04f288e3c167e13a6a154c0a66ae80
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:32:40 +0300
+
+ genesys: Deduplicate init_regs_for_scan()
+
+commit 66ba92cfb6ea70a7cc4ec628365b67cd0c941462
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:32:39 +0300
+
+ genesys: Don't throw exception in non-exceptional circumstances
+
+commit 7c378476e856d739f9797c2b7e70b48ba1f71823
+Merge: 64b69331d351 f3b04b374a7c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-25 22:30:48 +0000
+
+ Merge branch 'genesys-gl847-transparency' into 'master'
+
+ genesys: Implement transparency support on gl847
+
+ See merge request sane-project/backends!475
+
+commit f3b04b374a7c5f7814fa3822de22cd89c024a7ad
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:14:43 +0300
+
+ genesys: Implement transparency support on gl847
+
+commit 64b69331d351921f2d40ea662211f74b60b831b8
+Merge: 786442d9c7b1 8a66829057e4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-25 22:29:03 +0000
+
+ Merge branch 'genesys-misc-fixes' into 'master'
+
+ genesys: Miscellaneous fixes
+
+ See merge request sane-project/backends!474
+
+commit 8a66829057e47cb6dd6ea5e00d7a097c9dd069a0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:13:20 +0300
+
+ genesys: Simplify access to nodes that are newly added to image pipeline
+
+commit c9182dc6067279cf3cb153d97f5a5105d1a35308
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:13:19 +0300
+
+ genesys: Ensure ImagePipelineStack nodes are destroyed in reverse order
+
+commit 3282c5a65410055c7047d5642cc95da07ca50722
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:13:18 +0300
+
+ genesys: Fix TIFF file writing
+
+commit 786442d9c7b1ac14b5b2b030cae3664195772335
+Merge: 6bf26b3882a9 ba91fc844d0c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-25 22:26:23 +0000
+
+ Merge branch 'genesys-pixel-offsets' into 'master'
+
+ genesys: Pixel offset calculation adjustments
+
+ See merge request sane-project/backends!473
+
+commit ba91fc844d0c6aa5c2775e3a4add937368ba4a0c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:10:52 +0300
+
+ genesys: Fix start pixel calculation when optical resolution is not max
+
+commit 56db2b988aed604036df855dcb9c201309d56a5e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:10:51 +0300
+
+ genesys: Adjust host side calibration by shading pixel offset
+
+commit 8a10e33a13929345ff32080199d8a4853bd01526
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:10:50 +0300
+
+ genesys: Move all pixel adjustment calculations to a single function
+
+commit 6bf26b3882a9e386a7b6ec095292c00754a084f5
+Merge: 5e8583bc3151 b569e6cbb949
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-25 22:25:47 +0000
+
+ Merge branch 'genesys-host-side-calibration' into 'master'
+
+ genesys: Reimplement simplier host-side calibration
+
+ See merge request sane-project/backends!472
+
+commit b569e6cbb9492c90b9514db162689bd08702a4e1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-26 01:09:23 +0300
+
+ genesys: Reimplement simplier host-side calibration
+
+commit 5e8583bc3151dfab92eb1ae20d23844baf4ee43a
+Merge: b7ec6da949b6 08613aad2677
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-25 12:05:14 +0000
+
+ Merge branch 'remove-package-version-from-config' into 'master'
+
+ gt68xx: Remove @PACKAGEVERSION@ from configuration filey
+
+ See merge request sane-project/backends!471
+
+commit 08613aad26776ef4bea41e5554a369ef9ed9403e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-25 20:48:35 +0900
+
+ gt68xx: Remove @PACKAGEVERSION@ from configuration filey
+
+commit b7ec6da949b6667199ffb9e164f0f2bea5e70e94
+Merge: 3084c412695c 92bf0c6623c7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 17:59:40 +0000
+
+ Merge branch 'genesys-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!470
+
+commit 92bf0c6623c765fa5d7b3fe504d3c6b1ecf5b99a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 20:44:26 +0300
+
+ genesys: Remove broken interpolation support
+
+commit 6a495f97253f6771f53ac0e9ff6bbe9e12745d77
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 20:44:25 +0300
+
+ genesys: Remove duplicate align_int_up()
+
+commit e7e532200308d73dcc4cd7a3bede945f4944b5fb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 20:44:24 +0300
+
+ genesys: Remove dead code
+
+commit 3084c412695c25108536c866ab883f0e4b95d3c6
+Merge: 44ee9bf373b8 33fc7cfb29dd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 15:52:51 +0000
+
+ Merge branch 'genesys-fix-parameters' into 'master'
+
+ genesys: Retrieve output parameters out of the actual pipeline
+
+ See merge request sane-project/backends!469
+
+commit 33fc7cfb29dd153a71275bb6246405db8fc070e6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 18:18:15 +0300
+
+ genesys: Retrieve output parameters out of the actual pipeline
+
+commit 44ee9bf373b8643bd93dd643e5ad1999d326215a
+Merge: 745a5c8b3870 a12083c8c44b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 15:35:41 +0000
+
+ Merge branch 'genesys-remove-lineart' into 'master'
+
+ genesys: Remove support for generating lineart within the backend
+
+ See merge request sane-project/backends!468
+
+commit a12083c8c44b7296fa98ecb83e8932d0f6bdeb05
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 17:48:33 +0300
+
+ genesys: Remove support for generating lineart within the backend
+
+commit 745a5c8b387043eee461e7be683b0a72c0e4fe57
+Merge: ddeae7e8b0f3 a23d61c26bea
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 15:19:16 +0000
+
+ Merge branch 'genesys-simplify-pipeline' into 'master'
+
+ genesys: Allow pipeline to be created without mutating device
+
+ See merge request sane-project/backends!467
+
+commit a23d61c26bea07f54f8f442c26f14decfef98203
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 16:42:41 +0300
+
+ genesys: Allow pipeline to be created without mutating device
+
+commit ddeae7e8b0f34e6822f83a4072e88dbfefe88e9b
+Merge: d680724f9e1c 28e6ad89b8ca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-24 13:52:19 +0000
+
+ Merge branch 'genesys-simplify-buffers' into 'master'
+
+ genesys: Simplify read buffer management
+
+ See merge request sane-project/backends!466
+
+commit 28e6ad89b8ca150db2f8a159be8c83b2288d466d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 10:39:12 +0300
+
+ genesys: Simplify read buffer size calculation
+
+commit ec5af182398c94d01741cd9d8d1ce0109903cfe1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 10:39:11 +0300
+
+ genesys: Remove no longer used ImageBufferGenesysUsb
+
+commit d172b9cc4d0f8d07c0075b3a0b29a2e97ebe6975
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 10:39:10 +0300
+
+ genesys: Remove read buffer after image processing
+
+commit f5af63326381a64aafe6e888fef564ae22b513ee
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 10:39:09 +0300
+
+ genesys: Simplify data buffering in main image pipeline
+
+commit 9873fdf92270b1e8a6cf688c8366583e350f6e1a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 10:39:08 +0300
+
+ genesys: Don't read too much data when segment count is more than one
+
+commit 55691ece2c651468b2f21b371037d2827c359b3c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 10:39:07 +0300
+
+ genesys: Merge ImagePipelineNodeBuffered{CallableSource and GenesysUsb}
+
+commit 8981e583e20559c7e5dccbbeea7fbae114f826a8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 10:39:06 +0300
+
+ genesys: Move math utilities to utilities.h
+
+commit fe323f19cb9de8f02b7f8482cf9d1e6d437ed535
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 10:39:05 +0300
+
+ genesys: Add a way to push constructed nodes to pipeline
+
+commit afa798d71a440032dcab309468c7e6dcb0b5b852
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 10:39:04 +0300
+
+ genesys: Simplify ImagePipelineNodeArraySource
+
+commit d680724f9e1cc7b68b8520f8a69fe5bea3e28bfd
+Merge: 51725d406fa6 d770012132e9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 11:18:34 +0000
+
+ Merge branch 'genesys-debug-tiff' into 'master'
+
+ genesys: Use TIFF files for debugging
+
+ See merge request sane-project/backends!464
+
+commit d770012132e9aa80f51b0f4cc3272d242b9df025
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 14:03:01 +0300
+
+ genesys: Use TIFF files for debugging
+
+commit 51725d406fa6464d3a4c35e80eb10dd9afae4507
+Merge: 7fbe79220084 aa937c5b4c98
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 11:18:09 +0000
+
+ Merge branch 'genesys-stagger-alignment' into 'master'
+
+ genesys: Align input pixel positions for unstaggering
+
+ See merge request sane-project/backends!465
+
+commit aa937c5b4c985943018565a39b7052a0caaaa97a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 14:02:32 +0300
+
+ genesys: Simplify pixel positioning for unstaggering
+
+commit 5a455e741bf7eef66457ac27fa5f13f4b0b2fa96
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 14:02:31 +0300
+
+ genesys: Fix align_multiple_{floor,ceil} for zero multiple
+
+commit bb05afdbfdab501e3496e887f63a5c9fd6e27157
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-23 14:02:30 +0300
+
+ genesys: Fix erroneous multiplication by channels on gl646 cis
+
+commit 7fbe79220084dd40dc37062d5cdca4488f90c34f
+Merge: 4ee035983cc8 5f0abce90fb9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 22:40:34 +0000
+
+ Merge branch 'genesys-stagger' into 'master'
+
+ genesys: Improve stagger handling
+
+ See merge request sane-project/backends!463
+
+commit 5f0abce90fb9545e71dee00ec9f23311cf6e00eb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-22 01:23:50 +0300
+
+ genesys: Add support for unstaggering in X direction
+
+commit 95d7196fca0f50c3223f7e4638da10cb5ad4909f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-22 01:23:49 +0300
+
+ genesys: Implement image pipeline node to shift columns
+
+commit 1bae94fd1ee8e8a5e33a23dfec4e010f2eac954e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-22 01:23:48 +0300
+
+ genesys: Support more than 2 columns in ImagePipelineNodePixelShiftLines
+
+commit d980da1ff7141e7b433689489dbc9a1fb02957d5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-22 01:23:47 +0300
+
+ genesys: Improve vertical staggering to support more than 2 lines
+
+commit 4ee035983cc8af3ba39b7a7d75ab613e751872fa
+Merge: 2e4a3ddd0696 4b0f3ed02c32
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 20:57:48 +0000
+
+ Merge branch 'genesys-simplify-param-calculation' into 'master'
+
+ genesys: Simplify scan parameter calculation
+
+ See merge request sane-project/backends!462
+
+commit 4b0f3ed02c32a180d3d8305caf1fa9506456e67e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 23:40:59 +0300
+
+ genesys: Warn if output and requested widths don't match
+
+commit a6f023fee180cbdfd834b98605f2b8d6e1459814
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 23:40:58 +0300
+
+ genesys: Reuse Genesys_Settings::requested_pixels for bytes per line
+
+commit c50bfb8493c94b306132620e9f071c8bd1d7d500
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 23:40:57 +0300
+
+ genesys: Simplify calc_parameters() by making data flow explicit
+
+commit 90a2386c01f5632981b0e0accd7329c5f090c74b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 23:40:56 +0300
+
+ genesys: Fix const safety of sensor retrieval functions
+
+commit 0957103cc3d5cb9bb1395652fbedf108596a070a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 23:40:55 +0300
+
+ genesys: Prefer to have a local `dev` variable for Genesys_Device*
+
+commit b6eb01cd0feb93171503bd3e57549702e4111b49
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 23:40:54 +0300
+
+ genesys: Update session test to include scan params
+
+commit 2e4a3ddd069626a3613de78a51626b864f536cab
+Merge: 3cd0914f678b 83f7520fe783
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 18:07:20 +0000
+
+ Merge branch 'genesys-simplify-buffers' into 'master'
+
+ genesys: Simplify buffer handling
+
+ See merge request sane-project/backends!461
+
+commit 83f7520fe783a03929a8dd28a760903459aa1d35
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 20:51:17 +0300
+
+ genesys: Remove obsolete comment
+
+commit 0d97c3d19587388d14f1828957797ef4a938592c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 20:51:16 +0300
+
+ genesys: Simplify genesys_read_ordered_data()
+
+commit 1eccbf5aefa70ac3e6b2972f74813ca42a17e1da
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 20:51:15 +0300
+
+ genesys: Remove no longer used buffers
+
+commit 3cd0914f678bfd96b7c144a5f0bf9910537698b4
+Merge: d7f930252b2c 657de7d72a67
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 17:38:18 +0000
+
+ Merge branch 'genesys-remove-image-enhancement' into 'master'
+
+ genesys: Remove image enhancement functionality
+
+ See merge request sane-project/backends!460
+
+commit 657de7d72a672c23670b810dd83ec5784779278d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 20:16:36 +0300
+
+ genesys: Remove image enhancement functionality from the backend
+
+commit 59abadd06558354e9d41c86bd4f0181d94ec9579
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 20:16:35 +0300
+
+ genesys: Fix debug statement logging directly to stderr
+
+commit d7f930252b2c333a62d0c0b0c3fec2de4f66449e
+Merge: 92552129acfa b42ed0343af2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 17:37:23 +0000
+
+ Merge branch 'genesys-crash-bugs' into 'master'
+
+ genesys: Fix several bugs that can potentially crash the backend
+
+ See merge request sane-project/backends!459
+
+commit b42ed0343af27d50d42724cf20e461960f0b7252
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 20:21:05 +0300
+
+ genesys: Fix uninitialized variable
+
+commit 78ed723f388b4e049d220e155349a98ad12b873d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 20:21:04 +0300
+
+ genesys: Fix invalid writes in ImagePipelineNodeInvert for 1-bit data
+
+commit 2986d95ee7464d36f1ef2ff16b72dcba7ed372af
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-21 20:21:03 +0300
+
+ genesys: Fix potential out of bounds access in line shift pipeline nodes
+
+commit 92552129acfa26ef225a83d9e2c1d5ec8d51d99e
+Merge: 757b7cf46371 5a727324f917
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-20 19:35:48 +0000
+
+ Merge branch 'genesys-enums-human-readable' into 'master'
+
+ genesys: Update enum formatters
+
+ See merge request sane-project/backends!458
+
+commit 5a727324f917365b77fde1cc0c77dc3c8867087f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-20 22:00:16 +0300
+
+ genesys: Update enum formatters for OpticFilm 7200
+
+commit 4fea56dfe85ddef814d963ad5b99da4809afc107
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-20 22:00:15 +0300
+
+ genesys: Add function to format SensorId
+
+commit 757b7cf463718de9b4f7b29b0cd61eb9bde10f86
+Merge: 0415fb4b7df1 bfea8a1a8235
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-18 12:23:49 +0000
+
+ Merge branch 'release/1.0.30' into 'master'
+
+ Merge changes released with 1.0.30
+
+ Closes #279
+
+ See merge request sane-project/backends!457
+
+commit bfea8a1a82356f73101572d39bb33ca185692ed4
+Merge: d5187355f6e0 0415fb4b7df1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-18 12:08:28 +0000
+
+ Merge branch 'master' into 'release/1.0.30'
+
+ # Conflicts:
+ # NEWS
+
+commit 0415fb4b7df148647692f5c7e1766bd214c12bfe
+Merge: 42954251826b e62f13052374
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:50:52 +0000
+
+ Merge branch 'genesys-sensor-optical-resolution' into 'master'
+
+ genesys: Add real optical resolution to sensor structs
+
+ See merge request sane-project/backends!456
+
+commit e62f13052374d6a6e699d864dd34653fedf1497a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 06:35:20 +0300
+
+ genesys: Replace ccd_size_divisor with explicit optical resolution
+
+commit b5430cc039cda3d942488a80b3d49bc7e5c18f0a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 06:35:19 +0300
+
+ genesys: Rename Genesys_Sensor::{optical_res => full_resolution}
+
+commit 42954251826ba66271ea98ae0b30f2b7e23f9faa
+Merge: 42fe911fcd39 c2851ff61f22
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 01:49:47 +0000
+
+ Merge branch 'genesys-fix-motors-gl841' into 'master'
+
+ genesys: Motor fixes and cleanups on gl841
+
+ See merge request sane-project/backends!455
+
+commit c2851ff61f22c856e774a5168ca45ce6f8dbf80b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:29 +0300
+
+ genesys: Slow fast movements on higher resolutions on LiDE 35,50
+
+commit b35345ae7a15347faa6f1107596df2e939f5f433
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:28 +0300
+
+ genesys: Use quarter step for high-resolution scans on LiDE 35,50
+
+commit cf8f9c75f96472bc2077c1a2f34d8d16389d2154
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:27 +0300
+
+ genesys: Add missing register writes on gl841
+
+commit 96a5f963a3e017c8d2be6026a9e31f4fd03e73c7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:26 +0300
+
+ genesys: Make sure full-step tables are used on gl841
+
+commit e5fa8dd3cc7da002f038392090e4057a814f4c17
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:25 +0300
+
+ genesys: Simplify motor mode selection on gl841
+
+commit 69202b2b566cdb0fbd61bef77ab6c6b2fb591a9f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:24 +0300
+
+ genesys: Add separate sensor definition for LiDE 60
+
+commit 341fdbbee7f3e7f55097a4291147933bcf7c47fa
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:23 +0300
+
+ genesys: Add missing register writes on LiDE 60
+
+commit bb0410199061520e9ffcfdf33396674300c581b3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:22 +0300
+
+ genesys: Use scan table for back table on gl841
+
+commit 5820e1e0bd098ea9916c7e69f50d6ef3340df744
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:21 +0300
+
+ genesys: Restore full motor table writes on gl841
+
+commit 51f97b1b9719821f01462abca3822d4606e8f065
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:20 +0300
+
+ genesys: Fix invalid step count when feeding on gl841
+
+commit 8435be213fc4687b3376b9488ba911534699453c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:19 +0300
+
+ genesys: Support non-FULL steps for fast tables on gl841
+
+commit 4f0bab0bfa295f58ac24555680864339e5cff8e1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:18 +0300
+
+ genesys: Don't write zero values to step count tables
+
+commit 1633022fda15bd4be1688494e8e74b4962773b0e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:17 +0300
+
+ genesys: Simplify motor setup on LiDE 80
+
+commit 7932c68d03aa0dd32f208e6546af3b2e97c24ffb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:16 +0300
+
+ genesys: Simplify slope table size calculations
+
+commit 288dd82a6f22262eb823556f1a7744c809170b4b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:15 +0300
+
+ genesys: Pass motor profile directly to exposure calculation utils
+
+commit 049e69aa7953a893039903cc18f5189f7d125f09
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:14 +0300
+
+ genesys: Fix step multiplier handling in motor table manipulation utils
+
+commit b8ced2861a6fd52491ea550067bdfc4fcf5707e3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:13 +0300
+
+ genesys: Always write the same set of tables on gl841
+
+commit 12641bd6ca4b6f486cd035a8894be492f7783e85
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:12 +0300
+
+ genesys: Don't send empty tables unnecessarily on gl841
+
+commit 88b49704b24806effd074bc8db2cbb31d4672f96
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:11 +0300
+
+ genesys: Use create_slope_table() directly on gl841
+
+commit 16fa00c13b3db470ef56d55a75575a43f5158a62
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:10 +0300
+
+ genesys: Extract scanner_send_slope_table()
+
+commit 11c3a67e47354c3d0ada281233c019492337a8a7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:09 +0300
+
+ genesys: Remove redundand argument out of *_send_slope_table()
+
+commit 253bd0ffe42b2961236a767d1abb0fef7d668359
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:08 +0300
+
+ genesys: Regenerate motor table total duration when it is updated
+
+commit 9c4f84f91afcd3ce993db0f527f617f16ea46f53
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:07 +0300
+
+ genesys: Don't generate excessive amount of steps for the motor tables
+
+commit 8e76d4ede9855cf3c7ee37786fc38f1a40876b77
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:06 +0300
+
+ genesys: Upload only required part of motor slope table on gl841
+
+commit 412beaeb19f22c18572fc0af0337af4c62a035b6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-18 03:53:05 +0300
+
+ genesys: Simplify motor setup on gl646
+
+commit 42fe911fcd3931aa81225e0e0d9cf1c1358573fc
+Merge: 86d2b1e52fd8 800cf3beaf29
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 22:19:29 +0000
+
+ Merge branch 'genesys-cleanup-disable-calibration' into 'master'
+
+ genesys: Cleanup the way calibration is enabled/disabled
+
+ See merge request sane-project/backends!454
+
+commit 800cf3beaf29e9126f32f9284b0e7f0b4242214a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-17 01:02:28 +0300
+
+ genesys: Use ModelFlag::DISABLE_*_CALIBRATION instead of NO_CALIBRATION
+
+commit 04b91dc4c9308223ee76973b28e3249b11ce6cc5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-17 01:02:27 +0300
+
+ genesys: Implement a way to selectively disable calibration steps
+
+commit 71eeeb0ca6c16a68052fbd5a27929ba17d6a5d76
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-17 01:02:26 +0300
+
+ genesys: Remove dead code
+
+commit 86d2b1e52fd8f7f68845611221b33292f6030a14
+Merge: 41facc7dd405 d6570c86ffb9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 20:59:29 +0000
+
+ Merge branch 'genesys-remove-obsolete-debug' into 'master'
+
+ genesys: Remove debug messages that are no longer useful
+
+ See merge request sane-project/backends!453
+
+commit d6570c86ffb917316d3a64d4f11dea1ae05d973e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 23:43:10 +0300
+
+ genesys: Remove debug messages that are no longer useful
+
+commit 41facc7dd405478340fe24435efa399ef1480156
+Merge: 5d441bdd3ea3 14db69fb76d5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 20:24:00 +0000
+
+ Merge branch 'genesys-image-logging' into 'master'
+
+ genesys: Make image data logging more convenient
+
+ See merge request sane-project/backends!452
+
+commit 14db69fb76d52f13cdc2d588d2992b861da3f9d6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 23:08:10 +0300
+
+ doc/genesys: Add documentation of SANE_DEBUG_GENESYS_IMAGE
+
+commit c0b49d0d3e651a6ec5e2ed80f68e48b1ca2dd8f6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 23:07:08 +0300
+
+ doc/genesys: Remove no longer existing debug options
+
+commit 6e398bc7bf0e2314c819a460ad45887c1c9c3fba
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 23:05:21 +0300
+
+ genesys: Write debug images only if step was enabled
+
+commit 6092e2d682886b44f6cba3a2b8570d34a705c90d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 23:05:20 +0300
+
+ genesys: Enable image data logging as a separate environment variable
+
+commit 5d441bdd3ea33b089ad2a47ca710abd2c7965fbe
+Merge: 10b126a65efc 9f46845f957d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 19:51:50 +0000
+
+ Merge branch 'genesys-print-error-when-config-file-unavailable' into 'master'
+
+ genesys: Print debug message if configuration file can't be accessed
+
+ Closes #101
+
+ See merge request sane-project/backends!451
+
+commit 9f46845f957d3d1cf85e13e6dbaf60212c32bf4e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 22:35:17 +0300
+
+ genesys: Print debug message if configuration file can't be accessed
+
+commit 10b126a65efc5f69d8b085ece268d58e86e2847c
+Merge: 909a78a0c7dd ea8beca57dd6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 19:39:23 +0000
+
+ Merge branch 'genesys-lide60-abrt' into 'master'
+
+ Fix abort in genesys backend during sending slope table
+
+ See merge request sane-project/backends!346
+
+commit ea8beca57dd66d44e03f77dd60f1ee25bcbbe278
+Author: Zdenek Dohnal <zdohnal@redhat.com>
+Date: 2020-03-23 09:47:02 +0100
+
+ Fix assertion error in gl841 asic type by lowering steps for fast/back/slow tables
+
+commit 909a78a0c7dd25ecbeded78ab5de79a1be069166
+Merge: 4bd76d35c6f4 d3b9178d6bda
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 19:36:33 +0000
+
+ Merge branch 'genesys-simplify-gpio-gl847' into 'master'
+
+ genesys: Simplify GPIO setup on gl847
+
+ See merge request sane-project/backends!450
+
+commit d3b9178d6bdabaf11549cdf401c35bc56496bd12
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 22:21:13 +0300
+
+ genesys: Simplify GPIO setup on gl847
+
+commit 4bd76d35c6f42f7a6326d70713de22a509884cdb
+Merge: c9beb6b0ba43 69a249e00076
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 19:21:39 +0000
+
+ Merge branch 'genesys-fix-adc-definition-gl847' into 'master'
+
+ genesys: Fix ADC definitions on gl847
+
+ See merge request sane-project/backends!449
+
+commit 69a249e0007636f4db9ecc18c482876aaca34296
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 22:04:52 +0300
+
+ genesys: Simplify ADC setup on gl847
+
+commit 0d2a4b5244744c2bb8935db78a9f7f764cb49427
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 22:04:51 +0300
+
+ genesys: Fix incorrect ADC definition on gl847
+
+commit c9beb6b0ba433b2d25eb07537fa7307f15010a1b
+Merge: fbb60d4d5255 4691b92d8047
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 18:52:33 +0000
+
+ Merge branch 'genesys-simplify-motor-profile-setup-gl841' into 'master'
+
+ genesys: Simplify motor profile setup on gl841
+
+ See merge request sane-project/backends!448
+
+commit 4691b92d80478c97701ed04b9817f92a268d2235
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 10:38:42 +0300
+
+ genesys: Simplify motor profile selection on gl841
+
+commit ae8cb155efc65000d4454d2499e9408b0d372097
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 10:38:41 +0300
+
+ genesys: Simplify register setup on gl841
+
+commit fbb60d4d525572f42cf78c5850756f7f10f2da57
+Merge: a3284ab5e0bd 16a9bddf59f2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 18:46:21 +0000
+
+ Merge branch 'genesys-simplify-gl646' into 'master'
+
+ genesys: Simplify miscellaneous gl646 code
+
+ See merge request sane-project/backends!447
+
+commit 16a9bddf59f2a95a9bff4dd5a11fe6d2cb9ff89a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-10 22:28:01 +0300
+
+ genesys: Remove dead code on gl646
+
+commit edb375fbccfa158be2bdc7ec670be6ba38f4fc1b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-10 22:28:00 +0300
+
+ genesys: Remove duplicated coarse calibration on gl646
+
+commit 256a90e29d777de3b2865627b3f8030ef7635857
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-10 22:27:59 +0300
+
+ genesys: Simplify coarse_gain_calibration() on gl646
+
+commit a4145e2edaebbdd43dc64fa41dc8f07f38e20bb7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-10 22:27:58 +0300
+
+ genesys: Only set requested_pixels when it's not default on gl646
+
+commit a3284ab5e0bdef4f5d20f3ce428af841b153b150
+Merge: 35ffd5758617 b1b61b043b90
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 18:42:21 +0000
+
+ Merge branch 'genesys-simplify-motor-setup' into 'master'
+
+ genesys: Simplify motor setup
+
+ See merge request sane-project/backends!446
+
+commit b1b61b043b90c5fd933db4bad3a4fd51576973f1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 10:34:41 +0300
+
+ genesys: Pass whole motor struct to create_slope_table()
+
+commit fe3677b68f8517bcb04912303e3b3341d4b7bd4d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 10:34:40 +0300
+
+ genesys; Rename create_slope_table{=>_speed}()
+
+commit 35ffd575861726952b53efad944802e6269c5041
+Merge: 4605d379bbbb dcb90dc042ac
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 18:29:17 +0000
+
+ Merge branch 'genesys-use-flags-to-setup-scan-gl646' into 'master'
+
+ genesys: Use flags to setup scans on gl646
+
+ See merge request sane-project/backends!445
+
+commit dcb90dc042ac577106659f072f91893ad8ec4fb8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 04:10:17 +0300
+
+ genesys: Simplify handling of output line count on gl646
+
+commit 46d3ea07d49c6169d6f57537da802f55f70507c9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 04:10:16 +0300
+
+ genesys: Use DISABLE_GAMMA fla to control GMMENB bit on gl646
+
+commit 35544b0c363ba203059b0e6909737118908a9489
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 04:10:15 +0300
+
+ genesys: Simplify init_regs_for_shading() on gl646
+
+commit 3dff3a97b34d9385064c03079a3c5b4f8a9b5479
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 04:10:14 +0300
+
+ genesys: Fix invalid movement in simple_move() on gl646
+
+commit 84d4d0b15c94b4f232c8338928eea14b86ac7651
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 04:10:13 +0300
+
+ genesys: Use AUTO_GO_HOME flag to control AGOHOME bit on gl646
+
+commit 4b5b2b2f0bdd11c79c44137f78977498efb33566
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 04:10:12 +0300
+
+ genesys: Simplify init_regs_for_warmup() on gl646
+
+commit 0bc0f893b2188ca2be5263b0bfb606ce1cc05f47
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 04:10:11 +0300
+
+ genesys: Simplify invocation of simple_scan() on gl646
+
+commit 4605d379bbbbcfd2097599a873727c98e0b92b61
+Merge: ccf1cbd3ab51 aee51c9dec9e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 18:13:05 +0000
+
+ Merge branch 'genesys-fix-led-calibration-crash-on-black-image' into 'master'
+
+ genesys: Fix crash in led_calibration() when image is completely black
+
+ See merge request sane-project/backends!444
+
+commit aee51c9dec9ed4de75eec79bb170372ecf00c333
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-11 23:48:21 +0300
+
+ genesys: Fix crash in led_calibration() when image is completely black
+
+commit ccf1cbd3ab5182b31abe45bcf15d469c151d1b27
+Merge: e4d0b7b357e6 644f4b0c9461
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 20:56:19 +0300
+
+ Merge branch 'genesys-simplify-gl646' into master
+
+commit 644f4b0c946184bd97009ef77fd36d8a681557a4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:05:45 +0300
+
+ genesys: Simplify session setup in ad_fe_offset_calibration() on gl646
+
+commit 4183f37b4610bb907c802d50a3b699119d08e18d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:05:44 +0300
+
+ genesys: Simplify session setup in offset_calibration() on gl646
+
+commit e32ca11346697db8cb0bb60c367d9a7de1187089
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:05:43 +0300
+
+ genesys: simplify session setup in ad_fe_coarse_gain_calibration()
+
+commit 1f78a2e64c7d93c37368400f31dfb3ea791acbd0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:05:42 +0300
+
+ genesys: Simplify session setup in coarse_gain_calibration() on gl646
+
+commit e876379f3181d37e12a10fdcc1db3fef78dab1fb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:05:41 +0300
+
+ genesys: Simplify session in simple_move() on gl646
+
+commit 5a2e81b633811c6d5f4de4e168f8cd11ccae1eee
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:05:40 +0300
+
+ genesys: Simplify session setup in led_calibration on gl646
+
+commit 09eb07561fc0fdc38ee240308954f2a818fee09e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:05:39 +0300
+
+ genesys: Split simple_scan() into version that accepts ScanSession
+
+commit 4f1dad8ca91a6ea3db6df64dfc120b8d38c4253e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:05:38 +0300
+
+ genesys: Simplify session setup on gl646
+
+commit 99a59d9871ecbfd7668759aca3d4050d86fa7811
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:05:37 +0300
+
+ genesys: Remove out of date comment
+
+commit e4d0b7b357e60612124fb1cd34bdcbd222f127ee
+Merge: 076faf8b8425 09eaba9606e9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 15:15:49 +0000
+
+ Merge branch 'genesys-pipeline-invert' into 'master'
+
+ genesys: Add pipeline to invert pixel values
+
+ See merge request sane-project/backends!442
+
+commit 09eaba9606e9f8894acb87879cf644747af59274
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 13:29:53 +0300
+
+ genesys: Add model flag for inverted output
+
+commit ab1d86d74a230add6ca328d3f3a769ef29e31634
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 13:29:52 +0300
+
+ genesys: Rename {INVERTED->SWAP}_16_BIT_DATA model flag
+
+commit 52cd02d78ca89e26277a2a908874cf6a4ab5a418
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-09 13:29:51 +0300
+
+ genesys: Add image pipeline to invert pixel values
+
+commit 076faf8b84256d624b399e102cc89e98b247b1d3
+Merge: a05983ba28d7 06ad1dd43f5b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-16 15:09:31 +0000
+
+ Merge branch 'genesys-simplify-gl646' into 'master'
+
+ genesys: Simplify gl646 scan setup code
+
+ See merge request sane-project/backends!441
+
+commit 06ad1dd43f5b23aa764be1d4eb4e61294b41e3b4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:29:10 +0300
+
+ genesys: Inline setup_for_scan() into gl646_repark_head()
+
+commit 1b5c31bb01459e6e7980707e4d373b7dec86699a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:29:09 +0300
+
+ genesys: Inline setup_for_scan() into init_regs_for_warmup() on gl646
+
+commit d7bf809a6cfc15975ed51ed6ec6efdc22aa28730
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:29:08 +0300
+
+ genesys: Inline setup_for_scan() into init_regs_for_shading() on gl646
+
+commit 7ba20e43a31ab9c4d7c4076e1e30f5289c494b5c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:29:07 +0300
+
+ genesys: Simplify simple_scan() on gl646
+
+commit f1d6c2c0cddc919ad005663c9bc5995620e9a8fc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-05-06 01:29:06 +0300
+
+ genesys: Inline setup_for_scan into simple_scan on gl646
+
+commit a05983ba28d7db886b42cdd23193dd7d6823f2ae
+Merge: cf5c40b8e872 0abdfa483f54
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-15 08:59:36 +0000
+
+ Merge branch 'fix-statis-no-data' into 'master'
+
+ If no data then the status is NO-DOCS.
+
+ See merge request sane-project/backends!440
+
+commit 0abdfa483f54dc5ce876a870fc9335d6dc3e6bfe
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-15 10:21:56 +0200
+
+ If no data then the status is NO-DOCS.
+
+commit cf5c40b8e872d43d2b080fd44ef6b94b289e52bc
+Merge: 9e8326a3bcd3 1027e8aae09c
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-14 14:23:51 +0000
+
+ Merge branch 'fix-status-start-and-stop' into 'master'
+
+ Fix status start and stop
+
+ See merge request sane-project/backends!439
+
+commit 1027e8aae09c8044574841af2f146adc7bc8d3cd
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-14 15:31:10 +0200
+
+ Fix build.
+
+commit bd8cb0e6aa40ed1cbaa7ee4b4a63a2eeb8077c89
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-14 14:03:20 +0200
+
+ Code cleanup.
+
+commit 287a6bb88a648a3a15b33e450bb3958eb164bb1f
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-14 13:05:08 +0200
+
+ Test status device before scan and after.
+
+commit 9e8326a3bcd3842354a7dd0a7687594e7dae275f
+Merge: 0615d21718df d9c377cf0926
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-13 20:52:56 +0000
+
+ Merge branch 'fix-offset' into 'master'
+
+ Fix offset
+
+ See merge request sane-project/backends!438
+
+commit d9c377cf0926e13c4ac3a963a7a884112c2537a0
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-13 22:24:51 +0200
+
+ Fix style
+
+commit c66efc0fafa3feecd567c4264f55ec25249e0096
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-13 22:20:55 +0200
+
+ Allows the X and Y offset to be set to 0.
+
+commit 0615d21718df1dc0d393082552ddd0d7e05f678d
+Merge: 3eb72d7485fd 29866b0b1975
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-13 18:49:57 +0000
+
+ Merge branch 'fix-return-status-adf' into 'master'
+
+ Fix status sane_read.
+
+ See merge request sane-project/backends!437
+
+commit 29866b0b1975ca1d81a68d41315bbd42607e1ca7
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-13 20:33:01 +0200
+
+ Fix status sane_read.
+
+commit 3eb72d7485fd0fa7eac33acfc6e7fa0e1cd69a6a
+Merge: 080ac870ee9c c6a411a29fe0
+Author: Louis Lagendijk <louis@fazant.net>
+Date: 2020-05-11 16:50:27 +0000
+
+ Merge branch 'pixma_mf4700n_not_buggy' into 'master'
+
+ doc: ADF not now buggy on imageClass MF4770n.
+
+ See merge request sane-project/backends!436
+
+commit c6a411a29fe0faec788eb7c5c54c5e8aaf564363
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-05-11 09:16:07 -0700
+
+ doc: ADF not now buggy on imageClass MF4770n.
+
+ Due to recent work on the pixma backend.
+
+commit 080ac870ee9c2382786e3abaf7e0a34d4c03a437
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2020-05-11 17:12:31 +0200
+
+ pixma_bjnp.c: fix incorrect return from SANE_STATUS_INVAL to BJNP_STATUS_INVAL
+ as pointed out on F32 compile in CI
+
+commit 5ad7708381e462d0f76bed42e6c0382e6aa264ac
+Merge: 767a289fd2dc 36ece1de84e5
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-11 14:58:38 +0000
+
+ Merge branch 'escl-fix-status-adf' into 'master'
+
+ Refactoring of the adf status.
+
+ See merge request sane-project/backends!434
+
+commit 36ece1de84e5507bb456dee4fa1f0d1946a904dc
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-11 10:25:27 +0200
+
+ Fix status for all vendors
+
+commit dc2b9aeadeaa183ee7a3f16b05230d622dc55970
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-10 22:20:30 +0200
+
+ JobState, if it exists, decides whether to proceed to the next page.
+
+commit 70daed513298e600db6a52334925d1ce96972558
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-10 15:11:30 +0200
+
+ Fix error name variable.
+
+commit 64c1c8a86559f76d4222305b76ff7f71ebe77a13
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-10 01:28:49 +0200
+
+ Logic correction.
+
+commit c1d302f3d71c8fcf1ce230d87de413fb4e90d2f7
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-09 23:48:48 +0200
+
+ Adjuste status adf.
+
+commit 296e73ae6bc7fde984cb5b110fdd5332e18c970b
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-09 15:42:33 +0200
+
+ escl get sane_cancel output
+
+commit f2337927027a8f529c948ba8f5be146a11077194
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-09 10:03:39 +0200
+
+ Update Adf status.
+
+commit c4d8cc424e8d9a21fefe5e00647ce2d9828f9e6a
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-09 09:50:15 +0200
+
+ Update Adf status.
+
+commit a931e0df574ae4b7047c19852c7add8f25e760df
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-07 19:19:55 +0200
+
+ Refactoring of the adf status.
+
+commit 767a289fd2dc815e0b546dd8a7ca5d19802264fd
+Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+Date: 2020-05-11 16:42:33 +0200
+
+ pixma_bjnp: fix ADF scanning for laser/mfnp scanners. mfnp devices require a single TCP session
+ for ADF scans, while bjnp requires a TCP session per page.
+
+ Squashed commit of the following:
+
+ commit 8ee0a23d6b2920bc344bf76fd39f4b556222190b
+ Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+ Date: Sat May 9 16:47:23 2020 +0200
+
+ Make pixma_bjnp work for both bjnp and mfnp
+
+ commit 3df6d0d5903ccf4de0d27301e65025209888d3c7
+ Author: Louis Lagendijk <louis.lagendijk@gmail.com>
+ Date: Sat May 2 19:50:23 2020 +0200
+
+ Move opening tcp connection to bjnp_open/close
+
+commit 10408cfa99e3f9965ea7b350a554a6ccf715b385
+Merge: 6689104f01d9 73bf5533f978
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-08 07:01:30 +0000
+
+ Merge branch 'escl-clean' into 'master'
+
+ escl - release memory and close descriptor.
+
+ See merge request sane-project/backends!435
+
+commit 73bf5533f97846d94034df809cfe6c6a5ff7d295
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-08 08:35:50 +0200
+
+ release memory and close descriptor.
+
+commit 6689104f01d9db0cf0da763b216c0c4b5ab990bf
+Merge: e8e9577c1200 878197a00e5f
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-06 18:29:07 +0000
+
+ Merge branch 'fix-status-returned-by-sane-start' into 'master'
+
+ escl: Add support for SANE_STATUS_NO_DOCS and SANE_STATUS_DEVICE_BUSY to sane_start
+
+ Closes #283
+
+ See merge request sane-project/backends!433
+
+commit 878197a00e5f72a5bb2486c20e8c98b8bdc70387
+Author: Bartosz Kosiorek <gang65@poczta.onet.pl>
+Date: 2020-05-06 18:25:44 +0200
+
+ escl: Add support for SANE_STATUS_NO_DOCS and SANE_STATUS_DEVICE_BUSY to sane_start
+
+ Fixes: #283
+
+commit e8e9577c1200dee3a8c10e4e97250875b055ae84
+Merge: 20f7026371e7 adbbdc8a69f4
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-06 18:10:33 +0000
+
+ Merge branch 'add-more-logs' into 'master'
+
+ Make curl error message more informative, to help debug issues
+
+ See merge request sane-project/backends!431
+
+commit adbbdc8a69f40d384576f055b8cb3cde6da92623
+Author: Bartosz Kosiorek <gang65@poczta.onet.pl>
+Date: 2020-05-06 16:01:01 +0200
+
+ Make curl error message more informative, to help debug issues
+
+commit 20f7026371e7db5badf42be8429f5ff743a3c699
+Merge: 050e73d07ec8 fc14edf69ee0
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-06 14:44:24 +0000
+
+ Merge branch 'escl-reduces-number-entries-offer' into 'master'
+
+ Escl reduces number entries offer
+
+ See merge request sane-project/backends!432
+
+commit fc14edf69ee0993fdb1f5c5c8faeb3ff5afdbc3c
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-06 16:22:11 +0200
+
+ Fix build.
+
+commit 646ee990d39e04984354dc394153fb74d8d94200
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-06 16:08:53 +0200
+
+ Reduces the number of entries on offer.
+
+commit 050e73d07ec8f53ac2ddc4c38469a72cde4c7713
+Merge: 833c25c3ae68 c9fdb62060ce
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-06 09:21:28 +0000
+
+ Merge branch 'escl-fix-feeder-not-duplex' into 'master'
+
+ Escl fix feeder not duplex
+
+ See merge request sane-project/backends!429
+
+commit c9fdb62060cecb3fbc44cfe0f31facfbf9b5a668
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-06 10:44:31 +0200
+
+ The duplex tag is only sent to the device if the device supports AdfDuplex.
+
+commit 9b3d7dc8b69590508d4eb9bd23dbaf3d83eb86a8
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-06 10:12:52 +0200
+
+ Fix name of sources.
+
+commit 833c25c3ae681820f7e1d41f2a0bac9a18fd3e80
+Merge: b5013094f8bc e18242108e93
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-06 05:58:02 +0000
+
+ Merge branch 'inspiration-from-freebsd-patches' into 'master'
+
+ Inspiration from freebsd patches
+
+ Closes #291, #290, #289, and #286
+
+ See merge request sane-project/backends!425
+
+commit e18242108e93c2442306b061b6b781df41e192be
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-05 16:15:13 +0900
+
+ v4l: Drop kernel interface from v4l.h
+
+ It has been included in libv4l1.h since 0.8.3.
+
+commit 95b43691661bacf47c8985a0ebb0f4ad1eb6d440
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-05 16:14:11 +0900
+
+ v4l: Prefer C99 standard type over asm __u32. Re #291
+
+commit 9e1acea49766e69b1782676ff11bfced7f35c4bf
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-05 13:02:35 +0900
+
+ umax_pp: Fix typo. Fixes #290
+
+commit 1a201b28ab1bb6e7dacb3ed19226fbfb97df0e04
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-05 12:55:19 +0900
+
+ ricoh2: Use C99 standard headers
+
+ Inspired by a FreeBSD patch. Fixes #289.
+
+commit 9232792e0fb544eed9e6930cd7c282680cc1e305
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-05 12:31:34 +0900
+
+ epsonds: Add missing header files for socket use. Fixes #286
+
+commit b5013094f8bc0f58bc401589eeee93ef6cb2357a
+Merge: 7f1741d54d1f 0efee9ddd6ab
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-05 22:31:58 +0000
+
+ Merge branch 'add-vendor' into 'master'
+
+ Escl - Add vendor
+
+ See merge request sane-project/backends!428
+
+commit 0efee9ddd6ab331ef7848cd852f6418b1d074cd2
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-06 00:14:12 +0200
+
+ Fix model name cropping.
+
+commit cd18ba69dec1922501ff6f34b5ecbfb1b4bcf2e5
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-06 00:13:37 +0200
+
+ Add vendor
+
+commit 7f1741d54d1fbc405a8132fe192599f641faf16e
+Merge: bd482b6365fe 8e2d33565340
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-05 20:48:02 +0000
+
+ Merge branch 'escl-fix-vendor' into 'master'
+
+ Put the vendor corresponding to the device used.
+
+ See merge request sane-project/backends!426
+
+commit 8e2d3356534003fa6b16516e7a310774284a38bc
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-05 22:29:03 +0200
+
+ Put the vendor corresponding to the device used.
+
+commit bd482b6365fe0a6526982674ea0e870540c026f1
+Merge: 0f657faf7cf2 2ed753b3fe47
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-04 11:39:19 +0000
+
+ Merge branch 'escl-fixe-descriptor-size' into 'master'
+
+ Fixe descriptor size.
+
+ See merge request sane-project/backends!424
+
+commit 2ed753b3fe47911d2e87a71f6d4e1f32eaf826da
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-05-04 13:19:03 +0200
+
+ Fixe descriptor size.
+
+commit 0f657faf7cf2038031e163bfa889c5e043f3c023
+Merge: a8ce7a99ceb1 855cc408d3c1
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-02 09:23:17 +0000
+
+ Merge branch 'escl-cancel-scan' into 'master'
+
+ Fix the status of the scanner in case of failure.
+
+ See merge request sane-project/backends!422
+
+commit 855cc408d3c16db695374c729b0f35a604ffa600
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-02 11:05:49 +0200
+
+ Fix the status of the scanner in case of failure.
+
+commit a8ce7a99ceb1bcde22bbbb3e42860e76da1d9e67
+Merge: bc6e04f47791 a0ef09c456d6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-02 05:29:17 +0000
+
+ Merge branch 'ci-fedora-32' into 'master'
+
+ CI: Bump Fedora from 31 to 32
+
+ See merge request sane-project/backends!421
+
+commit a0ef09c456d6197cec5a919f117576636fa7ea9e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-05-02 14:12:33 +0900
+
+ CI: Bump Fedora from 31 to 32
+
+commit bc6e04f477912a70e8d244e47bf170ce95694333
+Merge: ea053c1a6460 2190739b3108
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-01 10:37:17 +0000
+
+ Merge branch 'escl-correction-label-source' into 'master'
+
+ escl : Fixed source argument.
+
+ See merge request sane-project/backends!420
+
+commit 2190739b310885e3c42be6adf27fbd1a4be27f10
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-05-01 11:59:58 +0200
+
+ Fixed source argument.
+
+commit ea053c1a6460af108bae8f3a66a4dc35d7f75d8f
+Merge: 9aad355032fd 24ffce93fd95
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-05-01 05:04:33 +0000
+
+ Merge branch 'capabilities-logs' into 'master'
+
+ Don't use the uninitialized data during getting capabilities and print capabilities
+
+ See merge request sane-project/backends!419
+
+commit 24ffce93fd9557b7396d0588694c76ef43358418
+Author: Bartosz Kosiorek <gang65@poczta.onet.pl>
+Date: 2020-04-30 22:36:00 +0200
+
+ Don't use the uninitialized data during getting capabilities and print capabilities
+
+commit 9aad355032fd9653cf74d6c1ece890809d08799f
+Merge: 812497969ca3 dabd9270099f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-30 01:34:12 +0000
+
+ Merge branch 'update-epkowa-documentation' into 'master'
+
+ Sync doc/descriptions-external/epkowa.desc with latest upstream
+
+ See merge request sane-project/backends!408
+
+commit dabd9270099f31cb7238ecfb98617872bb85f30d
+Author: Bartosz Kosiorek <gang65@poczta.onet.pl>
+Date: 2020-04-15 18:11:54 +0200
+
+ Sync doc/descriptions-external/epkowa.desc with latest upstream
+
+ iscan-data_1.39.1-2.tar.gz archive downloaded from:
+ http://support.epson.net/linux/src/scanner/iscan/
+
+commit 812497969ca3a68615b71162b6560d4fb890b3dd
+Merge: 867aeb7d0908 08b41c052e46
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-23 18:53:20 +0000
+
+ Merge branch 'genesys-plustek-7200' into 'master'
+
+ genesys: Add support for Plustek OpticFilm 7200
+
+ See merge request sane-project/backends!418
+
+commit 08b41c052e4652c66d0906948eacd8dc3cf4e25b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-23 21:17:03 +0300
+
+ genesys: Add support for Plustek OpticFilm 7200
+
+commit 867aeb7d0908a495b1118ceb012bbbc2143f5baa
+Merge: a70beba79c9a c88ba0dff246
+Author: Oliver Schwartz <oliver.schwartz@gmx.ch>
+Date: 2020-04-23 14:13:27 +0000
+
+ Merge branch 'master' into 'master'
+
+ sanei_usb: allow non-configured devices on macOS for libusb-1.x
+
+ See merge request sane-project/backends!358
+
+commit c88ba0dff246b19a817a35c88c2a62bf8524de3f
+Author: Brandon Beck <bmbeck@gmail.com>
+Date: 2020-03-13 17:54:51 -0500
+
+ Allow unconfigured USB scanners on macOS.
+
+ Based on findings from Oliver Schwartz (https://alioth-lists.debian.net/pipermail/sane-devel/2012-June/029890.html)
+ this change allows USB scanners to be unconfigured on macOS. This fixes
+ the issue of scanners being unable to be discovered because they look
+ to be not configured but end up getting configured later.
+
+commit 011d0f9bacab126fb2ae09d29abdd6eb88f1333d
+Author: Brandon Beck <bmbeck@gmail.com>
+Date: 2020-03-13 19:26:54 -0500
+
+ Fix build on macOS.
+
+commit a70beba79c9a2e7f26e7958db76a19f5e1b8fadd
+Merge: 40a451b1ac28 e5c371b24b35
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-22 20:09:23 +0000
+
+ Merge branch 'genesys-cleanup-motor-dpi' into 'master'
+
+ genesys: Merge motor optical_ydpi to base_ydpi
+
+ See merge request sane-project/backends!417
+
+commit e5c371b24b35f70e2f082078a6f2e0b5aaf30e6f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-22 08:28:20 +0300
+
+ genesys: Merge motor optical_ydpi to base_ydpi
+
+commit 40a451b1ac28f75c69f56f1c62d573b4727ee3b8
+Author: Alex Belkin <abc@telekom.ru>
+Date: 2020-04-22 16:15:33 +0300
+
+ xerox_mfp: Mark Xerox WorkCentre 3225 as supported
+
+ Reported by Darodaros in issue sane-project/website#26.
+
+commit 5cf347d34d7e470d3376e89daef0e9fbd0e78ed5
+Merge: 27e3d213512c 32083172ea58
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-04-21 13:06:27 +0000
+
+ Merge branch 'escl-ADF-only-scans-first-page' into 'master'
+
+ Moves to the next page.
+
+ See merge request sane-project/backends!416
+
+commit 32083172ea58ce44a402ef2372afc1c82f8d19e9
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-04-21 14:49:40 +0200
+
+ Allows you to move to the next page.
+
+commit 27e3d213512c72bc94fdc1d33c673996a74b0f62
+Merge: 5eec2b4a0c44 111d8d2aabd7
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-04-21 11:05:21 +0000
+
+ Merge branch 'escl-invalide-image-with-scanimage' into 'master'
+
+ eSCL : Fix invalide image with scanimage.
+
+ See merge request sane-project/backends!415
+
+commit 111d8d2aabd72db62a3a8bc67475f1045b050d5b
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-04-21 12:47:07 +0200
+
+ Fix invalide image with scanimage.
+
+commit 5eec2b4a0c444e0a56c1b1a2a383b211574a14a7
+Merge: a00b8079ee68 53162b4cad32
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-19 23:35:56 +0000
+
+ Merge branch 'genesys-cleanup-gl841' into 'master'
+
+ genesys: Cleanup gl841 code
+
+ See merge request sane-project/backends!414
+
+commit 53162b4cad323316678c340cfca9f13461dab03f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-20 00:35:57 +0300
+
+ genesys: Remove no longer used motor action
+
+commit af28c2d56c612cfdb21e3884fc26e436c8a8e21d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-20 00:35:56 +0300
+
+ genesys: Reuse scanner_move_back_home() on gl841
+
+commit d9b49e567c0ccbe8d11794a39f3b7be9fc3ca8af
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-20 00:35:55 +0300
+
+ genesys: Simplify motor direction setup on gl841
+
+commit 8412861a662b13976ec36808b772d761ae490d6c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-20 00:35:54 +0300
+
+ genesys: Support reverse scan direction on gl841
+
+commit f965c2ef255af3cb84dd8ab79a6f61576ab58017
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-20 00:35:53 +0300
+
+ genesys: Reuse scanner_stop_action() on gl841
+
+commit 98ee100237f50a4cfadea060caf84cb763d50781
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-20 00:35:52 +0300
+
+ genesys: Fix scanner_is_motor_stopped() on gl841
+
+commit a00b8079ee68cc020a4b0ad10a5a775adac2c687
+Merge: 1938bcfbeb68 b68fd960e302
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-19 20:37:19 +0000
+
+ Merge branch 'genesys-cleanup-gl646' into 'master'
+
+ genesys: Cleanup gl646 code
+
+ See merge request sane-project/backends!413
+
+commit b68fd960e302806dc2c2edd4be477c9f5fb9f1b2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 06:19:22 +0300
+
+ genesys: Simplify sensor setup on gl646
+
+commit a3ad02c8bfbff31eb431aee2da562f21fce4e193
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 06:19:21 +0300
+
+ genesys: Remove sensor setting duplication on gl646
+
+commit 1938bcfbeb6869b1c324c4ba59315ffd8de5d68f
+Merge: ff2ba89b068c ebfa38a73293
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-19 19:04:52 +0000
+
+ Merge branch 'genesys-cleanup' into 'master'
+
+ genesys: Miscellaneous cleanup
+
+ See merge request sane-project/backends!412
+
+commit ebfa38a732930006ded4601de769ea986d195cee
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:38:47 +0300
+
+ genesys: Map motor flags to scan flags
+
+commit 4c95e94f9b73575da697e7e1b5dfa42414ca002d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:38:46 +0300
+
+ genesys: Move private functionality out of headers
+
+commit afa96a227df1d44da1bfe6e41e49b997b059f00e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:38:45 +0300
+
+ genesys: Reduce duplication of sensor setup functionality
+
+commit d0855e513bfcc8f04d951753e61579ef257c9546
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:38:44 +0300
+
+ genesys: Remove unused #defines
+
+commit edda9bff25930455a039335c218c9738b713d3ef
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:38:43 +0300
+
+ genesys: Simplify creation of command set
+
+commit c0deb9b2c4e4d492cb7749a13df46e11aa1c7c68
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:38:42 +0300
+
+ genesys: Use consistent model name for Canon CanoScan 5600F
+
+commit ff2ba89b068cb1e7d545fe5e697ee398292f527f
+Merge: 59743d7f296f ad4c8f5453a3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-19 18:45:03 +0000
+
+ Merge branch 'genesys-cleanup' into 'master'
+
+ genesys: Reduce duplication in led_calibration
+
+ See merge request sane-project/backends!411
+
+commit ad4c8f5453a3b46cf5697cea517eb5db0098f445
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:23:07 +0300
+
+ genesys: Reduce duplication in led_calibration
+
+commit 59743d7f296f439752c12ec9fbe334eeb3e7c548
+Merge: 3be9ac99a9f6 4aace34caa99
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-19 18:21:13 +0000
+
+ Merge branch 'genesys-cleanup-gl841' into 'master'
+
+ genesys: Cleanup gl841 code
+
+ See merge request sane-project/backends!410
+
+commit 4aace34caa99b3199e4a5754a9dc28c57b5d00b3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:18:01 +0300
+
+ genesys: Simplify led calibration on gl841
+
+commit f6b606503c1127e0a4fea1ccc7e6c736f099f4d8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:18:00 +0300
+
+ genesys: Remove out of date comments on gl841
+
+commit 6b49c6656c826ceec505de5faccc0edc69e2ff7b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:17:59 +0300
+
+ genesys: Simplify motor setup on gl841
+
+commit 2a9254c9988426b0df7c3968f6607eb69ce84056
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:17:58 +0300
+
+ genesys: Verify that all sensors have required registers on gl841
+
+commit 608cd18282317b58341afc297a9fca39800906d5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:17:57 +0300
+
+ genesys: Rewrap custom register lists in sensor definitions on gl841
+
+commit 75f5ec405849ff2689ea20ba00cc90ee8b0de416
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:17:56 +0300
+
+ genesys: Remove duplicate initialization during scanner setup on gl841
+
+commit f37c3c55e4aeda487c739c2c5fb0f995ba9a7c84
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-17 05:17:55 +0300
+
+ genesys: Simplify sensor setup on gl841
+
+commit 3be9ac99a9f6adae8adee4a72ee022ccf7745536
+Merge: 3ba284eeec8f 6fcf2c3f1342
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-18 04:15:20 +0000
+
+ Merge branch 'document-canon-lide70-addition' into 'master'
+
+ Document the addition of the canon_lide70 backend
+
+ See merge request sane-project/backends!409
+
+commit 6fcf2c3f13428290f5ce540fd7eb2a5061f94f52
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-18 12:59:07 +0900
+
+ Document the addition of the canon_lide70 backend
+
+commit 3ba284eeec8faecae4cf45b0d2efc755b08b76e3
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-04-15 21:50:05 +0200
+
+ pixma: backend version 0.27.7
+
+commit 598b836c05c9b5a671eda3a096823aad0b7690e2
+Merge: 4d01195d2270 e17646a869b7
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-04-15 19:47:27 +0000
+
+ Merge branch 'k3a-pixma' into 'master'
+
+ pixma: parse XML response sent by the scanner and present tips to the user
+
+ Closes issue sane-project/backends#70
+
+ See merge request sane-project/backends!386
+
+commit e17646a869b7a0b1f3c80f9690f8b834d5788d99
+Author: Mario Hros <git@reversity.org>
+Date: 2020-04-01 18:01:24 +0200
+
+ pixma: parse XML response sent by the scanner and present tips to the user
+
+commit 4d01195d22704502d860fe51a0b171c435ac799d
+Merge: 549e10314f9e 0638e84d1358
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-14 21:37:03 +0000
+
+ Merge branch 'genesys-hp-4850' into 'master'
+
+ genesys: Fix shading offsets on HP 4850
+
+ See merge request sane-project/backends!406
+
+commit 0638e84d1358f120c049289a3cef8bdc5732b802
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-15 00:21:05 +0300
+
+ genesys: Fix shading offsets on HP 4850
+
+commit 549e10314f9e4828b6358e3f91b69ace8cec78e5
+Merge: ea7f8a58f224 6fc6fb7ea2e6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-14 21:35:50 +0000
+
+ Merge branch 'genesys-calibration' into 'master'
+
+ genesys: Fix multiple issues in calibration code paths
+
+ See merge request sane-project/backends!407
+
+commit 6fc6fb7ea2e68da4443dc44fba06757452e3f82b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-15 00:16:01 +0300
+
+ genesys: Load calibration data in sane_start() not in sane_init()
+
+commit a595875d8748668f4c21eca0e003db148d2bc4f8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-15 00:15:21 +0300
+
+ genesys: Bump calibration version
+
+commit 7304a4bb783c8e37d01cd796915f48d09b55b0ee
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-15 00:15:10 +0300
+
+ genesys: Fix out of bounds access during calibration on gl843
+
+commit ea7f8a58f224ed3eae3563575fc11eb502725531
+Merge: 5d08b64bc6f0 617e83b4e502
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 15:21:23 +0000
+
+ Merge branch 'genesys-descriptions' into 'master'
+
+ doc: Update descriptions of supported genesys scanners
+
+ See merge request sane-project/backends!405
+
+commit 617e83b4e502d79aa0541141f1d5191dccca2d7a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 18:05:36 +0300
+
+ doc: Update descriptions of supported genesys scanners
+
+commit 5d08b64bc6f031bbb58e6ccaf54fbb3400bb3395
+Merge: 0932b751e0ee eec083f46a1e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 15:09:55 +0000
+
+ Merge branch 'genesys-4400f-8400f-8600f-bugs' into 'master'
+
+ genesys: Fix various bugs on 4400F, 8400F, 8600F
+
+ See merge request sane-project/backends!404
+
+commit eec083f46a1e7ccc63441642096d2b35c238ede7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:38:08 +0300
+
+ genesys: Remove startup position hack on 4400F 4800dpi scans
+
+commit 1125cf338a11991b7e6b6284ea90f5fb1bcbdd3c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:38:07 +0300
+
+ genesys: Update pixel start offsets on 4400F
+
+commit 60da130402d8616d18244b32dc13390e05e882e0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:38:06 +0300
+
+ genesys: Fix Y scan area offset on 4400F
+
+commit ea781b6b07956b0aa26cb190674d9e20fd85ec8d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:38:05 +0300
+
+ genesys: Improve head positioning during calibration on 8600F TA scans
+
+commit b788f2de8f948aff02d13043d7801ff1d7efa9d9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:38:04 +0300
+
+ genesys: Remove startup position hack on 8600F 4800dpi scans
+
+commit aec867d1e8edc47c726453b40d349d1eeeb6356b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:38:03 +0300
+
+ genesys: Support negative output_pixel_offset
+
+commit f03b7ad29f4d6d7d4b15ab3e7d9addf22eb06d80
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:38:02 +0300
+
+ genesys: Fix alignment of transparency scans of different dpi on 8600F
+
+commit 82b42862abfb8f0b2473198486c416fe2aef9d25
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:38:01 +0300
+
+ genesys: Fix calibration on 8400F
+
+commit 6fea625ad6030e78218f089ff344a93baec4efaf
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:38:00 +0300
+
+ genesys: Support custom shading offset on gl843
+
+commit 4b796205254c0b41370e806b07990117d1ea4444
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:37:59 +0300
+
+ genesys: Fix shading resolution on 8400F 400dpi
+
+commit 664c07c01a4502546ac89211211dcb8261c8877f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:37:58 +0300
+
+ genesys: Add a way to configure shading pixel offset
+
+commit df0fccf899d13269bd24952da30e17543f38dd78
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:37:57 +0300
+
+ genesys: Fix incorrect handling of start position on gl843
+
+commit 0932b751e0ee962650eb1bdea2b5fab79b019dc4
+Merge: 1fc00f2b962f 922cabc0befe
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 14:04:43 +0000
+
+ Merge branch 'genesys-output-pixel-offset' into 'master'
+
+ genesys: Allow to specify output pixel offset within model configuration
+
+ See merge request sane-project/backends!403
+
+commit 922cabc0befe832a965e67c866d3862f172978ba
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:23:43 +0300
+
+ genesys: Remove no longer used ccd_start_xoffset
+
+commit 87f5637a47f52499a2d87b12b5903db8b401c20d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:23:42 +0300
+
+ genesys: Cleanup pixel position handling on gl124
+
+commit bae938b4be6d74659201a68d40b0977df45de1d9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:23:41 +0300
+
+ genesys: Use output_pixel_offset for CCD offsets on gl847
+
+commit eca7a5ab91ef24fb172ffc683be4dcae1eeb5128
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:23:40 +0300
+
+ genesys: Use output_pixel_offset for CCD offsets on gl845/gl846
+
+commit e5c46aee41083d5f1449dad6c1558560f3503755
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:23:39 +0300
+
+ genesys: Use output_pixel_offset for CCD offsets on gl843
+
+commit dc00ab867bc80d84c5e2691e2a0f85158b480401
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:23:38 +0300
+
+ genesys: Use output_pixel_offset for CCD offsets on gl841
+
+commit 648a24830f04ea6f972094828bdb9335b6246ac4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:23:37 +0300
+
+ genesys: Use output_pixel_offset for CCD offsets on gl646
+
+commit 1fc00f2b962fcda4fbe3f87df9ce43961a360421
+Merge: db828453fae7 3693f4b12d3d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 13:33:50 +0000
+
+ Merge branch 'genesys-cleanup-pixel-position-handling' into 'master'
+
+ genesys: Cleanup pixel position handling
+
+ See merge request sane-project/backends!401
+
+commit 3693f4b12d3dcbc47a6d60ed648c178f8018c4f4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:59 +0300
+
+ genesys: Simplify use of pixel_endx on gl124
+
+commit cdefc1cae501503fed0aee43036ee4bb37386690
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:58 +0300
+
+ genesys: Simplify pixel position handling on gl646
+
+commit e920d1bbcea1dd6c2daf2014c775c3d472df42ed
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:57 +0300
+
+ genesys: Add a way to specify output pixel offset
+
+commit 94f130cdfa8c56bef77f24cce2a6d587fc426292
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:56 +0300
+
+ genesys: Simplify pixel position calculation on gl841
+
+commit 8b37d4b15e9a51d9d0412331b2ec74ac54195e24
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:55 +0300
+
+ genesys: Remove handling of XCORRECTION on gl646
+
+commit 2bec01cf60a487f0752205d2e44586d18434b83d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:54 +0300
+
+ genesys: Simplify optical pixel calculations on gl646
+
+commit f4b60c48bba4d2c9b83b1d47e9115c2b90177a2f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:53 +0300
+
+ genesys: Remove unnecessary pixel averaging handling code on gl841
+
+commit 1f43e6a7f89e299e72f3b19f4ec42a8a2259ac65
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:52 +0300
+
+ genesys: Remove unused handling of partial resolutions
+
+commit 71f3dd8643667cf05bbc48203a31aefe18643e3c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:51 +0300
+
+ genesys: Make definition of optical_resolution more consistent on gl646
+
+commit 6db2f94598a4d03d444bd08f5834f0afa8938648
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:50 +0300
+
+ genesys: Remove unused configuration of ccd_size_divisor
+
+commit 12269c5ad47471706259a0222561df9b90ff05e7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:49 +0300
+
+ genesys: Prefer not to use ccd_size_divisor on gl841
+
+commit 48c377b5f0a84887338fdfee2c74ead6cc08271f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:48 +0300
+
+ genesys: Improve description of SetupParams::pixels
+
+commit db828453fae7d9d8973caa0d582e61cc4bd05b4a
+Merge: 4c254e3c3d4b 901827c8c72a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 13:31:04 +0000
+
+ Merge branch 'genesys-canoscan-700f' into 'master'
+
+ genesys: Fix support for CanoScan 700F
+
+ See merge request sane-project/backends!402
+
+commit 901827c8c72aef642e025d054546e80bacf15bd5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:29 +0300
+
+ genesys: Disable currently unsupported resolutions on LiDE 700F
+
+commit 35e48da4a89355750449730c62fd1da1a9d129de
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-13 07:19:28 +0300
+
+ genesys: Fix invalid home position reporting on LiDE 700F
+
+commit 4c254e3c3d4b1567066a4ec0f5e84509e936a6f3
+Merge: 19d7b02d4adf 6a0e0eb5683f
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-04-12 09:01:51 +0000
+
+ Merge branch 'escl-adf-support' into 'master'
+
+ Escl adf support
+
+ See merge request sane-project/backends!300
+
+commit 6a0e0eb5683f5a0654ab697ec96cdcf60e6c7b60
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-04-12 10:28:55 +0200
+
+ Fix build
+
+commit 3d02d2f1be192831b48c5abf686e10feaebba8e7
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-04-12 10:17:33 +0200
+
+ Changes the status when the trays are empty.
+
+commit ba5f99273799e7408e919f627f68523c0ec3be13
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-04-04 17:11:16 +0200
+
+ Fix all conflicts.
+
+commit 4ed0b0fd59e5fd363967526de84b17fdeab690fc
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-04-04 16:29:41 +0200
+
+ Fix conflicts
+
+commit fa75c94b241743c48c66145c0e426883ad20420f
+Merge: 59824f3d8343 f8193494ad23
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-04-04 14:04:18 +0000
+
+ Merge branch 'master' into 'escl-adf-support'
+
+ # Conflicts:
+ # backend/escl/escl.c
+ # backend/escl/escl.h
+ # backend/escl/escl_capabilities.c
+ # backend/escl/escl_crop.c
+ # backend/escl/escl_newjob.c
+ # backend/escl/escl_scan.c
+ # backend/escl/escl_status.c
+
+commit 59824f3d8343410151eb8d3664d0f3b69935b698
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-04-03 09:37:49 +0200
+
+ Fix style.
+
+commit 8f5f815be107d6dcbf15430b654395e7e6cf20ad
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-04-03 09:33:55 +0200
+
+ Moves to the next page for the ADF.
+
+commit 4f8a6991a97606a30f6187dcff030366e5d738aa
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-04-03 09:23:49 +0200
+
+ Calculates the cropping offset with the ratio.
+
+commit dd9e30c8148afc91573080e1bde08765c6f64544
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-04-03 09:22:51 +0200
+
+ Adjusts the cropping offset.
+
+commit 81325dc773ef9f0aab8ea40bc81e05036cfbe25a
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-22 16:41:53 +0100
+
+ Fix build.
+
+commit f4e6677fc1f1fa3d4862ac5b45f3428d434dd2a3
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-22 16:29:34 +0100
+
+ Fix build.
+
+commit 79f7463366aaaf8b9736833a63916931884ebf9c
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-22 16:14:23 +0100
+
+ Refactoring the ADF mode.
+
+commit 7caf9287971b1f59c478e38e87ff7e1750f55e46
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-17 23:42:53 +0100
+
+ Correction of the return value of the scanner status
+
+commit 136024355ddd87fa462dad840c44da2cfdd4b384
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-17 11:04:18 +0100
+
+ Fix open device.
+
+commit 505a2c220893963f85f11d5385c6ce9faf05f096
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-17 09:51:34 +0100
+
+ Fix typo.
+
+commit 41541da8ff2990cf6124c61a74ed679a2773ae46
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-16 00:37:28 +0100
+
+ Fix few arguments to function 'print_xml_s'
+
+commit 9315ad2ce6843eabfe3afcdaa667ca94d81e40ef
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-16 00:29:37 +0100
+
+ Fix build.
+
+commit f62f9be1dd3b5a98300910e1c2ab8c0a8a4d4736
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-16 00:21:49 +0100
+
+ Fix variable type.
+
+commit 682d238c08722e2c34c6b31a336cc293d563b444
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-16 00:13:42 +0100
+
+ Fix build.
+
+commit 0440234c36a031b9a3f76d72b89d169faa42908e
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-16 00:01:58 +0100
+
+ Fix function proto.
+
+commit 54136b8deb18dcefb8b80029f4f1823c58eed315
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-15 23:50:40 +0100
+
+ If Adf, acquisition of the next page, if it exists.
+
+commit cf94e585f54cee1b0e9f91290cf5f26525106e3c
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-15 16:57:14 +0100
+
+ Full definition of ADF support.
+
+commit 22416dece7aa6e7dd4aa563416a048fcc447f668
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-14 16:42:15 +0100
+
+ Fix style.
+
+commit beaba443855b40d58ac1c5263a064cafee492d5a
+Merge: 749fe19febba 93df3050c45d
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-14 16:38:40 +0100
+
+ Merge branch 'escl-adf-support' of gitlab.com:sane-project/backends into escl-adf-support
+
+commit 93df3050c45da64747e8f35712fe679809b87d9a
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-12 13:48:59 +0100
+
+ Resolv conflict.
+
+commit adc38bce0ebdbb73d406996208aaf0b956a47b9c
+Merge: 899d9e90bc18 7b45c89b023d
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-12 13:23:02 +0100
+
+ Merge branch 'master' into escl-adf-support
+
+commit 899d9e90bc1870125ca0fd0520dd903db9187488
+Merge: b2aea45ca416 aedebecef790
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-10 21:00:56 +0100
+
+ Merge branch 'master' into escl-adf-support
+
+commit b2aea45ca416c64b77a5dbfdd59dcc6ce82be282
+Merge: 3c73e7031dae 7ae6ccfb3201
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-10 20:58:32 +0100
+
+ Merge branch 'escl-adf-support' of gitlab.com:sane-project/backends into escl-adf-support
+
+commit 7ae6ccfb32010eaa87efe6f158f927e8852c8701
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-09 16:58:12 +0100
+
+ Call explicitly cancel.
+
+commit 3c73e7031daeb24866a7e7e08a0537376ebfc440
+Merge: 579e79da148c 28264dcfd825
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-08 20:55:28 +0100
+
+ Merge branch 'master' into escl-adf-support
+
+commit 579e79da148c85ac965cea01d15944c55f08292f
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-01-07 19:25:38 +0000
+
+ Remove debug.
+
+commit 4f7fc379daa0552bc10a3a12b5b3e0560ad431bd
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-07 16:09:38 +0100
+
+ Add support adf.
+
+commit 749fe19febbaaf79558f508b1c117d3cdc4761a6
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-14 16:19:18 +0100
+
+ Fix build
+
+commit 1b3f0c9bc0e3e90fa39cb2598bc1c4d31c10806d
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-09 16:58:12 +0100
+
+ Call explicitly cancel.
+
+commit 2c12635b2360a757d4180a08a7222d5d388c8767
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-01-07 19:25:38 +0000
+
+ Remove debug.
+
+commit fd0a8a002602a8d480827210956b70c03f601f40
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-14 15:41:15 +0100
+
+ Add support adf.
+
+commit 19d7b02d4adf02e4fafd51e56f377d216cbb95ba
+Merge: 3b1d7d59c146 7fbc7dda5457
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-11 13:16:48 +0000
+
+ Merge branch 'genesys-fix-test-mode' into 'master'
+
+ genesys: Fix test mode (part 2)
+
+ See merge request sane-project/backends!400
+
+commit 7fbc7dda5457247f966108c2393b3884d80b58c9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-11 15:50:03 +0300
+
+ genesys: Readd missed comment
+
+commit 3b1d7d59c1460146dd581d9ac659c9b918ab731e
+Merge: 13f943ec12c0 db50c9113235
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-11 12:38:19 +0000
+
+ Merge branch 'genesys-reg-get-address' into 'master'
+
+ genesys: Remove uses of sanei_genesys_get_address()
+
+ See merge request sane-project/backends!399
+
+commit db50c91132354e90c9fca3eddd10724da99d5bd8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-05 06:19:38 +0300
+
+ genesys: Remove uses of sanei_genesys_get_address()
+
+commit 13f943ec12c0c9b25e3b3fb6bfdb9beae4a87a1a
+Merge: db6b862d7071 5ffd4039de04
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-11 12:37:30 +0000
+
+ Merge branch 'genesys-fix-test-mode' into 'master'
+
+ genesys: Fix test mode
+
+ See merge request sane-project/backends!398
+
+commit 5ffd4039de04b4a47ad0a5b6a7639bab11e14493
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-11 15:20:30 +0300
+
+ genesys: Fix crash when exact usb device is not specified
+
+commit 55972a3efaa180bafb5852124f6d6ecf05f2dd0b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-11 15:20:29 +0300
+
+ genesys: Fix crash during testing mode
+
+commit db6b862d7071d983d23b80c910bd634eabb3e552
+Merge: 11cace00a8ac f48f0bf7d161
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 22:50:46 +0000
+
+ Merge branch 'genesys-plustek' into 'master'
+
+ genesys: Fix scan area size on OpticFilm 8200i and 7400
+
+ See merge request sane-project/backends!397
+
+commit f48f0bf7d161be018ce0f41eeec58f45f3fc564e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-10 01:14:14 +0300
+
+ genesys: Fix scan area size on OpticFilm 8200i and 7400
+
+commit 11cace00a8acb40b2ee2630c6db198d8cae5ed5a
+Merge: 33b605279048 ea94970b6a2d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 21:13:27 +0000
+
+ Merge branch 'genesys-warmup' into 'master'
+
+ genesys: Fix and enable lamp warmup before first scan
+
+ See merge request sane-project/backends!396
+
+commit ea94970b6a2d22cec3af797bbce75120ef065259
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:13 +0300
+
+ genesys: Enable lamp warmup on scanners that need it
+
+commit f22dd4d7b204e1b1e328bc2234b7a022f88ede57
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:12 +0300
+
+ genesys: Move lamp to transparency adapter if needed during lamp warmup
+
+commit 21d9079eb760bceba9e95e9afb957def63ffcecb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:11 +0300
+
+ genesys: Invert meaning of ModelFlag::SKIP_WARMUP
+
+commit 8b653560476b5c74cc793880432de410c40a20ed
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:10 +0300
+
+ genesys: Fix calculation of averages during lamp warmup
+
+commit c2480ac0649aaa5af1540695e38e9b78a2ba18d5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:09 +0300
+
+ genesys: Simplify calculation of warmup success criteria
+
+commit 40cb193cc37d1a348fb621511b86509280d63d2e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:08 +0300
+
+ genesys: Fix debug messages during lamp warmup on 16-bit scans
+
+commit 0ab6e786579441ac0ad87b4b67580a886c4ec151
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:07 +0300
+
+ genesys: Compare all subsequent scans during lamp warmup
+
+commit fa594d965d3903f258728ebd6eaaa7d3c9235332
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:06 +0300
+
+ genesys: Correctly initialize warmup registers in transparency scans
+
+commit 6420e00a38bbd239f33d407ad66e0b96e9178ad8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:05 +0300
+
+ genesys: Don't hardcode depth during warmup
+
+commit 4586ae4e563edba12fed630815360593a72a6ce5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:57:04 +0300
+
+ genesys: Increase consistency of lamp warmup handling
+
+commit 33b605279048ef72354efb2ef5f065b889c95289
+Merge: 5cbb9eaae5d8 15b664fa3235
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 21:11:29 +0000
+
+ Merge branch 'genesys-8600f-ta-position' into 'master'
+
+ genesys: Fix position of transparency area on 8600F
+
+ See merge request sane-project/backends!395
+
+commit 15b664fa3235007130ad396161d9d3892c97e674
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:55:57 +0300
+
+ genesys: Fix position of transparency area on 8600F
+
+commit 5cbb9eaae5d833b1c7d7898d2df2bd8239b9b832
+Merge: 14e9fb18773c 40b4852eb710
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 21:09:03 +0000
+
+ Merge branch 'genesys-cleanup-device-init' into 'master'
+
+ genesys: Cleanup device initialization
+
+ See merge request sane-project/backends!394
+
+commit 40b4852eb710673cd3d26c607a93e0a12f60376b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:53:30 +0300
+
+ genesys: Remove unused argument out of sanei_genesys_asic_init
+
+commit 0992b379c88d3f6cb740460c26dad91fca9d82ad
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:53:29 +0300
+
+ genesys: Remove unnecessary scan out of gl841 initialization code
+
+commit 57b0873a8303a0696a2b6416725a19f78cde2a47
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:53:28 +0300
+
+ genesys: Don't move scanner head forward on startup on gl843
+
+commit 14e9fb18773ce96603dd9c0f98e9e61aecf7eb75
+Merge: f8193494ad23 0d1542cbe6f3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 21:06:42 +0000
+
+ Merge branch 'genesys-fix-usb-id-init' into 'master'
+
+ genesys: Fix initialization of USB IDs
+
+ See merge request sane-project/backends!393
+
+commit 0d1542cbe6f3c85693e3495f032f1887cbda6c8e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:50:48 +0300
+
+ genesys: Fix bcdDevice filtering
+
+commit bb318cf8f31ea84540f80b32ef4558c35a494cf5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:50:47 +0300
+
+ genesys: Simplify USB id retrieval
+
+commit 13dffa0915fb76ad730fb558e451589fc6c7194f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:50:46 +0300
+
+ genesys: Defer evaluation of bcdDevice until open()
+
+commit 0e8f9c935eb764b5f7095ff4d9cdc82a8a5811c1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 23:50:45 +0300
+
+ genesys: Correctly initialize test USB device
+
+commit f8193494ad23dce78a2e2bdfa7825715ec29d2e0
+Merge: 9723a83b2c35 bd6a2551a5db
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-04 04:35:45 +0000
+
+ Merge branch 'newyearsbranch' into 'master'
+
+ canon_lide70-sequel
+
+ See merge request sane-project/backends!315
+
+commit bd6a2551a5db9f771ace2362dbb80991ac86a3a9
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-03-10 21:00:03 +0100
+
+ canon_lide70-common.c
+
+ eliminate two spaces near new io_error
+
+commit a0ddf165a77e08f970428d34e1b6bd1869e670b0
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-03-10 20:48:10 +0100
+
+ canon_lide70-common.c
+
+ adding empty line
+
+commit 775a26471cfff2a80ad45104b2c90658fe001f3b
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-03-10 20:42:31 +0100
+
+ canon_lide70-common.c
+
+ eliminate u_long
+
+commit 04fc970b2ed55df3ad1d0d253f4594c114088089
+Merge: e6b1647a1b9b 70070f7be2b5
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-03-10 20:09:49 +0100
+
+ Merge branch 'master' of https://gitlab.com/sane-project/backends into newyearsbranch
+
+ resolve po/POTFILES.in
+
+commit e6b1647a1b9bfe7c9b0974404c9358a737736a90
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-03-10 19:08:27 +0100
+
+ canon_lide70
+
+ extended canon_lide70.desc
+
+commit 70b654239e213eb261d890866b9dfed1f3323bb9
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-03-10 19:03:33 +0100
+
+ canon_lide70
+
+ shortened canon_lide70.desc
+
+commit d3a8d9ef89d3b209762cf325c9ded54ee4c3a3c4
+Author: Pim van Tend <pimvantend@yahoo.com>
+Date: 2020-02-04 19:20:40 +0000
+
+ Update po/POTFILES.in
+
+ to the current mainstream sane version, adding canon_lide70.c
+
+commit ebd45d4cf87955c5eb59e49d2a7190fd60d5f3ef
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-01-04 16:18:57 +0100
+
+ canon_lide70
+
+ adding/modifying twelve files to provide the new canon_lide70 backend
+
+commit d2d878d023bb65ad8ca2f9bd3c798961f7b36381
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-01-01 13:00:21 +0100
+
+ precursor to the canon_lide70 backend
+
+ left by @jrernst at http://www.juergen-ernst.de/info_sane.html
+
+ this version of the backend does not work
+
+commit 9723a83b2c35b1591198ee809518e48c1a5ba076
+Merge: 911e40ba4eda f39a43953b57
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-04-02 11:05:58 +0000
+
+ Merge branch 'zeroheure-master-patch-67644' into 'master'
+
+ document JPEG compression level
+
+ See merge request sane-project/backends!389
+
+commit f39a43953b5700ac7dd31cc97d04a65c62524e3d
+Author: Xavier Brochard <xavier@alternatif.org>
+Date: 2020-04-01 20:44:49 +0000
+
+ document JPEG compression level
+
+commit 911e40ba4eda964927f3adacb766ed45e60729be
+Merge: 6b318d808229 7f10387ab089
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-04-02 09:08:24 +0000
+
+ Merge branch 'escl-fix-ratio-crop' into 'master'
+
+ Escl fix ratio crop
+
+ See merge request sane-project/backends!390
+
+commit 7f10387ab089b35e042d51b82afbbef913c9b179
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-04-02 10:41:59 +0200
+
+ Calculates the cropping offset with the ratio.
+
+commit 6c0c360ce7b53fb195d9462649c734d83d13a42a
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-04-02 10:40:27 +0200
+
+ Adjusts the cropping offset.
+
+commit 6b318d80822955cb2aafb443652ee17aa15ebb71
+Merge: 101d27e8db7b 8725559d4bc7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-01 18:45:49 +0000
+
+ Merge branch 'genesys-plustek' into 'master'
+
+ genesys: Update Plustek model status
+
+ See merge request sane-project/backends!388
+
+commit 8725559d4bc7a37122bbdc2250eb7a5c67e9b1b2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-01 21:30:01 +0300
+
+ doc: Update plustek model status
+
+commit 101d27e8db7bd4665ab366079a1b7561ed74ce4d
+Merge: 726e3e540768 0d5f5b54ed35
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-01 18:17:03 +0000
+
+ Merge branch 'genesys-plustek' into 'master'
+
+ genesys: Enable support for several Plustek OpticFilm scanner models
+
+ See merge request sane-project/backends!387
+
+commit 0d5f5b54ed35ae21b1da5a14f725dba569ff998f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-01 20:57:01 +0300
+
+ genesys: Enable bcdDevice filtering
+
+commit 54f3b8efd17d2be6831f519c22247347a6ddb1ca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-01 20:57:00 +0300
+
+ genesys: Add support for early version of Plustek OpticFilm 7600i
+
+commit bfd0b82d2b4f2770e8cc72af0cbde12d0f3210f4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-01 20:56:59 +0300
+
+ genesys: Add support for Plustek OpticFilm 8100
+
+commit a2a121ab8c53bc3f2e1523f633ddbb1bc6e04815
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-01 20:56:58 +0300
+
+ genesys: Add support for late version of Plustek OpticFilm 7600i
+
+commit ea128674a65213fb9850ca7d2c6a4f594709f525
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-01 20:56:57 +0300
+
+ genesys: Add support for early version of Plustek OpticFilm 7400
+
+commit 4a1667865a50d6f34a70e2891e89830588b1a6ff
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-01 20:56:56 +0300
+
+ genesys: Add support for Plustek OpticFilm 7200 (v2)
+
+commit 726e3e540768279edad11a2b5d7985cb018d3511
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-31 22:54:02 +0200
+
+ pixma: backend version 0.27.6
+
+commit 05459de5e8e9ad1b25aa84453d2277d7c950b729
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 23:55:21 +0100
+
+ pixma: print characters @ pixma_hexdump()
+
+commit e58641a430a7f1b70edb40c2fe495923e02a35bc
+Merge: 2fe8e635970e c47e1c0bd5fd
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-31 20:46:48 +0000
+
+ Merge branch '258-fake-usb-playback-fails-with-pixma-backend' into 'master'
+
+ Resolve "Fake USB Playback fails with pixma backend"
+
+ Closes issue sane-project/backends#258
+
+ See merge request sane-project/backends!353
+ Need merge requests sane-project/backends!380 and sane-project/backends!381
+
+commit c47e1c0bd5fdb953a6d0b3ba171f7c236dd95eeb
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-31 18:45:35 +0200
+
+ sanei_usb: don't read data from timeouted interrupt
+
+commit d2a43afce04943a40a43e8d6b57a069bcf5acb78
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-31 13:26:38 +0200
+
+ pixma: get device id if we replay a xml file
+
+commit fa9d240e7040bf0b4ddb7c00334febf49307ea9d
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-10 16:22:30 +0100
+
+ pixma: call sanei_usb_exit() on sane_exit()
+
+ see: sane-project/backends#108
+
+commit 2fe8e635970e9ef21a26a78f69eb58e5332fad1c
+Merge: d6d3c0566fec d6fa8668183e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-31 17:55:02 +0000
+
+ Merge branch 'sanei-usb-record-replay-descriptor' into 'master'
+
+ sanei_usb: Add support for record/replay of get descriptor calls
+
+ See merge request sane-project/backends!381
+
+commit d6fa8668183e82232d82d1058d96b446e07b4904
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 22:08:41 +0200
+
+ sanei_usb: Add support for record/replay of get descriptor calls
+
+commit 77886e63874a38736ccdf4cb90f4cdf856d4064b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 22:08:40 +0200
+
+ sanei_usb: Return correct error code in replay code path
+
+commit d6d3c0566fec15197a43ac0daf2a8a19c9650cb2
+Merge: 22b548bf2247 770b204702d0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-31 10:03:01 +0000
+
+ Merge branch 'sanei-usb-record-replay-multiple-open' into 'master'
+
+ sanei_usb: Support recording conversations within multiple open-close calls
+
+ See merge request sane-project/backends!380
+
+commit 770b204702d00d243d4739ad9b0d68d5800c1469
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 22:08:43 +0200
+
+ sanei_usb: Support devices that are being opened multiple times
+
+commit 7d97a1aaf46b8adf5808fdb4204e99af7a095c6a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 22:08:42 +0200
+
+ sanei_usb: Reset all testing data on exit
+
+commit 62614a46609d85f03d9b73a826f8c94a3554e2b1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 22:08:39 +0200
+
+ sanei_usb: Use internal linkage for private static variables
+
+commit 22b548bf2247d544493a825999f748af7e3a7f8c
+Merge: b291a1793488 d5fdbb0c7dcb
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-30 11:42:02 +0000
+
+ Merge branch 'escl-fix-capabilities' into 'master'
+
+ escl - fix capabilities
+
+ See merge request sane-project/backends!384
+
+commit d5fdbb0c7dcbaa26e29b114f09844abdb0d52a52
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-29 21:37:35 +0200
+
+ Revert "Offset correction"
+
+ This reverts commit d7df235a7e74602c51b002a6962eb72937f623c3.
+
+commit 062fb40cf42220d9ab440b185afbfe023d85a650
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-29 21:37:25 +0200
+
+ Revert "Correction of the zone cropping."
+
+ This reverts commit 67c7ef9c4e1463d853db190db22e7f652119d664.
+
+commit 67c7ef9c4e1463d853db190db22e7f652119d664
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-29 21:35:28 +0200
+
+ Correction of the zone cropping.
+
+commit d7df235a7e74602c51b002a6962eb72937f623c3
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-29 21:30:21 +0200
+
+ Offset correction
+
+commit 6c855b7662fd2d8d4c3688176d74843207b56d55
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-29 16:20:16 +0200
+
+ Fix build.
+
+commit b4b1f2c7489912ec1243c576a6a6af1074565977
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-29 16:12:19 +0200
+
+ Fix build.
+
+commit 9afdd20776d06ff5cceae9087eae038cc6dfc285
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-03-29 13:53:42 +0000
+
+ Fix initialisation variable.
+
+commit 3066241e9037b2fb9b1a76c8ff02d97e94e345c5
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-29 15:47:44 +0200
+
+ Sets the capabilities of the device according to the output format.
+
+commit b291a1793488e3eaba7a42938f600869f358058e
+Merge: ee54d3935f5c d06e42b08c8a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-30 11:40:07 +0000
+
+ Merge branch 'fix-croping' into 'master'
+
+ escl - Fix croping
+
+ See merge request sane-project/backends!385
+
+commit d06e42b08c8a6d4812af08f7ac81def33f3ffe1b
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-29 21:42:38 +0200
+
+ Correction of the zone cropping.
+
+commit c6a8a541110a5cc946d949d32206710d9a21027b
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-29 21:42:10 +0200
+
+ Offset correction
+
+commit ee54d3935f5c58dfdb36daf5bc7c8e82923bfbb3
+Merge: 07f28a1ca63d 8ecd54e8d2d1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-29 12:32:33 +0000
+
+ Merge branch 'escl-formatext-pdf' into 'master'
+
+ Add FormatExt for PDF.
+
+ See merge request sane-project/backends!356
+
+commit 8ecd54e8d2d18d2a539d3625e7cf55df43570b0b
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-14 22:17:34 +0100
+
+ Add FormatExt for PDF.
+
+commit 07f28a1ca63d384d365a04a67990e72c7843eaa5
+Merge: 47689131a474 ce97560e56b4
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-29 12:29:56 +0000
+
+ Merge branch 'openbsd-hotplugd' into 'master'
+
+ OpenBSD hotplugd(8)
+
+ See merge request sane-project/backends!375
+
+commit ce97560e56b450764dedf52b35344818d2d77f76
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 20:15:37 +0000
+
+ Remove double quotes, use curly braces where appropriate, and fix
+ the $BUSNAME device node path
+
+commit 6fed5be5f359b4f242feeee827c10827bddcf6ae
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 20:12:53 +0000
+
+ $BUSNAME is a full device path, not just the device node name
+
+commit 2c9a411b12a7272654ac49f0a20b579a91a4a292
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 20:05:04 +0000
+
+ Remove superfluous double quotes
+
+ Device nodes are always comprised of alphanumeric characters so
+ there's no need to quote them. That being said, where appropriate,
+ use curly braces if the variable doesn't terminate the string -
+ technically, this isn't necessary as the character which follows
+ is a dot ('.'), which isn't a legal character in variable names so
+ there's no ambiguity but it makes the variable "stand out" at the
+ very least.
+
+commit d24a5171c2f22cfc384442872077baae14b303df
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 20:03:41 +0000
+
+ chown -> chmod
+
+commit 6b1b071b771cbf98684336194eb1f9f26a9f020f
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 03:02:56 +0000
+
+ Group commands and add conditionals
+
+commit 0d0c03ab686cacafc739677048d9fde741e7c212
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 02:48:53 +0000
+
+ Change the owner as well as the group - missed earlier
+
+commit 9687ff8aa0edf2b4f0207682eab395fcbbbefa6f
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 02:47:54 +0000
+
+ Additionally to user:group, modes also need changing
+
+commit 5a842d8dd6611bc283e78b3d1a4f9f489cc14774
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 02:44:37 +0000
+
+ Remove useless comments
+
+commit 0b978ea7422cc067f986a428e4e2d0c581bda8bc
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 02:25:50 +0000
+
+ Simplify - use test(1) and && instead of 'if ... then ... fi"
+
+commit a129b7767de601969e0ada6fdb836701e9662bc6
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 02:07:05 +0000
+
+ Incorporate hotplugd(8) patches from the OpenBSD port
+
+ https://cvsweb.openbsd.org/~checkout~/ports/graphics/sane-backends/patches/patch-tools_openbsd_attach?rev=1.3
+ https://cvsweb.openbsd.org/~checkout~/ports/graphics/sane-backends/patches/patch-tools_openbsd_detach?rev=1.2
+
+ While there, use "$()" instead of "``" for running commands in a
+ subshell (this is to match `attach` change commited earlier).
+
+ More whitespace fixes.
+
+commit 61881417faf2ce8a67428d177f00a749d00622e3
+Author: Raf Czlonka <rczlonka@gmail.com>
+Date: 2020-03-25 01:59:59 +0000
+
+ Provide a working hotplugd(8) attach example
+
+ Current example not only doesn't work but also hard-codes `ugen0` device name.
+
+ Fix whitespace while there.
+
+commit 47689131a4741511221bbddd4d47a35fe58f0985
+Merge: 59df3942f87a 9698bfece709
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 21:31:29 +0000
+
+ Merge branch 'genesys-select-by-bcddevice' into 'master'
+
+ genesys: Implement device filtering by bcdDevice value
+
+ See merge request sane-project/backends!383
+
+commit 9698bfece709ae429b17c3da40b91ae906af60cb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 23:15:48 +0200
+
+ genesys: Add support for matching devices by bcdDevice
+
+commit 0bdce7928f55b2706a29418b363c184ff9f8ba2e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 23:15:47 +0200
+
+ genesys: Turn Genesys_USB_Device_Entry into a class
+
+commit b89751605f1f677b86cc903e2ecff6f8d3b5e0be
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 23:15:46 +0200
+
+ genesys: Add support for reading bcdDevice value
+
+commit 59df3942f87a9c95ba85b6355b9f9078c899d78b
+Merge: 7508a2174102 45dfd889e67f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 20:42:38 +0000
+
+ Merge branch 'sanei-usb-record-indent-configuration' into 'master'
+
+ sanei_usb: Indent the configuration section in recorded xml
+
+ See merge request sane-project/backends!382
+
+commit 45dfd889e67f80ef55f1fdd62d66c8c15c41f2d4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-28 22:08:44 +0200
+
+ sanei_usb: Indent the configuration section in recorded xml
+
+commit 7508a21741023ba08749901bdc656e74dc5a5aee
+Merge: 4a960e960aca 5c1643291a15
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 22:04:15 +0000
+
+ Merge branch 'lide-210-220-4800dpi' into 'master'
+
+ genesys: Add 4800dpi support for Canon LiDE 210 & 220
+
+ Closes #204
+
+ See merge request sane-project/backends!374
+
+commit 5c1643291a1542c7aaddbfacd18b569436580d17
+Author: Matthew Petroff <matthew@mpetroff.net>
+Date: 2020-03-24 21:32:11 -0400
+
+ genesys: Add 4800dpi support for Canon LiDE 220.
+
+commit 93f6bb19a9d83785b0447c2775e4e1a31ceaebf4
+Author: Matthew Petroff <matthew@mpetroff.net>
+Date: 2020-03-24 20:50:50 -0400
+
+ genesys: Simplify GL124 shading data segment iteration.
+
+commit 74f2af604bee59139b2277f916526271ae88977c
+Author: Matthew Petroff <matthew@mpetroff.net>
+Date: 2020-03-24 19:44:17 -0400
+
+ genesys: Add 4800dpi support for Canon LiDE 210.
+
+ Based on USB logs from Windows driver.
+
+commit 4a960e960aca62860e4346569fc036bf766d58cf
+Merge: bed29187f7bf e592a0c6f2de
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:24:08 +0000
+
+ Merge branch 'genesys-plustek' into 'master'
+
+ genesys: Fix x position of scan window on Plustek 7400
+
+ See merge request sane-project/backends!378
+
+commit e592a0c6f2de345c161695d0f1b9b77ec17c9c09
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 23:05:49 +0200
+
+ genesys: Fix x position of scan window on Plustek 7400
+
+commit bed29187f7bf340a04d94c285dd5ba9e7787fcd7
+Merge: 1fdb7021dfee 8068a958b221
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 20:20:51 +0000
+
+ Merge branch 'genesys-plustek' into 'master'
+
+ genesys: Add support for Plustek OpticFilm 7400 and 8200i
+
+ See merge request sane-project/backends!377
+
+commit 8068a958b221ee8cb6e9b76703175cc502b778fd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:30 +0200
+
+ genesys: Fix setup of motor vref on gl846
+
+commit 982d7d18aac3f24928d662ee9597caebb76eabfb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:29 +0200
+
+ genesys: Fix log message when device is not supported
+
+commit 6cb39e0a29142a832a6fe2ca772ff99be92d6a27
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:28 +0200
+
+ genesys: Add support for Plustek Opticfilm 8200i
+
+commit adaac29d90179e2e639c08ed0760d2125c4f9c19
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:27 +0200
+
+ genesys: Add support for Plustek Opticfilm 7400
+
+commit ef67ab08352604811462d55e766c85873d1f9d4c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:26 +0200
+
+ genesys: Fix support for transparency scanners on gl846
+
+commit 0fc25ed2d4a06465a2dcd9190a282846394b15b5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:25 +0200
+
+ genesys: Fix motor setup on gl846
+
+commit c3d7a02b0c2bacd54e82daf61dd3442c1c6f0ecf
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:24 +0200
+
+ genesys: Fix bulk data read from USB on gl845
+
+commit 69bfaa725686ede10f67dd1ab784807cf24258eb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:23 +0200
+
+ genesys: Print MotorId as string instead of a numeric id
+
+commit 71c81423fe5a591876cebedc63fcb3c6885ff977
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:22 +0200
+
+ genesys: Print GpioId as string instead of a numeric id
+
+commit 40d0641940c712cb3de488e3c749d04b98a5af1c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:21 +0200
+
+ genesys: Print AdcId as string instead of a numeric id
+
+commit 75da1523b89007ab142629c5f436436407f95146
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-27 21:29:20 +0200
+
+ genesys: Print ScanSession::pixel_count_ratio when serializing to stream
+
+commit 1fdb7021dfeefa6a59a0c265ae7a22990404bef1
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-25 20:22:27 +0100
+
+ pixma: Canon PIXMA TS3300 Series is working
+
+ see merge request sane-project/backends!376
+
+commit dd785110726fe69c999c362bece11c51835b303f
+Merge: 03a135cafd3c 48bc45f46be2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-24 12:22:38 +0000
+
+ Merge branch 'escl-unix-socket' into 'master'
+
+ Add unix socket support to ESCL
+
+ See merge request sane-project/backends!348
+
+commit 48bc45f46be27c94dfe099f424683256c17fbb73
+Author: Benjamin Gordon <bmgordon@chromium.org>
+Date: 2020-03-05 14:53:42 -0700
+
+ escl: Add unix socket support
+
+ Curl can pass HTTP traffic through a unix socket instead of TCP with the
+ CURLOPT_UNIX_SOCKET_PATH option. This is useful if you have a proxy
+ listening on a local socket between your computer and the scanner. Now
+ that URL parsing is centralized, take advantage of this to support an
+ extended name scheme: escl:unix:/path/to/socket:URL
+
+ These names won't be picked up on the network when avahi scans, but they
+ can be passed manually with -d or added to /etc/sane.d/escl.conf. If
+ the existing escl:URL syntax is used, the socket is not set and the curl
+ option is not used, so existing network connections work the same as
+ before.
+
+ Since local sockets are optional, the current conf parsing scheme
+ becomes order dependent. To avoid this, also add an additional "device"
+ line type to the config parser. If a line starts with "device", the
+ remainder of the line is treated as a complete device name/URL and
+ parsed with the URL parsing added in the previous commit.
+
+commit f6832f2a897d98f15c94a2c684e8c9d272caa594
+Author: Benjamin Gordon <bmgordon@chromium.org>
+Date: 2020-03-05 14:32:14 -0700
+
+ escl: Refactor name handling
+
+ Scanners are currently passed around by name, which is actually a URL.
+ Each function parses the URL a little bit, depending on what it needs,
+ and then sets the same curl options.
+
+ This refactors parsing out into a single escl_parse_name() function
+ called from sane_open and then passes around the resulting ESCL_Device
+ instead of the raw name. To set up the curl handle, the new
+ escl_curl_url() reconstructs a URL from the parsed ESCL_Device and sets
+ the appropriate options on the handle. Each place that makes a curl
+ call is updated to use the new function.
+
+commit 03a135cafd3c16abec90a8a05f7900217a05f370
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-24 13:05:19 +0100
+
+ pixma: backend version 0.27.5
+
+commit 86a8780c0c08479f918a0eef3af31c53a5633314
+Merge: a309a2a58d37 6e52b3f01ab5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-24 12:03:18 +0000
+
+ Merge branch 'pixma/use-BT.709-luma' into 'master'
+
+ pixma: for grayscale conversion use BT.709 luma
+
+ See merge request sane-project/backends!373
+
+commit 6e52b3f01ab5bbdc7b192895d3fd4819e49a7864
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-24 12:37:24 +0100
+
+ pixma: for grayscale conversion use BT.709 luma
+
+ Before we used linear grayscale conversion. This is not state of the art.
+
+commit a309a2a58d37efa538e770e9b59f2d0d04948aea
+Merge: 199b9eeef6ec e5e63f306af6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-24 11:30:46 +0000
+
+ Merge branch '111-sane-backends-1-0-28-backend-gt68xx_high-c-100-bad-expression-testpicture' into 'master'
+
+ Resolve "sane-backends-1.0.28/backend/gt68xx_high.c:100: bad expression ?"
+
+ Closes #111
+
+ See merge request sane-project/backends!369
+
+commit e5e63f306af6c2f4d5ff4c458c1e5cae91963d86
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-22 12:40:17 -0700
+
+ test: extra brackets to silence cppcheck warning.
+
+commit 199b9eeef6ecc4ec411b4feaf8deef63d45a1c21
+Merge: 2583158a5b04 56522b6a3585
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-23 13:17:23 +0000
+
+ Merge branch '243-really-fix-build-failure-on-ubuntu-16.04' into 'master'
+
+ Resolve "cannot build escl backend for Ubuntu 16.04 LTS"
+
+ Closes #243
+
+ See merge request sane-project/backends!372
+
+commit 56522b6a35853025c46bdf14a2a252f8748d3dc6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-23 22:00:16 +0900
+
+ Fix references to function check results
+
+commit 00a7fd8f00b7ff671574557b4638451d1141b8b1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-23 21:59:41 +0900
+
+ Add linker flags for JPEG library when checking for functions
+
+commit 2583158a5b04a48db4391f6df4a8bb95f1b39363
+Merge: 487b4a3a3c41 afdc2a159e38
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-03-22 17:10:37 +0000
+
+ Merge branch '111-sane-backends-1-0-28-backend-gt68xx_high-c-100-bad-expression' into 'master'
+
+ Resolve "sane-backends-1.0.28/backend/gt68xx_high.c:100: bad expression ?"
+
+ See merge request sane-project/backends!363
+
+commit afdc2a159e38359f7c71ace91f7aa7960281f702
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-20 20:27:52 -0700
+
+ gt68xx: corrected | character to || to fix warning.
+
+commit db9e4d4729ec562e1592659cba41baee757274a3
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-20 19:37:35 -0700
+
+ mustek: added clarifying brackets to expression.
+
+commit bc57c7ce5fc38859cb3c26540e2961b0a051a4c5
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-20 19:37:00 -0700
+
+ kvs20xx: added clarifying brackets to expression.
+
+commit 487b4a3a3c410bad61fc824cdc0c3ee87a627439
+Merge: c99580b81195 28abffad3cb1
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-03-22 17:09:45 +0000
+
+ Merge branch '116-sane-backends-1-0-28-backend-dmc-c-many-redundant-assignments' into 'master'
+
+ Resolve "sane-backends-1.0.28/backend/dmc.c: many redundant assignments ?"
+
+ Closes #116
+
+ See merge request sane-project/backends!364
+
+commit 28abffad3cb1c7f934dc3f33b9e12f370d613517
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-20 20:43:12 -0700
+
+ dmc: corrected tl-x, tl-y, br-x and br-y option ranges, to eliminate compiler warnings
+
+commit c99580b811959996f79a1f7278afddba20cfc69b
+Merge: dab5594a5052 ef583d54f209
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-22 13:01:07 +0000
+
+ Merge branch 'genesys-simplify-dpiset' into 'master'
+
+ genesys: Simplify DPISET register calculations
+
+ See merge request sane-project/backends!367
+
+commit ef583d54f209b89d296b4678c7b880f6c47129cc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:32 +0200
+
+ genesys: Rename dpiset_override to register_dpiset
+
+commit 5bcb5f3e80e16583c447d10fb544d22d42f47ea1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:31 +0200
+
+ genesys: Simplify shading resolution calculation on gl646
+
+commit c8c9deaf6def7ea921ece64f490037d96bfa72ff
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:30 +0200
+
+ genesys: Simplify dpiset calculation on gl646
+
+commit 989782bd72431118457cb5c0262dc80acd7c73b3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:29 +0200
+
+ genesys: Simplify dpiset calculation on gl847
+
+commit a43d362b7b35b7caa87d6ae70f9a7c577291db77
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:28 +0200
+
+ genesys: Simplify dpiset calculation on gl845/gl846
+
+commit 4a5f65d2d2b488eb2c1792a14dac1a863e6f0e0a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:27 +0200
+
+ genesys: Verify that dpiset_override is specified
+
+commit 94cfdbfdc699ae99468d0493f659f37328398399
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:26 +0200
+
+ genesys: Simplify dpiset calculation on gl843
+
+commit d9cd672a43faa5ae861e31c42a6d1496de5e0b4e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:25 +0200
+
+ genesys: Simplify shading data upload on gl841
+
+commit 459c62c131b4794d115c38b7a555d2415f7e9870
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:24 +0200
+
+ genesys: Simplify dpiset calculation on gl841
+
+commit cce3cdeaabc137aafdc8cd401242a96c98d8d2b6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:23 +0200
+
+ genesys: Update all sensors with calibrated exposure on gl841
+
+commit 38cf079e99b011e78523c48fd3fbc66a128a6491
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:22 +0200
+
+ genesys: Simplify dpihw register setup on gl841
+
+commit 692178eade0e176fe28d56278140af0cd39e8675
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:21 +0200
+
+ genesys: Simplify dpiset calculation on gl124
+
+commit 79e403bb89b0f108488aab87d0d688528a714a3c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:20 +0200
+
+ genesys: Simplify register setup on gl841
+
+commit f1368cb34c29c14d0b1cc660f241a71a55c14832
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:19 +0200
+
+ genesys: Add comments with asic types of sensors to the sensor tables
+
+commit 127e56978c9052a0900b4f16af2979f8d01c0bdd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:18 +0200
+
+ genesys: Remove dead code in gl841 sensor setup impl
+
+commit 8808fe777929650519532abc5fc34e5e4398c3da
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:11:17 +0200
+
+ genesys: Remove no longer used logical_dpihw_override
+
+commit dab5594a5052faee59a8a25dc68d738bb054b889
+Merge: 6ab010939ce1 1e116f12231c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-22 12:42:23 +0000
+
+ Merge branch 'genesys-remove-hwdpi' into 'master'
+
+ genesys: Simplify hwdpi calculation
+
+ See merge request sane-project/backends!366
+
+commit 1e116f12231cb1935140693433b61431899a09e3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:47 +0200
+
+ genesys: Verify that sensor tables are setup correctly
+
+commit 4cc233cde8071b1ed1b1672a3ee06dc982749ade
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:46 +0200
+
+ genesys: Add missed settings for HP N6310
+
+commit eb5a643c0adf894d4df5b19caa8aedde202038ce
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:45 +0200
+
+ genesys: Rename register_dpihw_override to register_dpihw
+
+commit c24886d7d7e97b0d82ead92b12b350bf27790f5d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:44 +0200
+
+ genesys: Remove no longer used hwdpi calculation functions
+
+commit 815d36c9c304d4f35f15fda568bee8f74552efbc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:43 +0200
+
+ genesys: Simplify shading resolution computation
+
+commit 163776a47910e0199ccda6aaaf4c0d4e5b5a9262
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:42 +0200
+
+ genesys: Simplify dpihw and shading resolution calculation on gl841
+
+commit 88989a1616ee53cb20587d4ce6242cb3a0b1a480
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:41 +0200
+
+ genesys: Pass resolution setting to sanei_genesys_set_dpihw() directly
+
+commit 2547f681f3056c960e37dfe76624b5706a1f9e7e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:40 +0200
+
+ genesys: Remove no longer used ModelFlag::FULL_HWDPI_MODE
+
+commit fd90ddefdc2d123f7316420696cef1266ac3c270
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:39 +0200
+
+ genesys: Simplify motor setup to use only model id for vref on gl843
+
+commit ca3ae12acfe1ef10641538efa3f8d3ae54e629a0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:38 +0200
+
+ genesys: Simplify sensor setup to use only model id on gl843
+
+commit 2d7758f5f22f64e112adc221f119499928f31e51
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:37 +0200
+
+ genesys: Simplify dpihw calculation on gl843
+
+commit cf4ce94fc48ae6e4fb92d9386c85aac9bffd77ac
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:36 +0200
+
+ genesys: Simplify computation of SHDAREA setting on gl843
+
+commit 0fca1185f57e3cc5d1e35aae868d88ea47f581ef
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:35 +0200
+
+ genesys: Simplify shading resolution computation on gl843
+
+commit f06238c97c568fc41f90e5c9187cbc8f557af57e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:34 +0200
+
+ genesys: Simplify shading resolution computation on gl847
+
+commit 3f6dcf84feff96ecb82bcc2f78fc3fda982cd680
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:33 +0200
+
+ genesys: Simplify shading resolution computation on gl846
+
+commit 0c0b4847283c9995c1b05c863163ae697adb30f6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:32 +0200
+
+ genesys: Simplify dpihw calculation on gl846
+
+commit dd16101d44680ebe0096f175b7635eeed83f0b86
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:31 +0200
+
+ genesys: Simplify dpihw calculation on gl847
+
+commit a41ffe3c334d133edba624a224a6929b1ae4c975
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:30 +0200
+
+ genesys: Simplify motor setup on gl846
+
+commit fe8ffefe1b3e2c76ccef3f735340ec70b078ff10
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:29 +0200
+
+ genesys: Simplify lamp warmup setup on gl843
+
+commit 3c8b103d821b8e6c5b3f1e8bff7a690061973b1d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:28 +0200
+
+ genesys: Simplify shading resolution computation on gl124
+
+commit c0a94b9288ecd53d81d7ce70c4d178dd19f8b327
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:27 +0200
+
+ genesys: Simplify dpihw calculation on gl124
+
+commit 028c9d398f6b8c88bd72ed5cb5b7d3c012f04eac
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:26 +0200
+
+ genesys: Simplify calculation of shading upload parameters on gl845/846
+
+commit 6e3713c87d4725526cca0e04dbba45f40a0ed029
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:25 +0200
+
+ genesys: Simplify calculation of shading upload parameters on gl847
+
+commit e54f15bcc8eb1abc648f966b8aa95f094dbafc6e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-21 00:03:24 +0200
+
+ genesys: Simplify calculation of shading upload parameters on gl124
+
+commit 6ab010939ce15a4cd403e97cf2f90aa251b4ce0b
+Merge: 115bbf6a245f 7a86b487bda7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-22 12:34:05 +0000
+
+ Merge branch '114-sane-backends-1-0-28-sanei-sanei_pio-c-3-bad-test' into 'master'
+
+ Resolve "sane-backends-1.0.28/sanei/sanei_pio.c: 3 * bad test ?"
+
+ Closes #114
+
+ See merge request sane-project/backends!362
+
+commit 7a86b487bda7f568812c6a77abfcd631716eecdc
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-20 19:28:56 -0700
+
+ sanei: corrected fd validity check, which always used to fail.
+
+commit 115bbf6a245f0a76ad5cd3aa3f8851128bef8582
+Merge: 1ed4c7d8f558 94efec957eed
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-22 12:18:46 +0000
+
+ Merge branch 'genesys-remove-hwdpi-divisor' into 'master'
+
+ genesys: Remove hwdpi divisor
+
+ See merge request sane-project/backends!365
+
+commit 94efec957eed2b1e53491d7fd1d24f34d6de8b8d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:10 +0200
+
+ genesys: No longer specify per-sensor hwdpi divisor
+
+commit 5a106f9e9ca479c37449ba6da007f252c608a0f6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:09 +0200
+
+ genesys: Remove remaining uses of hwdpi_divisor
+
+commit 31d5382b2b5a906edd0467ec6939255706a67c71
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:08 +0200
+
+ genesys: Don't use hwdpi_divisor for motor vref computation
+
+commit ceb13f77d73dc2fcf0ab6a10eb6fe0e796091315
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:07 +0200
+
+ genesys: Simplify physical pixel count computation on gl843
+
+commit f34176edf28e6cdc173c037083b14ede918e8546
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:06 +0200
+
+ genesys: Simplify physical pixel count computation on gl845
+
+commit 5807e5d2981eb460c3a3822acbf460b41cf36cc9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:05 +0200
+
+ genesys: Simplify physical pixel count computation on gl846
+
+commit a1f10bf2bce3b0103e58d81dad8e32d40581f89f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:04 +0200
+
+ genesys: Simplify physical pixel count computation on gl847
+
+commit 576d1fcdbac394c3220a1467c67e8477251ebe35
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:03 +0200
+
+ genesys: Simplify physical pixel count computation on gl124
+
+commit e2fc129b567aad2bb26f4b79479cac1228996d9e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:02 +0200
+
+ genesys: Make handling of stagger more uniform across chipsets
+
+commit 75d227f9c4dfe7395e49e2bb36b8a155b7891dce
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:01 +0200
+
+ genesys: Represent pixel count ratio as a class
+
+commit b2b569a7436dd9e53362db0c53d80a430b686c73
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:29:00 +0200
+
+ genesys: Add a way to override pixel coordinate divisor
+
+commit 559b2e314fb75ac27fa7a975b1617ff73c78a3bb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-20 23:28:59 +0200
+
+ genesys: Make handling of hwdpi_divisor uniform across chipsets
+
+commit 1ed4c7d8f5585de74a22bc0931a94d40b419e0d5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-19 16:11:06 +0100
+
+ pixma: backend version 0.27.4
+
+commit b113ef1285ee0ae59071aec6da05685d0c23ed90
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-19 16:09:38 +0100
+
+ pixma: for Canon LiDE300 and LiDE400 map target 06 to cancel/end button
+
+ see issue sane-project/backends#259
+
+commit 120d8c0bd3227f25eb31b146f61908b6ed24d254
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-18 20:24:21 +0900
+
+ README: Mention need for C++11 compiler for genesys backend
+
+commit 787b89daeab2796845d6d24b9cd91859470b9a5e
+Merge: e12b1e26aabe 4e9cbda3babc
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-03-17 15:51:35 +0000
+
+ Merge branch '236-red-and-yellow-overlay-after-3rd-scan-with-simple-scan-epson-perfection-1260' into 'master'
+
+ Resolve "Red and Yellow overlay after 3rd scan with simple-scan Epson Perfection 1260"
+
+ Closes #236
+
+ See merge request sane-project/backends!359
+
+commit 4e9cbda3babc3d008a36d0097090e8ca5a2d6a71
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-15 20:21:16 -0700
+
+ plustek: fix for gain loop computation to prevent buffer overrun
+
+commit e12b1e26aabe1cea265210ec8f999dec4a69220b
+Merge: a1888ae3bd28 db4cbd4185ee
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-17 12:16:38 +0000
+
+ Merge branch '243-cannot-build-escl-backend-for-ubuntu-16.04-lts' into 'master'
+
+ Resolve "cannot build escl backend for Ubuntu 16.04 LTS"
+
+ Closes #243
+
+ See merge request sane-project/backends!360
+
+commit db4cbd4185eee2c00bbaefee7896c11e21f99888
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-17 20:46:34 +0900
+
+ Add a build to prove that the previous commit fixes #243
+
+commit f5af34e75f3c946ba2aa935d09036dc99a1ecebf
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-17 20:43:16 +0900
+
+ Add checks for newer JPEG API used by the escl backend. Fixes #243
+
+ The backend is excluded from the build if this API is not available by
+ SANE_CHECK_BACKENDS.
+
+commit a1888ae3bd285e94f0dbb982e2611a3960faa623
+Merge: c7c5b1a602e4 3da269b7de53
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-15 16:13:53 +0000
+
+ Merge branch 'genesys-duplication' into 'master'
+
+ genesys: Reduce code duplication
+
+ See merge request sane-project/backends!357
+
+commit 3da269b7de5349b024c25edb1876ed22979bc345
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:38 +0200
+
+ genesys: Use common code path for memory layouts
+
+commit 718550e2d47b5f6168d256897efef6162ac09cf9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:37 +0200
+
+ genesys: Add a way to flush GenesysRegisterSettingSet without read back
+
+commit cb442169e4beb4bce2ae7f0008739e6171361644
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:36 +0200
+
+ genesys: Implement a way to serialize ModelId
+
+commit c1d4369410263fe5014ab41c4201f32e8375c31d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:35 +0200
+
+ genesys: Reuse generic value filtering code for scan method filtering
+
+commit c234ce6b77e623f7adfcf5ddd80b7d77ea102ecc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:34 +0200
+
+ genesys: Add generic value filter class for resolutions filtering
+
+commit ee2e026f2a5e86dd9188abc1277861cfd39d8cb0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:33 +0200
+
+ genesys: Don't overwrite RAM settings
+
+commit ea5047466ce0ade9bd5176caef18cbbe4260ce7b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:32 +0200
+
+ genesys: Reuse common gpio code on gl846
+
+commit 31fecb81407dcdbf10715b3f7f3667cf49e00c42
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:31 +0200
+
+ genesys: Clean up motor setup on gl847
+
+commit b307eba5cca35f247175fd66e68a1c6a075d2177
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:30 +0200
+
+ genesys: Clean up motor setup on gl846
+
+commit 884de5f9fe5f7303950d82fb1fb0d90197ccdd20
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:29 +0200
+
+ genesys: Clean up motor setup on gl843
+
+commit cd43109966d8655a3f49f3a0f0e96866cf16b76e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:28 +0200
+
+ genesys: Deduplicate gain calibration
+
+commit 233cb4bd5a5050c2867447d9c9c3e0f17c7c6eb4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:27 +0200
+
+ genesys: Use single code path for gain code calculation
+
+commit e0bec6723d893cc1d0624d5cdae3bf0b82fdeff1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:26 +0200
+
+ genesys: Deduplicate offset calibration
+
+commit 255da97fcb9862e3b8fbea8b73ead3241b8501c8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:25 +0200
+
+ genesys: Remove get_closest_resolution()
+
+ All gl646 scanners have sensors for all supported resolutions
+
+commit 428293c1e26c5f3c1a7ab87ef6717264d572bf24
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-03-14 23:19:24 +0200
+
+ genesys: Reflow sensor tables
+
+commit c7c5b1a602e44f0bf4132f4259ca0481a53b3a25
+Merge: 93fd01866e07 82515511a60c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-14 13:08:41 +0000
+
+ Merge branch '224-enable-avahi-support-by-default' into 'master'
+
+ Enable Avahi support by default if possible. Re #224
+
+ Closes #224
+
+ See merge request sane-project/backends!355
+
+commit 82515511a60cc3fa6d3e7f2453ffce0cab62da7a
+Merge: 0f857f94cd84 168e22a9416f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-14 09:03:31 +0000
+
+ Merge branch 'master' into '224-enable-avahi-support-by-default'
+
+ # Conflicts:
+ # .gitlab-ci.yml
+
+commit 0f857f94cd84141e80eab816b49d016d7066da25
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-14 16:02:10 +0900
+
+ .gitlab-ci.yml: Follow Avahi configure option rename
+
+commit f8c4bb77de38df28151008f03916ba9e01f22151
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-14 15:48:58 +0900
+
+ kodakaio: Update Avahi configure time option documentation
+
+ It has been removed from the command-line examples as the default is
+ to enable when possible and the Ubuntu example says to install the
+ necessary libraries. The avahi library reference has been fixed.
+
+commit cf7227b59848ce7d124f7494c607b8c924a7b153
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-14 15:48:19 +0900
+
+ Pass Avahi related preprocessor flags where needed
+
+commit 53875a52388f2477cef67b4cc13359caa99fff8b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-14 15:46:03 +0900
+
+ Fix WITH_AVAHI preprocessor conditionals
+
+ The macro is now always defined to either 0 or 1.
+
+commit f4b7e22bc0baec8819dcaf8659866d17d00c2cc7
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-14 14:54:10 +0900
+
+ Enable Avahi support by default if possible. Re #224
+
+ This eases building of the escl backend and aligns configure time
+ behaviour with other --with-* options.
+
+commit 93fd01866e07097c8eca596034c1fef14cf40890
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-14 13:53:56 +0100
+
+ INSTALL.linux: add missing development package
+
+commit 168e22a9416f03cf2c1133e34ca50005b9ede8a7
+Merge: 0033357120d8 5dcd770e5e22
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-14 09:01:17 +0000
+
+ Merge branch 'escl-lineart' into 'master'
+
+ Escl lineart
+
+ See merge request sane-project/backends!339
+
+commit 5dcd770e5e223a2099a6ea6d69e5560432355144
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-03-14 09:01:17 +0000
+
+ .gitlab-ci.yml: Revert poppler related changes
+
+ The Docker images used by CI have been updated to include the required
+ packages.
+
+commit 0033357120d8d6506e8eaece09cdb4e98ec3739e
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 13:21:12 +0100
+
+ pixma: backend version 0.27.3
+
+commit dd3515ce3f1e6f95b9b2b786a0a877df1426d966
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 13:20:43 +0100
+
+ sane-pixma.man: update document date
+
+commit b956a3cef04cdb7f7e50658b3143d425c762b2a5
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 13:19:31 +0100
+
+ pixma: update copyright
+
+commit dbc966e97ed0b8f0038f563298c625f374dea823
+Merge: 7322b5aff046 c4af1318487f
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 12:14:42 +0000
+
+ Merge branch 'pixma/new_scanners' into 'master'
+
+ Pixma: new scanners
+
+ See merge request sane-project/backends!354
+
+commit c4af1318487f798fccc6010e248094c6d9952865
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 12:40:21 +0100
+
+ pixma: new scanners Canon PIXMA G7000 and GM4000 Series
+
+commit 2b076de25f624811f29f75baeab2316b7760305c
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 10:27:17 +0100
+
+ pixma: new scanner Canon i-SENSYS MF720 Series
+
+commit 7322b5aff046623140694b2ba1f04de5efa73524
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 12:53:05 +0100
+
+ pixma: restrict ADF scans to 300dpi for Canon i-SENSYS MF440 Series
+
+commit e83c56658e9d7e99ef36dc08bcb7d2f467646e37
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 12:49:53 +0100
+
+ sane-pixma.man: align table of supported scanners
+
+commit b9a19d0cef9de8cebc472f6c434ab88174670a16
+Merge: 70070f7be2b5 20419f9815d3
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-11 11:43:49 +0000
+
+ Merge branch 'patch-1' into 'master'
+
+ pixma: detect MF440. Fix #257
+
+ Closes #257
+
+ See merge request sane-project/backends!347
+
+commit 20419f9815d392ceae01264fa272a6b74c1b58f6
+Author: Jérémy Lal <kapouer@melix.org>
+Date: 2020-03-07 17:45:31 +0100
+
+ pixma: detect MF440. Fix #257
+
+commit 70070f7be2b587b85f8d058b2b6769aa5dbd2d1e
+Merge: 9f9536709c28 5441ea1c518e
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-03-08 17:04:26 +0000
+
+ Merge branch '233-additional-sensors' into 'master'
+
+ Resolve "Regression tests: HP Scanjet 5400C"
+
+ See merge request sane-project/backends!351
+
+commit 5441ea1c518e18c06b6ff0fca4a277eb896787a3
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-07 19:55:52 -0800
+
+ hp5400: use standard defines for "color" and "grey" texts
+
+commit 19d033837e43f18bb1474851ae0e8ce713c478d5
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-07 15:37:14 -0800
+
+ hp5400: fix cancel bug that caused a crash when cancelling a scan or a preview
+
+commit 28bcb9179d2ac2fb506fe570e14a0f8a7de42189
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-07 14:36:27 -0800
+
+ hp5400: added support for editable colour/bw switch and copy count sensors.
+
+commit 9f9536709c28a3cbd72cf37263b58b5f7cad02a1
+Merge: 090973fa94f4 10620841b0a6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-08 13:11:41 +0000
+
+ Merge branch '228-remove-sane-desc-timestamping' into 'master'
+
+ Resolve "Make sane reproducible"
+
+ Closes #228
+
+ See merge request sane-project/backends!352
+
+commit 10620841b0a6b4be524ed50cf639097b3e9c9e93
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-08 21:56:10 +0900
+
+ Run through all sane-desc modes before signalling failures
+
+commit ea65e1b2ae692cef9d5dbd71e4c76b22951c3869
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-08 21:38:45 +0900
+
+ Drop diff ignore pattern from sane-desc check. Re #228
+
+commit b9651d5e19ccdc178707944a74d7267178c081d0
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-08 21:36:06 +0900
+
+ Update test reference outputs to match new sane-desc format. Re #228
+
+commit 1f9590ab5a2467d8ac4bf5db143ab61df7d1b93e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-08 21:29:29 +0900
+
+ Remove timestamps from sane-desc output. Re #228
+
+commit 090973fa94f47ff6994b068d33b1d02d527df0a7
+Merge: 960394b1e4ab 6d2dda4a9860
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-07 09:35:18 +0000
+
+ Merge branch 'for-upstream/backend_avision_nonfilm_noexposure' into 'master'
+
+ backend/avision: Disable exposure option for non-filmscanners
+
+ See merge request sane-project/backends!23
+
+commit 6d2dda4a986070c8fea68ac2df9b6527a045e1ab
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-08-26 13:47:44 +0200
+
+ backend/avision: Disable exposure option for non-filmscanners
+
+commit 960394b1e4aba8130d3d2b4d0acd6038ce31da33
+Merge: 6fe58ec210c4 c16ff3ffe0de
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-07 09:25:59 +0000
+
+ Merge branch 'for-upstream/backend_avision_fix_threading' into 'master'
+
+ backend/avision: fix thread cancellation
+
+ See merge request sane-project/backends!21
+
+commit c16ff3ffe0de9770a7af25368aaac443d3db03dc
+Author: Michael Niewoehner <foss@mniewoehner.de>
+Date: 2018-09-29 19:01:01 +0200
+
+ backend/avision: fix thread cancellation
+
+ sigprocmask does not work for threads but only for forked processes.
+ Even though a thread-safe version, pthread_sigmask, we do not use it
+ since using singals with threads is a bad practice. Instead implement
+ pthread's own cancellation method. Because sane_read blocks when
+ reader_process is terminated, read_fds is closed and invalidated to
+ make sane_read abort read and return gracefully.
+
+commit 6fe58ec210c418b674af42c9c6e752f66eaed2f8
+Merge: 953bea63bb1b 67cb40d0f5fa
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-07 05:14:11 +0000
+
+ Merge branch '254-remove-sane-standard-documentation' into 'master'
+
+ Resolve "Remove SANE Standard documentation"
+
+ Closes #254
+
+ See merge request sane-project/backends!350
+
+commit 67cb40d0f5fab9c58a4486b915b3a19fada3e684
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-07 13:58:27 +0900
+
+ NEWS: Document SANE Standard removal
+
+commit 11d59a6d75b930cd40f2e65d13d7b78783553946
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-05 21:20:38 +0900
+
+ doc/.gitignore: Remove SANE Standard related files and patterns
+
+commit 599186fdb23ddaf24f1eaf573660e5668fbd62fc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-05 21:18:49 +0900
+
+ kodakaio: Remove reference to removed --without-api-spec option
+
+commit d4d5d76e83aaf1f841bb41122ea040bce2591d46
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-05 21:14:34 +0900
+
+ Update references to the SANE standard
+
+ The authors have been added to SANE standard itself, pointers to the
+ standard now point to the published version and/or the project that
+ isnow used for its maintenance as appropriate. References to input
+ files and installation locations have been removed.
+
+commit 2db06a272e0c455f6764e18ed090aa65b5640c6e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-02 20:19:07 +0900
+
+ Remove SANE Standard build support
+
+commit 73db94b706aaff99734965f0bf3822109ff2e96b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-02 20:03:37 +0900
+
+ Delete SANE Standard input files from the repository
+
+commit 953bea63bb1b0d66d8c660ef8303c7ee7e9bc596
+Merge: 0a5f2f98ffed 2739969661e6
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-07 04:36:08 +0000
+
+ Merge branch 'escl-fix-parsing-location' into 'master'
+
+ Fix error parsing Location job.
+
+ See merge request sane-project/backends!349
+
+commit 2739969661e64484465a175f087b6d2d306d51d2
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-03-06 10:58:31 +0100
+
+ Fix error parsing Location job.
+
+commit 0a5f2f98ffed60e2762ad2064190a47d33cd7993
+Merge: 5da64adadff6 a34382c67b2e
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-03-06 17:19:44 +0000
+
+ Merge branch '233-scanimage-mods' into 'master'
+
+ Resolve "Regression tests: HP Scanjet 5400C" - scanimage
+
+ See merge request sane-project/backends!345
+
+commit a34382c67b2e73a9ad466b4c337c935d2ade7ab5
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-05 09:19:53 -0800
+
+ hp5400: some small corrections to button descriptions.
+
+commit 180ecf7b414ab229dc3d17b657a4e1e9f759b578
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-05 09:18:20 -0800
+
+ scanimage: revert previous range change.
+
+ It is not settled that this change is favourable and is probably out of scope for this issue.
+ I will leave it for the moment.
+
+commit dd078cd17df04f3075962ee3b061529f44ffecb5
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-05 08:58:54 -0800
+
+ hp5400: Added support for all buttons.
+
+ Support to read copy counter display to be done shortly.
+
+commit 4f6b7665a8815e196e004e18e3711c562b22e934
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-03-03 09:56:39 -0800
+
+ hp5400: small enhancement from review to reduce code and increase clarity.
+
+commit 4948130f7c8cae85d2073f5f1be40f709ce2dae9
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-01 23:31:23 -0800
+
+ scanimage: various small corrections and little changes to enhance clarity.
+
+commit 2868e9e346356743927259f6c50c6524e99287c9
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-01 23:30:03 -0800
+
+ hp5400: corrected source for default values.
+
+ Just correcting a mistake from the previous check in.
+ Also substituted value variable for clarity.
+
+commit 385543519b1d8e3971bb97641ff878d80a19bdc8
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-03-01 22:53:48 -0800
+
+ scanimage,hp5400: added option checking for hp5400 and rationalised scanimage help
+
+ h5400 now checks validity of -l, -t, -x and -y and auto selects a supported resolution.
+ scanimage now shows the full range for -x and -y despite other selections.
+
+commit 5da64adadff6f28452384de1ae545b668982fe46
+Merge: f24001e46eaa acfab5b7022a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-03-03 10:00:17 +0000
+
+ Merge branch 'escl-load-conf-segfault' into 'master'
+
+ Reshaping the loading of the device configuration from escl.conf.
+
+ See merge request sane-project/backends!340
+
+commit acfab5b7022a3d1813aeefc9273e6221a0a32d95
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-01 14:54:00 +0100
+
+ renaming the function with a more descriptive name.
+
+commit d572db20444376d5005486a7d3e13f78a6ca34d7
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-01 14:48:08 +0100
+
+ code readability.
+
+commit 8870081e5731644d54d24e2a848a5894695ac9b9
+Merge: 5503bf8e676a d4aa676f7296
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-03-01 14:44:57 +0100
+
+ Merge remote-tracking branch 'origin/master' into escl-load-conf-segfault
+
+commit 5503bf8e676a062922b7b939e8a1370521ac4649
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-02-21 22:50:23 +0100
+
+ Fix the 0x0 geometry problem.
+
+commit c23cc87e526e821dac19f88c67529a518d895f8d
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-02-20 09:25:42 +0100
+
+ Reshaping the loading of the device configuration from escl.conf.
+
+commit f24001e46eaa9c3dba39f1003371012907307a80
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-02 16:14:42 +0100
+
+ pixma: backend version 0.27.2
+
+commit 3c0f8189ddf29c539a4e2b5153be4057e9a7b737
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-03-02 16:13:46 +0100
+
+ pixma: fix device define for Canon i-SENSYS MF110/910 Series
+
+commit d4aa676f729623e5fce6dc98f0096edafad2dd95
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-02-28 15:36:35 +0100
+
+ INSTALL.linux: add missing development package
+
+commit dd59aea71b0a0c696dd139e2d7835501d05584c1
+Merge: 993a79b594a5 93a0971576da
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-02-25 18:20:41 +0000
+
+ Merge branch '233-regression-tests-hp-scanjet-5400c' into 'master'
+
+ Resolve "Regression tests: HP Scanjet 5400C - scan defaults"
+
+ See merge request sane-project/backends!321
+
+commit 93a0971576da97aaaf7c62f6ad3c70e9e1ad94c9
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-02-01 11:48:28 -0800
+
+ hp5400: Change defaults for -x, -y, -l, -t for full page scan.
+
+ Official doc says that the max length is 297 not 300 (which scans a bit of the plastic case at the bottom)
+
+commit 993a79b594a51991e2e00fed8f25b629429504fb
+Merge: 0d0c9f76b432 d8f09656b237
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 14:36:17 +0000
+
+ Merge branch 'genesys-duplication' into 'master'
+
+ genesys: Reduce code duplication
+
+ See merge request sane-project/backends!344
+
+commit d8f09656b23756e7a6dccb35216c23a982bcecde
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 11:02:57 +0200
+
+ genesys: Deduplicate strip searching functionality
+
+commit 5854246e88b053a7a77ead87491f5e5e88df0fec
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 11:02:56 +0200
+
+ genesys: Remove duplicate way to retrieve register dpihw
+
+commit 01bd9b3cb227763f4096fb0f660b1a40e3ada118
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 11:02:55 +0200
+
+ genesys: Use register_dpihw_override to override dpihw
+
+commit 4da92aaa507e81e90675ad6a0a45d59c71498e38
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 11:02:54 +0200
+
+ genesys: Reuse scanner_clear_scan_and_feed_counts()
+
+commit 8735e965ee34acbb72129f4d8bed74c18ed996c9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 11:02:53 +0200
+
+ genesys: Reduce duplication in init_regs_for_scan()
+
+commit e0d7d74cdd60fe4604b14cb1f32cb5a313bdc24a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 11:02:52 +0200
+
+ genesys: Inline sanei_gl841_repark_head()
+
+commit 0d0c9f76b4326b09cf91641f3a2c891d68d434a1
+Merge: 881b17c65f3a 793703c93e29
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 14:18:04 +0000
+
+ Merge branch 'genesys-remove-search-start' into 'master'
+
+ genesys: Remove start search functionality
+
+ See merge request sane-project/backends!342
+
+commit 793703c93e29f672c97e1a6e8b32bae9eea06f86
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 10:28:19 +0200
+
+ genesys: Update scan geometry on ScanJet 2300
+
+commit 6653ec0ae65eda268033d40287f6f7e0084f1c8b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 10:28:18 +0200
+
+ genesys: Remove support for shading calibration without moving
+
+commit 2cf05553c017e6ddef48fbd292d7a63ed927ed77
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 10:28:17 +0200
+
+ genesys: Remove no longer used code related to start position search
+
+commit 5f8129b2d006a8ea9e7aa39da5b807bea8b25639
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 10:28:16 +0200
+
+ genesys: Disable SEARCH_START on gl646 scanners
+
+commit 511969ded07d8f6e55fd20a13cc3c296422215b0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 10:28:15 +0200
+
+ genesys: Remove dead code on gl841
+
+commit 881b17c65f3ab28f0203edba358c9b03b088eed5
+Merge: fff74519f665 37297fdad3aa
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 14:10:46 +0000
+
+ Merge branch 'genesys-sensor-width' into 'master'
+
+ genesys: Define sensor width in mm
+
+ See merge request sane-project/backends!343
+
+commit 37297fdad3aa5746bd9bfabe79a2934ae9e5e397
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 10:48:27 +0200
+
+ genesys: Simplify definitions of x_size_calib_mm
+
+commit 9d7aa61544a749d76c8435f8b8f68165416600bd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-22 10:48:26 +0200
+
+ genesys: Define the width of the sensor in mm instead of pixels
+
+commit fff74519f665b9da129e21d316607c51d7f9d506
+Merge: 50f02fc3f261 94ab4e2891e2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-21 21:14:42 +0000
+
+ Merge branch 'genesys-canon-4400f' into 'master'
+
+ Fix flatbed scans on Canon 4400F
+
+ See merge request sane-project/backends!341
+
+commit 94ab4e2891e24c069cdfb68b7402f27d68da49b1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-21 22:40:34 +0200
+
+ genesys: Fix shading calibration start position on 4400F
+
+commit fa9f5370b2c2babfd63e8442ecff0f567053898f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-21 22:40:15 +0200
+
+ genesys: Turn off offset calibration on 4400F
+
+commit 50f02fc3f261ea582ed599cc5124c85cae2ae4c2
+Merge: 494aa15141d5 4c395182be62
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 23:05:26 +0000
+
+ Merge branch 'genesys-remove-unused-code' into 'master'
+
+ genesys: Remove unused code
+
+ See merge request sane-project/backends!338
+
+commit 4c395182be6214899b57991ef7b5c3c5081f99c9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-17 00:49:14 +0200
+
+ genesys: Remove no longer used coarse calibration ced path
+
+commit 9e3bf1e1e26ed466071055809058379506e902ea
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-17 00:49:13 +0200
+
+ genesys: Remove OFFSET_CALIBRATION as it's used on all scanners
+
+commit 494aa15141d52b526839453fa3b99af94caf33d4
+Merge: 00d528b28cbf fff395928144
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 22:21:05 +0000
+
+ Merge branch 'genesys-calibration-area-config' into 'master'
+
+ genesys: Improve calibration area configuration
+
+ See merge request sane-project/backends!337
+
+commit fff3959281448a6cd788340904d9d6fdefeb9f71
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:19 +0200
+
+ genesys: Increase low-brightness gain threshold
+
+commit 88d9c086456c76290d6c9b696016a6c6be659e3a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:18 +0200
+
+ genesys: Use scanner_move() on gl841
+
+commit 4261549e2d4a0ddee0d7e48a51c7b67a02736725
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:17 +0200
+
+ genesys: Use separate settings for dark-white calibration area geometry
+
+commit aaf8a2fd49bd1afd79caa20e6d26484b8c2331a8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:16 +0200
+
+ genesys: Simplify model table by not definition optional fields
+
+commit 4a11453b06e7c17733db0521097740d4c1ce56bd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:15 +0200
+
+ genesys: Use matching xdpi and ydpi when calibrating shading on gl841
+
+commit 300bd3e645e6d2cb5648605dadc68d68262aca5a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:14 +0200
+
+ genesys: Fix incorrect calibration position due to rounding on gl841
+
+commit 63adf8eb803afa8b061ba159977919295894073f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:13 +0200
+
+ genesys: Fix geometry of calibration strip on LiDE 60
+
+commit 1e817987aa01ed2a427bc75b8bfee5d8af81f10a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:12 +0200
+
+ genesys: Fix geometry of calibration strip on LiDE 50
+
+commit dcd5982de1273f3be5d7425634bd25ecd0e2c3c6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:11 +0200
+
+ genesys: Improve LiDE 200 motor tables to fix lock-ups
+
+commit 38b921e844c2d7c6d92d167662fe57696fe2ca0c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:10 +0200
+
+ genesys: Improve LiDE 100 motor tables to fix lock-ups
+
+commit 55000d82ac9f7e22a04d200742ae595ea45f6787
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:09 +0200
+
+ genesys: Simplify shading line calculation by defining distance in mm
+
+commit 1a55cc99e4bc064544513d7fd5ca95a6a93ce9be
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:46:08 +0200
+
+ genesys: Don't ignore stagger or color offsets when acquiring calib data
+
+commit 00d528b28cbf831a41006117a4f4d6f231d5cd29
+Merge: 1fa3086cab4c 3f313376a7bd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 22:00:12 +0000
+
+ Merge branch 'genesys-misc-fixes' into 'master'
+
+ genesys: Miscellaneous fixes and improvements
+
+ See merge request sane-project/backends!336
+
+commit 3f313376a7bda879e86923440791f524d8e57606
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:30 +0200
+
+ genesys: Remove unnecessary register write during init on gl843
+
+commit b70b305d27e54e30ed806dba6af5942cea12bf35
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:29 +0200
+
+ genesys: Use fast motor tables on all gl843 models
+
+commit 2a3d5150cb9e207cad8ad201bd2555179091381e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:28 +0200
+
+ genesys: Simplify handling of fe register writes on gl843
+
+commit 5b9aad649e43d572a98be01229adbdc5c968e289
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:27 +0200
+
+ genesys: Stop scanner after moving head on gl843
+
+commit 498b52fe98847e34fcf59c65b11e85c8a719a6fe
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:26 +0200
+
+ genesys: Use same buffer and gamma write method on all chipsets
+
+commit aca291906c08d649f1ba9ef4502405e97fe3af46
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:25 +0200
+
+ genesys: Remove unused debug code
+
+commit dcfa45c5cdca7b18a929b8a5f00ce952f278317b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:24 +0200
+
+ genesys: Move gamma address reset to scanner interface on gl843
+
+commit 9eb13d5a10b7a317b7f90512dc02c9958643fa12
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:23 +0200
+
+ genesys: Remove reads from registers that are immediately overwritten
+
+commit 7619e95eaef2fc3c3a35a44c9319ab2ee61d9264
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:22 +0200
+
+ genesys: Cleanup progress message setup during calibration
+
+commit 537569926076537b5e02a91395f31c3027230033
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:21 +0200
+
+ genesys: Use same method to clear scan and feed counts
+
+commit de7375c7bb0961c642f020704815f502ceea3573
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:20 +0200
+
+ genesys: Remove legacy buffer handling code
+
+commit 000b28dd301e8a37874bdcace39b24609cf31ce0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:19 +0200
+
+ genesys: Only ensure full exposure value is nonzero, not each byte
+
+commit ddd72058b65f3412c03abe4d8db40921155058bb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:18 +0200
+
+ genesys: Reuse sanei_genesys_fixup_exposure()
+
+commit b2d378d413f6f481818054af9670acf47853e390
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:17 +0200
+
+ genesys: Make sure we don't set exposure to zero
+
+commit 054a73c02c4372561604b88a7a9df3a94ed1b50d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:16 +0200
+
+ genesys: Fix calculation of secondary head position on gl843
+
+commit b8fbdd346adda536d807e735d3b21c600b8d7a42
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:15 +0200
+
+ genesys: Fix incorrect register definition on Canon 8600F
+
+commit 51b09eec5c5f9e308b129215efb324ad14d79fb6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:14 +0200
+
+ genesys: Don't set powersaving when setting cache expiration time
+
+commit 9bb7ed64b6eca1417cfd42ebce10eab647b82b8c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:13 +0200
+
+ genesys: Fix initialization of shading data when scanning in gray mode
+
+commit 6ab142155c4ed755355e8a086806b8b7419dea7a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:12 +0200
+
+ genesys: Correctly shutdown lamp on OpticFilm 7200i
+
+commit b78ea2913087d37f477dee78014fc533bd9b9b92
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:11 +0200
+
+ genesys: Don't try to turn off XPA lamp when shutting down regular lamp
+
+commit 2b584095ad8edb962b03502ee6615826579b236f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:10 +0200
+
+ genesys: Remove no longer needed head movement workaround for LiDE 210
+
+commit 883114f722441c310450eb9ea3651a76499f03f0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:09 +0200
+
+ genesys: Use similar scan session for head movements
+
+commit b54d12bc4daed7d5f8617aead4c3ed78ff71aff8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-16 10:41:08 +0200
+
+ genesys: Define SetupParams::startx in terms of xres
+
+commit 1fa3086cab4c9a1df1737de527b3f1726e4697d0
+Merge: d72e07c6714c 2428efd6af75
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-15 15:49:17 +0000
+
+ Merge branch 'genesys-canon-4400f' into 'master'
+
+ genesys: Implement transparency support for Canon 4400F
+
+ See merge request sane-project/backends!335
+
+commit 2428efd6af7586358809a5d9704fda32687c9396
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-15 14:12:44 +0200
+
+ genesys: Fix host-side calibration when scan start position is not zero
+
+commit 6e7fc639f5b05899928966eee722976addf6266c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-15 14:12:43 +0200
+
+ genesys: Add initial support for transparency on 4400F
+
+commit aec9d7484532f1db374313b7d8048a4ad6513f45
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-15 14:12:42 +0200
+
+ genesys: Improve 4400F motor tables
+
+commit 207f67e30350621ed3d36a6dbc5c7e90e9f5fd41
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-15 14:12:41 +0200
+
+ genesys: Use fast tables on 4400F
+
+commit a1e292b8e3069a2eca68bcba11e39d45053eed13
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-15 14:12:40 +0200
+
+ genesys: Reflow sensor tables to take less space
+
+commit b2ebbba41a8455d0237c42fe34b30e5447f5e18f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-15 14:12:39 +0200
+
+ genesys: Move host-side calibration setting to the sensor
+
+commit d72e07c6714c8648f995ea67c413eef13d87a4d4
+Merge: 60dc64f8f861 294db2a6166e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-14 18:16:23 +0000
+
+ Merge branch 'genesys-host-side-calibration' into 'master'
+
+ genesys: Fix host side calibration
+
+ See merge request sane-project/backends!334
+
+commit 294db2a6166e096eca2bb979e175fae013986f70
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-10 06:28:36 +0200
+
+ genesys: Fix host-side calibration when calibration data is shifted
+
+commit 7f454b3e0eb683e815ed28a391f55307e74715a9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-10 06:28:35 +0200
+
+ genesys: Observe DISABLE_SHADING flag during host-side calibration
+
+commit 60dc64f8f861ec400f2bb816a0df6b753a9dde06
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-02-13 18:41:18 +0100
+
+ pixma: backend version 0.27.1
+
+commit 7f2f54bddce0e870434e6732dd348fb6ec310869
+Merge: 06cd16a0ea1d c3d58edb08c8
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-02-13 18:28:14 +0100
+
+ Merge branch '242-canon-mb-5150'
+
+ Closes #242
+
+commit c3d58edb08c860dc64e398ff6f921d66fa25e67b
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-02-13 18:27:04 +0100
+
+ pixma: Canon MAXIFY MB5100 Series sends ADF scans as JPEG image
+
+commit 06cd16a0ea1de45aa7055cb60e9ff650792a65ac
+Merge: 36f068a0ced4 f650f470b260
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-12 11:27:41 +0000
+
+ Merge branch 'escl-crop-fix' into 'master'
+
+ Fix convert size.
+
+ See merge request sane-project/backends!332
+
+commit f650f470b260d129a2ac0449f077bf900847da51
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-02-12 12:12:15 +0100
+
+ Replacing roundl by round.
+
+commit 87ff6c494a4e4ef25758b1bee370d14be8ddb2e6
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-02-12 11:51:02 +0100
+
+ Fix convert size.
+
+commit 36f068a0ced483d78e9a59d0c8c27226e6782eb2
+Merge: 3508f3208fc7 4466d5192497
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-11 07:38:28 +0000
+
+ Merge branch 'escl-page-crop' into 'master'
+
+ Escl page crop
+
+ Closes #230
+
+ See merge request sane-project/backends!316
+
+commit 4466d51924975c3f34f2fee5f02419db24d63d5a
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-02-11 08:22:43 +0100
+
+ Fixed variable name.
+
+commit 23cd9f5d6104c22cbd254445618bc627f6e16ba3
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-11 01:45:11 +0000
+
+ Apply suggestion to backend/escl/escl_jpeg.c
+
+commit dd4fb84de81bcfe0caf570958ee1d04ee63484ab
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-11 01:45:08 +0000
+
+ Apply suggestion to backend/escl/escl.c
+
+commit a771be0c6a1f11a1263f466be2ca4fb2749dc9a2
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-02-10 08:45:38 +0000
+
+ Apply suggestion to backend/escl/escl_png.c
+
+commit bae9f0a3d3bc83928e95e0cf5abb7c63b9552e75
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-02-10 08:45:21 +0000
+
+ Apply suggestion to backend/escl/escl.h
+
+commit c3adeed4c46b30ce1f8185ee600ebb7b68b29d0f
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-02-09 09:36:16 +0100
+
+ Fix style.
+
+commit 6a9a0beee89e80bb5fb13cfc7177354a16c061f2
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-02-09 09:30:43 +0100
+
+ Clarification and factoring of the code
+
+commit af6f6d46559efc0ebdc017d485573449a5d6347b
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-02-08 22:36:49 +0100
+
+ Clarification of variable names.
+
+commit 7ea6af06243c307660138c3e01fde85dd7d32297
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-02-08 22:16:16 +0100
+
+ Replacing unit conversion functions with macros.
+
+commit 0ca9390279415d9da084a1bae3e39d96f84c4f6f
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-31 18:32:32 +0100
+
+ Fix style.
+
+commit 5298b0e0186eb74f16996fa962271f0b6c91e54d
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-31 18:28:04 +0100
+
+ Setting up the cut-out of the received image.
+
+commit d42521dfd4875f54b089b60de2866146a03d0a9b
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-31 17:42:52 +0100
+
+ Geometry correction and use of the milimeter as a unit of measurement.
+
+commit 8c15724b432d6b60c30de04cf9ad8fa825f3b7da
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-31 17:19:42 +0100
+
+ Added milimeter-to-pixel and pixel-to-milimeter conversion function.
+
+commit 58df3795ee7f6504b65e7fac35c5fe5a6d53e1ec
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-27 20:47:56 +0100
+
+ Fix geometry.
+
+commit 3508f3208fc7597c1dbd49f0e610336bcb3eb1bb
+Merge: 336cbdfd4ca4 e1934720c687
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-10 07:42:52 +0000
+
+ Merge branch 'fix_genesys_bigendian' into 'master'
+
+ genesys: fix bigendian build
+
+ Closes #238
+
+ See merge request sane-project/backends!329
+
+commit e1934720c687ed8c6125c75ac658f55b4e1513ce
+Author: Luiz Angelo Daros de Luca <luizluca@gmail.com>
+Date: 2020-02-02 21:19:15 -0300
+
+ genesys: fix bigendian build
+
+ Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
+
+commit 336cbdfd4ca408ef0d8935608a044cad64696c51
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2020-02-07 21:06:50 -0500
+
+ fujitsu backend v136
+
+ - add support for fi-800R
+ - add support for card scanning slot (Return Path)
+ - fix bug with reading hardware sensors on first invocation
+
+commit 03ca64a88598d5e286a5557907762fcb51886bd8
+Merge: f7c01360cbb0 7415a9f5c97a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-06 12:14:13 +0000
+
+ Merge branch '239-1-0-29-common_libs-in-libsane-la-dependencies-causes-potential-make-error' into 'master'
+
+ Really remove libxml2 linker/loader flags from dependencies. Re #239
+
+ Closes #239
+
+ See merge request sane-project/backends!331
+
+commit 7415a9f5c97acc655dae357dbffe7ff6b69ef82d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-06 20:56:21 +0900
+
+ Really remove libxml2 linker/loader flags from dependencies. Re #239
+
+commit f7c01360cbb04d5e704c1c7a217dddd312e61919
+Merge: 20be9af3d7f3 17d760a5f848
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-05 12:48:20 +0000
+
+ Merge branch '239-1-0-29-common_libs-in-libsane-la-dependencies-causes-potential-make-error' into 'master'
+
+ Remove libxml2 linker/loader flags from dependencies. Re #239
+
+ Closes #239
+
+ See merge request sane-project/backends!330
+
+commit 17d760a5f848f4034fbaa19657567fae52f8c150
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-05 21:30:11 +0900
+
+ Remove libxml2 linker/loader flags from dependencies. Re #239
+
+commit 20be9af3d7f3a6b0ca577ff6701b51f1f8accdd4
+Merge: afa1c5440880 dc082d9066d1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 23:16:29 +0000
+
+ Merge branch 'genesys-cleanup-calibration-regs' into 'master'
+
+ genesys: Cleanup data used for calibration
+
+ See merge request sane-project/backends!328
+
+commit dc082d9066d1142ae0cdd69d1cd9e495a5e9d9c5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:42:06 +0200
+
+ genesys: Add a note about calibration size calculation
+
+commit 9a142d6acc3de2bf160e7cde44046ae49d283020
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:42:05 +0200
+
+ genesys: Remove uses of calib_total_bytes_to_read
+
+commit 328f39e39e6b40d0bcdaa28371ebb13b5113dcea
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:42:04 +0200
+
+ genesys: Remove uses of calib_lines
+
+commit 53d51a6537c1dd4005a1596d08e0de7b1a5b7746
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:42:03 +0200
+
+ genesys: Fix wrong line count computation on gl646
+
+ It actually does not matter, because we overwrite LINCNT below anyway
+ and don't use any information affected by this variable when computing
+ how much data to retrieve.
+
+commit 26eec0ba574ef66f6283d3f0a1d82ff4f1cc9fd1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:42:02 +0200
+
+ genesys: Remove uses of calib_channels
+
+commit 9ddc64826c014638cd3422441c0e70431bf90fa8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:42:01 +0200
+
+ genesys: Remove uses of calib_resolution
+
+commit 10fb42cd68eddd928a38d576258135db89ca08e8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:42:00 +0200
+
+ genesys: Use calib_session to retrieve pixel counts
+
+commit 87b27136289ecf117d67475d1163ae294ce2bd28
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:41:59 +0200
+
+ genesys: Implement serialization of ScanSession
+
+commit fe02dc36d8d231d9764693284626862d5460ff93
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:41:58 +0200
+
+ genesys: Implement comparison of ScanSession
+
+commit 9b1fe59c2a7efa5520b379714c0483757f65a30e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:41:57 +0200
+
+ genesys: Set calib_session on all chipsets
+
+commit 3b27241e0740959bdbebab2399ff47685801b617
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:41:56 +0200
+
+ genesys: Remove no longer needed conversions to single precision float
+
+commit 325aba25f1f7b30bc3f4a05e78b914b778851c39
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:41:55 +0200
+
+ genesys: Use float to store tl_x and tl_y scan settings
+
+commit 0a49fa10ee1fa490432b016cabbf8f428aaeff1d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:41:54 +0200
+
+ genesys: Extract register initialization out of init_regs_for_shading()
+
+commit c1791e6c839a61abc7d3ef803872f81440b408ef
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:41:53 +0200
+
+ genesys: Pass the register set to modify to init_regs_for_scan()
+
+commit 5fb5da4f788630ae44ab91741c137b9c93307ff7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:41:52 +0200
+
+ genesys: Remove duplicate way to check for transparency support
+
+commit 4cfc150bdcb8d0206ae822622ae00f550c72f9e5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-03 00:41:51 +0200
+
+ genesys: Add a way to check whether a model supports scan method
+
+commit afa1c54408806480893643f1a85b777cd3232ba8
+Merge: 34c15b47d9fd cce5e21829b1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 17:01:26 +0000
+
+ Merge branch 'genesys-cleanup-calibration-regs' into 'master'
+
+ genesys: Cleanup register data that is used during calibration
+
+ See merge request sane-project/backends!327
+
+commit cce5e21829b1efbfdc22c2357ec9bf4927620c77
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:32 +0200
+
+ genesys: Remove several unnecessary initializations of dev->initial_regs
+
+commit 32041bc7fedb64a031e3e75c01c9edd9aa94fda4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:31 +0200
+
+ genesys: Rename calib_reg to initial_regs
+
+commit 16e8ca35119963846dda94ae0cf13636aa337a60
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:30 +0200
+
+ genesys: Don't modify calib_reg when calibrating
+
+commit 86fe2f5f6d32bf78a9242ecae5733dcd9e83c600
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:29 +0200
+
+ genesys: Move modification of calib_reg out of shading reg init on gl646
+
+commit 87473910cf85c638b9efafd027990ec956d3d0bb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:28 +0200
+
+ genesys: Use regular registers when computing what coefficient to send
+
+commit 8e4c332ea69fdb674ebf371f4fe274645de2d6ca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:27 +0200
+
+ genesys: Pass registers from callers to shading calibration
+
+commit 2a3ae40d8ddc4003508034a10a32f8de0925fd1f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:26 +0200
+
+ genesys: Pass registers from callers to dark-white shading calibration
+
+commit 25f097b44597c920535bb333259acdd231e96748
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:25 +0200
+
+ genesys: Pass registers from callers in coarse calibration
+
+commit d80db65c5864f5eccc8baecd0780c507b23df7c7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:24 +0200
+
+ genesys: Move writing to registers to coarse calibration functions
+
+commit b1b57026ddaf8a04a68590c6f745cad1463d21c5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:23 +0200
+
+ genesys: Move writing to registers to calibration functions
+
+commit dff52ad7136c5d5f1e83f888d660820fbff85b94
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:22 +0200
+
+ genesys: Don't write registers in init_regs_for_warmup()
+
+commit 55e32001583ddee2da0a911dfe2ecd1a593fcc91
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:21 +0200
+
+ genesys: Don't write registers in init_regs_for_coarse_calibration()
+
+commit bdc671b58be6a74e944d9c88119f25f3c381682a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 18:45:20 +0200
+
+ genesys: Don't perform register writes in init_regs_for_shading()
+
+commit 34c15b47d9fd839a5334665a869bc0944a073534
+Merge: 03d50b5e64fd 9fc3b38a9b0e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 13:38:19 +0000
+
+ Merge branch 'genesys-use-float-for-fixed' into 'master'
+
+ genesys: Use float precision for data that was previously saved in fixed format
+
+ See merge request sane-project/backends!326
+
+commit 9fc3b38a9b0e92e5e74bd3b49c292f231c9e14c3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 15:23:21 +0200
+
+ genesys: Use fixed float utilities instead of SANE_{FIX,UNFIX}
+
+commit 7ee775e983911577b74a64db40809933284e44f8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 15:23:20 +0200
+
+ genesys: Remove the FixedFloat class
+
+commit 62c6959df4b6834e98a86b8c7085ffd0b7081ef6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 15:23:19 +0200
+
+ genesys: Add utilities for fixed floats
+
+commit 03d50b5e64fd781540ac259649d312bd179e8cae
+Merge: f913ed58b688 e59401ed6b92
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 12:25:16 +0000
+
+ Merge branch 'genesys-model-flag-enum' into 'master'
+
+ genesys: Move model flags to separate enum
+
+ See merge request sane-project/backends!325
+
+commit e59401ed6b923ebb16123d3da5cd4f696582bdd1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 14:08:52 +0200
+
+ genesys: Move model flags to a separate enum
+
+commit de10ace2e6b0d635ed56b9213dfe17586835576a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 14:08:51 +0200
+
+ genesys: Remove invalid usage of GENESYS_HAS_NO_BUTTONS
+
+commit 1c3d1e25ecc763e011819a72c3370c089d5f8010
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 14:08:50 +0200
+
+ genesys: Remove unused model flags
+
+commit f913ed58b6882aabbf87f1893b74cf90b26029a2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-02 21:11:31 +0900
+
+ escl: Remove :new marker from backend's description file
+
+commit 5e5cdad7dd611faf39d50301bd614fa68e1bc4c9
+Merge: 9e9bbb5a802c e52a5bf71979
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-02-02 21:06:46 +0900
+
+ Merge branch 'release/1.0.29'
+
+commit 9e9bbb5a802ca2a078e4d84c50dd7414e85138b8
+Merge: 3d0a626944f3 fee5b7e04f54
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 11:29:04 +0000
+
+ Merge branch 'genesys-improve-debug' into 'master'
+
+ genesys: Improve debug output slightly
+
+ See merge request sane-project/backends!324
+
+commit fee5b7e04f54b650a9e774ccbb84f2192e46bc4b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 13:11:49 +0200
+
+ genesys: Condense SetupParams debug dump output
+
+commit 9d7f7abdcd009fcc108a4e7523461cb62a9cb19d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 13:11:48 +0200
+
+ genesys: Remove extraneous debugging information
+
+commit 3d0a626944f3b818ef055bf5c4b0779eff19c420
+Merge: 12e113ab5225 9d1788cf5d82
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 11:25:16 +0000
+
+ Merge branch 'genesys-fix-active-area-calib' into 'master'
+
+ genesys: Fix issues in active area calibration
+
+ See merge request sane-project/backends!323
+
+commit 9d1788cf5d821b3d05cbf2f060648381c76788ee
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 13:08:50 +0200
+
+ genesys: Fix loss of precision in during active area offset calibration
+
+commit 91d9d8b2dcad6171ac5f258181b4c6f95696523d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 13:08:49 +0200
+
+ genesys: Fix incorrect resolution being used in active area calibration
+
+commit 6bbdb7afc8a24dbab33189549fb5c8a9c5cc2b53
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-02 13:08:48 +0200
+
+ genesys: Extract function to enable active area shading
+
+commit 12e113ab52254ebbf86eab4902df798e67545967
+Merge: 07e3d5d4d6f6 6e2e885ec564
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 21:43:09 +0000
+
+ Merge branch 'genesys-motor-fixes' into 'master'
+
+ genesys: Motor table fixes
+
+ See merge request sane-project/backends!322
+
+commit 6e2e885ec564ada7cb5295d9e7bbafe1a88ed4f5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 23:28:24 +0200
+
+ genesys: Use same step type in motor tables on 8600F
+
+commit 06cee81dbe7d65f9a399aef19a0d92bb0d51b11c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 23:28:23 +0200
+
+ genesys: Fix incorrect selection of step type for fast table on gl843
+
+commit 07e3d5d4d6f69cf63209bdb705253d42fea1e4b9
+Merge: 50788b382739 ac5e086eb7c7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 15:13:57 +0000
+
+ Merge branch 'genesys-improve-motor-tables' into 'master'
+
+ genesys: Improve motor tables on 8400F
+
+ See merge request sane-project/backends!320
+
+commit ac5e086eb7c73954f05bfc5d781d9def6bdc06f1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 16:57:12 +0200
+
+ genesys: Improve motor tables on 8400F
+
+commit 50788b382739eb0403b5c7aea11fa265ef896c36
+Merge: 6f9a3cfa2cde d19e48d5ab7d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 12:47:38 +0000
+
+ Merge branch 'genesys-improve-motor-tables' into 'master'
+
+ genesys: Improve motor tables
+
+ See merge request sane-project/backends!319
+
+commit d19e48d5ab7df65aaa829ebb1fd4c103d874072f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 14:23:04 +0200
+
+ genesys: Improve motor tables on OpticFilm 7500i
+
+commit f3f0143500eb1ed9da5d08697a552aaa401f01e4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 14:23:03 +0200
+
+ genesys: Improve motor tables on OpticFilm 7300
+
+commit 8b3b85c160a762b6f05ed5a4c75e5534f740502f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 14:23:02 +0200
+
+ genesys: Improve motor tables on OpticFilm 7200i
+
+commit 0b75ffdf367695bc28cbf2e474adf23d0973f05c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 14:23:01 +0200
+
+ genesys: Improve motor tables on 8400F
+
+commit 6d15a0da5a65a1d9729b8a992e58831144edb256
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-02-01 14:23:00 +0200
+
+ genesys: Improve motor tables on 8600F
+
+commit 6f9a3cfa2cde00fe35c3ea99d272aa48e1d24636
+Merge: 26e3d6c1f37f a5d63baf3d19
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 22:58:52 +0000
+
+ Merge branch 'genesys-improve-motor-support' into 'master'
+
+ genesys: Improve motor support
+
+ See merge request sane-project/backends!318
+
+commit a5d63baf3d194ceac6cc882acbe127f832204a0c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 20:13:18 +0200
+
+ genesys: Implement support for fast movement curves in the motor table
+
+commit 91d5235d4b38ebde70eb43eb0a8d431c7e35a640
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 20:13:17 +0200
+
+ genesys: Make get_motor_profile* reusable for different profile sets
+
+commit 247a6b7882d03df19fa0c9b376a5b9f2a0e5e2fb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 20:13:16 +0200
+
+ genesys: Add support for per-resolution or per-method motor profiles
+
+commit 479718a6b5543c4cc15ba6b46611e830019312e0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 20:13:15 +0200
+
+ genesys: Add motor vref to motor profiles
+
+commit 002d2ff2db43291a3435ff6356baac394a4cac08
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 20:13:14 +0200
+
+ genesys: Use motor profiles from motor tables
+
+commit e5e8ea3d3f7d32fb6507d9e6171c2953eab9a9f9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 20:13:13 +0200
+
+ genesys: Add motor profile information to motors table
+
+commit 879587f303334e4fb334b8f45b297490de203482
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 20:13:12 +0200
+
+ genesys: Rename Genesys_Motor::{get_slope -> get_slope_with_step_type}
+
+commit 7dca191b14d7660545e8c37f3c0228362ccda130
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 20:13:11 +0200
+
+ genesys: Merge chip-specific motor tables into one
+
+commit 2d0fc3ce5543dc4ba36ba08c021353bcf519dc39
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 20:13:10 +0200
+
+ genesys: Don't rely on motor profile fallbacks
+
+commit 26e3d6c1f37f50a023b838d31b929b8c22a32892
+Merge: 1942c5fd32a7 0a7813177bb7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-31 22:32:04 +0000
+
+ Merge branch 'genesys-reduce-duplication' into 'master'
+
+ genesys: Reduce duplication in session setup code
+
+ See merge request sane-project/backends!317
+
+commit 0a7813177bb7ec5753900820c473591246e26523
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:30 +0200
+
+ genesys: Reduce code duplication in gl841 session setup code
+
+commit 374578abce229f742040eddedaf0ddb6870ad4ab
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:29 +0200
+
+ genesys: Reduce code duplication in gl843 session setup code
+
+commit 1942c5fd32a7623351e4f73dc7590854debe4698
+Merge: e820ed0f6cee 76726491d901
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-01-26 10:56:34 +0000
+
+ Merge branch 'escl-simple-scan' into 'master'
+
+ Displays SSL if the device uses https.
+
+ Closes #229
+
+ See merge request sane-project/backends!313
+
+commit 76726491d901ca0e789cdd52d3b95ac89821281b
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-26 10:16:06 +0100
+
+ Billing for cleaning.
+
+commit bb5b109560794296ab8c2dc46215910fa425908d
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-26 08:28:19 +0100
+
+ Fix memory leak.
+
+commit bb9c4ead76a08fb99cc64aa8d18849c00846575e
+Merge: 70ae518fc621 e820ed0f6cee
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-01-25 17:32:10 +0100
+
+ Merge remote-tracking branch 'origin/master' into escl-simple-scan
+
+commit e820ed0f6ceeb49d3064e7e0a5afd26cca14eeac
+Merge: 5747ffa9fb91 99fde7b12ee0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 13:27:10 +0000
+
+ Merge branch 'genesys-bugs' into 'master'
+
+ genesys: Fix various bugs on 8400F and 8600F
+
+ See merge request sane-project/backends!314
+
+commit 99fde7b12ee0d7c8c80f7a1aa559ba410d59a9d2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:12 +0200
+
+ genesys: Slightly tweak X TA offset on 8600F
+
+commit 0c84e1951a01a69614eaf886163ea47585f44f6c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:11 +0200
+
+ genesys: Fix incorrect X TA offset on 8600F
+
+commit 9c10d59ce81816c843d89b194bac5b852f8e9157
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:10 +0200
+
+ genesys: Fix 3200 dpi flatbed support on 8400F
+
+commit b9a4054775cd32ef294480dfc0b6f106f55b1dac
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:09 +0200
+
+ genesys: Fix sensor tables on 8400F
+
+commit 15bbc3d0b30b278a817e870bf6ee2674a8fa7726
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:08 +0200
+
+ genesys: Rewrap sensor settings for 8400F
+
+commit 0abb83ead4a146581f861bab3a2800be639f74fc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:07 +0200
+
+ genesys: Fix incorrect number of sensor pixels on 8400F
+
+commit 75b2bd6445ab75fb693902cb9b44f8ebc8a7e041
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:06 +0200
+
+ genesys: Fix incorrect calculation of X offsets on 8400F
+
+commit 8532e6319411ed6f9a72162f1686538102791386
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:05 +0200
+
+ genesys: Fix incorrect calculation of X offsets on 8600F
+
+commit 1748e625f0ccfe8f846ade83493a2973a1b3ca52
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-25 11:28:04 +0200
+
+ genesys: Fix recovery from interrupted transparency scans on 8600F
+
+commit 70ae518fc621b7fa72c27919d199cc71c6af7a18
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-23 13:02:38 +0100
+
+ Fix break build.
+
+commit a0845a83222cf867d367915f6a5a150298cd3a33
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-23 12:20:48 +0100
+
+ Verify allocation and add debug.
+
+commit 51b9883603d8196ee189a7e8c66351062fbaff11
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-01-23 08:53:19 +0100
+
+ Displays SSL if the device uses https.
+
+commit 5747ffa9fb914b88c469a7c1d6d5357f85a94577
+Author: Gerhard Jäger <gja@sysgo.com>
+Date: 2020-01-13 09:38:30 +0100
+
+ Issue#113: Fix applied (thanks David Binderman).
+
+commit 8d07515bea266994e03aedeb4f770c9bd8e1a52c
+Merge: 6be33accf284 c5f397e778b6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 19:26:35 +0000
+
+ Merge branch 'genesys-refactor-motor-handling' into 'master'
+
+ genesys: Refactor motor handling
+
+ See merge request sane-project/backends!308
+
+commit c5f397e778b6eeae3cabf202a67d3918710191f3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 10:57:11 +0200
+
+ genesys: Extract handle_motor_position_after_hove_back_home_ta()
+
+commit e8e56e33d30394db30e04d2d267e3f461b2c0021
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 10:57:10 +0200
+
+ genesys: Make XPA motor mode handling more generic
+
+commit 23f3f80e3843549174cb01e19963687eb977db95
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 10:57:09 +0200
+
+ genesys: Remove duplicate head position reset
+
+commit 645820bc4d3bf7e4e33ece892f607c2ad8db99b1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 10:57:08 +0200
+
+ genesys: Improve set_head_pos_unknown() to set status per head
+
+commit a676810f5da18f077ec533221387f0bc391ae1d1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 10:57:07 +0200
+
+ genesys: Implement function to apply settings with backup
+
+commit 05978e1c8b84d384852fd80f0e68bfe04a11a760
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 10:57:06 +0200
+
+ genesys: Move *_set_xpa_lamp_power() to common command set
+
+commit cbb3d98e838224a970a33775e8f97d0c271086fb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 10:57:05 +0200
+
+ genesys: Move *_set_xpa_motor_power() to common command set
+
+commit 3753716e04e5d339df70a444cc7891506b9f19eb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 10:57:04 +0200
+
+ genesys: Add a class to move common command set functions to
+
+commit 8b129b32ff1117bd08e8d7278376bd0411ae2d40
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 10:57:03 +0200
+
+ genesys: Simplify handling of xpa motor state on gl843
+
+commit 6be33accf284e1aca1c0f5abbd946df57a91f4ff
+Merge: 7b45c89b023d 45952fdd69b6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-12 19:16:57 +0000
+
+ Merge branch 'genesys-refactor-scanner-read' into 'master'
+
+ genesys: Refactor data reading from scanner
+
+ See merge request sane-project/backends!307
+
+commit 45952fdd69b698e2674ddb7bae375c88f8e36a0a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:29 +0200
+
+ genesys: Reduce duplication of scanner read methods on gl847
+
+commit 8bd8174cc9c030ad835f8025f80b25595b90f843
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:28 +0200
+
+ genesys: Reduce duplication of scanner read methods on gl846
+
+commit d74c4b6b6830f183413650a34c010cc08829c1f8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:27 +0200
+
+ genesys: Reduce duplication of scanner read methods on gl841
+
+commit 67d3c134a9ce465571866b7223a3fb1949c5f09f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:26 +0200
+
+ genesys: Reduce duplication of scanner read methods on gl124
+
+commit c39cb0d4b99591bf71de8c3a77d218642cdffac1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:25 +0200
+
+ genesys: Fix definition of session's output_segment_pixel_group_count
+
+commit 2269e05facaf07abeb00a5f59c3a31b4abdd9d2f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:24 +0200
+
+ genesys: Fix pipeline setup in read_unshuffled_image_from_scanner()
+
+commit 8d2081cda8eeb28eaeb04d25306b5aa4f192ec79
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:23 +0200
+
+ genesys: Deduplicate calculation of scan line count
+
+commit b5b50758f5583396a635366fcf421fb7d35469df
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:22 +0200
+
+ genesys: Remove out of date note
+
+commit eb45a1b709c9dcfbd4270ece7c628a81eb33df74
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:21 +0200
+
+ genesys: Handle segmented sensors in read_unshuffled_image_from_scanner
+
+commit 444f25b96fc0953a82c539e40dd860f44202ec2b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-01-04 12:09:20 +0200
+
+ genesys: Remove duplicate computations of line length
diff --git a/ChangeLogs/ChangeLog-1.0.32 b/ChangeLogs/ChangeLog-1.0.32
new file mode 100644
index 0000000..398d4bf
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.0.32
@@ -0,0 +1,2438 @@
+commit c1c567c49b3bc9d86a5796b7fd9b17816700f75c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-14 20:00:00 +0900
+
+ NEWS: Document changes for 1.0.32 release
+
+commit eda0a770bf52c4ae446779d8ad8af005a8a974f9
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-14 16:24:24 +0900
+
+ po: Re-sync *.po files to pick up latest source code changes
+
+ Lines number have changes due to the FSF address change.
+
+commit edcfdbc0d801547d3c1e0ab8bd62dad74295c54e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-13 20:21:45 +0900
+
+ saned: Add new -p, --port option to the manual page
+
+ This complements !549.
+
+commit 3408eef8ed04bbffd2cf601850ccee16e596e4b1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-13 20:20:14 +0900
+
+ escl.desc: Add entries for models newly supported since 1.0.31
+
+ These were mentioned in the commit logs and merge requests but missing
+ from the descriptions file.
+
+commit e0b5a7e40748490bccfe10fbc2cd2d5a469cfd90
+Merge: 102288c22eb3 9c46d6bcaccf
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-14 09:31:59 +0000
+
+ Merge branch 'disable-canoscan-4400f' into 'release/1.0.32'
+
+ genesys: Disable support for the CanoScan 4400F
+
+ See merge request sane-project/backends!592
+
+commit 9c46d6bcaccf38df870f22b5bc78ca8cc2eba692
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-14 10:46:36 +0900
+
+ genesys: Disable support for the CanoScan 4400F. Re #436
+
+commit 102288c22eb33e2becb38ff866fdb3260f58cefb
+Merge: ef8e403572d9 e3962ad18434
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-14 07:18:00 +0000
+
+ Merge branch 'add-files-to-source-tarball' into 'release/1.0.32'
+
+ Add extra documentation and utility file to the source tarball
+
+ See merge request sane-project/backends!593
+
+commit e3962ad1843432bdf11c7ac31338491407a41960
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-14 16:01:01 +0900
+
+ Add extra documentation and utility file to the source tarball
+
+ These might be useful for someone starting from one of our release or
+ snapshot source tarballs.
+
+commit ef8e403572d91cb8bac4ef63ba9cae21fc46f5dc
+Merge: 1532520fa14b 85f4ef106577
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-02-13 20:20:01 +0000
+
+ Merge branch '433-issues-in-sane-man-pages' into 'release/1.0.32'
+
+ Resolve "Issues in SANE man pages"
+
+ See merge request sane-project/backends!581
+
+commit 85f4ef10657735b0322c9f545b426b857a28b502
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-02-13 12:02:54 -0800
+
+ doc: final pass through the man pages.
+
+ Mostly just tidy up, catching pages that I missed the first time round.
+ A small number of pages were given a bit more reformat. A bit beyond
+ the remit of this merge request but not too much has been changed.
+
+commit 0eaae38d1e546ddd67b811ef81791194cf5c4687
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-02-12 18:01:30 -0800
+
+ doc: remaining man pages done.
+
+ I will quickly review them all and check in corrections.
+ I know that there are a few things that I did wrong in the first pass
+ and I will fix them up.
+
+commit 30eaec1f00f6d5edfec8f7ce79baa6fb5c0541bc
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-02-02 12:58:54 -0800
+
+ doc: additional format tweaks to man pages hpljm1005-kodakaio
+
+commit 460898b18ff0657550a06d1bdfba1a4f393441f8
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-01-31 23:19:48 -0800
+
+ doc: hp manpages tweaked.
+
+commit 6a51099e9fe313a29a92cc60bd7189e7b67a59cf
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-01-31 22:06:39 -0800
+
+ doc: some more consistency changes to format.
+
+commit 79b866619b6292da00d385fdd3c7d182a0634d0f
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-01-31 19:44:13 -0800
+
+ doc: corrections for trailing space and a batch of man pages
+
+commit cfa36aa47a7d768d7db694ed5702c70bf8448565
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-01-31 17:44:58 -0800
+
+ doc: implemented some reformatting and wording suggestions
+
+ Partly through suggestions from translators but also from canonical
+ man page references for consistency and conformity.
+
+ I have also removed some unnecessary wordiness from some of the backend
+ supporting lists which contained verbose repetition.
+
+commit 742989b65807e27bb9d6a1343e949094ddca1649
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-01-30 12:25:09 -0800
+
+ man: grammar and formatting for gamma4scanimage.man and sane.man
+
+commit ab945b1a89cb193a28ea2aa50c084c28d1be0ca0
+Merge: b90ecabf8c62 a7a8cb44d4f1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-25 11:09:24 +0000
+
+ Merge branch 'ci-bump-alpine-fedora-versions' into 'master'
+
+ CI: Bump alpine fedora versions
+
+ See merge request sane-project/backends!579
+
+commit a7a8cb44d4f1e2f31fc09825fed846ba31a2b195
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-24 21:22:34 +0900
+
+ CI: Bump Fedora from 32 to 33
+
+commit 8462b2d75ae83a6930eccfe014fded249572a774
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-24 21:22:07 +0900
+
+ CI: Bump Alpine from 3.12 to 3.13
+
+commit 1532520fa14b43972c708282efbb19b436dd4ce8
+Merge: 9ec6ec40a926 4c8ac5e0a6bd
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-12 09:52:08 +0000
+
+ Merge branch '320-incorrect-fsf-address-in-license-and-copying' into 'release/1.0.32'
+
+ Resolve "Incorrect FSF address in LICENSE and COPYING"
+
+ See merge request sane-project/backends!591
+
+commit 4c8ac5e0a6bd565a59099426aa7212eb780175d5
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-12 18:23:53 +0900
+
+ COPYING: Sync with current plain text version on the FSF site
+
+ This updates the Free Software Foundation's postal address.
+
+ It replaces references to the Library General Public License (LGPL-2)
+ with references to the GNU Lesser Public License (LGPL-2.1) as well.
+ These licenses differ slightly, the latter adds section 6b, but the
+ references are *outside* the TERMS AND CONDITIONS section. Moreover,
+ the first reference is in connection with clarifying the licensing of
+ Free Software Foundation software and the second reference is merely a
+ suggestion to use the LGPL in case you want to allow linking your code
+ with proprietary software.
+
+ In view of that, these changes in COPYING do *not* have an effect on
+ the licensing status of the SANE Backends.
+
+ Re #320.
+
+commit e79adde8b2d713448f3022632f410d4a9de0fb91
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-12 17:41:38 +0900
+
+ Use URL to refer users to copies of the GPL and LGPL
+
+ With the exception of use in three quotes as well as our inlcuded copy
+ of the GPL, all use of the Free Software Foundation's postal address
+ has been removed.
+
+ Re #320.
+
+commit 9ec6ec40a926cc78cdba7e02168c54c68a5944f9
+Merge: a21f4713da86 51a7abd1fb94
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-09 09:14:43 +0000
+
+ Merge branch 'update_uk3' into 'release/1.0.32'
+
+ Update Ukrainian translation
+
+ See merge request sane-project/backends!589
+
+commit 51a7abd1fb940c299cbad31c6da57217e5b8ef57
+Author: Yuri Chornoivan <yurchor@ukr.net>
+Date: 2021-02-08 15:33:42 +0200
+
+ Update Ukrainian translation
+
+commit a21f4713da86f355941307c91d03cc64c211d045
+Merge: 5db03a05935f ae2c4068428a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-08 13:15:43 +0000
+
+ Merge branch 'sync-po-files-with-source' into 'release/1.0.32'
+
+ I18N: Sync po/*.po files with sources slated for next release
+
+ See merge request sane-project/backends!588
+
+commit ae2c4068428a9345670b0b9902555a00bc868555
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-08 21:58:34 +0900
+
+ I18N: Sync po/*.po files with sources slated for next release
+
+commit 5db03a05935f06fe31035a08ff6cc81007d83efe
+Merge: 335edb9ed87f a83126fc2373
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 12:25:51 +0000
+
+ Merge branch '124-configure-disable-shared-errors-out-linking-scanimage' into 'release/1.0.32'
+
+ Resolve "./configure --disable-shared errors out linking scanimage"
+
+ See merge request sane-project/backends!586
+
+commit a83126fc2373e838cae4a7cc41b5ad572fcc877d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 21:06:38 +0900
+
+ Work around missing C++ symbols for static linking scenarios
+
+commit fe7b1a8f2d9e1d63ccd685263fb7a7bcf4dd642d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 19:33:11 +0900
+
+ Add missing backend dependencies for static linking. Re #124
+
+commit 4cb49c1f0819c0dffb38e63c28f6cd3dbc12adee
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 19:32:24 +0900
+
+ Disambiguate symbols for static linking scenarios. Re #124
+
+commit 335edb9ed87f4367f5aed91cb8c95830b3af752d
+Merge: 68312608d13a fea0ccca1ea8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 07:42:06 +0000
+
+ Merge branch '354-genesys-testsuite-built-even-when-backend-isnt' into 'release/1.0.32'
+
+ Build genesys testsuite only when backend is build
+
+ See merge request sane-project/backends!585
+
+commit fea0ccca1ea879ccdedcfc8feb1de82905a37d98
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 16:25:30 +0900
+
+ Build genesys testsuite only when backend is build. Re #354
+
+commit 68312608d13adcabea808f2239f52c4183dd493e
+Merge: 5ff049699846 e86771c21bb2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 06:23:25 +0000
+
+ Merge branch '248-generated-source-tar-balls-cant-be-built' into 'release/1.0.32'
+
+ Resolve "Generated source tar balls can't be built"
+
+ See merge request sane-project/backends!584
+
+commit e86771c21bb29cc7a082c96f935e2c77c45ad22d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 15:02:38 +0900
+
+ Fix ignore pattern when comparing sane-desc outputs in testsuite
+
+ The old versions used plain `git describe` output leading to versions
+ like 1.0.32-265-g5ff049. The `git-version-gen` scripts replaces the
+ first dash, `-`, with a period, `.`, for the benefit of other version
+ comparison tools and strips the `g` to save a byte. So that leads to
+ versions like 1.0.32.265-5ff049.
+
+commit bb463d642a464e11610abcfc1aa9f68b34ecf178
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 14:49:52 +0900
+
+ Make it easy to update the git-version-gen script
+
+commit c28c9843ed12f0fe2697d66c3dad724f68d0e576
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 14:46:47 +0900
+
+ Use git-version-gen to inject a version
+
+ This fixes builds from tarballs without a .git directory.
+
+ Fixes #248
+
+commit 3ca641c0185124d471e4186b77c1411d6aba280c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-07 14:44:50 +0900
+
+ autogen.sh: Fix out-of-tree invocation
+
+commit 5ff049699846dc59424aaacb76b7eafee0bddf5d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-31 19:44:18 +0900
+
+ pixma: Downcase USB product ID
+
+commit 5ae713180a335306398e2e0db0be2d26dd10778b
+Merge: 1229b5a3d1d5 7acfdead7038
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-31 08:20:48 +0000
+
+ Merge branch '122-autogen-sh-script-complains-about-obsolete-macros' into 'release/1.0.32'
+
+ Resolve "autogen.sh script complains about obsolete macro"
+
+ See merge request sane-project/backends!582
+
+commit 7acfdead7038ee8f1482f11676dac1e15f1935bb
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-31 16:51:01 +0900
+
+ Collect patches in one place and distribute them
+
+commit 129b53bbca254914b6b7d716bd63b30d0f3e2f70
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-31 16:44:49 +0900
+
+ Suppress obsolete macro warnings. Fixes #122
+
+commit 1229b5a3d1d5daf626b61da94010505f158db167
+Merge: b90ecabf8c62 7946a14cfbae
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-01-24 18:36:03 +0000
+
+ Merge branch 'ukGB_translation' into 'release/1.0.32'
+
+ Added en_GB translations.
+
+ See merge request sane-project/backends!578
+
+commit 7946a14cfbae0303562663f5acd756eef7d0c2fb
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-01-24 10:04:47 -0800
+
+ po: Added en_GB translations.
+
+ Note: also fixed a minor grammar point in the pixma backend.
+
+commit b90ecabf8c62e92bec8284559dee2bf0dd11158b
+Merge: 63d938de61c3 a0570828010e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-24 11:42:36 +0000
+
+ Merge branch 'update_uk1' into 'master'
+
+ Update Ukrainian translation
+
+ See merge request sane-project/backends!576
+
+commit a0570828010e061fda2bae0fab4a569ead47fee3
+Author: Yuri Chornoivan <yurchor@ukr.net>
+Date: 2021-01-18 13:36:37 +0200
+
+ Update Ukrainian translation
+
+commit 63d938de61c3be99dbc9474f48740ccbb143ea80
+Merge: 420e09214a58 1042a61c30e5
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-24 08:24:47 +0000
+
+ Merge branch 'fix-udev-rules' into 'master'
+
+ Trigger udev rules parsing on all kernel events except of "remove".
+
+ See merge request sane-project/backends!541
+
+commit 1042a61c30e5ed3131f134290dea3820a70a3185
+Author: Marcin Kocur <marcin2006@gmail.com>
+Date: 2020-10-28 18:09:33 +0000
+
+ Trigger udev rules parsing on all kernel events except of "remove" - fix tests - udev.ref
+
+commit 968114e7e408cf5d261ec7004e1e8a75142f193c
+Author: Marcin Kocur <marcin2006@gmail.com>
+Date: 2020-10-28 17:52:59 +0000
+
+ Trigger udev rules parsing on all kernel events except of "remove" - fix test udev+hwdb
+
+commit b5bbcb2ef7c2928b60371c559fda18dd908df458
+Author: Marcin Kocur <marcin2006@gmail.com>
+Date: 2020-10-28 17:29:19 +0000
+
+ Trigger udev rules parsing on all kernel events except of "remove" - fix tests.
+
+commit a9c181a211870ca8c129370156be813be84cf556
+Author: Marcin Kocur <marcin2006@gmail.com>
+Date: 2020-10-26 21:15:29 +0000
+
+ Trigger udev rules parsing on all kernel events except of "remove".
+
+commit 420e09214a5833f0040881d3e2036ff03cea1f5b
+Merge: c3a29fb9843c 6f9044264179
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-24 07:17:36 +0000
+
+ Merge branch 'escl-fix-sleep-mode' into 'master'
+
+ Fix sleep mode
+
+ See merge request sane-project/backends!577
+
+commit 6f9044264179dc8f2503cd4e73a1f7eff82543c8
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-24 07:17:36 +0000
+
+ Fix sleep mode
+
+commit c3a29fb9843ccbf479b8127fff4ce8a1c568cf20
+Merge: fc74de7c5ec6 7ddbefd103df
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-24 06:24:53 +0000
+
+ Merge branch 'readme1' into 'master'
+
+ Add Ubuntu pre-built section to README
+
+ See merge request sane-project/backends!518
+
+commit 7ddbefd103dfd9d724065d5b7aa951a80a554c65
+Author: Gábor Lipták <gliptak@gmail.com>
+Date: 2020-09-07 09:07:30 -0400
+
+ Add Ubuntu pre-built section to README
+
+ Signed-off-by: Gábor Lipták <gliptak@gmail.com>
+
+commit fc74de7c5ec6043542b028e6a0f39ec8c01358e3
+Merge: ece6d7d5e721 9dd8319a0192
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-17 16:52:58 +0000
+
+ Merge branch 'escl-complete-hack-scanjob-request' into 'master'
+
+ Use MakeAndModel to apply the hack to the device
+
+ See merge request sane-project/backends!575
+
+commit 9dd8319a01923feabfbbe0cb97965fce19f2b75f
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2021-01-17 17:23:56 +0100
+
+ Utilise MakeAndModel pour le device au hack.
+
+commit ece6d7d5e7212e8d8d59175be9c1e49a5f324c3c
+Merge: 7b602c1d6b12 af445c2e9c78
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-16 22:27:14 +0000
+
+ Merge branch 'escl-hack-scanjob-request' into 'master'
+
+ Escl hack scanjob request
+
+ See merge request sane-project/backends!574
+
+commit af445c2e9c78adbfe33551f5262b4ddcd24981c2
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-16 22:11:36 +0000
+
+ Fix syntax in escl.conf.in
+
+commit 4b6418476e1aa675af0e55fa25a2127a1f5d8aa7
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2021-01-16 23:01:31 +0100
+
+ Allows to activate the hack from the configuration file, only the first form supports it.
+
+commit cb8b6d2ace5316ad6379018358e788590f3fef4f
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2021-01-16 09:06:01 +0100
+
+ Fixed variable initialization.
+
+commit b24907c8a9f8bdfecaeb33175653a49f7a0f650a
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2021-01-16 09:03:14 +0100
+
+ Fix scanjob for LaserJet FlowMFP M578 and LaserJet MFP M630.
+
+commit 7b602c1d6b12ab48ce0dea5095f2359fa051c0f2
+Merge: c26e9acd79ee 957a4fcb8f1a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-16 06:30:56 +0000
+
+ Merge branch 'sync-utsushi-desc-with-upstream' into 'master'
+
+ utsushi.desc: Sync with upstream
+
+ See merge request sane-project/backends!573
+
+commit 957a4fcb8f1a374c54c8061f2fe5b74807328431
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-16 15:14:22 +0900
+
+ utsushi.desc: Sync with upstream
+
+commit c26e9acd79ee7072c9803ced5107eb5e3424e6cc
+Merge: d46fbd9d794c 891ccac3b62b
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-15 15:16:45 +0000
+
+ Merge branch 'escl-fix-alloc' into 'master'
+
+ escl: fix char_to_array memory allocation calculations
+
+ Closes #425
+
+ See merge request sane-project/backends!571
+
+commit 891ccac3b62b2677623696b8dbdf03a27611bf1b
+Author: Timo Teräs <timo.teras@iki.fi>
+Date: 2021-01-15 16:45:12 +0200
+
+ escl: fix char_to_array memory allocation calculations
+
+ Too little memory allocated due to incorrect calculation.
+
+ Fixes #425
+
+commit d46fbd9d794cd7acefba2f491582319a6c4750cd
+Merge: b0655dc03e67 0293e662cff9
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-14 12:46:22 +0000
+
+ Merge branch 'escl-check-poppler-glib' into 'master'
+
+ Fix check poppler-glib, (see issue #422).
+
+ See merge request sane-project/backends!570
+
+commit 0293e662cff93fcd6da8c0ce41f77a47a4f4a0f1
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2021-01-14 13:20:17 +0100
+
+ Fix check poppler-glib, (see issue #422).
+
+commit b0655dc03e67de902bf98850b4460b188503c186
+Author: Gerhard Jaeger <gerhard@gjaeger.de>
+Date: 2021-01-07 12:34:34 +0100
+
+ Fix issue with '--enable-locking': Do not require sub-directory for locking.
+
+commit f0f7e43d7fb06ee4e1587ec3b84852bd4dcce957
+Merge: adbfcd16960c fefc6f1818a2
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-04 19:07:25 +0000
+
+ Merge branch 'escl-fix-orders' into 'master'
+
+ The order of the parameters does not change the result.
+
+ See merge request sane-project/backends!568
+
+commit fefc6f1818a286a23217420a74c29ad2da825496
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2021-01-04 19:47:08 +0100
+
+ The order of the parameters does not change the result.
+
+commit adbfcd16960ca535c6426005f632076d2feddcdb
+Merge: 2e41482e0142 17023afb99fb
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-04 18:40:43 +0000
+
+ Merge branch 'escl-devices-list-properties' into 'master'
+
+ Adds to the list of detected devices the different supported trays
+
+ See merge request sane-project/backends!564
+
+commit 17023afb99fbbcbff73b7e534c1ee3ea147331f0
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-12-29 11:33:55 +0100
+
+ Get device informations with avahi.
+
+commit 2e41482e0142b63ce998ab9401f2ce826eab5d3c
+Merge: 0c2fa6bea6ef 445b5bd7e192
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-01 07:19:07 +0000
+
+ Merge branch '409-autoconf-2.70-causes-resulting-configure-file-to-fail' into 'master'
+
+ Drop use of obsoleted autoconf AC_HEADER_STDC macro. Fixes #409
+
+ Closes #409
+
+ See merge request sane-project/backends!566
+
+commit 445b5bd7e19245c08de6a0e669dd9211d2597bfa
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-01-01 15:53:11 +0900
+
+ Drop use of obsoleted autoconf AC_HEADER_STDC macro. Fixes #409
+
+ Use of the STDC_HEADER pre-processor macro that the autoconf macro
+ used to define has been removed. Conditionalized code is now used
+ unconditionally. This should be fine as the macro checks for ANSI
+ C, i.e. C89 (ISO C90), compliant headers. We already require C99.
+
+commit 0c2fa6bea6ef07c5e2909b5c404db37361b15e4a
+Merge: 422425d740ea b4be10c5a2d8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-12-26 22:19:45 +0000
+
+ Merge branch 'fix_crash' into 'master'
+
+ Fix crash in scanimage when must_buffer is true
+
+ Closes #408
+
+ See merge request sane-project/backends!563
+
+commit b4be10c5a2d8fe4105ee476b40cf636a24d79444
+Author: James Ring <sjr@jdns.org>
+Date: 2020-12-26 13:55:54 -0800
+
+ Fix crash in scanimage when must_buffer is true
+
+ Fixes https://gitlab.com/sane-project/backends/-/issues/408.
+
+commit 422425d740ea1abfc3cec7a8bb1c53c7623ddc62
+Merge: 5af7850ba6b6 ea50fb683c1b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-12-26 17:26:42 +0000
+
+ Merge branch 'port' into 'master'
+
+ allow saned to listen on specified port, or an ephemeral port
+
+ See merge request sane-project/backends!549
+
+commit ea50fb683c1b8bbf904d51cad6766b1dfae84ae9
+Author: James Ring <sjr@jdns.org>
+Date: 2020-12-05 09:16:18 -0800
+
+ allow saned to listen on specified port, or an ephemeral port
+
+commit 5af7850ba6b6970a8330c15ecface09e8ba81190
+Merge: ee7f913974ef e9d2cdf67bb4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-12-26 14:16:19 +0000
+
+ Merge branch 'sanei-usb-configure-record-open-clear' into 'master'
+
+ sanei_usb: Allow backends to specify when USB recording is cleared
+
+ See merge request sane-project/backends!392
+
+commit e9d2cdf67bb4dd8b7cd6b5df06d6e724d708d0a9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-04-09 00:47:41 +0300
+
+ sanei_usb: Allow backends to modify when USB recording is cleared
+
+commit ee7f913974efb0e08fc1456f0096ff49e3b155b4
+Merge: 9c00d111e678 ffc2bbb1ffd6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-12-26 13:56:49 +0000
+
+ Merge branch 'pixma-add-models' into 'master'
+
+ Add models
+
+ See merge request sane-project/backends!553
+
+commit ffc2bbb1ffd617f2f50e6f5d4eba805c289d24a3
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-12-15 07:21:21 +0100
+
+ pixma: Add models
+
+commit 9c00d111e678da3eba892264605174f59614a68d
+Merge: e0be6fc89201 aa228faa1370
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-12-26 13:41:52 +0000
+
+ Merge branch 'fix_leak' into 'master'
+
+ fix small memory leak in scanimage option processing
+
+ See merge request sane-project/backends!551
+
+commit aa228faa137072ebd69913efbe1dfc3e7706e7fe
+Author: James Ring <sjr@jdns.org>
+Date: 2020-12-07 14:55:32 -0800
+
+ fix small memory leak in scanimage option processing
+
+commit e0be6fc892013b849ed69e42c3ac7daaa72e15ef
+Merge: 1ae3197f004f 4d347512ebdc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-12-26 05:17:54 +0000
+
+ Merge branch '395-add-epson-et-2600-support' into 'master'
+
+ Resolve "Epson ET-2600 works with libusb configuration"
+
+ Closes #395
+
+ See merge request sane-project/backends!562
+
+commit 4d347512ebdca44f986753ee6331e0ded9e08647
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-12-26 13:44:42 +0900
+
+ epson2.desc: Fix formatting error
+
+commit be8b84105771de6f43b7eae04e4faf89ec3695d8
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-12-26 12:04:11 +0900
+
+ utsushi.desc: Sync with upstream
+
+commit 77a3173e9094a79fe743f1dff3b7397531b09c2d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-12-26 12:03:15 +0900
+
+ epson2: Add ET-2600 as supported
+
+ See https://gitlab.com/sane-project/backends/-/issues/395
+
+commit 1ae3197f004f7cb4d3d095452f25892455fe219f
+Merge: 87d9a86742ff 1dbc31632709
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-12-22 15:58:19 +0000
+
+ Merge branch 'escl-fix-messages-and-variable' into 'master'
+
+ Fix messages and variable.
+
+ See merge request sane-project/backends!561
+
+commit 1dbc316327093508a357ed72388732a7e816118e
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-12-22 16:14:44 +0100
+
+ Fix messages and variable.
+
+commit 87d9a86742ff0efc6c7c43a8290dcd4d64980bbf
+Merge: ae06e017f442 4aa767327d72
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-12-21 20:54:27 +0000
+
+ Merge branch 'escl-fix-documentformat' into 'master'
+
+ Choose the format according to availability and options.
+
+ See merge request sane-project/backends!560
+
+commit 4aa767327d72d3df92f968346b47dfeb46a9e157
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-12-21 20:17:03 +0000
+
+ Choose the format according to availability and options.
+
+commit ae06e017f4423b02fd7e85e22660e2c7447c847e
+Merge: c8e1c9595ee5 c0dae7e8f5a8
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-12-21 19:42:45 +0000
+
+ Merge branch 'remotes/origin/escl-fix-adv-options' into 'master'
+
+ refactoring options code
+
+ See merge request sane-project/backends!559
+
+commit c0dae7e8f5a8466855dcdf9d6d25bc7a8edac776
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-12-21 18:16:31 +0100
+
+ refactoring options code
+
+commit c8e1c9595ee5489766d7e411ee1fe6b13c528634
+Merge: 6652aa42a8bd e111c485627b
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-12-20 03:35:57 +0000
+
+ Merge branch '402-hp-scanjet-5370c-produces-double-height-image-and-cannot-preview' into 'master'
+
+ Resolve "HP Scanjet 5370C produces double height image and cannot preview"
+
+ Closes #402
+
+ See merge request sane-project/backends!558
+
+commit e111c485627b540ec14609f48cf3123ff7290543
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-12-19 17:28:36 -0800
+
+ avision: added increment of the line variable in non-interpolated case
+
+commit 15e200a981bf2605e445ec642a070dbd5a7289de
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-12-19 17:27:23 -0800
+
+ avision: added some brackets to silence warnings about precedence ambiguity
+
+commit 6652aa42a8bd3ca676d638433099c0e5da6a335e
+Merge: a03e0106a119 a5181be71bee
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-12-19 21:22:20 +0000
+
+ Merge branch 'escl-fix-segfault' into 'master'
+
+ Fix a crash when asking for the list of options: scanimage -A
+
+ See merge request sane-project/backends!557
+
+commit a5181be71bee8b0433f7b9916a2801d5eee0f227
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-12-19 22:04:30 +0100
+
+ Fix a crash when asking for the list of options: scanimage -A
+
+commit a03e0106a119008410786b75174ad8e6e907fd00
+Merge: fc1c5667da48 3ad2f011ca9c
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-12-18 08:16:26 +0000
+
+ Merge branch 'update-external-model-scangearmp2' into 'master'
+
+ Add model version scangearmp2 4.0 and 4.10.
+
+ See merge request sane-project/backends!556
+
+commit 3ad2f011ca9c8162c4c7742d2fbefca17c92ceb5
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-12-18 08:48:27 +0100
+
+ Add model version scangearmp2 4.0 and 4.10.
+
+commit fc1c5667da48cbc8024f2613a3b343c3335bcc34
+Merge: bb84652c3c34 6ad635234281
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-12-17 10:57:02 +0000
+
+ Merge branch 'escl-device-crash-without-flatbed' into 'master'
+
+ Escl device crash without flatbed
+
+ See merge request sane-project/backends!554
+
+commit 6ad6352342812305e575fba632f8b83c0cb9c7d1
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-12-16 13:50:24 +0100
+
+ Add model HP Deskjet 3760.
+
+commit 841680f6108abaa1ebb032137fa5a4850011a8a3
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-12-16 13:41:31 +0100
+
+ Fix : Fixes the crash of devices that do not have a tray, discovered on the HP Deskjet 3760 device.
+
+commit bb84652c3c345bd8bbd724e1b057392688281b9b
+Merge: f1154375f59c a388c3abc158
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-12-07 13:21:30 +0000
+
+ Merge branch 'origin/pixma_bug_fixes' into 'master'
+
+ General pixma backend fixes
+
+ See merge request sane-project/backends!548
+
+commit a388c3abc1584ca80eed435a3063839c4c3b4752
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-11-28 19:34:52 -0800
+
+ pixma: avoid structure copy on every read by using cinfo address.
+
+commit 410f954f3b962368d218ac8ad154c97049089797
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-11-28 19:29:06 -0800
+
+ pixma: assignment must be inside the loop to be effective.
+
+commit f1154375f59c12b4a0286e6b847289082255b722
+Merge: 7f7a4778bee3 cbf9627fd8d2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-11-30 11:07:40 +0000
+
+ Merge branch 'master' into 'master'
+
+ drop CVS keywords
+
+ See merge request sane-project/backends!547
+
+commit cbf9627fd8d20b7b35ee8376ad8cd36f8aa8bb51
+Author: Mikolaj Kucharski <mikolaj@kucharski.name>
+Date: 2020-11-29 09:19:26 +0000
+
+ final Revision CVS keyword removal
+
+commit 4196d204f108be532ab9ad10d1624f8aaf3d46d6
+Author: Mikolaj Kucharski <mikolaj@kucharski.name>
+Date: 2020-11-29 09:17:33 +0000
+
+ drop more tricky Revision CVS keyword
+
+commit 7de7c051fa5afbf6765bac91b8df2a5fd2f0aec3
+Author: Mikolaj Kucharski <mikolaj@kucharski.name>
+Date: 2020-11-29 09:06:48 +0000
+
+ more CVS keywords removed, Log and Revision
+
+commit 65f11315414d44417ae453e940387cd3b869deb0
+Author: Mikolaj Kucharski <mikolaj@kucharski.name>
+Date: 2020-11-28 10:01:56 +0000
+
+ drop CVS keywords
+
+commit 7f7a4778bee37c88510d8f6b6af4297a54aceeb2
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2020-11-28 18:48:50 -0500
+
+ canon_dr backend v60
+
+ - add new gray and color interlacing options for DR-C120
+ - initial support for DR-C120 and C130
+ - enable fine calibration for P-208 (per @sashacmc in !546)
+
+commit 08eaf1a22e6441ecc446d0a5b34f21c08709a770
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-11-28 19:19:26 -0800
+
+ pixma: MX490 series returns JPEG from ADF scans.
+
+commit e5bd31c88284881f156bbca3d42384711e89a34d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-11-25 20:05:28 +0900
+
+ utsushi.desc: Sync with upstream
+
+commit 8a8595808de7b43aabe86a4b1d5c514ad8853ef7
+Merge: a7f42db900a0 862ca098ae38
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-11-23 01:39:29 +0000
+
+ Merge branch 'master' into 'master'
+
+ Fixed Artec AstraSlim SE configuration.
+
+ See merge request sane-project/backends!545
+
+commit 862ca098ae38c31f4a1489203eadc66424bbdb22
+Author: RICCIARDI-Adrien <adrien.ricciardi@hotmail.fr>
+Date: 2020-11-21 11:58:17 +0100
+
+ Fixed Artec AstraSlim SE configuration.
+
+commit a7f42db900a02955ac030408e460d7b7b79909c0
+Merge: eae1e9068af0 c7dd86c7e758
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-11-08 19:31:12 +0000
+
+ Merge branch 'add-new-modele' into 'master'
+
+ Add model Canon TS-5351
+
+ See merge request sane-project/backends!544
+
+commit c7dd86c7e75853bbd7d3bd6622747795e01d1651
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-11-08 20:16:05 +0100
+
+ Add model Canon TS-5351
+
+commit eae1e9068af08f3db20bf56ff38ea53d191c7a6d
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-11-08 20:11:50 +0100
+
+ Revert "Add model Canon wqTS-5351."
+
+ This reverts commit 9ec62a4780dd5db444a573c055d2558739e63881.
+
+commit 9ec62a4780dd5db444a573c055d2558739e63881
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-11-08 20:02:55 +0100
+
+ Add model Canon wqTS-5351.
+
+commit 7699e1a09873df90185ca65f162812f987a87395
+Merge: e4ef0548bf86 d0695c147065
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-11-02 22:07:21 +0000
+
+ Merge branch 'pixma-calibrate' into 'master'
+
+ pixma: Add --calibrate option
+
+ See merge request sane-project/backends!542
+
+commit d0695c14706575d765c770cfbea63372ff85bd45
+Author: Iskren Chernev <me@iskren.info>
+Date: 2020-11-02 21:44:08 +0200
+
+ pixma: Add --calibrate option
+
+ Feature was discussed in https://gitlab.com/sane-project/backends/-/issues/321
+
+commit e4ef0548bf86a0690c2b373d3ece5aae52300036
+Merge: 016271ebdcf5 6fe222ed2924
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-10-20 09:01:15 +0000
+
+ Merge branch 'leak_fix' into 'master'
+
+ Fix memory leaks in dll and test backends
+
+ See merge request sane-project/backends!537
+
+commit 6fe222ed29240e039ccaf462eeaa20a919ae9da9
+Author: Fletcher Woodruff <fletcherw@chromium.org>
+Date: 2020-10-12 11:20:49 -0600
+
+ test: do not leak initial values of string options
+
+ The default values for string options are set using static (i.e.
+ non-malloced) strings. Later, if new values are loaded from the config
+ file, those SANE_Strings will then point to dynamically allocated memory
+ which is eventually leaked.
+
+ Change the initial values for the string options to NULL, and initialize
+ them to the proper values within sane_init() using strdup(). This way,
+ whenever the value for the string is changed, we can safely free() the
+ previous value.
+
+ This eliminates the other main source of memory leaks in the test backend.
+
+ This patch also updates sane_init for the test backend to properly cleanup
+ memory if it fails.
+
+commit f71ac6126f7834c400fc9ced96325d1a61fc94d9
+Author: Fletcher Woodruff <fletcherw@chromium.org>
+Date: 2020-10-12 09:14:35 -0600
+
+ test: free memory used for string options
+
+ Inside Test_Device, track whether we've already called init_options().
+ If we have, don't call it again when calling sane_open() again.
+
+ Add a function cleanup_options() which frees the memory used for these
+ options, and call it in sane_exit() if we previously called
+ init_options().
+
+ Change Test_Devices to be initialized with calloc instead of malloc,
+ so that we can assume that uninitialized fields are NULL, and can safely
+ call free() on them unconditionally.
+
+ This eliminates some larger memory leaks within the test backend.
+
+commit de903b84c49f80a973f48ea47e46e5e47a186b7e
+Author: Fletcher Woodruff <fletcherw@chromium.org>
+Date: 2020-10-12 16:22:40 -0600
+
+ dll: fix memory leak in load
+
+ In the case where we are unable to get a path for loading libs, and
+ instead just use LIBDIR, we set 'src = strdup(LIBDIR)'. However, we
+ never update orig_src to point to src before tokenizing the path with
+ strsep(), so the memory is never freed.
+
+ Update load to always set orig_src to src so that we don't leak memory.
+
+commit 016271ebdcf52351051ddd41fe71841aa03203b2
+Merge: 519c300ff064 bc64c8f5492b
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-10-18 17:36:24 +0000
+
+ Merge branch '362-lexmark-mc3200-mc3224adwe-network-scanner-crash-due-to-null-constraints' into 'master'
+
+ Resolve "Lexmark MC3200 / MC3224adwe Network scanner crash due to NULL constraints"
+
+ Closes #362
+
+ See merge request sane-project/backends!534
+
+commit bc64c8f5492bd9ada7800a89a8fdaaf5777ed7e3
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-10-18 09:51:35 -0700
+
+ scanimage: check also for negative word_list length which is nonsensical.
+
+commit 968add6706b88218e2cb91a9a26ef6928868b793
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-10-06 20:16:13 -0700
+
+ scanimage: added checks for null constraints.
+
+ We have seen this from buggy backends that present NULL for constraint
+ string_lists. This is probably illegal behaviour from backends but we
+ don't want to crash.
+
+commit 519c300ff0644f49d1a0a520aa4272aa9a36b685
+Merge: 730982bd6b00 b1b412d5f82e
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-10-18 01:47:29 +0000
+
+ Merge branch 'brightness_on_12000xl' into 'master'
+
+ epson2: fix lower brightness limit for DS-G20000/12000XL
+
+ See merge request sane-project/backends!529
+
+commit b1b412d5f82e682119517c52addc37a36de7cf0a
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2020-09-18 20:37:40 +0200
+
+ epson2: fix lower brightness limit for DS-G20000/12000XL
+
+ I get -EINVAL with -4 (ROM Version 1.02). -3 works.
+
+ Signed-off-by: Wolfram Sang <wsa@kernel.org>
+
+commit 730982bd6b00176c52a88a467543775dce6b1b6d
+Merge: 7f38f0f71c77 014c307e024c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2020-10-15 21:20:20 +0000
+
+ Merge branch '364-pixma-mx320-cannot-do-1200dpi-in-adf' into 'master'
+
+ Resolve "Pixma MX320 cannot do 1200dpi in ADF"
+
+ Closes #364
+
+ See merge request sane-project/backends!538
+
+commit 014c307e024ce85fe1a5509109ed97f88fbac176
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-10-13 09:03:45 -0700
+
+ pixma: MX320 machine will not perform 1200 dpi scan from the ADF
+
+ 600 dpi maximum from ADF.
+
+commit 7f38f0f71c7779281bc26dde40bab0456e60f43d
+Merge: 7e6231fe5714 6af85ec669f7
+Author: Gerhard Jäger <gerhard@gjaeger.de>
+Date: 2020-10-12 09:14:04 +0000
+
+ Merge branch 'canoscan_n650u_plustek_usb_workaround' into 'master'
+
+ [plustek] Add 1ms delay before writing to register 0x59 during reseting registers
+
+ Closes #137
+
+ See merge request sane-project/backends!535
+
+commit 6af85ec669f7a201360f3dcc48f6b47a06812914
+Author: Zdenek Dohnal <zdohnal@redhat.com>
+Date: 2020-10-09 08:55:41 +0200
+
+ plustek-usbhw.c: Add 1ms sleep before writing to register 0x59
+
+ Works around discovery problem for CanoScan N650U, fixes #137.
+
+commit 7e6231fe571429d0b23654f24eac2333349381be
+Merge: b75e39af8cad 42520aeaa9ea
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2020-10-10 19:22:41 +0000
+
+ Merge branch '358-gt68xx-1-0-31-breaks-mustek-1248ub-after-first-scan' into 'master'
+
+ Resolve "gt68xx: 1.0.31 breaks Mustek 1248UB after first scan"
+
+ Closes #358
+
+ See merge request sane-project/backends!533
+
+commit 42520aeaa9ea9f4e55b4025d6f04c7497bfa5852
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-10-10 12:01:33 -0700
+
+ gt68xx: added flag to fix stop scan bug
+
+ Some scanners (notably the Mustek 1248UB) doesn't like receiving a
+ STOP scan command when it is not scanning. Flag prevents it my making
+ sure that START/STOP commands are only ever paired up.
+
+commit 6886cf6e8015e5e7c452add4907d7a486ee8ccb1
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-10-03 10:38:50 -0700
+
+ gt68xx: Added temporary fix to avoid stop scan during cancel.
+
+ Calling this function upsets some scanners in this family.
+ This temporary sticking plaster permits the Mustek 1248UB scanner to
+ scan after cancelling. We need to look into this much more when a
+ scanner becomes available for investigation.
+
+commit b75e39af8cade19d3658e5fbdc5b09bba76af8fd
+Merge: 9ac6ee6cd625 8885312711ec
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-10-10 16:51:52 +0000
+
+ Merge branch 'escl-avahi-resolve' into 'master'
+
+ Fixes device discovery
+
+ See merge request sane-project/backends!536
+
+commit 8885312711ec7a228c5e60fde9b6447bc2569ba6
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2020-10-10 18:01:55 +0200
+
+ Fixes device discovery
+
+commit 9ac6ee6cd6252e7c4e63a21715497295c5684a55
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-10-07 15:06:07 +0200
+
+ desc and news lide 600
+
+commit 81227d1d408af53105cd26cecefd3963729b92d9
+Merge: efd4767d13a8 5ef217b19dca
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-29 09:38:15 +0000
+
+ Merge branch 'avision_add_av186plus_av188_support' into 'master'
+
+ add ID information for Avision AV186+ and AV188 sheetfed USB scanners
+
+ See merge request sane-project/backends!532
+
+commit 5ef217b19dcad89c3eb4587a0480e89008ca8961
+Author: Nikolai Kostrigin <nickel@altlinux.org>
+Date: 2020-06-25 18:13:41 +0300
+
+ add ID information for Avision AV186+ and AV188 sheetfed USB scanners
+
+ backend/avision.c: add AV186+ as 'good',
+ AV188 as 'untested'
+ doc/descriptions/avision.desc: add AV186+ as 'good',
+ AV188 as 'untested'
+
+commit efd4767d13a8c49634187180662c3e0cacf5d5de
+Merge: 9e9dc5104ea2 7139d6decf08
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-28 09:16:31 +0000
+
+ Merge branch 'epson2/rework_focus' into 'master'
+
+ Epson2/rework focus
+
+ See merge request sane-project/backends!531
+
+commit 7139d6decf0860b868314d6bdae4bf4e493cf066
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2020-09-26 13:22:57 +0200
+
+ epson2: add autofocus
+
+ Enable autofocus support on my Epson 12000XL. The middle of the scan
+ area will be used as the focus point. An arbitrary X,Y is possible but
+ not implemented yet
+
+ Signed-off-by: Wolfram Sang <wsa@kernel.org>
+
+commit 5d706c2c3573f21438c39020782cbdfa4923076d
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2020-09-19 11:24:37 +0200
+
+ epson2: implement full range manual focus settings
+
+ Allow the whole range of manual focus settings as an expert option. This
+ is also now independent of a TPU being installed or not. The old default
+ values are applied if the user changes the source type (either FLATBED
+ or TPU). Adding a focus group here because autofocus options will come
+ with later patches.
+
+ Signed-off-by: Wolfram Sang <wsa@kernel.org>
+
+commit f9f75ca068f66e3d9f8c442789b7582595b947b4
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2020-09-19 10:13:43 +0200
+
+ saneopts: add entries for focus/autofocus
+
+ coolscan2 has focus entries already reused in coolscan3. Because I want
+ to add the same options to epson2, it makes sense to make them available
+ globally. Add i18n while here.
+
+ Signed-off-by: Wolfram Sang <wsa@kernel.org>
+
+commit a0e68f7de9679a0fe5f6ae61f9487d5fd9c8a86b
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2020-09-26 11:32:49 +0200
+
+ epson2: enable focus for all scanner types
+
+ Even with USB based scanners, we need to send the esci command to set
+ the focus. There is no byte in the extended scanning parameters for it.
+ So, move the code to a place where it is called for all cases.
+
+ Signed-off-by: Wolfram Sang <wsa@kernel.org>
+
+commit 1653b0f80c296477387101774ee3d0ea2c696cb8
+Merge: 429cc0efc005 94506b17874d
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2020-09-26 11:47:57 +0200
+
+ Merge branch 'zdohnal/esci_set_focus_retval' into focus_on_12000XL
+
+commit 9e9dc5104ea206e79d04c64a2b9eaca49cb1a172
+Merge: 429cc0efc005 94506b17874d
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-27 08:01:36 +0000
+
+ Merge branch 'esci_set_focus_retval' into 'master'
+
+ epson2: check for return value of e2_esc_cmd
+
+ See merge request sane-project/backends!526
+
+commit 94506b17874dfdbea0f02c6ecd0b58dcb6a71b84
+Author: Zdenek Dohnal <zdohnal@redhat.com>
+Date: 2020-09-22 11:34:56 +0200
+
+ epson2: check for return value of e2_esc_cmd
+
+commit 429cc0efc0055a8f231199260e0b52e18169be5f
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-09-25 16:40:07 +0200
+
+ pixma: backend version 0.28.6
+
+commit 9db8fc305e7b5547fe508096895fe94245373813
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-09-25 16:38:38 +0200
+
+ pixma: add comment for last merge
+
+commit e80612275eaa5ea61434e81b2dcb0e23330c8804
+Merge: 72fd68cb56ee 4a76bbd16211
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-09-25 14:35:40 +0000
+
+ Merge branch 'patch-1' into 'master'
+
+ Added support for Canon Pixma MX340 buttons and ADF status
+
+ See merge request sane-project/backends!513
+
+commit 4a76bbd162110f6a3944ebc7a6f08259724e4618
+Author: Asela Fernando <apn.fernando@gmail.com>
+Date: 2020-08-20 00:32:49 +0000
+
+ Added support for Canon Pixma MX340 buttons buf[7] and ADF status buf[8]
+
+commit 72fd68cb56eeaf29dea6ea8af6656a9514fb25f0
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-09-25 16:20:58 +0200
+
+ introduce Povilas Kanapickas as pixma maintainer
+
+commit e46adab4f28b0f65df9fb8e4c0181512d0d0c710
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2020-08-11 19:28:11 -0400
+
+ canon_dr v59: fine calibration updates
+
+ - restructure fine calibration code
+ - initial support for uploading fine calibration payloads
+ - improve DR-C225 support
+
+ Most canon scanners require that the driver apply fine (per-cell)
+ calibration information. But a few require that the info be loaded
+ into the scanner. Here, we add initial support for that, though the
+ needed values are hardcoded instead of calculated.
+
+commit 588f01526e7cc9459739d88fdf57961b021ffec7
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2020-09-23 21:03:45 -0400
+
+ fujitsu v137b: brightness/contrast improvements
+
+ - change window_gamma init (fixes bright/contrast for iX1500)
+ - only call send_lut after set_window (remove late_lut)
+
+commit 5b92a367c386d2a576c5aa4f4b95106252ce62a1
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2020-09-23 20:57:26 -0400
+
+ fujitsu v137a: fix JPEG duplex memory corruption
+
+commit 6d7fbc83200e4c0ae4fb5bdad89714e1f84604e6
+Merge: b155955b0e24 cd768b3692e1
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-09-18 14:03:22 +0000
+
+ Merge branch 'escl-check-scan-options' into 'master'
+
+ Check options scan and fix xml.
+
+ See merge request sane-project/backends!528
+
+commit cd768b3692e1fa18e97bb5565299ba2a2c83a354
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-09-18 15:47:45 +0200
+
+ Check options scan and fix xml.
+
+commit b155955b0e24ab5ff40f3ca9cdcad4b676f1ac4d
+Merge: ddcfa6a12fce e281dfb0cd5f
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-09-17 20:29:28 +0000
+
+ Merge branch 'escl-add-scan-options' into 'master'
+
+ Added options: Brightness, Threshold, Sharpen and Contrast.
+
+ See merge request sane-project/backends!527
+
+commit e281dfb0cd5fb15acc1ee80766d22c26ac0e6e53
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-09-17 18:55:03 +0200
+
+ Fix style.
+
+commit fcbeeccbf08b302e2944b5e912daaaf99bbbdc1a
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-09-17 18:50:33 +0200
+
+ Added options: Brightness, Threshold, Sharpen and Contrast.
+
+commit ddcfa6a12fce64f41ba0f40746a6487207fdfb95
+Merge: b89b9b135003 924dcf073176
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-17 11:41:31 +0000
+
+ Merge branch 'master' into 'master'
+
+ Do not use fixed python executable name and use AM_PROG_PYTHON
+
+ See merge request sane-project/backends!525
+
+commit 924dcf073176bc130750056f5e2b2943d287d382
+Author: Your Name <you@example.com>
+Date: 2020-09-14 15:44:36 +0100
+
+ Lower minimum python version required to 2.7
+
+commit 0f7ce3fe7a22c2bf89caa7e7297d2af27e69f772
+Author: Your Name <you@example.com>
+Date: 2020-09-13 20:17:43 +0100
+
+ Do not use fixed python executable name and use AM_PROG_PYTHON
+
+ On many systems now python executable it is python3.
+ On my system it the case and by this muild failed with:
+
+ make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/backends-1.0.31/backend'
+ make[2]: Entering directory '/home/tkloczko/rpmbuild/BUILD/backends-1.0.31/backend'
+ Generating pixma/pixma_sane_options.h from pixma/pixma.c
+ /bin/sh: python: command not found
+ make[2]: *** [Makefile:7317: pixma/pixma_sane_options.h] Error 127
+ make[2]: Leaving directory '/home/tkloczko/rpmbuild/BUILD/backends-1.0.31/backend'
+ make[2]: *** Waiting for unfinished jobs....
+
+ Using AM_PROG_PYTHON() nmacro cllows avoide tha by hecks current version of the
+ python and allw to use custom python executable by execute configure by:
+
+ $ PYTHON=</some/python> ./configure <params>
+
+ AM_PROG_PYTHON aclocal macro propagates to automake files $(PYTHON) variable
+ which could be used on geberate instaleable scripts on duting build process like
+ it is now in backend/Makefile.am.
+
+ Currently minum version of required vesion of the python is python >= 3.
+
+commit b89b9b1350035a579757b2b11b34db112bc920ad
+Merge: 2c5f3e181449 a380fb089499
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 10:38:24 +0000
+
+ Merge branch '345-fix-pixma-libxml-build-dependency' into 'master'
+
+ pixma: Restore old behaviour in case XML support is missing
+
+ Closes #345
+
+ See merge request sane-project/backends!524
+
+commit a380fb089499f6b5192c07ae2feaa3376997382f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 18:47:32 +0900
+
+ pixma: Restore old behaviour in case XML support is missing
+
+ Fixes #345.
+
+commit 2c5f3e181449451daa4999e8eb5bc60cb2d134d5
+Merge: 3ac8ca4e87aa 4846d36ad1e9
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 09:12:58 +0000
+
+ Merge branch '344-generate-sane-backends-pot-inputs' into 'master'
+
+ po: Make sure all sane-backends.pot input are available
+
+ Closes #344
+
+ See merge request sane-project/backends!523
+
+commit 4846d36ad1e9ca709cb3a2eaa839c8c79effe34b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 17:56:40 +0900
+
+ po: Make sure all sane-backends.pot input are available
+
+commit 3ac8ca4e87aabcc432fe629d905bcfdee4c0a199
+Merge: e69284695a75 1666e3916db2
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 08:44:21 +0000
+
+ Merge branch 'epson_perfection_1640' into 'master'
+
+ Add SCSI ids for Epson Perfection 1640SU
+
+ See merge request sane-project/backends!509
+
+commit 1666e3916db23aa1a8f82c32e9156d8ca994d783
+Author: StefanBruens <stefan.bruens@rwth-aachen.de>
+Date: 2020-08-18 19:13:19 +0000
+
+ Add SCSI ids for Epson Perfection 1640SU
+
+ See:
+ https://sane-devel.alioth.debian.narkive.com/fNt0Hkzn/epson-perfection-1640su-with-adf-or-filmadapter
+
+commit e69284695a75b124533b411fdffd6f8dd8727b24
+Merge: 2539a13dfbdc 0077988e83f1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 08:38:26 +0000
+
+ Merge branch '350-remove-automake-maintainer-mode' into 'master'
+
+ Resolve "1.0.31: build fails"
+
+ Closes #350
+
+ See merge request sane-project/backends!522
+
+commit 0077988e83f1ba3704e5d8fc296e030563b2dd91
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 16:24:46 +0900
+
+ po/README: Make the documentation use consistent notation
+
+commit e22b393e38afb4db00adb73466ad87eda1631fb1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 16:24:17 +0900
+
+ po/README: Update documentation that refers to maintainer mode
+
+commit 262e32ce591feb79ba5be9b21396b9dd71f1f067
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 16:21:03 +0900
+
+ configure.ac: Remove maintainer mode
+
+ Now that we no longer include generated files in our git repository
+ builds should always have maintainer mode enabled so checkouts pick
+ up on changes in Makefile.am, configure.ac, etc. between builds.
+
+ See #350.
+
+commit 30b7e31eacd14675c373a5d44833f606c46ca894
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 15:56:04 +0900
+
+ configure.ac: Remove stale release versioning comment
+
+commit 2539a13dfbdc71c6c8becd7973c22c5da26b6354
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 16:31:41 +0900
+
+ Fix spelling differences in testsuite reference data
+
+ Fix up of ffff088641e3dcd5d3a3b92d533c2eb0a02a6219.
+
+commit 404e1500c2851055f0544fef5b5ac2cd52961d45
+Merge: 5d3ce7806858 b5cf71318b7c
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 06:07:39 +0000
+
+ Merge branch 'usb_udev_attrs' into 'master'
+
+ Speedup ATTR match for USB devices
+
+ Closes #341
+
+ See merge request sane-project/backends!510
+
+commit b5cf71318b7c34635df41178a7f1666ffb035df9
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 14:50:15 +0900
+
+ sane-desc: Update test reference files
+
+ This follows ad66f79c43c1c1cd809ad6f77fb16ba94c71bea9.
+
+commit 124c16fe6f7731f6e4cf35d870f3aafe8bf15094
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-13 14:34:21 +0900
+
+ sane-desc: Fail build if testsuite fails
+
+commit ad66f79c43c1c1cd809ad6f77fb16ba94c71bea9
+Author: StefanBruens <stefan.bruens@rwth-aachen.de>
+Date: 2020-08-18 19:23:09 +0000
+
+ Speedup ATTR match for USB devices
+
+ Fixes #341
+
+commit 5d3ce78068580e5e9fe0e2142caddb883312fecc
+Merge: 17ab6caa383c 2a238f83e0d1
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-09-11 08:17:35 +0000
+
+ Merge branch 'escl-add-models' into 'master'
+
+ Added HP "DeskJet 2710" and "DesJet 2723" models as supported.
+
+ See merge request sane-project/backends!519
+
+commit 2a238f83e0d1bf6b7d6a7d70ee025689fc20163a
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-09-11 09:58:09 +0200
+
+ Added HP "DeskJet 2710" and "DesJet 2723" models as supported.
+
+commit 17ab6caa383ceec41930ae95956b34197d183c5a
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-09-07 15:15:21 +0200
+
+ canon_lide70 simplified going back
+
+commit cea2a83ea2c006a6347e8926b6b9163d20e77874
+Merge: f59ba7003d4f 33d1aecc7c5a
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-07 09:24:15 +0000
+
+ Merge branch 'master-spelling' into 'master'
+
+ spelling fixes
+
+ See merge request sane-project/backends!516
+
+commit 33d1aecc7c5a3e0604c1a24903e9d22d10081eb1
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-09-06 07:34:40 +0000
+
+ Apply 1 suggestion(s) to 1 file(s)
+
+commit 950aded610368dd4e87e96ba5cffd3dd2cb3164e
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-09-06 07:29:49 +0000
+
+ Apply 1 suggestion(s) to 1 file(s)
+
+commit 6e16f45b76d50530c66c1e2e6dfc295b50f9aaa3
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-09-06 07:29:44 +0000
+
+ Apply 1 suggestion(s) to 1 file(s)
+
+commit 76ab18f064eb282a0708039b63ff3ebd9acfb086
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-09-06 07:29:33 +0000
+
+ Apply 1 suggestion(s) to 1 file(s)
+
+commit 408fb55b026ba681ca992d02d20db83694f21af8
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-09-06 07:20:32 +0000
+
+ Apply 1 suggestion(s) to 1 file(s)
+
+commit d78954552157675237ff0f5904830ade388c0a6d
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-09-06 07:17:00 +0000
+
+ Apply 1 suggestion(s) to 1 file(s)
+
+commit c0ab7e950e15aae16f05b3003b9d401b9239136e
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-09-06 07:16:41 +0000
+
+ Apply 1 suggestion(s) to 1 file(s)
+
+commit 2ad63d4e1ee942a0289b4986fd015ae426868a44
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:47:52 +0200
+
+ spelling fixes for sane core
+
+commit 7cbcc9ceac565e44e2990ba1de78c26b1a85721c
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:46:45 +0200
+
+ spelling fixes for docs, READMEs, ...
+
+commit b4c6cbeb1ff9a12b25ac0c047c17570c5d40babf
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:44:47 +0200
+
+ spelling fixes for tools
+
+commit ffff088641e3dcd5d3a3b92d533c2eb0a02a6219
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:44:33 +0200
+
+ spelling fixes for testsuite
+
+commit cd8c018585c36391e58ebc8409facf033f57c645
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:43:03 +0200
+
+ spelling fixes for xerox_mfp backend
+
+commit 77406ed606607f509cac9fcfb6ece998505cd191
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:43:03 +0200
+
+ spelling fixes for sceptre backend
+
+commit 44755f6fc59a72b871ffc34c36081e097fef1972
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:42:15 +0200
+
+ spelling fixes for dmc backend
+
+commit 5515db02724e08f8fbe4afcfe2619f3d91cfe85a
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:42:15 +0200
+
+ spelling fixes for leo backend
+
+commit 5137304bb62313a5202ba2d68abed54f19fdf498
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:42:15 +0200
+
+ spelling fixes for ma1509 backend
+
+commit f8d08816a83067a63ed816930f512b7ca65f7a98
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:42:15 +0200
+
+ spelling fixes for sp15c backend
+
+commit 25af0a7403f2451b0668c610275ca1332f2efc82
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:42:15 +0200
+
+ spelling fixes for tamarack backend
+
+commit 66443f37e6c14b73b251e2080d7d97ff6a746b5b
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:40:56 +0200
+
+ spelling fixes for ibm backend
+
+commit f6059bd3cbe8fa2c613e884839a4b0e5f037d590
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:40:56 +0200
+
+ spelling fixes for gphoto2 backend
+
+commit a36cf4afda01c2d871aa8a01d7078a5d8bfc4d9c
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:40:56 +0200
+
+ spelling fixes for dell1600n backend
+
+commit 9d368fd7a884103362fa73914795a21ae82e305d
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:40:56 +0200
+
+ spelling fixes for dc25 backend
+
+commit 37bee66d055b364530289410bd512b5e88454f6c
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:39:02 +0200
+
+ spelling fixes for s9036 backend
+
+commit 56cbbdad5d6f8fe01708785bbac88485fdbf8c1e
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:39:02 +0200
+
+ spelling fixes for sharp backend
+
+commit 4984bedb6e39ee24fd48d9f95cd0ccf02a282538
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:39:02 +0200
+
+ spelling fixes for ricoh backend
+
+commit 35fe083519e49cfe87ce41d9384fa1e8b5766dbc
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:39:02 +0200
+
+ spelling fixes for qcam backend
+
+commit 95eda03dd12de41972407c4943f2f6e28f289a60
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:39:02 +0200
+
+ spelling fixes for nec backend
+
+commit 340f7e7329a87af240b5de647375c13f84a8c60f
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:37:18 +0200
+
+ spelling fixes for niash backend
+
+commit 56be6cf59af13523ac9696121f119d477269b2f6
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:36:19 +0200
+
+ spelling fixes for lexmark backend
+
+commit fc24607b3165a8df897a3d71455f1e47a19ebd65
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:35:16 +0200
+
+ spelling fixes for agfafocus backend
+
+commit b834e472876f47639c87bda8ae9996b06f409754
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:33:32 +0200
+
+ spelling fixes for kodak backend
+
+commit af9f9d62cd97830aac9b417f7af3c673c2dd0fcb
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:33:13 +0200
+
+ spelling fixes for kodakaio backend
+
+commit 269a7c0413c0b6e9b9a1703a414860587b6dfeab
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:32:00 +0200
+
+ spelling fixes for avision backend
+
+commit f611cab816eec5df32c26b110148b41aad95fdff
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:31:46 +0200
+
+ spelling fixes for v4l backend
+
+commit 9a6ef1ceb046367d5b48ea57bb9af27f9e51f91b
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:31:33 +0200
+
+ spelling fixes for hs2p backend
+
+commit e0bc8e9ba7aeb04e20f507c10b9ef64b2ece124c
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:29:25 +0200
+
+ spelling fixes for net backend
+
+commit 15d95a5b1b40b96e4df92c32b7cd27218ab9512d
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:26:33 +0200
+
+ spelling fixes for matsushita backend
+
+commit 452f21c1e2c460aee14d35e819e29f801d60aa43
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:24:51 +0200
+
+ spelling fixes for microtek2 backend
+
+commit 16acc1c2335358883ffae78526237894e5c9db71
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:23:03 +0200
+
+ spelling fixes for artec backend
+
+commit 917c8b2c5fcb5d4a12f35357bf5598dbb9adfb0d
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:22:53 +0200
+
+ spelling fixes for artec_eplus48u backend
+
+commit 7e984d479a8aacd7b838e01d9fae951bf84a38c5
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:22:37 +0200
+
+ spelling fixes for apple backend
+
+commit ffb741852ad46017926b81bf24a466a56ef8f4f7
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:20:08 +0200
+
+ spelling fixes for hp backend
+
+commit 7dcb5dc096e5eff45ffbd1f7ac55ed3d5a4c7ebe
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:19:45 +0200
+
+ spelling fixes for hp3500 backend
+
+commit f4fb21e33410c9d246a4028573efd95f26cd8ad3
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:19:31 +0200
+
+ spelling fixes for hp3900 backend
+
+commit 32aa1ef82607ffd130a747dd4325624841981b2d
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:19:15 +0200
+
+ spelling fixes for hp5400 backend
+
+commit b9ca020ef60bd2553c9eab092c9277d0683ac269
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:18:26 +0200
+
+ spelling fixes for hpljm1005 backend
+
+commit bbf7d068eda56ef7506f1c7d83903ce7af9cac34
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-29 08:17:09 +0200
+
+ spelling fixes for hpsj5s backend
+
+commit 33f413e790ac203e1550440274915e03e2110c54
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:10:36 +0200
+
+ spelling fixes for epson backend
+
+commit b2ce3110c6ebdcfbc228e32ed187a918ee0b9c99
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:10:25 +0200
+
+ spelling fixes for epson2 backend
+
+commit 3d1a5da4e1363942b6d1a878b43711e964b53954
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:08:59 +0200
+
+ spelling fixes for fujitsu backend
+
+commit 79a1aa27234ebaf7d44f23e02979d1e9eb7bfb06
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:07:54 +0200
+
+ spelling fixes for stv680 backend
+
+commit d2f2d9965e974f1094cbb3c2b2c639dac4e63e41
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:07:33 +0200
+
+ spelling fixes for st400 backend
+
+commit b7676f3ec1b89b73b0f66fd16ff2e0d54478265f
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:05:10 +0200
+
+ spelling fixes for canon backend
+
+commit fbe99c09149450389a6e2d0d282e83ee7dee1caa
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:04:55 +0200
+
+ spelling fixes for canon_dr backend
+
+commit 0e8b1d0e89fb5e0b40bd6651d4e8a7d662e23c15
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:04:45 +0200
+
+ spelling fixes for canon_pp backend
+
+commit ec07e73d04cc98aae22a47fdaabbd2a003d6a473
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:04:25 +0200
+
+ spelling fixes for canon630u backend
+
+commit e1ea09c8344a1a990f54a0d89bf3cbb1a3dc873a
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:01:50 +0200
+
+ spelling fixes for coolscan backend
+
+commit e78667e32d12bb01f98fe1459b090e15a2b57885
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:01:44 +0200
+
+ spelling fixes for coolscan2 backend
+
+commit 27e5078c39cc86bcb7876221fcd9f744da3d5e61
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:01:36 +0200
+
+ spelling fixes for coolscan3 backend
+
+commit dde1ad7a82689e247818672aeae621c8ae87a44e
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 19:00:07 +0200
+
+ spelling fixes for kvs40xx backend
+
+commit 5d606d9b56126b19dd425f73cd80a06cdd787449
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:59:58 +0200
+
+ spelling fixes for kvs20xx backend
+
+commit bf5ddfe38912be356d662364da08344b5b5bf86f
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:59:42 +0200
+
+ spelling fixes for kvs1025 backend
+
+commit 0ff0d7d25bbe66d79126eb8f97cbb0c8ed0bebe2
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:58:19 +0200
+
+ spelling fixes for epjitsu backend
+
+commit f69854bb4843756c630b49e2b7e9b126b340156f
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:57:23 +0200
+
+ spelling fixes for rts8891 backend
+
+commit 78dd1892abe7bef46672ce7260f2b2022af3832e
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:55:39 +0200
+
+ spelling fixes for sm3840 backend
+
+commit a94c17175f2bd3bf541fc62ff1036351c44eefa0
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:55:26 +0200
+
+ spelling fixes for sm3600 backend
+
+commit 3e33c9664aebda7b87db0e77b0e533e6f4039e6c
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:52:53 +0200
+
+ spelling fixes for pixma backend
+
+commit 4f4278ab2dc80dbc893eb8b24daf28939875390e
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:51:48 +0200
+
+ spelling fixes for escl backend
+
+commit 13b56dd1223fa3fc09019f45142faf022ac22884
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:50:36 +0200
+
+ spelling fixes for pie backend
+
+commit 63c686b9295983f3196f0043956eff7da43f42b9
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:50:24 +0200
+
+ spelling fixes for pieusb backend
+
+commit 064d73ed5a653998f518e5d9fecde2c27e104e04
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:48:30 +0200
+
+ spelling fixes for umax backend
+
+commit 0d862ba5753183e14f01f63270857e63c3ad7786
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:48:12 +0200
+
+ spelling fixes for umax1220u backend
+
+commit e8ba89fdccf0d87eac731cdf3d8f283423b0e615
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:46:31 +0200
+
+ spelling fixes for umax_pp backend
+
+commit b8cc6ce3a9ff9fe535d3a888703988536b57d47d
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:45:02 +0200
+
+ spelling fixes for cardscan backend
+
+commit 192262a2774df19a70233a3f158b76482ac7257d
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:43:42 +0200
+
+ spelling fixes for p5 backend
+
+commit 0b2e89db18bddfca70a1aa00271a2ffaf9104907
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:42:16 +0200
+
+ spelling fixes for snapscan backend
+
+commit cbbfcd1121af9cc8322cd17aed8afe43287e430a
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:39:49 +0200
+
+ spelling fixes for gt68xx backend
+
+commit f4385e21c34d77626569376f56290a04611b5992
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:35:49 +0200
+
+ spelling fixes for teco3 backend
+
+commit 78bf42e04e8761b7a2a3b1ec246c354e188f6868
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:35:41 +0200
+
+ spelling fixes for teco2 backend
+
+commit fe71899cc83747ee8c4e052401eb3197f14fe94f
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:35:33 +0200
+
+ spelling fixes for teco1 backend
+
+commit bd081d3bbe0a512cab1df9a336648a0376449f18
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:32:54 +0200
+
+ spelling fixes for mustek_usb backend
+
+commit 6cb28ca627e556082fc434b377d16a54444a2612
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:32:42 +0200
+
+ spelling fixes for mustek_pp backend
+
+commit a1239c5601b67841c4cf6021486578182a4aa6e9
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:32:10 +0200
+
+ spelling fixes for mustek backend
+
+commit 493ed0a533ca7702b75788aa40514e31aeba0cf4
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:29:16 +0200
+
+ spelling fixes for mustek_usb2 backend
+
+commit 9afda64c421c24e1a42cf6803faff3f759cdbebf
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:23:32 +0200
+
+ spelling fixes for plustek backend
+
+commit e3f20a932c368906f50124db4c434044a05f545a
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:21:06 +0200
+
+ spelling fixes for plustek_pp backend
+
+commit 0cd9de9befaca49ff8717233f4a0a01b338ea56d
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:17:08 +0200
+
+ spelling fixes for genesys backend
+
+commit 94a9ef8250564b916bf2c1bb74c556c1862d1506
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:13:03 +0200
+
+ spelling fixes for ChangeLogs
+
+commit a307ba8ccf3d9ac5fb92ada268169c40234c08c0
+Author: Peter Marschall <peter@adpm.de>
+Date: 2020-08-28 18:12:00 +0200
+
+ spelling fixes for u12 backend
+
+commit f59ba7003d4f5cdaddaba722aff01ddae23d6bbf
+Merge: 7884311d4a20 e946d14e6cd9
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2020-09-07 08:40:34 +0000
+
+ Merge branch 'escl-add-models' into 'master'
+
+ Addition of two models
+
+ See merge request sane-project/backends!517
+
+commit e946d14e6cd9dcc678610b7c7d81a92ca6d10174
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-09-07 10:15:03 +0200
+
+ Addition of two models
+
+commit 7884311d4a207c20feca30d2a229459c83a1e5e4
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-09-07 10:10:40 +0200
+
+ Revert "Addition of two models"
+
+ This reverts commit 059296b287774f68e3379bb9c63e6c706a7770a0.
+
+commit 059296b287774f68e3379bb9c63e6c706a7770a0
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2020-09-07 10:07:06 +0200
+
+ Addition of two models
+
+commit c946aa5a84297f33b30cddb0c89fcf375ed65d10
+Merge: 8894364c5bbc 0f9b481fee97
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-04 11:48:13 +0000
+
+ Merge branch 'dell1600n_net_return_eaccess_if_local_only' into 'master'
+
+ dell1600n_net: return ACCESS_DENIED when local devices are requested
+
+ See merge request sane-project/backends!506
+
+commit 0f9b481fee97c05adaceaeb9291a73380372d6d9
+Author: pobrn <pobrn@protonmail.com>
+Date: 2020-08-20 15:39:27 +0200
+
+ dell1600n_net: return empty list when local devices are requested
+
+ !502 made the dell1600n_net backend return GOOD status when local
+ devices are requested. This is problematic since in that case
+ the caller may assume that the passed device list has been populated.
+ However, this is not the case for this backend, since the device list
+ is not modified in any way in that case. The caller trying to access
+ the device list may lead to undesired consequences. Fix that by
+ returning an empty list if 'local_only' is true.
+
+commit 8894364c5bbcbb893ca22d3bfda693c857157c35
+Merge: f7ad04168227 f089aeac8c28
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-09-03 12:10:51 +0000
+
+ Merge branch 'master' into 'master'
+
+ backend/avision.c adf_reset(): In debug message "adf_reset: read ... failed...
+
+ See merge request sane-project/backends!515
+
+commit f089aeac8c2863def8540eb6452cd86720156888
+Author: Adam Richter <adamrichter4@gmail.com>
+Date: 2020-08-24 03:56:36 -0700
+
+ backend/avision.c adf_reset(): In debug message "adf_reset: read ... failed ...", fix arithmetic and compiler warning about printf integer format type mismatch.
+
+commit f7ad04168227ae37ddc0497129688ef2d22eaff1
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-08-28 14:30:48 +0200
+
+ canon_lide70 eliminating old cmd_buffer
+
+commit 0544e420029938fb2f3afb9737b58644c3490310
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-08-27 15:16:05 +0200
+
+ lide 70 init problem solved
+
+commit e97919d53b63158ae15c70a67db8b6fa6d363190
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-08-26 15:25:24 +0200
+
+ canon_lide70 small changes
+
+commit ead06704ea4bc5e8963a72c4d02e66d26a70fd80
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-08-24 17:14:40 +0200
+
+ removed trailing whitespace
+
+commit 5bfbb13b08cfcc69c330d1b6132b1ff82db56e19
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-08-24 15:23:00 +0200
+
+ renaming startblobs, modernizing gamma procedures
+
+commit bfab54e3913f3f7fb80f7a3d4532efe1b4dad072
+Merge: ed43548de752 871813a22db1
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-24 09:19:44 +0000
+
+ Merge branch 'release/1.0.31' into 'master'
+
+ Release/1.0.31
+
+ See merge request sane-project/backends!514
+
+commit ed43548de752d2f02fcd42158f1f5bfac6f39ec8
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-08-22 11:15:44 +0200
+
+ first support for the lide600. 1200dpi dropped.
+
+commit d00af49e365e2cbad363b2faf27bbed1410ce570
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2020-08-20 16:49:17 +0200
+
+ preparing for the lide600
+
+commit 245564dffe96ddf0fd1c703c48973cd35fddd268
+Merge: 65db792a14c1 45f84a569c1f
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2020-08-16 09:55:14 +0000
+
+ Merge branch 'respect_local_only' into 'master'
+
+ Respect 'local_only' parameter of sane_get_devices()
+
+ Closes #140 and #130
+
+ See merge request sane-project/backends!502
+
+commit 45f84a569c1f15fd76f36199061eed41f5f1587f
+Author: pobrn <pobrn@protonmail.com>
+Date: 2020-08-12 12:29:36 +0200
+
+ respect 'local_only' parameter of sane_get_devices()
+
+ Certain backends do network scans even if the 'local_only'
+ parameter for 'sane_get_devices()' is true. Fix that.
+
+ Changes:
+
+ 1. Modify 'sanei_configure_attach()' so that backend specific
+ data may be passed to the 'attach()' function.
+
+ 2. Use this in certain backends to pass the value of the
+ 'local_only' parameter so that network related activities
+ are only carried out when the value is false.
+
+commit 65db792a14c1db609c4d5ae57b4c9272282ea5ca
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-15 14:33:48 +0200
+
+ pixma: backend version 0.28.5
+
+commit 311bf867f9119ba72c92f321356fdba9a3a2f176
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-15 14:32:58 +0200
+
+ pixma: MP495 is working
+
+ Pixma backend supports only symmetric scan resolutions, here 600dpi.
+
+ See issue sane-project/backends#32
+
+commit d1fea9269d118942bbc52123e9c4378fb9c5ca70
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-14 20:27:06 +0200
+
+ Revert "pixma: MP490 Series doesn't need special image formatting @ high dpi"
+
+ This reverts commit 1675697366e0d69edf1e413265c6fc15e6f3ab97.
+
+ See issue sane-project/backends#338
+
+commit 5207b12d5d35e9fe76ffbbbab3264dbd7199ac10
+Merge: d289b42ad736 34c25369e5c7
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-14 19:58:51 +0200
+
+ Merge branch '333-canon-mf264dw-fails-to-scan'
+
+ See issue sane-project/backends#333
+
+commit 34c25369e5c78a84eec0d6b2ef32200325dc4ae3
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-14 19:58:15 +0200
+
+ pixma: backend version 0.28.4
+
+commit 584099c9c17b8cbcd2772679becab0ccdc37f8db
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2020-08-14 19:47:11 +0200
+
+ pixma: enable PIXMA_CAP_JPEG for Canon i-SENSYS MF260 Series
+
+commit a384de5aeacda7d822ecd80ff3cb668d9d92f352
+Author: Rolf Bensch <rolf@bensch-online.de>
+Date: 2019-11-20 22:42:52 +0100
+
+ pixma: new capability PIXMA_CAP_JPEG
diff --git a/ChangeLogs/ChangeLog-1.1.1 b/ChangeLogs/ChangeLog-1.1.1
new file mode 100644
index 0000000..b8d6ba9
--- /dev/null
+++ b/ChangeLogs/ChangeLog-1.1.1
@@ -0,0 +1,2041 @@
+commit 332edc8b7ce642bb06132cf204a8c2dd57720bce
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-19 18:34:04 +0200
+
+ Release 1.1.1
+
+ Note that there is no 1.1.0 release as make distcheck was broken there.
+ The failure depended on the exact release number, thus it was not
+ noticed earlier.
+
+commit 1c805281f2b93b2ea9f2ee98a1d5a00775a5a53a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-19 18:33:50 +0200
+
+ NEWS: Update release version
+
+commit 2d75530344eb2d853e066fdfa93e09ffa4fc7c39
+Merge: 2cd4058942f6 c2a77be45b31
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-19 15:45:49 +0000
+
+ Merge branch 'release-1.1.x-fix-distcheck' into 'release-1.1.x'
+
+ [Release 1.1.x] testsuite: Allow any 1.x.y version when comparing sane-desc results
+
+ See merge request sane-project/backends!685
+
+commit c2a77be45b317f542bf3215407c0aeeccd9af45b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-19 17:29:59 +0200
+
+ testsuite: Allow any 1.x.y version when comparing sane-desc results
+
+commit 2cd4058942f668397c29d13c445515c7c3cc27ca
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-18 23:04:46 +0200
+
+ Release 1.1.0
+
+commit 44d038345897d6f348fe2706665bf841ab733e00
+Merge: b18fb290a975 a00a5f2f2cb6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-18 20:58:44 +0000
+
+ Merge branch 'release-1.1.x-notes-1.1.0' into 'release-1.1.x'
+
+ [Release 1.1.x] Release notes for 1.1.0
+
+ See merge request sane-project/backends!684
+
+commit a00a5f2f2cb63871aed5a6952353221f3ccfbd5b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-18 22:40:39 +0200
+
+ NEWS: Release notes for 1.1.0
+
+commit b18fb290a975c7ce6ebb47a85aca50342deaeee2
+Merge: 3f62c9132a55 bb0bee92f668
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-18 20:33:08 +0000
+
+ Merge branch 'release-1.1.0-releasing-procedure' into 'release-1.1.x'
+
+ [Release 1.1.0] Update releasing procedure
+
+ See merge request sane-project/backends!683
+
+commit bb0bee92f6686429af64c210ae21115f410d0a70
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-18 22:12:19 +0200
+
+ doc: Update the releasing documentation
+
+commit 3738eb9e42012df03e2ff22261107374b717b9e5
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-18 22:12:18 +0200
+
+ newsfragments: Document the misc news fragment type
+
+commit 5f08348068d3a8e047466a61240af0df49dc06b9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2022-01-18 22:12:17 +0200
+
+ Setup release notes build using towncrier
+
+commit 3f62c9132a55b129b0159c0cc9ffd6e4e03ea093
+Merge: 5e463f4c91ad a3031367fec2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 18:39:57 +0000
+
+ Merge branch 'release-1.0.33-genesys-remove-gl847-unsupported-resolutions' into 'release-1.0.33'
+
+ [1.0.33] genesys: Remove unsupported resolutions on LiDE 100 and 200
+
+ See merge request sane-project/backends!681
+
+commit a3031367fec2c1137b156fd93771a900b70af7e3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 18:51:09 +0200
+
+ newsfragments: Add release note for MR !675
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/675
+
+ (cherry picked from commit 2f31fea9d351ed99d8e0a7bf700261926a7e88c7)
+
+commit 773f0e506189bb87f441619eef0e7c84e61d773f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-28 02:49:59 +0200
+
+ genesys: Remove unsupported 75 and 100 dpi resolutions on LiDE 200
+
+ (cherry picked from commit eca148dbf44611b357bd01b4672b83737c114a28)
+
+commit fe6fe45098d067c070f95e9508c8a11e82eafdbd
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-28 02:49:58 +0200
+
+ genesys: Remove unsupported 75 and 100 dpi resolutions on LiDE 100
+
+ (cherry picked from commit c86564a3e39c5407c770dca48ce37dee3c142b3c)
+
+commit 0dc467a3348fff930f09d628df0d3e1e0cc3cb0d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-28 02:49:57 +0200
+
+ genesys: Log the target motor speed in case it can't be acquired
+
+ (cherry picked from commit f5d5928346e3a49914a6cd8cdd00d3e6f4556282)
+
+commit 5e463f4c91ad06b1e81f0e923760b7a46c1f47d3
+Merge: a45a29d9487c e0425c737d5e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 18:28:12 +0000
+
+ Merge branch 'release-1.0.33-backport-genesys-remove-gpl-exception' into 'release-1.0.33'
+
+ [1.0.33] genesys: Remove exception for the GPL license
+
+ See merge request sane-project/backends!679
+
+commit e0425c737d5e7cf79c9b29a5f42290d30722796a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 19:16:54 +0200
+
+ genesys: Remove exception for the GPL license
+
+ Several files already don't have the exception that allows uses of the
+ code that are additional to the GPL license. I'm no longer comfortable
+ granting this exception for my subsequent contributions, thus the
+ exception has been removed.
+
+ (cherry picked from commit 59506f866d3ac4c2fc2bdadf66865e38f8e86ac4)
+
+commit a45a29d9487c31eb369e22cf9911ee0e7824e7df
+Merge: 87f27311f751 2b6fa1056d00
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 18:21:01 +0000
+
+ Merge branch 'release-1.0.33-backports' into 'release-1.0.33'
+
+ [1.0.33] Backport release notes
+
+ See merge request sane-project/backends!678
+
+commit 2b6fa1056d00137f6fd8df9c7ea946d6b0d8265b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:22 +0200
+
+ newsfragments: Add release note for MR !673
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/673
+
+ (cherry picked from commit 9887b162d90f3763fcfa9954c4636804d56c9a1d)
+
+commit ef45427c53f7d0b9786c935618a065da29b98c0a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:21 +0200
+
+ newsfragments: Add release note for MR !622
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/622
+
+ (cherry picked from commit fec5e8917feb04167b5d497dce20415bba3e74ba)
+
+commit 4a2ebc7feef7632d595e190cff43973baf387075
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:20 +0200
+
+ newsfragments: Add release note for MR !659
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/659
+
+ (cherry picked from commit cb6a7d0a90ce1c41b59bcc817daf911a6b2c8206)
+
+commit d1690a044de986a27be742f29c26ebb6746a3b59
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:19 +0200
+
+ newsfragments: Add release note for MR !669
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/669
+
+ (cherry picked from commit 77baf258b6305666409c54f9e051afe4fb1ac1b2)
+
+commit 78c188542a78c416c6254dcbea99922ef68e430b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:18 +0200
+
+ newsfragments: Add release note for MR !667
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/667
+
+ (cherry picked from commit 3b91ab76e6438cec380c4bf2d946347e0909f403)
+
+commit 9864172a11caef7bc70ee2ba07e67fbe6852dcb2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:17 +0200
+
+ newsfragments: Add release note for MR !621
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/621
+
+ (cherry picked from commit 8f0e1d2b483ee83b8675f62ae19f0eea631e2a57)
+
+commit c13555df6f3fb24b672e4a7a569534434c98f56e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:16 +0200
+
+ newsfragments: Add release note for MR !620
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/620
+
+ (cherry picked from commit 37603742d52c8b3226ec7f4fb54cb2362ff0f68c)
+
+commit 53609d6d09e90c6dec5e1a12df501e079cb4f226
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:15 +0200
+
+ newsfragments: Add release note for MR !619
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/619
+
+ (cherry picked from commit f02ee333b7f75d495ea9cdf4ec2724adb64794c4)
+
+commit c0f0c8246751939ca399f44ac7cb6d886b9e1efc
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:14 +0200
+
+ newsfragments: Add release note for MR !618
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/618
+
+ (cherry picked from commit 69e70e898624880da18be48d6cf22eacf3eababb)
+
+commit c7b3ffc5bbb7c490f5804440b4482376e09787c1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:13 +0200
+
+ newsfragments: Add release note for MR !617
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/617
+
+ (cherry picked from commit c6601d96059b1137bf620fe7b3a13426c56607c0)
+
+commit 465e5867cb7ccfebc79468010440cb5c8da149f6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:12 +0200
+
+ newsfragments: Add release note for MR !613
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/613
+
+commit 156eba8dea3ceed80952f7434344a7cbbc10b928
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:11 +0200
+
+ newsfragments: Add release note for MR !612
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/612
+
+ (cherry picked from commit a1c0b4e36cfb356674988c56e478218399fcd583)
+
+commit 4931efc5c7564269bd30306ff975611f0fad3667
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:10 +0200
+
+ newsfragments: Add release note for MR !609
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/609
+
+ (cherry picked from commit 295352c529047a0696a87b74d64d2b2996210a93)
+
+commit edfe281aa7699eaf696eaa182f1189ae0cfca36b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:09 +0200
+
+ newsfragments: Add release note for MR !607
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/607
+
+ (cherry picked from commit 10ab653c07f62363e1a7b206a7292d235dfeaf77)
+
+commit c3d537c586d99d7f26320e23d5d169406287706d
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:08 +0200
+
+ newsfragments: Add release note for MR !605
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/605
+
+ (cherry picked from commit 41ba2922c72ced8ef130bd6dcf5b6afbacfca4e8)
+
+commit a0fc5c871cbc5e84489a84bcc2cf6db331fbc649
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:07 +0200
+
+ newsfragments: Add release note for MR !604
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/604
+
+ (cherry picked from commit d0484425b497f2b698cedfd2f607ed17efc63baf)
+
+commit 68fddf92f3b30f8969a785455a48bd0dadd73e0f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:06 +0200
+
+ newsfragments: Add release note for MR !651
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/651
+
+ (cherry picked from commit bda6796748e08100e27bc17d9004555e4614f1c6)
+
+commit 9bd3d6ddf248968978249cb85aab2aa919e2018a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:05 +0200
+
+ newsfragments: Add release note for MR !650
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/650
+
+ (cherry picked from commit 007c457bb6798377f7767e3e1b1174216cef366a)
+
+commit 6545aa5ea8b1ac99a5e0578b701e61ecbb4b1b6f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:04 +0200
+
+ newsfragments: Add release note for MR !550
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/550
+
+ (cherry picked from commit 7f28c1fa00cbd6f571de737d46f46c8c9f01dd9b)
+
+commit dcfbf4f6d564842de9b406fa6aa087ab6bc83044
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:03 +0200
+
+ newsfragments: Add release note for MR !647
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/647
+
+ (cherry picked from commit 2c4ebcd9241d96fbc0950baa02a41b5a70be52ce)
+
+commit f5ed3eaf71d64ce012ab6ba6f6adfd384ad14ab0
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:02 +0200
+
+ newsfragments: Add release note for MR !645
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/645
+
+ (cherry picked from commit 494e2b55587beacb99d9fb09efaaf588aafa15fc)
+
+commit 4634c4bde3a5891f25ecdddd7edf3e275be8dd11
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:01 +0200
+
+ newsfragments: Add release note for MR !643
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/643
+
+ (cherry picked from commit 24a5d6f4c7bfd999a4e88f0efecc32a8ec36e705)
+
+commit 094750b1dfbdd044fb1dd409e6e00387a8b63bb8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:05:00 +0200
+
+ newsfragments: Add release note for MR !642
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/642
+
+ (cherry picked from commit 885574ccc2a98ac034455f3c2dc391e261238da8)
+
+commit 506f6f5085ab8835ec60d7c72fe84086272ae052
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:59 +0200
+
+ newsfragments: Add release note for MR !641
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/641
+
+ (cherry picked from commit 692ac5d8d96d36d9f7e49996d6c8bd8c48410887)
+
+commit 9a06a54452b97279b9b12a38723f4a09fae87beb
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:58 +0200
+
+ newsfragments: Add release note for MR !640
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/640
+
+ (cherry picked from commit f5e6f926392be74cda787a8d5248a5b7a03f745c)
+
+commit d9b1139927b0267c8cc7c6e0ce4f20ef8819067c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:57 +0200
+
+ newsfragments: Add release note for MR !639
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/639
+
+ (cherry picked from commit 01614368715e93956bcc116b55e80c88dbc285f5)
+
+commit 0a8e8a3d4d557a971291c3fdb1d951eda2631167
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:56 +0200
+
+ newsfragments: Add release notes for MR !638
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/638
+
+ (cherry picked from commit ab5b9b2293e0b689ce51baa951a1859f95fa3455)
+
+commit 6fc8dc5a020b833bb3fcb57e16fb8e8665166902
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:55 +0200
+
+ newsfragments: Add release note for MR !635
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/635
+
+ (cherry picked from commit 77c3626c4b5b108b66f8764940d92f8da3e5a545)
+
+commit 33ec34cfe3b047f04eddad51520a640f5d653209
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:54 +0200
+
+ newsfragments: Add release note for MR !634
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/634
+
+ (cherry picked from commit f89a4be7049f498e0fc5e7a698cc6751bc86495a)
+
+commit 247fc90a39f26d70e10ecccc7484dfd01c530a2f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:53 +0200
+
+ newsfragments: Add release note for MR !629
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/629
+
+ (cherry picked from commit 10fea431c39c118996f3d8624ea04b24c43792d3)
+
+commit cd0b7ed82f5c4eb5f5bb983b17bce5755fac5a6b
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:52 +0200
+
+ newsfragments: Add release note for MR !627
+
+ Full link: https://gitlab.com/sane-project/backends/-/merge_requests/627
+
+ (cherry picked from commit 0e20fd74dee4c0ae9140d1c023ae66e6a2df621d)
+
+commit c21f16c11aefad41cd21bfc0b8fba919319b75ce
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:51 +0200
+
+ NEWS: Move unreleased release notes to newsfragments directory
+
+ (cherry picked from commit 8ca61ed2dae709810a91919347d7890bcda55998)
+
+commit 0169fe6f842ce543d1e2caa40dc2bcec5a8262a1
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-30 20:04:50 +0200
+
+ newsfragments: Document how to provide release notes
+
+ (cherry picked from commit 74cd7d0a7bb4d228f72c4957e9914634c2033cbc)
+
+commit 87f27311f75182ea9a431e25d75485b263abbcc3
+Merge: a38919bf7f14 7353cd598ba2
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 21:26:53 +0000
+
+ Merge branch 'release-1.0.33-backports' into 'release-1.0.33'
+
+ [1.0.33] Miscellaneous backports
+
+ See merge request sane-project/backends!674
+
+commit 7353cd598ba2a22262268dd6ef1649530ff05433
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:18 +0200
+
+ genesys: Remove unneeded per-scanner register setup
+
+ These register values are overwritten later.
+
+commit 022f63161102fc00c377b5b4a2754095bb7a0707
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:17 +0200
+
+ genesys: Fixed offset calibration on certain gl841 devices
+
+commit 374ba39e46d26aca072b529c9028f51cbdaed959
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:16 +0200
+
+ genesys: Use consistent initial exposure for led calibration on gl841
+
+commit 9527a9e6231fb88d796e5b3840c2ec73bfd52e37
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:15 +0200
+
+ genesys: Fix inconsistent exposure values in led calib in testing mode
+
+commit 8eb2c0e4044faf150f166e32a81837a192bcde61
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:14 +0200
+
+ genesys: Ensure sensor exposure is up-to-date when scanning on gl841
+
+commit dd1abe938031be3948c3deeb6fa26f2afc082ce4
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:13 +0200
+
+ genesys: Reuse gl124 led calibration acceptability criteria for gl841
+
+commit 9611b9d757ed33bdbe72b404d88973f271e80d18
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:12 +0200
+
+ genesys: Remove no longer used led calibration fallback code on gl841
+
+ This was used only on scanners which did not have calibration target
+ intensity value. All gl841 scanners now have such setting, so the code
+ can be removed.
+
+commit b3f6637ae2eca2635f0e7a82ac1cf8014fd73572
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:11 +0200
+
+ genesys: Specify target white level for all gl841 devices
+
+commit 4d1246b5070548ccfffbae34f9ae4f978bbee774
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:10 +0200
+
+ genesys: Remove duplicate register write during led calibration on gl841
+
+commit 408ee7a770964229b987399526b1eb7c88e53de8
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:09 +0200
+
+ genesys: Reset registers after move during led calibration on gl841
+
+commit 9669c6c33584cdae82ed341bfa36c5716e814c51
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:08 +0200
+
+ genesys: Remove erroneous register write on LiDE 80
+
+commit bafd6e134a1a3599a71319379963ea8a280ebf10
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:07 +0200
+
+ genesys: Clean up exposure calibration on gl841
+
+commit 4fce71b55b158283c8e369f21f9752b1e3f61b92
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:06 +0200
+
+ genesys: Use more robust gain calibration on gl841
+
+commit cc3bf08055601ec8f3896351cfefbd1b30601d89
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:05 +0200
+
+ genesys: Remove duplicate register writes in gl841 calibration
+
+commit 7dcffcf75f6633acb6f1f3da6d50b75bdb42bf88
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:04 +0200
+
+ genesys: Use host-side gray instead of device-side true-gray on gl841
+
+ True gray mode is not handled correctly by devices: they have bugs that
+ lead to incorrect LED color being emitted (e.g. dark red) and thus this
+ feature is completely unusable. At least LiDE 35/40/50, LiDE 60 and LiDE
+ 80 are affected.
+
+ Simpy disabling true-gray unfortunately leads to even worse outcome
+ because the scanner then simply proceeds to perform a color scan.
+
+ To work around these problems we do a normal color scan and then produce
+ gray output based on the color data. This will satisfy the use cases
+ when correct gray is needed. In cases when it is sufficient to construct
+ gray from a single color channel, the color filter setting could be
+ used.
+
+commit 440ec4f80cdc4e37c034042c135b531a7f69fe38
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:03 +0200
+
+ genesys: Implement host-side gray support
+
+commit 6bec3fcfa69d3ec63fe53cb4f156d0a22c774878
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:02 +0200
+
+ genesys: Implement image pipeline for merging color channels to gray
+
+commit b7b37b4f4502c61f67a6ada6b5520d59435a298c
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:01 +0200
+
+ genesys: Rename ImagePipelineNodeMergeMono{Lines -> LinesToColor}
+
+commit e64aad283f240755e1e9d049a5589541f251afef
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:21:00 +0200
+
+ genesys: Remove true_gray variable by deriving its value directly
+
+commit 72d0c39656a30fe18b24bc23679344377a80d86e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:20:59 +0200
+
+ genesys: Fix incorrect scan exposure setup on gl841
+
+ When sensor exposure values are significantly different from each other
+ the total scan exposure will be too low leading to the device becoming
+ confused and significantly
+
+commit 7b25c36c1544ab5988fe17ca8ca544cfdb21cc1f
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:20:58 +0200
+
+ genesys: Inline gl841_get_led_exposure()
+
+commit 341b2ff6e6ec4a1e4b39bda6170972e0d4781621
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:20:57 +0200
+
+ genesys: Remove broken two-table feeding support from gl841
+
+ At least on LiDE 50 two-table feeding caused unexplained motor spin-up
+ failures on certain motor exposures. Various register modifications
+ showed that there's high likelihood on device-side bug. Even the
+ official drivers don't use proper two-table feeding.
+
+commit df20a7a46e19848307b025c9450a82bab67aff9e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:20:56 +0200
+
+ genesys: Remove unused two-table feeding support from gl847
+
+commit 3787dfdb4b846473fa0e2c224655e1273ad33037
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:20:55 +0200
+
+ genesys: Remove unused two-table feeding support from gl846
+
+commit 491a08ba96cabfe682e0fdd9c2248ea47ecc0bb3
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-27 22:20:54 +0200
+
+ genesys: Remove unused two-table feeding support from gl124
+
+commit c6df5fd69a6417a2a668733bf4af9a799865f8c6
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-26 14:53:15 +0200
+
+ genesys: Enable gamma setting when contrast or brightness is adjusted
+
+ Brightness and contrast adjustments are handled via gamma tables and
+ thus gamma functionality is required for these settings to have any
+ effect.
+
+ Previously if the device has a sensor with identity gamma
+ (gamma = {1, 1, 1}), then gamma tables were turned off, consequently
+ brightness and contrast settings had no effect.
+
+ The underlying issue was identified by Gunnar Hjalmarsson
+ <gunnarhj@ubuntu.com> and STK.
+
+commit 2cc2f8a26b815698e7152bff6d51ed93eb7af050
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-26 14:53:14 +0200
+
+ genesys: Store contrast and brightness adjustments in session params
+
+commit a38919bf7f14ca50f43e425bd3db8f698cfdd0cc
+Merge: 65b66849849c eb097b632c70
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-25 02:23:57 +0000
+
+ Merge branch 'release-1.0.33-backports' into 'release-1.0.33'
+
+ [1.0.33] Miscellaneous backports
+
+ See merge request sane-project/backends!668
+
+commit eb097b632c7067f02d270df8ac85d36900d4dd4a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-15 23:51:51 +0200
+
+ genesys: Address wrong indentation warning
+
+ This is separate commit because the previous commit introducing this
+ warning is completely unrelated and would not benefit from this change
+ being included.
+
+ (cherry picked from commit 75801bffd30105511e76a74ef6db8714ba1b3c7f)
+
+commit 944183c3796d4b57e129a39c76f4e53040890ae6
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-12-07 22:16:13 -0800
+
+ genesys: Added transparency button option
+
+ This is introduced primarily for the ScanJet G4010 which has "Scan Film"
+ buttons.
+
+ (cherry picked from commit 8347191b5fd597bd2b34e74cc57b2d9849b653f8)
+
+commit b83f7d3cadd13bd19d5dfb2a0f5b0ffbf0f0d9a5
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-05-05 12:37:11 -0700
+
+ genesys: updated button support for HP Scanjet G4010
+
+ (cherry picked from commit fa414e46b1c724721eabef690fa622c2c3d0478a)
+
+commit 0114403ac58f1a773510ca17a14b70ef9d3d5e76
+Author: Peter Seiderer <ps.report@gmx.net>
+Date: 2021-03-15 20:53:55 +0100
+
+ genesys: fix gcc-4.8 compile
+
+ Fixes:
+
+ genesys/utilities.h:229:23: error: invalid initialization of non-const reference of type 'std::basic_ios<char>&' from an rvalue of type '<brace-enclosed initializer list>'
+ stream_{stream}
+ ^
+ genesys/image_pipeline.cpp:715:19: error: invalid initialization of non-const reference of type 'genesys::ImagePipelineNode&' from an rvalue of type '<brace-enclosed initializer list>'
+ source_{source}
+ ^
+
+ Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+ (cherry picked from commit 1db13a713f281c66d3eaebab06a33d735ea9c20e)
+
+commit 63fffd74038e712cc05e879f33c03b111bfce0f7
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-25 03:06:29 +0200
+
+ genesys: Improve gray scan quality on LiDE 110
+
+ The fix has been suggested by Matthew Petroff <matthew@mpetroff.net>
+
+ (cherry picked from commit ea0e57a05e728a2d8efe38494cfd9a6ae0591b3f)
+
+commit cf8835625a42c28937099e3609cb309ab3b9fd91
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-25 03:06:28 +0200
+
+ genesys: Improve gray scan quality on LiDE 120
+
+ The fix has been suggested by Matthew Petroff <matthew@mpetroff.net>
+
+ (cherry picked from commit 8ceb1dde8da201e6cccd4cc64d2247993b6b2cc8)
+
+commit 3a890c7100fbbcb274a912546db5fd103362166e
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-25 03:06:27 +0200
+
+ genesys: Improve gray scan quality on LiDE 210
+
+ The fix has been suggested by Matthew Petroff <matthew@mpetroff.net>
+
+ (cherry picked from commit 711a3c5c143fdf6b5b05a874c0a522b7796af874)
+
+commit b16baa642b0e00928faf480b57709c42114faa80
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-25 03:06:26 +0200
+
+ genesys: Improve gray scan quality on LiDE 220
+
+ The fix has been suggested by Matthew Petroff <matthew@mpetroff.net>
+
+ (cherry picked from commit 723eaa5917c197cad2c4621f5d2a3f83451c0ecc)
+
+commit 8414a1db9bcab7f16b79d67dbefa652f0e420b10
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-25 03:06:25 +0200
+
+ genesys: Move gl124 0x0c reg definition to sensor tables
+
+ (cherry picked from commit bd0f15f5855b01c698f3a2da623ebc759401ed66)
+
+commit bffda89bc7893fac96d0ac1f65fe7d90c5af215a
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-12-13 22:38:49 +0200
+
+ backend/Makefile: Reduce excessive line lengths
+
+ (cherry picked from commit ed51223cfb9d1bfac30bd21fc5f567e335875d58)
+
+commit 1c8bb97b69b4987f1f5d1a854739323bf7e0d3a0
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-11-21 21:11:27 +0100
+
+ epson2: add driver to main sane manpage
+
+ Reported missing by A E Lawrence via mail. Thanks!
+
+ (cherry picked from commit bb941829822cb9a22989434e59be2009105e1975)
+
+commit d6189aa7894e46ab1fe698c9d38358e2d876b1ef
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-12-03 12:34:17 +0100
+
+ epson2/epsonds: add new IDs provided by Epson
+
+ Sent by Nakamura Iwao via sane-devel mailing list on Nov, 29th. I only
+ sorted the epson2 descriptions alphabetically.
+
+ Subject: [sane-devel] Additional model support for epson2 / epsonds backend
+ Message-ID: <TYCPR01MB7872CDD0461B7572D5DBD7A8EB669@TYCPR01MB7872.jpnprd01.prod.outlook.com>
+
+ (cherry picked from commit 91c24b29550e252dad2dace10ccc1ddcfa62f4b4)
+
+commit 5152108769dca77f5a75e2965b2852a4bd76eb2e
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-10-20 22:25:10 +0200
+
+ Fix segfault sane-escl.
+
+ (cherry picked from commit 72992f4e25ddbc000b79a2a66f41e5be98dc2120)
+
+commit 59b669ae3c774cca2da2487cd87762fc8ca1b707
+Author: Jindřich Makovička <makovick@gmail.com>
+Date: 2021-02-14 13:16:48 +0100
+
+ escl: Follow the 302 redirects
+
+ Recent ipp-usb redirects from http://127.0.0.1 to http://localhost
+
+ (cherry picked from commit 1b5344ba56a0d49ff583e734705acae5a88088d9)
+
+commit 65b66849849cc7f64e49f10a8ebe79d96acffbe6
+Merge: 66f2673d714d 88934578ec51
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-09-26 06:35:31 +0000
+
+ Merge branch 'pdf-on' into 'master'
+
+ The name of the device, allows to disable the use of the PDF format.
+
+ See merge request sane-project/backends!651
+
+commit 88934578ec5150cbd479978c51f85843a5bb9d54
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-09-26 06:35:31 +0000
+
+ The name of the device, allows to disable the use of the PDF format.
+
+commit 66f2673d714d7f0562f194b2d4dbc7843fc06988
+Merge: 55ac7b306024 d25f5db73924
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-09-22 15:14:15 +0000
+
+ Merge branch 'add-format-pdf' into 'master'
+
+ Add format pdf.
+
+ See merge request sane-project/backends!648
+
+commit d25f5db73924dcc89647ae9f7890ebb34653b5b9
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-09-22 15:14:15 +0000
+
+ Add format pdf.
+
+commit 55ac7b3060243e80e416e30824600877cfd5de0c
+Merge: 8ad3b1127f58 d12533fced66
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-09-22 10:18:26 +0000
+
+ Merge branch 'kkaempf/add_Reflecta_RPS_10M' into 'master'
+
+ Add Reflecta RPS 10M to pieusb
+
+ See merge request sane-project/backends!650
+
+commit d12533fced6660a34043950ec14c63b80cac0219
+Author: Klaus Kämpf <kkaempf@suse.de>
+Date: 2021-09-21 14:06:56 +0200
+
+ Add Reflecta RPS 10M to pieusb
+
+ (aka Pacific Image PrimeFilm XAs)
+
+ Thanks to Thomas Wilshaw for testing.
+
+ Signed-off-by: Klaus Kämpf <kkaempf@suse.de>
+
+commit 8ad3b1127f5875b31c29162d198375b0940eca04
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-09-20 20:31:33 -0700
+
+ po: en_Gb translation.
+
+ Nothing much to do.
+ Just a couple of new msgs from the epsonds backend update.
+
+commit c540a3a354edb9accb09c035be81a2894c7fa8c0
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-09-20 20:09:29 -0700
+
+ po: update po files prior to translations for release 1.0.33
+
+commit 66d65ba37d3b07b256645b8433cbebfc9fc817b6
+Merge: a3558af0fc08 5698be8cce8a
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-09-21 03:05:57 +0000
+
+ Merge branch 'uk_update1' into 'master'
+
+ po: Update Ukrainian translation
+
+ See merge request sane-project/backends!649
+
+commit 5698be8cce8a1b01bf2dacd05058509f1d2af07e
+Author: Yuri Chornoivan <yurchor@ukr.net>
+Date: 2021-09-20 19:47:14 +0300
+
+ po: Update Ukrainian translation
+
+commit a3558af0fc08e40a4b7ee0d9d565df6451a11bed
+Merge: 54e3fb2094b7 0400e23d30bd
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-09-18 18:38:12 +0000
+
+ Merge branch 'epson2-uninitialized' into 'master'
+
+ epson2: fix up uninitialized variables
+
+ See merge request sane-project/backends!636
+
+commit 0400e23d30bd8b321e2904b89ca8a1980242f7a7
+Author: Adriaan de Groot <groot@kde.org>
+Date: 2021-06-14 13:42:25 +0200
+
+ uninitialized: set *status on all returns out of e2_ssend()
+
+commit 54e3fb2094b7c406913d85a7eb653c27abbed052
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2021-09-06 16:19:04 +0200
+
+ Added the lide70 news to NEWS, in view of the upcoming release.
+ Removed gamma remark from lide70 manpage:
+ default color quality is getting better, though still not perfect.
+
+commit 1d191ab8017737f5c24109a29a07503275a169fe
+Merge: 563afbe0fa41 e1b5c43b5636
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-31 20:09:33 +0000
+
+ Merge branch 'escl-add-models' into 'master'
+
+ Escl add models Epson ET-6100
+
+ See merge request sane-project/backends!647
+
+commit e1b5c43b56360b2d05d3a2a20ab4c983ab8a335c
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-31 20:09:33 +0000
+
+ Escl add models Epson ET-6100
+
+commit 563afbe0fa410d52b99dc2a4672faa17e57890da
+Merge: c3cdf4102c09 e84dc47f73d9
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-08-29 23:16:42 +0000
+
+ Merge branch '505-issues-in-man-pages' into 'master'
+
+ Resolve "Issues in man pages"
+
+ Closes #505
+
+ See merge request sane-project/backends!646
+
+commit e84dc47f73d956a5d81db124c20bd328643aee44
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-08-29 16:00:23 -0700
+
+ doc: errors corrected by translator.
+
+ Many thanks to translator hmartink for raising these issues.
+
+commit c3cdf4102c0951cfd2e7115eec713d0cb0ca8064
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-28 09:03:42 +0000
+
+ Update pixma.desc
+
+commit 2ad66b6bec313805b5dc4eba71a7b2b2621a4caf
+Merge: c798d85eafe5 fc99bbe78491
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-27 19:00:26 +0000
+
+ Merge branch 'add-models' into 'master'
+
+ Add models
+
+ See merge request sane-project/backends!645
+
+commit fc99bbe7849102cff6d7604e03c7e4b963131163
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-27 19:00:26 +0000
+
+ Add models
+
+commit c798d85eafe51597d45d72b0a97c892b5ecc37c5
+Merge: 26749cee5348 94f25af5d846
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-27 14:53:31 +0000
+
+ Merge branch 'cleaning-doc-escl' into 'master'
+
+ Alphabetical classification by make and model
+
+ See merge request sane-project/backends!644
+
+commit 94f25af5d8460b3b12fd06b946a0d87c1fde9e23
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2021-08-27 16:09:09 +0200
+
+ Alphabetical classification by make and model
+
+commit 26749cee5348dbeb4708eb40087d867cd191df78
+Merge: 1ba63878e40a 4929387246d7
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-23 07:57:32 +0000
+
+ Merge branch 'fix-redirection-curl' into 'master'
+
+ Fix redirect request.
+
+ See merge request sane-project/backends!643
+
+commit 4929387246d70ca5b812886dd3d1839112614407
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-23 07:57:32 +0000
+
+ Fix redirect request.
+
+commit 1ba63878e40a74e7863a3f2fab53c40d47dbaf0b
+Merge: f5b4e914c675 47963e059ed7
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-10 20:32:29 +0000
+
+ Merge branch 'canon-pixma-new-model' into 'master'
+
+ Canon pixma new model
+
+ See merge request sane-project/backends!642
+
+commit 47963e059ed76042984d19de2563fde75b3519aa
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-08-10 20:32:29 +0000
+
+ Canon pixma new model
+
+commit f5b4e914c67551ef38d6810dde05f12ce2f504ff
+Merge: c6fd7de5f10c 6ea78a79ca43
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-08-03 20:21:38 +0000
+
+ Merge branch 'epson-xp-455' into 'master'
+
+ epson2: Add XP-452 455 Series as supported
+
+ See merge request sane-project/backends!641
+
+commit 6ea78a79ca43ef5fd0d8c98132de0811d128c788
+Author: John Keeping <john@keeping.me.uk>
+Date: 2021-07-31 18:03:33 +0100
+
+ epson2: Add XP-452 455 Series as supported
+
+ Tested via simple-scan with a device branded as XP-455 but which
+ identifies in the device descriptor's product string as "XP-452 455
+ Series".
+
+commit c6fd7de5f10c8b4a55d4e6fa0eb6d6f1f34225ad
+Merge: 9a0fa0da86d4 4c99352dda05
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-07-29 15:34:30 +0000
+
+ Merge branch 'escl-support-TR7500' into 'master'
+
+ Escl support tr4520 and tr7500
+
+ See merge request sane-project/backends!640
+
+commit 4c99352dda057319ae3586b89d8babafd63531da
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-07-29 15:34:29 +0000
+
+ Escl support tr4520 and tr7500
+
+commit 9a0fa0da86d4efde5d3441222be3de414165a96f
+Merge: 7b2c4a0bf733 3bbf104ea0b2
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-07-17 22:40:54 +0000
+
+ Merge branch '231-canon-lide-120-wrong-size-with-y-x-after-update-to-sane-backends-1-0-28-1078-g5747ffa9' into 'master'
+
+ Resolve "Canon LiDE 120: wrong size with -y -x after update to sane-backends 1.0.28-1078-g5747ffa9"
+
+ Closes #231
+
+ See merge request sane-project/backends!423
+
+commit 3bbf104ea0b28f543bb38e104862e7b4692bb262
+Author: Ralph Little <skelband@gmail.com>
+Date: 2020-05-02 11:12:22 -0700
+
+ genesys: Corrected motor slope for LiDE 120
+
+commit 7b2c4a0bf7336ad819bada7837004da23af1aef6
+Merge: 1e88e1504ef7 bb8c0b088c39
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-07-03 15:59:39 -0700
+
+ Merge branch 'epsonds_updates'
+
+commit bb8c0b088c395f77b5f3e618fb46fe7f51db777a
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-07-02 09:31:12 -0700
+
+ epsonds: Correction from Epson for unused parameter fail in pipeline.
+
+commit b74dfb300489b37e6fa697a1d19caaa0a0ac920a
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-06-22 12:41:44 -0700
+
+ epsonds: corrections from Epson following first review.
+
+ Contains some rework to address concerns from pipeline build.
+
+commit 9282aac9bee8ad141765fa30ee502bbfbcfe5251
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-06-20 14:57:08 -0700
+
+ epsonds: Fix up white space issues in patch.;
+
+commit bc6035624d7b9bd32600e214d80ab10e17abbd2b
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-06-20 14:49:56 -0700
+
+ epsonds: major product support update from Epson.
+
+ Patch provided by Nakamura Iwao at Epson Japan.
+
+commit 1e88e1504ef77f09d49da95d393a0af09d20f7fa
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-07-03 15:55:25 -0700
+
+ epsonds: Merge to master
+
+commit 911be8af68ebd3b53ef91422bf5e3c9c34a8d9f5
+Merge: 1a95dc7cde56 eb42ad08d571
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-06-19 19:43:38 +0000
+
+ Merge branch 'cleanup_major_minor' into 'master'
+
+ treewide: use SANE_CURRENT_* macros consistently
+
+ See merge request sane-project/backends!632
+
+commit eb42ad08d571043d61fc7a88655642aaff241871
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-06-08 17:13:51 +0200
+
+ treewide: use SANE_CURRENT_* macros consistently
+
+ Backends use a mixture of SANE_CURRENT_{MAJOR | MINOR} and V_{MAJOR |
+ MINOR} with all kind of permutations. I was confused by this and one
+ comment in pieusb.c tells me I was not alone. Some items in old
+ changelogs suggest to use the SANE_CURRENT_ macros in backends, so let's
+ switch to do that with the exception of net.c and dll.c. Done with:
+
+ $ find backend -name '*.[ch]' | xargs sed -i '/nearly every/ ! { s/\<V_M/SANE_CURRENT_M/g }'
+ $ git checkout backend/net.c backend/dll.c
+
+ And manually removing the comment from pieusb.c. Everything still builds
+ fine.
+
+commit 1a95dc7cde56eb98829efaeb07f46746116446a8
+Merge: 026430c293d1 63942f7a7473
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-06-18 22:00:16 +0000
+
+ Merge branch 'gt68xx/proper_free' into 'master'
+
+ gt68xx: fix use-after-free and two mem leaks
+
+ See merge request sane-project/backends!634
+
+commit 63942f7a7473496d1160f02f5c1da3620525690d
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-06-10 11:32:04 +0200
+
+ gt68xx: fix use-after-free and two mem leaks
+
+ The config file argument needs to be freed when a device is not set.
+ That was missed for two occasions. The other occasion was freeing it
+ unconditionally leading to a use-after-free for the regular use case.
+
+ Fixes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=980311
+
+ This is the least intrusive fix. The code really wants to be refactored.
+ Tested with a Mustek 1200 UB Plus.
+
+commit 026430c293d14d531af807174d3bd9fbb6523015
+Merge: e86175e726ef 7a28e66a162c
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-06-18 21:59:54 +0000
+
+ Merge branch 'libera_chat' into 'master'
+
+ docs/sane.man: Move to libera.chat
+
+ See merge request sane-project/backends!637
+
+commit 7a28e66a162cbcbafb9f8777c63614ea3ddc8f9b
+Author: Zdenek Dohnal <zdohnal@redhat.com>
+Date: 2021-06-17 08:58:44 +0200
+
+ docs/sane.man: Move to libera.chat
+
+commit e86175e726ef913e96145aafbca08f1ce449b817
+Merge: 980bb29cb85d b1021e09e435
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-06-18 19:08:15 +0000
+
+ Merge branch 'ps-devel-fix-microtek-va_list-001' into 'master'
+
+ Fix uclibc compile (include stdarg.h for va_list/va_start/va_end), fix NDEBUG compile (PDBG/pixma_dbg)
+
+ See merge request sane-project/backends!638
+
+commit b1021e09e435e6c727303b9bfa2f69eb8fcf958a
+Author: Peter Seiderer <ps.report@gmx.net>
+Date: 2021-06-18 20:10:02 +0200
+
+ backend/pixma: fix compile with NDEBUG
+
+ Fixes:
+
+ .../host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-uclibc/9.3.0/../../../../x86_64-buildroot-linux-uclibc/bin/ld: ./.libs/libpixma.a(libpixma_la-pixma_common.o): in function `sanei_pixma_read_image':
+ pixma_common.c:(.text+0xc05): undefined reference to `DBG'
+ .../host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-uclibc/9.3.0/../../../../x86_64-buildroot-linux-uclibc/bin/ld: pixma_common.c:(.text+0xc38): undefined reference to `DBG'
+ .../host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-uclibc/9.3.0/../../../../x86_64-buildroot-linux-uclibc/bin/ld: pixma_common.c:(.text+0xcbf): undefined reference to `DBG'
+
+ Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+
+commit 7dafc52dda96fa68f39058b10eec3d822fd5ea9d
+Author: Peter Seiderer <ps.report@gmx.net>
+Date: 2021-06-18 19:56:56 +0200
+
+ backend/sm3600-scanutil: fix uclibc compile (include stdarg.h for va_list/va_start/va_end)
+
+ Fixes:
+
+ sm3600-scanutil.c: In function ‘debug_printf’:
+ sm3600-scanutil.c:69:3: error: unknown type name ‘va_list’
+ 69 | va_list ap;
+ | ^~~~~~~
+ sm3600-scanutil.c:48:1: note: ‘va_list’ is defined in header ‘<stdarg.h>’; did you forget to ‘#include <stdarg.h>’?
+ 47 | #include "sm3600-scantool.h"
+ +++ |+#include <stdarg.h>
+ 48 |
+ sm3600-scanutil.c:75:3: warning: implicit declaration of function ‘va_start’; did you mean ‘sane_start’? [-Wimplicit-function-declaration]
+ 75 | va_start(ap,szFormat);
+ | ^~~~~~~~
+ | sane_start
+ sm3600-scanutil.c:76:28: warning: passing argument 3 of ‘vfprintf’ makes pointer from integer without a cast [-Wint-conversion]
+ 76 | vfprintf(stderr,szFormat,ap);
+ | ^~
+ | |
+ | int
+ In file included from ../include/sane/sanei_config.h:50,
+ from sm3600.c:70:
+ .../host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/stdio.h:339:23: note: expected ‘__va_list_tag *’ but argument is of type ‘int’
+ 339 | __gnuc_va_list __arg);
+ | ~~~~~~~~~~~~~~~^~~~~
+ In file included from sm3600.c:94:
+ sm3600-scanutil.c:77:3: warning: implicit declaration of function ‘va_end’ [-Wimplicit-function-declaration]
+ 77 | va_end(ap);
+ | ^~~~~~
+
+ Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+
+commit 145e16008e7479ea58278e55f71d6dfcd4db714b
+Author: Peter Seiderer <ps.report@gmx.net>
+Date: 2021-06-18 19:51:45 +0200
+
+ backend/microtek: fix uclibc compile (include stdarg.h for va_list/va_start/va_end)
+
+ Fixes:
+
+ microtek.c: In function ‘MDBG_INIT’:
+ microtek.c:163:3: error: unknown type name ‘va_list’
+ 163 | va_list ap;
+ | ^~~~~~~
+ microtek.c:78:1: note: ‘va_list’ is defined in header ‘<stdarg.h>’; did you forget to ‘#include <stdarg.h>’?
+ 77 | #include "microtek.h"
+ +++ |+#include <stdarg.h>
+ 78 |
+ microtek.c:164:3: warning: implicit declaration of function ‘va_start’; did you mean ‘sane_start’? [-Wimplicit-function-declaration]
+ 164 | va_start(ap, format);
+ | ^~~~~~~~
+ | sane_start
+ microtek.c:165:54: warning: passing argument 4 of ‘vsnprintf’ makes pointer from integer without a cast [-Wint-conversion]
+ 165 | vsnprintf(_mdebug_string, MAX_MDBG_LENGTH, format, ap);
+ | ^~
+ | |
+ | int
+ In file included from ../include/sane/sanei_config.h:50,
+ from microtek.c:70:
+ .../host/x86_64-buildroot-linux-uclibc/sysroot/usr/include/stdio.h:359:57: note: expected ‘__va_list_tag *’ but argument is of type ‘int’
+ 359 | const char *__restrict __format, __gnuc_va_list __arg)
+ | ~~~~~~~~~~~~~~~^~~~~
+ microtek.c:166:3: warning: implicit declaration of function ‘va_end’ [-Wimplicit-function-declaration]
+ 166 | va_end(ap);
+ | ^~~~~~
+
+ Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+
+commit 980bb29cb85dff9d1018ca82fd7ed24944fe580f
+Merge: a78abbbdbadf 667d8f7acc98
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-06-12 12:41:05 +0000
+
+ Merge branch 'full-location-header' into 'master'
+
+ The job URL is adapted to the information provided by the value of the Location property.
+
+ See merge request sane-project/backends!635
+
+commit 667d8f7acc985a0c25970b67e52cd4185113a412
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2021-06-12 00:57:07 +0200
+
+ The job URL is adapted to the information provided by the value of the Location property.
+
+commit a78abbbdbadfe5ab2ea0208c390e1e5b209785f5
+Merge: cd1733c345ca cadc4de1a744
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-06-08 16:58:30 +0000
+
+ Merge branch 'epson2/cleanup-desc' into 'master'
+
+ epson2: cleanup desc and remove BUILD versioning
+
+ See merge request sane-project/backends!631
+
+commit cadc4de1a74435ee3d569f7a82444ea23b93c9e6
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-06-08 09:01:54 +0200
+
+ descriptions: remove unneeded false :new flags
+
+ It is the default
+
+commit be5b2471800d70d74c46c01b5af4bb1e19e0f527
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-06-08 08:59:26 +0200
+
+ epson2: desc: remove unneeded URL
+
+ No need for a generic URL at a specific scanner
+
+commit 65b7e317a6d90bdf0950328c05f695824038d7e2
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-04-09 22:10:50 +0200
+
+ epson2: remove BUILD versioning
+
+ Makes no sense these days. Sane version is good enough.
+
+commit cd1733c345ca4f4e69026f88ac4efaa2866337c1
+Merge: ffa7a82900bf 53641f834238
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-06-08 05:14:40 +0000
+
+ Merge branch 'epson2-new-usbids' into 'master'
+
+ epson2: improve sorting of usbids and add new ones provided by Epson
+
+ See merge request sane-project/backends!630
+
+commit 53641f834238a9f200d00c3d2bdf6ed0400ab83a
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-05-29 12:33:09 +0200
+
+ epson2: add usb ids provided by Epson
+
+ This patch is based on the file "epson2_fix.patch" from the archive
+ "SANE-patch-for-epsonds-epson2-20210518-5.zip" sent to the sane-devel
+ mailing list. The following changes have been made on top of the
+ original patch:
+
+ * in epson2.desc, the upstream entry for ET-2600 has been dropped
+ because a better version was provided in the new additions
+ * the seperate entry for XP-240 has been merged into the combined entry
+ for XP-243/245/247
+ * the new entries have been sorted into the existing entries
+ * original changes to epson2_usb.c have been dropped and were recreated
+ using the updated epson2.desc and epson2usb.pl
+
+commit db7a285e7425879e2a5c67536b46c1b4d7dab743
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-05-29 12:16:44 +0200
+
+ epson2: use 4 digits for USB IDs
+
+ Use the output of the updated epson2usb helper. Affects only the
+ sorting, no functional change. Also, fix minor whitespace issues at the
+ end of the file.
+
+commit 28176df499d7772733623cff6c4401416f26466e
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-05-29 12:13:35 +0200
+
+ tools: epson2usb: always use 4 digits for USB IDs
+
+ Otherwise the sorting is too confusing when 3- and 4-digits are mixed.
+
+commit ffa7a82900bf3ce05581a1e6cba50a49cb9ac31f
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-05-31 21:57:37 -0700
+
+ po: remove trailing blank line, breaks pipeline
+
+commit 19b9b41e4d3df24624a99727bb6f4158784a7028
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-05-31 21:54:23 -0700
+
+ po: Add zh_CN locale to build.
+
+commit 257529d39ed5e3e829b5601a459e697460f4493b
+Merge: 075bd9b7e94a b7055f48593d
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-06-01 04:45:06 +0000
+
+ Merge branch 'master' into 'master'
+
+ Added SANE backend translation for Simplified Chinese.
+
+ See merge request sane-project/backends!629
+
+commit b7055f48593de252ba0c17155cab1b9ead7bb865
+Author: Tyson Tan <tysontan@tysontan.com>
+Date: 2021-05-21 13:55:05 +0000
+
+ Corrected some entries from Ustushi's S-Chinese translations.
+
+commit 99f378360838e457f5350d719f6ef606f2446cd6
+Author: Tyson Tan <tysontan@tysontan.com>
+Date: 2021-05-21 08:34:57 +0000
+
+ Added SANE backend translation for Simplified Chinese.
+
+commit 075bd9b7e94aab0c6b7996bccca298460b3ca2a0
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2021-05-25 14:25:28 +0200
+
+ canon_lide70: faster and brighter scanning at 600dpi for the lide600
+
+commit 2b0e4bc4979412ff70d899b5cefa9e8e0c092039
+Merge: 8e85691dd9e4 28ad82bd423a
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-05-13 15:44:34 +0000
+
+ Merge branch 'scanimage_man_patch_update' into 'master'
+
+ doc: add man change clarification to deal with debian patch.
+
+ See merge request sane-project/backends!627
+
+commit 28ad82bd423a55f35c1a67253411f801a22747ac
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-05-13 15:44:33 +0000
+
+ doc: add man change clarification to deal with debian patch.
+
+commit 8e85691dd9e48bd773fad69c29c9d5f6cd1a3b23
+Merge: e81f6b5a57b1 4fef6d6da1af
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-05-12 16:57:41 +0000
+
+ Merge branch 'reformat-scanimage-options' into 'master'
+
+ doc: reformatted the main options of scanimage
+
+ See merge request sane-project/backends!626
+
+commit 4fef6d6da1af99339a813409f5cba6419101bf4c
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-05-12 09:29:04 -0700
+
+ doc: reformatted the main options of scanimage
+
+ Following the update of saned's man page, I have reformatted the
+ scanimage options section for consistency and to correct some omissions
+ and improve readability and grammar.
+
+commit e81f6b5a57b140f2c06c0de034dcf24905dbac0c
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-05-07 11:05:48 -0700
+
+ doc: fix trailing whitespace issue
+
+commit 37fe11acd268adb1ad663e27e4f61a51eb8f2f5e
+Merge: 28f7bbfb87a1 7f21e4cac8c5
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-05-07 16:25:40 +0000
+
+ Merge branch 'saned_man_option_update' into 'master'
+
+ doc: updated saned manpage to reflect saned.
+
+ See merge request sane-project/backends!624
+
+commit 7f21e4cac8c54147bd040b55660a03a8baa2bd9c
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-05-07 09:23:28 -0700
+
+ doc: updated saned manpage to reflect saned.
+
+ saned supports long options and some clarification was necessary for
+ correctness. Also I reformatted the options section to be more
+ standard and consistent with other pages.
+
+commit 28f7bbfb87a1cbf49a61c213c9283f82020ce5a0
+Merge: 3f80ebae9381 dde45eed5efc
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-05-07 16:07:36 +0000
+
+ Merge branch 'master' into 'master'
+
+ Fix manpage typo
+
+ See merge request sane-project/backends!623
+
+commit dde45eed5efc7c3853e7e5ee78dc4e0dba315da8
+Author: Rodrigo Osorio <rodrigo@osorio.me>
+Date: 2021-05-07 10:18:22 +0200
+
+ Fix manpage typo
+
+ There is no such switch as -B in scanned
+
+commit 3f80ebae93815e602361e0ffad6b766df9aae189
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2021-04-18 17:47:49 +0200
+
+ lide70 and 600: many simplifications
+
+commit 0943bf00bd4928dbc46da4ec34d6c7693f86c4cc
+Merge: 75575e0888b3 a6964435552b
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-04-09 19:36:06 +0000
+
+ Merge branch 'epson2/better_timeouts' into 'master'
+
+ epson2: better timeouts
+
+ See merge request sane-project/backends!605
+
+commit a6964435552b0dfd79838db016d12b11d9f0a080
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-03-04 19:51:22 +0100
+
+ epson2: remove double semicolon
+
+commit 85d804760190fad2e05fc0013643821fcfcdcbc2
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-03-04 19:49:58 +0100
+
+ epson2: bail out if device is still initializing
+
+ The comment says it all.
+
+commit c70426fde28d6b8581a2db98af8ea8b7b7d93fd7
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-03-04 18:51:36 +0100
+
+ epson2: use longer USB timeout
+
+ With my 12000XL, using autofocus takes ~35 sec before scanning starts.
+ So, extend the default USB timeout.
+
+commit 75575e0888b3f3d6f60da1592676c0f5a3a3ad93
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-04-08 09:37:24 -0700
+
+ epson2: Wolfram Sang is now the maintainer for this backend.
+
+commit 7b7b36e593cf1c66d5a69eac19a6e1c5cd39c069
+Merge: d9412740acb1 730e4ada3746
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-04-07 16:24:08 +0000
+
+ Merge branch '464-genesys-backend-crashes-during-exception-handling' into 'master'
+
+ Resolve "genesys backend crashes during exception handling"
+
+ Closes #464
+
+ See merge request sane-project/backends!621
+
+commit 730e4ada37463f7f8e5116affbc3a16f48e5169e
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-04-07 09:06:39 -0700
+
+ genesys: fixed indentation again.
+
+ Hopefully, I will get it right this time. Uses 4 space indents rather
+ than 2 as used elsewhere in the code base.
+
+commit 5702046a9c1825a717ee307ee3320271de45bf1f
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-04-07 09:01:29 -0700
+
+ genesys: fix indentation
+
+commit 7ce23d05e2067b023ee397b5f6cea39a776ad6fe
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-04-06 08:41:41 -0700
+
+ genesys: ensure that vector ptr is initialized
+
+commit d9412740acb1f9d09cdfa0f5761047938f2e271a
+Merge: c5d84e5f1766 a6ffa6c8f8d3
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-04-07 03:24:46 +0000
+
+ Merge branch 'mention-advanced-in-scanimage' into 'master'
+
+ scanimage: mention when an option is advanced
+
+ See merge request sane-project/backends!613
+
+commit a6ffa6c8f8d398e090c68c1a561547c917d9f6eb
+Author: Andrew Sayers <andrew-sane-project@pileofstuff.org>
+Date: 2021-03-30 11:47:59 +0100
+
+ scanimage: mention when an option is advanced
+
+commit c5d84e5f1766760377994c4a9af9678499060f13
+Merge: df34fa403a5c 696ccd2d7b04
+Author: Klaus Kämpf <kkaempf@gmail.com>
+Date: 2021-04-06 13:39:11 +0000
+
+ Merge branch 'digitdia4000_slide' into 'master'
+
+ Enable Slide advance on DigitDia 4000 and correct misspelling
+
+ See merge request sane-project/backends!620
+
+commit 696ccd2d7b04c4dc2621cfcefbfdc1d0c73f12eb
+Author: grmpl <hmplfgrmp@yahoo.de>
+Date: 2021-04-03 18:41:06 +0200
+
+ Enable Slide on DigitDia 4000, correct misspelling
+
+commit df34fa403a5c3714eab436aee1b9a3304109bf70
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2021-04-04 16:15:10 +0200
+
+ canon_lide70
+ approximate slope tables with formula a/(1+b*(x-c))
+
+commit e16d023b2b8ef716885b77d7ddcdbe4db9d25eaf
+Merge: eb702d33c484 691d774f75ed
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-03-31 23:54:18 +0000
+
+ Merge branch 'ps-devel-fix-thread-less-compile-001' into 'master'
+
+ genesys: use usleep instead of std::this_thread::sleep_for to re-enable thread less compile
+
+ See merge request sane-project/backends!619
+
+commit 691d774f75ed904e7a1a1a532f9de963a5d2739e
+Author: Peter Seiderer <ps.report@gmx.net>
+Date: 2021-03-31 22:51:03 +0200
+
+ genesys: use usleep instead of std::this_thread::sleep_for to re-enable thread less compile
+
+ Fixes:
+
+ genesys/scanner_interface_usb.cpp: In member function ‘virtual void genesys::ScannerInterfaceUsb::sleep_us(unsigned int)’:
+ genesys/scanner_interface_usb.cpp:484:10: error: ‘std::this_thread’ has not been declared
+ 484 | std::this_thread::sleep_for(std::chrono::microseconds{microseconds});
+ | ^~~~~~~~~~~
+
+ Signed-off-by: Peter Seiderer <ps.report@gmx.net>
+
+commit eb702d33c4842f2224a5d0ae7632c783f6e06a0e
+Merge: de5b27c99548 f99687b3cc93
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-03-31 16:12:51 +0000
+
+ Merge branch 'fix-escl-resolution-with-jpeg' into 'master'
+
+ Fix scan all resolution with JPEG.
+
+ See merge request sane-project/backends!617
+
+commit f99687b3cc93a5da9408765ba6d22fc0355aa42d
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2021-03-30 22:37:28 +0200
+
+ Fix scan all resolution with JPEG.
+
+commit de5b27c9954822768318760be3c6135854dd1735
+Merge: 69df00d00c91 9539027f2492
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-03-31 16:11:24 +0000
+
+ Merge branch 'add-escl-models' into 'master'
+
+ Add models Canon TR455X
+
+ See merge request sane-project/backends!618
+
+commit 9539027f24925415f6036617e0d818bc4581dca8
+Author: thierry1970 <thierry@ordissimo.com>
+Date: 2021-03-31 14:46:20 +0200
+
+ Add models Canon TR455X
+
+commit 69df00d00c9123aa251e0670709ff4297726c7b3
+Merge: 0ef485d18959 0bbbf85528e9
+Author: Povilas Kanapickas <povilas@radix.lt>
+Date: 2021-03-30 16:00:15 +0000
+
+ Merge branch 'restore_plustek_opticfilm_v2' into 'master'
+
+ genesys: add back Plustek Optifilm 7200 V2 config.
+
+ See merge request sane-project/backends!612
+
+commit 0bbbf85528e9d6eade8eefdb4e6d52d8bb9131a6
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-03-28 21:07:21 -0700
+
+ genesys: add back Plustek Optifilm 7200 V2 config.
+
+ This has support in the backend and user reports works. I think this
+ might just be an oversight.
+
+commit 0ef485d18959b873f6a3bac693fdc872e514a207
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2021-03-25 13:55:13 +0100
+
+ lide70: more white balance, less slope tables
+
+commit 1d30150c3c6f6b9e98eb0d1d7f02775ebfb5d2a4
+Merge: 82117153f58f 580c278dcafe
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-03-20 16:51:18 +0000
+
+ Merge branch 'epson2/disable_focus_properly' into 'master'
+
+ epson2: disable focus properly
+
+ See merge request sane-project/backends!604
+
+commit 580c278dcafe4159213406b4307ee8598fe08fe7
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-03-04 08:30:46 +0100
+
+ epson2: disable focus properly
+
+ The old epson driver disabled the focus by erasing the setFocus command.
+ The epson2 driver turned it into a seperate flag. However, scanners
+ which disabled focus in post_init were not converted to use the new
+ flag. Because we meanwhile set focus during init, these scanners could
+ not start anymore. Convert them to use the new flag.
+
+ While here, update the comment how we handle focus detection and update
+ the debug strings accordingly.
+
+ Bug reported by Hans Meir and debugged by Zdenek Dohnal. Many thanks!
+
+commit 82117153f58f931c50f358ac3bea5bad7e7878c2
+Merge: bb90aa9d950a 39ced5545418
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-03-20 16:46:52 +0000
+
+ Merge branch 'epson2/fix-descs' into 'master'
+
+ epson2: improve descs
+
+ See merge request sane-project/backends!606
+
+commit 39ced55454184135c88f8b8b0544a237dbd356b0
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-03-12 20:32:46 +0100
+
+ epson2: 12000XL and 1640SU have been tested with TPU
+
+ So we can mark them as "complete" now.
+
+commit 6e85a57e64b7df36c1fbc9ec0f8da86acee6583a
+Author: Wolfram Sang <wsa@kernel.org>
+Date: 2021-03-12 14:53:40 +0100
+
+ epson2: remove desc entries which are supported by other backends
+
+ Only the epson2.desc has entries pointing to other backends. Remove them
+ and update the backends which really support them instead.
+
+commit bb90aa9d950a8a3b93c944a51d6a67206b6e86fe
+Merge: 5819a79ab025 acc5ca499f67
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-03-14 18:41:17 +0000
+
+ Merge branch '454-hp-scanjet-4200c-backend-causes-segmentation-violation' into 'master'
+
+ Resolve "HP ScanJet 4200C backend causes segmentation violation"
+
+ Closes #454
+
+ See merge request sane-project/backends!607
+
+commit acc5ca499f67ed1c8c42242fcf87358e7968e71d
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-03-13 17:05:13 -0800
+
+ hp4200: memset incorrectly sized. registro[0] is pointer not int.
+
+commit 5819a79ab025bcdc01c8fcc7dd16a301eccfa55b
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2021-02-28 20:41:21 -0500
+
+ canon_dr v62b
+
+ - rewrite do_cmd() timeout handling
+ - remove long timeout TUR from v61 (did not help)
+ - allow config file to set initial tur timeout for DR-X10C (#142)
+
+commit 6d990e73e9571a9fc5cccfd92f1c89a8585d04ff
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2021-02-28 16:13:36 -0500
+
+ canon_dr v62a
+
+ - allow config file to set inq and vpd lengths for DR-M1060 (#263)
+
+commit e55ea7c06d2d91103dff236be8c5e97465f82e34
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2021-02-24 14:01:10 +0100
+
+ added lide 600 to central manpage
+
+commit dd9d90223e7c4581bac36f458c073fd2ff8e43ae
+Merge: 44a085d685da b9edb46542bf
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-02-24 02:16:05 +0000
+
+ Merge branch '433-issues-in-sane-man-pages' into 'master'
+
+ Resolve "Issues in SANE man pages"
+
+ Closes #433
+
+ See merge request sane-project/backends!598
+
+commit b9edb46542bfa644d11d9fb37aa9c984b0c99d49
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-02-23 18:00:18 -0800
+
+ doc: final corrections indicated by translators.
+
+commit 7413e3131be2a0df182c5d6692e02764a0c130ba
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-02-21 09:01:26 -0800
+
+ doc: some small man page corrections.
+
+commit 44a085d685dac1e270dda73f6344e23ef4e9d337
+Merge: 12c81e2f1925 325c77503692
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-02-24 01:21:13 +0000
+
+ Merge branch 'debug-minolta-dimage-scan-dual-ii' into 'master'
+
+ Add function to debug avision command
+
+ See merge request sane-project/backends!595
+
+commit 325c775036928f27ec4147352e08742801d141f2
+Author: Giovanni Cappellotto <potomak84@gmail.com>
+Date: 2021-02-15 02:42:21 -0500
+
+ Add function to debug avision command
+
+ Define a new enum that contains Avision data type codes and use those instead
+ of pure values. I also added a couple of helper functions for debugging the
+ command operation and data type code if read or send.
+
+commit 12c81e2f1925a03ca389207e2b4fdb1a32794d76
+Author: pimvantend <pimvantend@yahoo.com>
+Date: 2021-02-23 14:28:56 +0100
+
+ some color and geometry changes
+
+commit 13d1cb694ee80dcbbee7568c0e12c544b23e1785
+Merge: 00df971593ee 5d749ac79662
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-16 11:49:48 +0000
+
+ Merge branch 'update-release-documentation' into 'master'
+
+ Update release documentation
+
+ See merge request sane-project/backends!596
+
+commit 5d749ac796621c1b988e6302871c9facb135f1dc
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-16 20:30:46 +0900
+
+ doc: Update the release procedure and convert to Markdown
+
+commit 7ac30dced0b89396ca707129aa303dd17083b042
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-16 19:46:57 +0900
+
+ NEWS: Add placeholder for user-visible changes in the next release
+
+commit 00df971593ee8b0c6bc23f2574291ac5f653408f
+Merge: c85185bd412b c1c567c49b3b
+Author: Olaf Meeuwissen <paddy-hack@member.fsf.org>
+Date: 2021-02-14 12:24:09 +0000
+
+ Merge branch 'release/1.0.32' into 'master'
+
+ Release/1.0.32
+
+ Closes #122 and #248
+
+ See merge request sane-project/backends!594
+
+commit c85185bd412be937766bf993c8c50a97b75f211c
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2021-02-13 21:08:40 -0500
+
+ update AUTHORS for kvs* backends (#59)
+
+commit 7dbfccb53295901672682074a3cc1b1f3c7c76f8
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2021-02-13 15:15:09 -0500
+
+ canon_dr backend v61
+
+ - treat DR-P208 like P-208 (#356)
+ - treat DR-P215 like P-215 (#356)
+ - adjust wait_scanner to try one TUR with a long timeout (#142)
+
+commit 5205d1d09d0d0d09d48d085b476958832066d4bd
+Author: m. allan noah <kitno455@gmail.com>
+Date: 2021-02-13 13:58:33 -0500
+
+ Various fujitsu and canon_dr doc updates
+
+ - update the copyright dates
+ - update dates and version numbers in man pages
+ - add iX1600 to supported list
+ - set duplex-offset for P-208
+
+commit b1a2b5fdb687435aede05a580641333294fb99b8
+Merge: 678495f59687 23a4c86b32de
+Author: Ralph Little <littlesincanada@yahoo.co.uk>
+Date: 2021-02-12 03:11:27 +0000
+
+ Merge branch '438-hp-scanjet-3400c-incorrect-maximum-scan-area' into 'master'
+
+ Resolve "HP ScanJet 3400C incorrect maximum scan area"
+
+ Closes #438
+
+ See merge request sane-project/backends!590
+
+commit 23a4c86b32de7fa9ca7be8e89d9694c113493b96
+Author: Ralph Little <skelband@gmail.com>
+Date: 2021-02-11 18:54:24 -0800
+
+ niash: increased the maximum Y extent to 297mm
+
+ 297mm is advertised in the official specs for this machine family.
+ Tested against the ScanJet 3300C and it doesn't bottom out or anything.
+ Issue came about because A4 is 297mm in height and 296mm too short.
+ Probably just a typo or an oversight.
+
+commit 678495f59687c5de20e2d79a731401a4d7007500
+Merge: ab945b1a89cb 5f2209ffd993
+Author: Ordissimo <thierry@ordissimo.com>
+Date: 2021-01-31 15:18:09 +0000
+
+ Merge branch 'escl-fix-header-hp' into 'master'
+
+ Use header to activate hack localhost.
+
+ See merge request sane-project/backends!583
+
+commit 5f2209ffd9935fb2f0612cf1fafb85276bf4e02e
+Author: Thierry HUCHARD <thierry@ordissimo.com>
+Date: 2021-01-30 20:32:00 +0100
+
+ Use header to activate hack localhost.
diff --git a/NEWS b/NEWS
index 8c991a5..629b3e9 100644
--- a/NEWS
+++ b/NEWS
@@ -7,7 +7,87 @@
<!--(towncrier release notes start)-->
-## New with 1.1.1 (released 2022-01-19)
+## New with 1.2.1 (released 2023-02-05)
+
+### Backends
+
+- `avision`:
+ - Minor fix for protocol packet length.
+ - Added “basic” support for Avision AD345F. Note that multi-sheet scanning is problematic.
+ - Fix for 32-bit limitation on scan line size which caused early abort of scan.
+ - Fix for minimum resolution for devices with AV_ASIC_C6.
+ - Various small logic errors addressed.
+
+- `canon`: Use the common model name instead of string from the device.
+- `canon_lide70`: Some small corrections to option support.
+- `canon_pp`: Potential buffer overrun issue addressed.
+- `canon-dr`: Added support for lifecycle counters for dr-x10c scanners.
+- `epjitsu`: Hang fix for Scansnap S1300i.
+- `epsonds`: Added support for Epson XP-2200 Series devices.
+- `escl`:
+ - Fixes related to support for HP M277dw.
+ - Fix for Canon TS-3400 series resolution support.
+ - Added support for Epson EcoTank L3160.
+ - Fix for segfault crash.
+ - Performance and memory use enhancements through the use of memory-mapped I/O.
+ - Fix for TIFF file type generation failure.
+ - IPv6 detection improvements.
+- `fujitsu`:
+ - Contrast/brightness fixes for Fujitsu ix500.
+ - Support confirmed for Fujitsu fi-7300NX.
+ - Support added for ScanSnap ix1400.
+ - Added support for ScanPartner SP30.
+- `genesys`:
+ - Fixes for unit test build errors related to GCC 12.
+ - Fix for 32-bit limitation on scan line size which caused early abort. of scan.
+ - Build issue fix for OSX.
+ - Button support for Canon 8400f scanner corrected.
+ - Support added back in for Plustek OpticFilm 7600i: config file entry was missing.
+- `kvs40xx`: Compiler warnings fixed.
+- `mustek_usb2`: Compiler warnings fixed.
+- `pixma`:
+ - Fix for Canon TS-3400 series resolution support.
+ - Button support for Canon MG5700 series corrected.
+ - Added support for Canon imageRUNNER 1018/1022/1023.
+ - Added support for Canon PIXMA TS2400 Series.
+ - Added support for Canon PIXMA TS2600 Series.
+ - Testing confirmed for Canon TS6400 series devices.
+ - Testing confirmed for Canon TS3400 series devices.
+ - Various devices’ max resolutions fixed.
+ - Minor fix for broadcast buffer size error.
+- `plustek_pp`: Support removed for deprecated Linux kernel driver build.
+- `test`: Fix for 32-bit limitation on scan line size which caused early abort of scan.
+- `xerox_mfp`:
+ - JPEG support fix for Samsung SCX-4828 FN and similar.
+ - JPEG support fix for Samsung SCX-4824 FN and similar.
+
+
+### Frontends
+
+- `sane-find-scanner`: Alteration to output to indicate that indicated devices are potentially scanners.
+- `saned`: Fix for poll.h header file, which caused problems on Alpine Linux.
+- `scanimage`:
+ - Attempts to set readonly options will give a warning about readonly option set attempt now, instead of the misleading "unknown option" error.
+ - Header file build fixes for FreeBSD.
+ - Fix for backends presenting NULL attributes in deactivated options.
+
+
+### Miscellaneous
+
+- Updated translation to Russian, Italian, British English and Ukraine.
+- Compiler warnings addressed for a number of backends.
+- A number of fixes for the build system:
+ - Fix to ignore LDFLAGS environment variable in build.
+ - Fix to not build umax_pp tool when disabled.
+ - Fix for CLANG compiler warnings.
+ - Various small improvements to dependency checking and CI builds.
+ - General corrections for backends’ use of mkstemp() function.
+ - Added support for autotools’ silent build option.
+ - Remove –with-group configure option, since it is no longer used.
+ - Autotools fixes for backend library installation.
+
+
+## New with 1.1.1 (released 2022-01-18)
### Backends
diff --git a/acinclude.m4 b/acinclude.m4
index 9393278..df8abe1 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -322,10 +322,9 @@ AC_DEFUN([SANE_CHECK_PNG],
])
#
-# Checks for pthread support
+# Checks for device locking support
AC_DEFUN([SANE_CHECK_LOCKING],
[
- LOCKPATH_GROUP=uucp
use_locking=yes
case "${host_os}" in
os2* )
@@ -346,23 +345,6 @@ AC_DEFUN([SANE_CHECK_LOCKING],
fi
])
if test $use_locking = yes ; then
- AC_ARG_WITH([group],
- AS_HELP_STRING([--with-group],
- [use the specified group for lock dir @<:@default=uucp@:>@]),
- [LOCKPATH_GROUP="$withval"]
- )
- # check if the group does exist
- lasterror=""
- touch sanetest.file
- chgrp $LOCKPATH_GROUP sanetest.file 2>/dev/null || lasterror=$?
- rm -f sanetest.file
- if test ! -z "$lasterror"; then
- AC_MSG_WARN([Group $LOCKPATH_GROUP does not exist on this system.])
- AC_MSG_WARN([Locking feature will be disabled.])
- use_locking=no
- fi
- fi
- if test $use_locking = yes ; then
INSTALL_LOCKPATH=install-lockpath
AC_DEFINE([ENABLE_LOCKING], 1,
[Define to 1 if device locking should be enabled.])
@@ -371,11 +353,7 @@ AC_DEFUN([SANE_CHECK_LOCKING],
fi
AC_MSG_CHECKING([whether to enable device locking])
AC_MSG_RESULT([$use_locking])
- if test $use_locking = yes ; then
- AC_MSG_NOTICE([Setting lockdir group to $LOCKPATH_GROUP])
- fi
AC_SUBST(INSTALL_LOCKPATH)
- AC_SUBST(LOCKPATH_GROUP)
])
dnl
diff --git a/backend/Makefile.am b/backend/Makefile.am
index e56e7f1..35ad206 100644
--- a/backend/Makefile.am
+++ b/backend/Makefile.am
@@ -18,6 +18,8 @@ DIST_LIBS_LDFLAGS = $(AM_LDFLAGS) -rpath '$(libdir)' -version-number $(V_MAJOR):
LIBTOOL += --silent
FIRMWARE_DIRS = artec_eplus48u gt68xx snapscan epjitsu
+BUILT_SOURCES =
+
# Needed by most backends as they add sane_strstatus.lo to their list
# of libraries to link with via libsane_${BACKEND}_la_LIBADD. Due to
# the implicit dependency, automake does not notice the need to clean
@@ -93,7 +95,8 @@ becfg: $(BACKEND_CONFS)
SUFFIXES = .conf.in .conf
.conf.in.conf:
- @echo Generating $@ from $^
+ $(AM_V_GEN)
+ @if $(AM_V_P); then echo Generating $@ from $^; fi
@sed -e 's|@DATADIR@|$(datadir)|g' \
-e 's|@CONFIGDIR@|$(configdir)|g' \
-e 's|@DOCDIR@|$(docdir)|g' \
@@ -109,9 +112,9 @@ install-data-hook: install-becfg install-firmware-path $(INSTALL_LOCKPATH)
# are not lost.
install-becfg: becfg
@# Libtool has a bug where it will sometimes symlink the last
- @# installed library in $(sanelibdir) to $(sanelibdir)/libsane.*.
- @# Having two libsane's can cause issues so get rid of it.
- -rm -f $(DESTDIR)$(sanelibdir)/libsane.*
+ @# installed library in $(execsanelibdir) to libsane.*, which
+ @# causes a conflict with the actual libsane.* in $(libdir).
+ -rm -f $(DESTDIR)$(execsanelibdir)/libsane.*
test -z "$(configdir)" || $(MKDIR_P) "$(DESTDIR)$(configdir)"
test -z "$(configdir)/dll.d" || $(MKDIR_P) "$(DESTDIR)$(configdir)/dll.d"
@list="$(BACKEND_CONFS_ENABLED) saned.conf dll.conf"; for cfg in $$list; do \
@@ -225,8 +228,11 @@ EXTRA_LTLIBRARIES = $(be_convenience_libs) $(be_dlopen_libs)
lib_LTLIBRARIES = libsane.la
-sanelibdir = $(libdir)/sane
-sanelib_LTLIBRARIES = $(BACKEND_LIBS_ENABLED) libsane-dll.la
+# The libraries in $(libdir)/sane are platform-dependent files, so they
+# should be installed during "make install-exec". For that reason, the
+# variable names here must contain "exec".
+execsanelibdir = $(libdir)/sane
+execsanelib_LTLIBRARIES = $(BACKEND_LIBS_ENABLED) libsane-dll.la
COMMON_LIBS = ../lib/liblib.la $(XML_LIBS)
@@ -678,6 +684,7 @@ libsane_epson_la_LIBADD = $(COMMON_LIBS) \
../sanei/sanei_usb.lo \
../sanei/sanei_scsi.lo \
../sanei/sanei_pio.lo \
+ ../sanei/sanei_directio.lo \
$(SCSI_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
EXTRA_DIST += epson.conf.in
@@ -699,6 +706,7 @@ libsane_epson2_la_LIBADD = $(COMMON_LIBS) \
../sanei/sanei_pio.lo \
../sanei/sanei_tcp.lo \
../sanei/sanei_udp.lo \
+ ../sanei/sanei_directio.lo \
$(SCSI_LIBS) $(USB_LIBS) $(SOCKET_LIBS) $(MATH_LIB) $(RESMGR_LIBS)
EXTRA_DIST += epson2.conf.in
@@ -853,6 +861,7 @@ libsane_hp_la_LIBADD = $(COMMON_LIBS) \
../sanei/sanei_scsi.lo \
../sanei/sanei_pio.lo \
../sanei/sanei_thread.lo \
+ ../sanei/sanei_directio.lo \
$(SCSI_LIBS) $(USB_LIBS) $(SANEI_THREAD_LIBS) $(RESMGR_LIBS)
EXTRA_DIST += hp.conf.in
# TODO: These should be moved to ../docs/hp; don't belong here.
@@ -1243,6 +1252,7 @@ libsane_mustek_la_LIBADD = $(COMMON_LIBS) \
../sanei/sanei_thread.lo \
../sanei/sanei_ab306.lo \
../sanei/sanei_pa4s2.lo \
+ ../sanei/sanei_directio.lo \
$(IEEE1284_LIBS) $(SCSI_LIBS) $(SANEI_THREAD_LIBS) $(RESMGR_LIBS)
EXTRA_DIST += mustek.conf.in
# TODO: Why are these distributed but not compiled?
@@ -1261,6 +1271,7 @@ libsane_mustek_pp_la_LIBADD = $(COMMON_LIBS) \
../sanei/sanei_config.lo \
sane_strstatus.lo \
../sanei/sanei_pa4s2.lo \
+ ../sanei/sanei_directio.lo \
$(MATH_LIB) $(IEEE1284_LIBS)
EXTRA_DIST += mustek_pp.conf.in
# TODO: Why are these distributed but not compiled?
@@ -1420,7 +1431,9 @@ libsane_pint_la_LIBADD = $(COMMON_LIBS) \
../sanei/sanei_config.lo \
sane_strstatus.lo
-libpixma_la_SOURCES = pixma/pixma.c \
+libpixma_la_SOURCES = \
+ pixma/pixma_sane_options.h \
+ pixma/pixma.c \
pixma/pixma.h \
pixma/pixma_io_sanei.c \
pixma/pixma_io.h \
@@ -1437,26 +1450,25 @@ libpixma_la_SOURCES = pixma/pixma.c \
pixma/pixma_rename.h
libpixma_la_CPPFLAGS = $(AM_CPPFLAGS) $(XML_CFLAGS) -DBACKEND_NAME=pixma
-# Generate options files included by pixma/pixma.c from said file.
-# The circular dependency means we cannot add it as a prerequisite
-# for the targets that build the options files.
-
-$(srcdir)/pixma/pixma.c: \
- $(srcdir)/pixma/pixma_sane_options.h \
- $(srcdir)/pixma/pixma_sane_options.c
-
-$(srcdir)/pixma/pixma_sane_options.h:
- @echo Generating $@ from $(@D)/pixma.c
- @(cd $(@D); $(PYTHON) scripts/pixma_gen_options.py h < pixma.c > $(@F))
-$(srcdir)/pixma/pixma_sane_options.c:
- @echo Generating $@ from $(@D)/pixma.c
- @(cd $(@D); $(PYTHON) scripts/pixma_gen_options.py < pixma.c > $(@F))
+$(srcdir)/pixma/pixma_sane_options.h: $(srcdir)/pixma/pixma.c
+ @if $(AM_V_P); then \
+ echo "Generating pixma/$(@F) from pixma/$(^F)"; \
+ else \
+ echo " GEN pixma/$(@F)"; \
+ fi
+ @$(PYTHON) $(srcdir)/pixma/scripts/pixma_gen_options.py h < $^ > $@
+$(srcdir)/pixma/pixma_sane_options.c: $(srcdir)/pixma/pixma.c
+ @if $(AM_V_P); then \
+ echo "Generating pixma/$(@F) from pixma/$(^F)"; \
+ else \
+ echo " GEN pixma/$(@F)"; \
+ fi
+ @$(PYTHON) $(srcdir)/pixma/scripts/pixma_gen_options.py < $^ > $@
+BUILT_SOURCES += pixma/pixma_sane_options.c
+BUILT_SOURCES += pixma/pixma_sane_options.h
EXTRA_DIST += pixma/pixma_sane_options.c
-EXTRA_DIST += pixma/pixma_sane_options.h
EXTRA_DIST += pixma/scripts/pixma_gen_options.py
-CLEANFILES += pixma/pixma_sane_options.c
-CLEANFILES += pixma/pixma_sane_options.h
nodist_libsane_pixma_la_SOURCES = pixma-s.c
libsane_pixma_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=pixma
@@ -1498,7 +1510,16 @@ libplustek_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=plustek_pp
nodist_libsane_plustek_pp_la_SOURCES = plustek_pp-s.c
libsane_plustek_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=plustek_pp
libsane_plustek_pp_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
-libsane_plustek_pp_la_LIBADD = $(COMMON_LIBS) libplustek_pp.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo $(MATH_LIB) $(IEEE1284_LIBS) $(SANEI_THREAD_LIBS)
+libsane_plustek_pp_la_LIBADD = $(COMMON_LIBS) \
+ libplustek_pp.la \
+ ../sanei/sanei_init_debug.lo \
+ ../sanei/sanei_constrain_value.lo \
+ ../sanei/sanei_config.lo \
+ sane_strstatus.lo \
+ ../sanei/sanei_pp.lo \
+ ../sanei/sanei_thread.lo \
+ ../sanei/sanei_directio.lo \
+ $(MATH_LIB) $(IEEE1284_LIBS) $(SANEI_THREAD_LIBS)
EXTRA_DIST += plustek_pp.conf.in
# TODO: Why are these distributed but not compiled?
EXTRA_DIST += plustek-pp_dac.c plustek-pp_dbg.h plustek-pp_detect.c plustek-pp_genericio.c plustek-pp_hwdefs.h plustek-pp_image.c plustek-pp_io.c plustek-pp_map.c plustek-pp_misc.c plustek-pp_models.c plustek-pp_motor.c plustek-pp_p12.c plustek-pp_p12ccd.c plustek-pp_p48xx.c plustek-pp_p9636.c plustek-pp_procfs.c plustek-pp_procs.h plustek-pp_ptdrv.c plustek-pp_scale.c plustek-pp_scan.h plustek-pp_scandata.h plustek-pp_sysdep.h plustek-pp_tpa.c plustek-pp_types.h plustek-pp_wrapper.c
@@ -1528,7 +1549,8 @@ libsane_qcam_la_LIBADD = $(COMMON_LIBS) \
../sanei/sanei_constrain_value.lo \
../sanei/sanei_config.lo \
sane_strstatus.lo \
- ../sanei/sanei_pio.lo
+ ../sanei/sanei_pio.lo \
+ ../sanei/sanei_directio.lo
EXTRA_DIST += qcam.conf.in
@@ -1903,6 +1925,7 @@ libsane_umax_pp_la_LIBADD = $(COMMON_LIBS) \
../sanei/sanei_init_debug.lo \
../sanei/sanei_constrain_value.lo \
../sanei/sanei_config.lo \
+ ../sanei/sanei_directio.lo \
sane_strstatus.lo \
$(MATH_LIB)
EXTRA_DIST += umax_pp.conf.in
@@ -1939,6 +1962,7 @@ libsane_xerox_mfp_la_LIBADD = $(COMMON_LIBS) \
$(MATH_LIB) $(SOCKET_LIBS) $(USB_LIBS) $(RESMGR_LIBS)
EXTRA_DIST += xerox_mfp.conf.in
+nodist_libdll_preload_la_SOURCES = dll-preload.h
libdll_preload_la_SOURCES = dll.c
libdll_preload_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dll -DENABLE_PRELOAD
libdll_preload_la_LIBADD = ../sanei/sanei_usb.lo \
@@ -1947,7 +1971,7 @@ libdll_la_SOURCES = dll.c
libdll_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=dll
libdll_la_LIBADD = ../sanei/sanei_usb.lo \
$(USB_LIBS) $(XML_LIBS)
-BUILT_SOURCES = dll-preload.h
+BUILT_SOURCES += dll-preload.h
CLEANFILES += dll-preload.h
nodist_libsane_dll_la_SOURCES = dll-s.c
@@ -2001,6 +2025,7 @@ PRELOADABLE_BACKENDS_LIBS = \
../sanei/sanei_tcp.lo \
../sanei/sanei_udp.lo \
../sanei/sanei_magic.lo \
+ ../sanei/sanei_directio.lo \
$(LIBV4L_LIBS) $(MATH_LIB) \
$(IEEE1284_LIBS) \
$(TIFF_LIBS) \
@@ -2035,6 +2060,7 @@ PRELOADABLE_BACKENDS_DEPS = ../sanei/sanei_config2.lo \
../sanei/sanei_tcp.lo \
../sanei/sanei_udp.lo \
../sanei/sanei_magic.lo \
+ ../sanei/sanei_directio.lo \
$(SANEI_SANEI_JPEG_LO)
endif
nodist_libsane_la_SOURCES = dll-s.c
diff --git a/backend/abaton.c b/backend/abaton.c
index 06e60f1..3aaf7ce 100644
--- a/backend/abaton.c
+++ b/backend/abaton.c
@@ -236,8 +236,8 @@ wait_ready (int fd)
static SANE_Status
sense_handler (int scsi_fd, u_char * result, void *arg)
{
- scsi_fd = scsi_fd; /* silence gcc */
- arg = arg; /* silence gcc */
+ (void) scsi_fd; /* silence gcc */
+ (void) arg; /* silence gcc */
switch (result[2] & 0x0F)
{
@@ -850,7 +850,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize; /* silence gcc */
+ (void) authorize; /* silence gcc */
DBG_INIT ();
@@ -915,7 +915,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
Abaton_Device *dev;
int i;
- local_only = local_only; /* silence gcc */
+ (void) local_only; /* silence gcc */
if (devlist)
free (devlist);
@@ -1399,7 +1399,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
status = sanei_scsi_cmd (s->fd, test_unit_ready,
sizeof (test_unit_ready), 0, 0);
- if (status != SANE_STATUS_GOOD || status != SANE_STATUS_INVAL)
+ if (status != SANE_STATUS_GOOD && status != SANE_STATUS_INVAL)
return status;
return SANE_STATUS_CANCELLED;
}
@@ -1472,8 +1472,8 @@ sane_cancel (SANE_Handle handle)
SANE_Status
sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
- handle = handle; /* silence gcc */
- non_blocking = non_blocking; /* silence gcc */
+ (void) handle; /* silence gcc */
+ (void) non_blocking; /* silence gcc */
DBG (FLOW_CONTROL, "sane_set_io_mode: Don't call me please. "
"Unimplemented function\n");
@@ -1483,8 +1483,8 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
- handle = handle; /* silence gcc */
- fd = fd; /* silence gcc */
+ (void) handle; /* silence gcc */
+ (void) fd; /* silence gcc */
DBG (FLOW_CONTROL, "sane_get_select_fd: Don't call me please. "
"Unimplemented function\n");
diff --git a/backend/agfafocus.c b/backend/agfafocus.c
index d972f59..f297e41 100644
--- a/backend/agfafocus.c
+++ b/backend/agfafocus.c
@@ -236,8 +236,8 @@ test_ready (int fd)
static SANE_Status
sense_handler (int scsi_fd, u_char *result, void *arg)
{
- scsi_fd = scsi_fd; /* silence gcc */
- arg = arg; /* silence gcc */
+ (void) scsi_fd; /* silence gcc */
+ (void) arg; /* silence gcc */
if (result[0])
{
@@ -253,7 +253,7 @@ sense_handler (int scsi_fd, u_char *result, void *arg)
static SANE_Status
stop_scan (int fd)
{
- fd = fd; /* silence gcc */
+ (void) fd; /* silence gcc */
/* XXX don't know how to stop the scanner. To be tested ! */
#if 0
@@ -1280,7 +1280,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize; /* silence gcc */
+ (void) authorize; /* silence gcc */
DBG_INIT ();
@@ -1335,7 +1335,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
AgfaFocus_Device *dev;
int i;
- local_only = local_only; /* silence gcc */
+ (void) local_only; /* silence gcc */
if (devlist)
free (devlist);
diff --git a/backend/apple.c b/backend/apple.c
index 7b37248..b360e5c 100644
--- a/backend/apple.c
+++ b/backend/apple.c
@@ -328,8 +328,8 @@ return SANE_STATUS_GOOD;
static SANE_Status
sense_handler (int scsi_fd, u_char * result, void *arg)
{
- scsi_fd = scsi_fd; /* silence gcc */
- arg = arg; /* silence gcc */
+ (void) scsi_fd; /* silence gcc */
+ (void) arg; /* silence gcc */
switch (result[2] & 0x0F)
{
@@ -1866,7 +1866,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize; /* silence gcc */
+ (void) authorize; /* silence gcc */
DBG_INIT ();
@@ -1930,7 +1930,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
Apple_Device *dev;
int i;
- local_only = local_only; /* silence gcc */
+ (void) local_only; /* silence gcc */
if (devlist)
free (devlist);
@@ -2667,7 +2667,7 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
DBG (FLOW_CONTROL,"sane_set_io_mode: Entering.\n");
- handle = handle; /* silence gcc */
+ (void) handle; /* silence gcc */
if (non_blocking)
{
@@ -2682,8 +2682,8 @@ return SANE_STATUS_GOOD;
SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
- handle = handle; /* silence gcc */
- fd = fd; /* silence gcc */
+ (void) handle; /* silence gcc */
+ (void) fd; /* silence gcc */
DBG (FLOW_CONTROL, "sane_get_select_fd: Don't call me please. "
"Unimplemented function\n");
diff --git a/backend/artec.c b/backend/artec.c
index ea211eb..61007c8 100644
--- a/backend/artec.c
+++ b/backend/artec.c
@@ -3474,7 +3474,7 @@ artec_sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int
SANE_Byte line_buf[ARTEC_MAX_READ_SIZE];
- DBG (7, "artec_sane_read( %p, %p, %d, %d )\n", handle, buf, max_len, *len);
+ DBG (7, "artec_sane_read( %p, %p, %d, %d )\n", handle, (void *) buf, max_len, *len);
*len = 0;
@@ -3674,7 +3674,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
static SANE_Byte temp_buf[ARTEC_MAX_READ_SIZE];
static int bytes_in_buf = 0;
- DBG (7, "sane_read( %p, %p, %d, %d )\n", handle, buf, max_len, *len);
+ DBG (7, "sane_read( %p, %p, %d, %d )\n", handle, (void *) buf, max_len, *len);
DBG (9, "sane_read: bib = %d, ml = %d\n", bytes_in_buf, max_len);
if (bytes_in_buf != 0)
diff --git a/backend/artec_eplus48u.c b/backend/artec_eplus48u.c
index a4a3c24..e96e96f 100644
--- a/backend/artec_eplus48u.c
+++ b/backend/artec_eplus48u.c
@@ -351,9 +351,6 @@ static void
finish_shading_buffer (Artec48U_Scanner * s, SANE_Bool white)
{
unsigned int i, j, cnt, c, div;
- unsigned long max_r;
- unsigned long max_g;
- unsigned long max_b;
unsigned char *shading_buffer;
cnt = 0;
@@ -379,18 +376,12 @@ finish_shading_buffer (Artec48U_Scanner * s, SANE_Bool white)
++cnt;
}
}
- max_r = 0;
- max_g = 0;
- max_b = 0;
for (c = 0; c < (30720 * s->dev->epro_mult) - 5; c += 6) /*epro*/
{
i = (int) shading_buffer[c] + ((int) shading_buffer[c + 1] << 8);
- max_r += i;
i = (int) shading_buffer[c + 2] + ((int) shading_buffer[c + 3] << 8);
- max_g += i;
i = (int) shading_buffer[c + 4] + ((int) shading_buffer[c + 5] << 8);
- max_b += i;
}
}
@@ -1628,7 +1619,7 @@ artec48u_device_memory_read (Artec48U_Device * dev,
SANE_Status status;
XDBG ((8, "%s: dev=%p, addr=0x%x, size=0x%x, data=%p\n",
- function_name, (void *) dev, addr, size, data));
+ function_name, (void *) dev, addr, size, (void *) data));
CHECK_DEV_ACTIVE (dev, function_name);
status = sanei_usb_control_msg (dev->fd, 0xc0, 0x01,
diff --git a/backend/avision.c b/backend/avision.c
index b81578a..c807d9f 100644
--- a/backend/avision.c
+++ b/backend/avision.c
@@ -112,7 +112,7 @@
*
* . . - sane_cancel() : cancel operation, kill reader_process
*
- * . - sane_close() : close opened scanner-device, do_cancel, free buffer and handle
+ * . - sane_close() : do_cancel, close opened scanner-device, free buffer and handle
* - sane_exit() : terminate use of backend, free devicename and device-structure
*/
@@ -159,6 +159,15 @@
static Avision_HWEntry Avision_Device_List [] =
{
+ { NULL, NULL,
+ 0x0638, 0x2E59,
+ "Avision", "AD345F",
+ AV_INT_BUTTON | AV_CANCEL_BUTTON | AV_USE_GRAY_FILTER,
+ { 0, {0, 0}, {{0, 0}, {0, 0}} }
+ },
+ /* comment="duplex! sheetfed + flatbed scanner" */
+ /* status="basic" */
+
{ "AVISION", "AV100CS",
0, 0,
"Avision", "AV100CS",
@@ -688,6 +697,15 @@ static Avision_HWEntry Avision_Device_List [] =
/* comment="1 pass, 600 dpi, zero-edge" ASIC 7 */
/* status="basic" */
+ { NULL, NULL,
+ 0x0638, 0x2a1f,
+ "Avision", "FB2280E",
+ 0,
+ { 0, {0, 0}, {{0, 0}, {0, 0}} }
+ },
+ /* comment="1 pass, 600 dpi, zero-edge" ASIC 7 */
+ /* status="basic" */
+
{ "AVISION", "AV8000S",
0, 0,
"Avision", "AV8000S",
@@ -1592,7 +1610,7 @@ Lexmark X4500 MFP
}\
}\
-static int num_devices;
+static unsigned int num_devices;
static Avision_Device* first_dev;
static Avision_Scanner* first_handle;
static const SANE_Device** devlist = 0;
@@ -2149,8 +2167,8 @@ sense_handler (int fd, u_char* sense, void* arg)
uint8_t sense_key = sense[2] & 0xf;
uint8_t additional_sense = sense[7];
- fd = fd; /* silence gcc */
- arg = arg; /* silence gcc */
+ (void) fd; /* silence gcc */
+ (void) arg; /* silence gcc */
DBG (3, "sense_handler:\n");
@@ -2690,8 +2708,8 @@ bubble_sort (uint8_t* sort_data, size_t count)
for (j = (i + 1); j < count; ++j)
{
- ti = get_double ((sort_data + i*2));
- tj = get_double ((sort_data + j*2));
+ ti = (uint16_t) get_double ((sort_data + i*2));
+ tj = (uint16_t) get_double ((sort_data + j*2));
if (ti > tj) {
set_double ((sort_data + i*2), tj);
@@ -2708,7 +2726,7 @@ bubble_sort (uint8_t* sort_data, size_t count)
/* DBG (7, "bubble_sort: %d values for average\n", k); */
if (k > 0) /* if avg to compute */
- return (uint16_t) (sum / k);
+ return (uint16_t) (sum /(double) k);
else
return (uint16_t) (sum); /* always zero? */
}
@@ -2969,14 +2987,14 @@ compute_parameters (Avision_Scanner* s)
SANE_UNFIX (s->val[OPT_BR_X].w), SANE_UNFIX (s->val[OPT_BR_Y].w));
/* window parameter in pixel */
- s->avdimen.tlx = s->avdimen.hw_xres * SANE_UNFIX (s->val[OPT_TL_X].w)
- / MM_PER_INCH;
- s->avdimen.tly = s->avdimen.hw_yres * SANE_UNFIX (s->val[OPT_TL_Y].w)
- / MM_PER_INCH;
- s->avdimen.brx = s->avdimen.hw_xres * SANE_UNFIX (s->val[OPT_BR_X].w)
- / MM_PER_INCH;
- s->avdimen.bry = s->avdimen.hw_yres * SANE_UNFIX (s->val[OPT_BR_Y].w)
- / MM_PER_INCH;
+ s->avdimen.tlx = (long int) (s->avdimen.hw_xres * SANE_UNFIX (s->val[OPT_TL_X].w)
+ / MM_PER_INCH);
+ s->avdimen.tly = (long int) (s->avdimen.hw_yres * SANE_UNFIX (s->val[OPT_TL_Y].w)
+ / MM_PER_INCH);
+ s->avdimen.brx = (long int) (s->avdimen.hw_xres * SANE_UNFIX (s->val[OPT_BR_X].w)
+ / MM_PER_INCH);
+ s->avdimen.bry = (long int) (s->avdimen.hw_yres * SANE_UNFIX (s->val[OPT_BR_Y].w)
+ / MM_PER_INCH);
/* line difference */
if (color_mode_is_color (s->c_mode) &&
@@ -2990,8 +3008,8 @@ compute_parameters (Avision_Scanner* s)
/* limit bry + line_difference to real scan boundary */
{
- long y_max = dev->inquiry_y_ranges[s->source_mode_dim] *
- s->avdimen.hw_yres / MM_PER_INCH;
+ long y_max = (long int) (dev->inquiry_y_ranges[s->source_mode_dim] *
+ s->avdimen.hw_yres / MM_PER_INCH);
DBG (3, "sane_compute_parameters: y_max: %ld, bry: %ld, line_difference: %d\n",
y_max, s->avdimen.bry, s->avdimen.line_difference);
@@ -3009,10 +3027,10 @@ compute_parameters (Avision_Scanner* s)
/* add overscan */
if (dev->inquiry_tune_scan_length && is_adf_scan (s)) {
/* some extra effort for precise rounding ... */
- int overscan = (s->avdimen.hw_yres *
+ int overscan = (int) ((s->avdimen.hw_yres *
(SANE_UNFIX (s->val[OPT_OVERSCAN_TOP].w) +
SANE_UNFIX (s->val[OPT_OVERSCAN_BOTTOM].w)) + (MM_PER_INCH - 1)
- ) / MM_PER_INCH;
+ ) / MM_PER_INCH);
DBG (3, "sane_compute_parameters: overscan lines: %d\n", overscan);
s->avdimen.bry += overscan;
}
@@ -3171,10 +3189,10 @@ compute_parameters (Avision_Scanner* s)
memset (&s->params, 0, sizeof (s->params));
- s->avdimen.hw_pixels_per_line = (s->avdimen.brx - s->avdimen.tlx);
+ s->avdimen.hw_pixels_per_line = (int) (s->avdimen.brx - s->avdimen.tlx);
s->avdimen.hw_pixels_per_line -= s->avdimen.hw_pixels_per_line % boundary;
- s->avdimen.hw_lines = (s->avdimen.bry - s->avdimen.tly -
+ s->avdimen.hw_lines = (int) (s->avdimen.bry - s->avdimen.tly -
2 * s->avdimen.line_difference);
if (s->avdimen.interlaced_duplex && dev->scanner_type != AV_FILM)
@@ -3252,7 +3270,7 @@ inquiry (Avision_Connection av_con, uint8_t* data, size_t len)
memset (&inquiry, 0, sizeof(inquiry));
inquiry.opc = AVISION_SCSI_INQUIRY;
- inquiry.len = len;
+ inquiry.len = (uint8_t) len;
do {
size_t size = inquiry.len;
@@ -3281,7 +3299,7 @@ wait_ready (Avision_Connection* av_con, int delay)
DBG (3, "wait_ready: sending TEST_UNIT_READY\n");
status = avision_cmd (av_con, test_unit_ready, sizeof (test_unit_ready),
0, 0, 0, 0);
- sleep (delay);
+ sleep ((unsigned int) delay);
switch (status)
{
@@ -3338,6 +3356,7 @@ wait_4_light (Avision_Scanner* s)
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0, &result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
DBG (1, "wait_4_light: read failed (%s)\n", sane_strstatus (status));
return status;
}
@@ -3432,6 +3451,7 @@ get_firmware_status (Avision_Connection* av_con)
status = avision_cmd (av_con, &rcmd, sizeof (rcmd), 0, 0, &result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
DBG (1, "get_firmware_status: read failed (%s)\n",
sane_strstatus (status));
return (status);
@@ -3469,6 +3489,7 @@ get_flash_ram_info (Avision_Connection* av_con)
status = avision_cmd (av_con, &rcmd, sizeof (rcmd), 0, 0, result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
DBG (1, "get_flash_ram_info: read failed (%s)\n",
sane_strstatus (status));
return (status);
@@ -3550,21 +3571,21 @@ get_nvram_data (Avision_Scanner* s, nvram_data* nvram)
}
static SANE_Status
-get_and_parse_nvram (Avision_Scanner* s, char* str, int n)
+get_and_parse_nvram (Avision_Scanner* s, char* str, size_t n)
{
SANE_Status status;
- int i = 0;
+ size_t i = 0;
int x;
nvram_data nvram;
uint8_t inquiry_result [AVISION_INQUIRY_SIZE_V1];
status = inquiry (s->av_con, inquiry_result, sizeof(inquiry_result));
if (status == SANE_STATUS_GOOD) {
- i += snprintf (str+i, n-i, "Vendor: %.8s",
+ i += (size_t) snprintf (str+i, n-i, "Vendor: %.8s",
inquiry_result+8);
- i += snprintf (str+i, n-i, "\nModel: %.16s",
+ i += (size_t) snprintf (str+i, n-i, "\nModel: %.16s",
inquiry_result+16);
- i += snprintf (str+i, n-i, "\nFirmware: %.4s",
+ i += (size_t) snprintf (str+i, n-i, "\nFirmware: %.4s",
inquiry_result+32);
}
@@ -3575,32 +3596,32 @@ get_and_parse_nvram (Avision_Scanner* s, char* str, int n)
if (status == SANE_STATUS_GOOD)
{
if (nvram.serial[0])
- i += snprintf (str+i, n-i, "\nSerial: %.24s",
+ i += (size_t) snprintf (str+i, n-i, "\nSerial: %.24s",
nvram.serial);
- if (nvram.born_year)
- i += snprintf (str+i, n-i, "\nManufacturing date: %d-%d-%d",
+ if (get_double(nvram.born_year))
+ i += (size_t) snprintf (str+i, n-i, "\nManufacturing date: %d-%d-%d",
get_double(nvram.born_year),
get_double(nvram.born_month),
get_double(nvram.born_day));
- if (nvram.first_scan_year)
- i += snprintf (str+i, n-i, "\nFirst scan date: %d-%d-%d",
+ if (get_double(nvram.first_scan_year))
+ i += (size_t) snprintf (str+i, n-i, "\nFirst scan date: %d-%d-%d",
get_double(nvram.first_scan_year),
get_double(nvram.first_scan_month),
get_double(nvram.first_scan_day));
x = get_quad (nvram.flatbed_scans);
if (x)
- i += snprintf (str+i, n-i, "\nFlatbed scans: %d", x);
+ i += (size_t) snprintf (str+i, n-i, "\nFlatbed scans: %d", x);
x = get_quad (nvram.pad_scans);
if (x)
- i += snprintf (str+i, n-i, "\nPad scans: %d", x);
+ i += (size_t) snprintf (str+i, n-i, "\nPad scans: %d", x);
x = get_quad (nvram.adf_simplex_scans);
if (x)
- i += snprintf (str+i, n-i, "\nADF simplex scans: %d", x);
+ i += (size_t) snprintf (str+i, n-i, "\nADF simplex scans: %d", x);
x = get_quad (nvram.adf_duplex_scans);
if (x)
- i += snprintf (str+i, n-i, "\nADF duplex scans: %d", x);
+ i += (size_t) snprintf (str+i, n-i, "\nADF duplex scans: %d", x);
}
return status;
@@ -3703,12 +3724,12 @@ adf_reset (Avision_Scanner* s)
uint8_t payload[4];
size_t size;
size_t n;
- int i;
+ ssize_t i;
DBG (3, "adf_reset\n");
/* loop twice */
for (i=1; i >= 0; i--) {
- n=i;
+ n= (size_t) i;
memset (&scmd, 0, sizeof (scmd));
memset (&payload, 0, sizeof (payload));
scmd.opc = AVISION_SCSI_SEND;
@@ -3716,26 +3737,26 @@ adf_reset (Avision_Scanner* s)
set_double (scmd.datatypequal, 0);
size = 2;
set_triple (scmd.transferlen, size);
- payload[1] = 0x10 * i; /* write 0x10 the first time, 0x00 the second */
+ payload[1] = (uint8_t) (0x10 * i); /* write 0x10 the first time, 0x00 the second */
status = avision_cmd (&s->av_con, &scmd, sizeof (scmd), payload, size, 0, 0);
if (status != SANE_STATUS_GOOD) {
- DBG (1, "adf_reset: write %d failed (%s)\n", (2-i),
+ DBG (1, "adf_reset: write %zu failed (%s)\n", (2-i),
sane_strstatus (status));
return (status);
}
- DBG (3, "adf_reset: write %d complete.\n", (2-i));
+ DBG (3, "adf_reset: write %zu complete.\n", (2-i));
memset (&rcmd, 0, sizeof (rcmd));
memset (&payload, 0, sizeof (payload));
rcmd.opc = AVISION_SCSI_READ;
rcmd.datatypecode = AVISION_DATATYPECODE_READ_NVRAM_DATA; /* Read NVRAM data */
set_double (rcmd.datatypequal, dev->data_dq);
- size = 4 - i; /* read 3 bytes the first time, 4 the second */
+ size = (size_t) (4 - i); /* read 3 bytes the first time, 4 the second */
set_triple (rcmd.transferlen, size);
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0, payload, &size);
if (status != SANE_STATUS_GOOD || size != (4-n)) {
- DBG (1, "adf_reset: read %zu failed (%s)\n", (4-n),
- sane_strstatus (status));
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
+ DBG (1, "adf_reset: read %zu failed (%s)\n", (4-n), sane_strstatus (status));
return (status);
}
debug_print_raw (3, "adf_reset: raw data:\n", payload, size);
@@ -3776,8 +3797,8 @@ get_accessories_info (Avision_Scanner* s)
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0, result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
- DBG (1, "get_accessories_info: read failed (%s)\n",
- sane_strstatus (status));
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
+ DBG (1, "get_accessories_info: read failed (%s)\n", sane_strstatus (status));
return (status);
}
@@ -3839,7 +3860,7 @@ get_accessories_info (Avision_Scanner* s)
/* Returns a pointer to static char* strings or NULL for cancel (we do
not want to start memcmp'ing for the cancel case). */
static const char*
-string_for_button (Avision_Scanner* s, int button)
+string_for_button (Avision_Scanner* s, uint8_t button)
{
static char buffer [16];
Avision_Device* dev = s->hw;
@@ -3931,6 +3952,7 @@ get_button_status (Avision_Scanner* s)
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0,
(uint8_t*)&result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
DBG (1, "get_button_status: read failed (%s)\n", sane_strstatus (status));
return status;
}
@@ -3982,7 +4004,7 @@ get_button_status (Avision_Scanner* s)
/* simulate button press of the last button ... */
result.press_state = 0x80 | 1;
- result.buttons[0] = dev->inquiry_buttons; /* 1 based */
+ result.buttons[0] = (uint8_t) dev->inquiry_buttons; /* 1 based */
}
}
@@ -4001,7 +4023,7 @@ get_button_status (Avision_Scanner* s)
char* message = message_begin;
#define add_token(format,value) do { \
- int n = snprintf (message, message_end - message, "%s" format, \
+ int n = snprintf (message, (size_t) (message_end - message), "%s" format, \
message == message_begin ? "" : ":", value); \
message += n > 0 ? n : 0; \
} while (0)
@@ -4041,7 +4063,7 @@ get_button_status (Avision_Scanner* s)
}
for (i = 0; i < buttons_pressed; ++i) {
- const unsigned int button = result.buttons[i] - 1; /* 1 based ... */
+ const uint8_t button = result.buttons[i] - 1; /* 1 based ... */
DBG (3, "get_button_status: button %d pressed\n", button);
if (button >= dev->inquiry_buttons) {
DBG (1, "get_button_status: button %d not allocated as not indicated in inquiry\n",
@@ -4089,6 +4111,7 @@ get_frame_info (Avision_Scanner* s)
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0, result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
DBG (1, "get_frame_info: read failed (%s)\n", sane_strstatus (status));
return (status);
}
@@ -4104,10 +4127,10 @@ get_frame_info (Avision_Scanner* s)
DBG (3, "get_frame_info: [2] Frame amount: %d\n", result[2]);
DBG (3, "get_frame_info: [3] Mode: %s\n", BIT(result[3],4)?"APS":"Not APS");
DBG (3, "get_frame_info: [3] Exposures (if APS): %s\n",
- ((i=(BIT(result[3],3)<<1)+BIT(result[2],2))==0)?"Unknown":
+ ((i=(size_t) (BIT(result[3],3)<<1)+BIT(result[2],2))==0)?"Unknown":
(i==1)?"15":(i==2)?"25":"40");
DBG (3, "get_frame_info: [3] Film Type (if APS): %s\n",
- ((i=(BIT(result[1],3)<<1)+BIT(result[0],2))==0)?"Unknown":
+ ((i=(size_t) (BIT(result[1],3)<<1)+BIT(result[0],2))==0)?"Unknown":
(i==1)?"B&W Negative":(i==2)?"Color slide":"Color Negative");
dev->holder_type = result[0];
@@ -4157,6 +4180,7 @@ get_duplex_info (Avision_Scanner* s)
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0,
&result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result)) {
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
DBG (1, "get_duplex_info: read failed (%s)\n", sane_strstatus (status));
return (status);
}
@@ -4220,8 +4244,8 @@ set_frame (Avision_Scanner* s, SANE_Word frame)
set_double (scmd.cmd.datatypequal, dev->data_dq);
set_triple (scmd.cmd.transferlen, sizeof (scmd.data) );
- scmd.data[0] = dev->holder_type;
- scmd.data[1] = frame;
+ scmd.data[0] = (uint8_t) dev->holder_type;
+ scmd.data[1] = (uint8_t) frame;
status = avision_cmd (&s->av_con, &scmd.cmd, sizeof (scmd.cmd),
&scmd.data, sizeof (scmd.data), 0, 0);
@@ -4970,7 +4994,7 @@ send_tune_scan_length (Avision_Scanner* s)
if (dev->hw->feature_type & AV_OVERSCAN_OPTDPI)
dpi = dev->inquiry_optical_res;
- top = dpi * SANE_UNFIX (s->val[OPT_OVERSCAN_TOP].w) / MM_PER_INCH;
+ top = (int) (dpi * SANE_UNFIX (s->val[OPT_OVERSCAN_TOP].w) / MM_PER_INCH);
DBG (3, "send_tune_scan_length: top: %d\n", top);
/* top offset compensation */
@@ -4986,7 +5010,7 @@ send_tune_scan_length (Avision_Scanner* s)
offset += dev->hw->offset.first;
/* convert to lines */
- int top_offset = dpi * offset / MM_PER_INCH;
+ int top_offset = (int) (dpi * offset / MM_PER_INCH);
top += top_offset;
DBG (3, "send_tune_scan_length: top offset: %d\n", top_offset);
}
@@ -5007,7 +5031,7 @@ send_tune_scan_length (Avision_Scanner* s)
}
scmd.datatypecode = AVISION_DATATYPECODE_ATTACH_TRUNCATE_TAIL; /* Attach/Truncate tail(right) of scan length */
- bottom = dpi * SANE_UNFIX (s->val[OPT_OVERSCAN_BOTTOM].w) / MM_PER_INCH;
+ bottom = (int) (dpi * SANE_UNFIX (s->val[OPT_OVERSCAN_BOTTOM].w) / MM_PER_INCH);
DBG (3, "send_tune_scan_length: bottom: %d\n", bottom);
/* bottom offset compensation */
@@ -5024,7 +5048,7 @@ send_tune_scan_length (Avision_Scanner* s)
offset += fabs(dev->hw->offset.first);
/* convert to lines */
- int bottom_offset = dpi * offset / MM_PER_INCH;
+ int bottom_offset = (int) (dpi * offset / MM_PER_INCH);
bottom += bottom_offset;
DBG (3, "send_tune_scan_length: bottom offset: %d\n", bottom_offset);
}
@@ -5161,14 +5185,14 @@ get_calib_format (Avision_Scanner* s, struct calibration_format* format)
DBG (3, "get_calib_format: read_data: %lu bytes\n", (u_long) size);
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0, result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result) ) {
- DBG (1, "get_calib_format: read calib. info failed (%s)\n",
- sane_strstatus (status) );
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
+ DBG (1, "get_calib_format: read calib. info failed (%s)\n", sane_strstatus (status) );
return status;
}
debug_print_calib_format (3, "get_calib_format", result);
- format->pixel_per_line = get_double (&(result[0]));
+ format->pixel_per_line = (uint16_t) get_double (&(result[0]));
format->bytes_per_channel = result[2];
format->lines = result[3];
format->flags = result[4];
@@ -5176,12 +5200,12 @@ get_calib_format (Avision_Scanner* s, struct calibration_format* format)
format->r_gain = result[6];
format->g_gain = result[7];
format->b_gain = result[8];
- format->r_shading_target = get_double (&(result[9]));
- format->g_shading_target = get_double (&(result[11]));
- format->b_shading_target = get_double (&(result[13]));
- format->r_dark_shading_target = get_double (&(result[15]));
- format->g_dark_shading_target = get_double (&(result[17]));
- format->b_dark_shading_target = get_double (&(result[19]));
+ format->r_shading_target = (uint16_t) get_double (&(result[9]));
+ format->g_shading_target = (uint16_t) get_double (&(result[11]));
+ format->b_shading_target = (uint16_t) get_double (&(result[13]));
+ format->r_dark_shading_target = (uint16_t) get_double (&(result[15]));
+ format->g_dark_shading_target = (uint16_t) get_double (&(result[17]));
+ format->b_dark_shading_target = (uint16_t) get_double (&(result[19]));
/* now translate to normal! */
/* firmware return R--RG--GB--B with 3 line count */
@@ -5261,7 +5285,7 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
{
Avision_Device* dev = s->hw;
- const int elements_per_line = format->pixel_per_line * format->channels;
+ const size_t elements_per_line = format->pixel_per_line * format->channels;
SANE_Status status;
@@ -5270,7 +5294,7 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
struct command_send scmd;
- int i;
+ size_t i;
DBG (3, "set_calib_data:\n");
@@ -5295,13 +5319,13 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
if (BIT (format->ability1, 2) ) {
DBG (3, "set_calib_data: merging dark calibration data\n");
for (i = 0; i < elements_per_line; ++i) {
- uint16_t value_orig = get_double_le (white_data + i*2);
+ uint16_t value_orig = (uint16_t) get_double_le (white_data + i*2);
uint16_t value_new = value_orig;
value_new &= 0xffc0;
- value_new |= (get_double_le (dark_data + i*2) >> 10) & 0x3f;
+ value_new |= (uint16_t) ((get_double_le (dark_data + i*2) >> 10) & 0x3f);
- DBG (9, "set_calib_data: element %d, dark difference %d\n",
+ DBG (9, "set_calib_data: element %zu, dark difference %d\n",
i, value_orig - value_new);
set_double_le ((white_data + i*2), value_new);
@@ -5318,7 +5342,7 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
{
size_t send_size = elements_per_line * 2;
DBG (3, "set_calib_data: all channels in one command\n");
- DBG (3, "set_calib_data: send_size: %lu\n", (u_long) send_size);
+ DBG (3, "set_calib_data: send_size: %zu\n", send_size);
memset (&scmd, 0, sizeof (scmd) );
scmd.opc = AVISION_SCSI_SEND;
@@ -5332,7 +5356,7 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
}
else /* send data channel by channel (some USB ones) */
{
- int conv_out_size = format->pixel_per_line * 2;
+ size_t conv_out_size = format->pixel_per_line * 2;
uint16_t* conv_out_data; /* here it is save to use 16bit data
since we only move whole words around */
@@ -5356,7 +5380,7 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
for (i = 0; i < format->pixel_per_line; ++ i)
conv_out_data [i] = casted_avg_data [i * 3 + channel];
- DBG (3, "set_calib_data: sending %i bytes now\n",
+ DBG (3, "set_calib_data: sending %zu bytes now\n",
conv_out_size);
memset (&scmd, 0, sizeof (scmd));
@@ -5393,9 +5417,9 @@ set_calib_data (Avision_Scanner* s, struct calibration_format* format,
static uint8_t*
sort_and_average (struct calibration_format* format, uint8_t* data)
{
- const int elements_per_line = format->pixel_per_line * format->channels;
- const int stride = format->bytes_per_channel * elements_per_line;
- int i, line;
+ const size_t elements_per_line = format->pixel_per_line * format->channels;
+ const size_t stride = format->bytes_per_channel * elements_per_line;
+ size_t i, line;
uint8_t *sort_data, *avg_data;
@@ -5454,7 +5478,7 @@ compute_dark_shading_data (Avision_Scanner* s,
DBG (3, "compute_dark_shading_data:\n");
if (s->hw->inquiry_max_shading_target != INVALID_DARK_SHADING)
- map_value = s->hw->inquiry_max_shading_target << 8;
+ map_value = (uint16_t) (s->hw->inquiry_max_shading_target << 8);
rgb_map_value[0] = format->r_dark_shading_target;
rgb_map_value[1] = format->g_dark_shading_target;
@@ -5477,7 +5501,7 @@ compute_dark_shading_data (Avision_Scanner* s,
/* Avision SCSI protocol document has bad description. */
for (i = 0; i < elements_per_line; ++i)
{
- uint16_t tmp_data = get_double_le((data + i*2));
+ uint16_t tmp_data = (uint16_t) get_double_le((data + i*2));
if (tmp_data > rgb_map_value[i % 3]) {
set_double ((data + i*2), tmp_data - rgb_map_value[i % 3]);
}
@@ -5504,7 +5528,7 @@ compute_white_shading_data (Avision_Scanner* s,
DBG (3, "compute_white_shading_data:\n");
if (s->hw->inquiry_max_shading_target != INVALID_WHITE_SHADING)
- inquiry_mst = s->hw->inquiry_max_shading_target << 4;
+ inquiry_mst = (uint16_t) (s->hw->inquiry_max_shading_target << 4);
mst[0] = format->r_shading_target;
mst[1] = format->g_shading_target;
@@ -5547,14 +5571,14 @@ compute_white_shading_data (Avision_Scanner* s,
{
int result;
/* calculate calibration value for pixel i */
- uint16_t tmp_data = get_double((data + i*2));
+ uint16_t tmp_data = (uint16_t) get_double((data + i*2));
if (tmp_data == INVALID_WHITE_SHADING) {
tmp_data = DEFAULT_WHITE_SHADING;
++ values_invalid;
}
- result = ( (int)mst[i % 3] * WHITE_MAP_RANGE / (tmp_data + 0.5));
+ result = (int) ( (int)mst[i % 3] * WHITE_MAP_RANGE / (tmp_data + 0.5));
/* sanity check for over-amplification, clipping */
if (result > MAX_WHITE_SHADING) {
@@ -5582,7 +5606,8 @@ normal_calibration (Avision_Scanner* s)
struct calibration_format calib_format;
- int calib_data_size, calib_bytes_per_line;
+ size_t calib_data_size;
+ int calib_bytes_per_line;
uint8_t read_type;
uint8_t *calib_tmp_data;
@@ -5604,7 +5629,7 @@ normal_calibration (Avision_Scanner* s)
calib_bytes_per_line = calib_format.bytes_per_channel *
calib_format.pixel_per_line * calib_format.channels;
- calib_data_size = calib_format.lines * calib_bytes_per_line;
+ calib_data_size = (size_t) calib_format.lines * (size_t) calib_bytes_per_line;
calib_tmp_data = malloc (calib_data_size);
if (!calib_tmp_data)
@@ -5889,7 +5914,7 @@ send_gamma (Avision_Scanner* s)
/* interpolate gamma_values to gamma_data */
for (k = 0; k < gamma_values; ++ k, ++ i) {
gamma_data [i] = (uint8_t)
- (((v1 * (gamma_values - k)) + (v2 * k) ) / (double) gamma_values);
+ (((v1 * (double) (gamma_values - k)) + (v2 * (double) k) ) / (double) gamma_values);
}
}
@@ -5965,7 +5990,7 @@ send_3x3_matrix (Avision_Scanner* s)
a_i = (int) a_f; /* integer */
b_f = a_f - (double) a_i; /* float */
- m |= ((a_i & 0x3) << INT_PART);
+ m |= (uint16_t) ((a_i & 0x3) << INT_PART);
m |= (uint16_t) (b_f * 1024);
set_double (((uint8_t*)(&cmd.matrix.v[i])), m);
}
@@ -6009,6 +6034,7 @@ get_acceleration_info (Avision_Scanner* s, struct acceleration_info* info)
DBG (3, "get_acceleration_info: read_data: %lu bytes\n", (u_long) size);
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0, result, &size);
if (status != SANE_STATUS_GOOD || size != sizeof (result) ) {
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
DBG (1, "get_acceleration_info: read accel. info failed (%s)\n",
sane_strstatus (status) );
return status;
@@ -6016,12 +6042,12 @@ get_acceleration_info (Avision_Scanner* s, struct acceleration_info* info)
debug_print_accel_info (3, "get_acceleration_info", result);
- info->total_steps = get_double (&(result[0]));
- info->stable_steps = get_double (&(result[2]));
- info->table_units = get_quad (&(result[4]));
- info->base_units = get_quad (&(result[8]));
- info->start_speed = get_double (&(result[12]));
- info->target_speed = get_double (&(result[14]));
+ info->total_steps = (uint16_t) get_double (&(result[0]));
+ info->stable_steps = (uint16_t) get_double (&(result[2]));
+ info->table_units = (uint32_t) get_quad (&(result[4]));
+ info->base_units = (uint32_t) get_quad (&(result[8]));
+ info->start_speed = (uint16_t) get_double (&(result[12]));
+ info->target_speed = (uint16_t) get_double (&(result[14]));
info->ability = result[16];
info->table_count = result[17];
@@ -6076,10 +6102,10 @@ send_acceleration_table (Avision_Scanner* s)
needs such a dumb table and also do not know /why/ it has to be
constructed this way. "Works for me" -ReneR */
{
- float low_lim = 0.001;
+ float low_lim = (float) 0.001;
float up_lim = 1.0;
- uint16_t accel_steps = accel_info.total_steps - accel_info.stable_steps + 1;
+ uint16_t accel_steps = (uint16_t) (accel_info.total_steps - accel_info.stable_steps + 1);
/* acceleration ramp */
while ((up_lim - low_lim) > 0.0001)
@@ -6122,7 +6148,7 @@ send_acceleration_table (Avision_Scanner* s)
int add_count;
/* count total steps in table */
- int table_total = 0;
+ uint32_t table_total = 0;
for (i = 0; i < accel_info.total_steps; i++)
table_total += table_data [i];
@@ -6130,9 +6156,9 @@ send_acceleration_table (Avision_Scanner* s)
if (((table_total * accel_info.table_units) % accel_info.base_units) == 0)
add_count = 0;
else
- add_count = (accel_info.base_units -
- ((table_total*accel_info.table_units) % accel_info.base_units))
- / accel_info.table_units;
+ add_count = (int) ((accel_info.base_units -
+ ((table_total*accel_info.table_units) % accel_info.base_units))
+ / accel_info.table_units);
/* add_count should not be bigger than 255 */
if (add_count > 255) {
@@ -6142,7 +6168,7 @@ send_acceleration_table (Avision_Scanner* s)
for (i = 0; i < accel_info.total_steps - 1 && add_count > 0; i++)
{
uint16_t temp_count = 255 - table_data [i];
- temp_count = temp_count > add_count ? add_count : temp_count;
+ temp_count = (uint16_t) (temp_count > add_count ? add_count : temp_count);
table_data [i] += (uint8_t) temp_count;
add_count -= temp_count;
@@ -6186,8 +6212,8 @@ set_window (Avision_Scanner* s)
Avision_Device* dev = s->hw;
SANE_Status status;
int base_dpi_abs, base_dpi_rel;
- int transferlen;
- int paralen;
+ size_t transferlen;
+ size_t paralen;
int bytes_per_line;
int line_count;
@@ -6225,7 +6251,7 @@ set_window (Avision_Scanner* s)
/* optional parameter length to use */
paralen = sizeof (cmd.window.avision) - sizeof (cmd.window.avision.type);
- DBG (2, "set_window: base paralen: %d\n", paralen);
+ DBG (2, "set_window: base paralen: %zu\n", paralen);
if (dev->hw->feature_type & AV_FUJITSU)
paralen += sizeof (cmd.window.avision.type.fujitsu);
@@ -6236,12 +6262,12 @@ set_window (Avision_Scanner* s)
else
paralen += sizeof (cmd.window.avision.type.normal) - 1;
- DBG (2, "set_window: final paralen: %d\n", paralen);
+ DBG (2, "set_window: final paralen: %zu\n", paralen);
transferlen = sizeof (cmd.window)
- sizeof (cmd.window.avision) + paralen;
- DBG (2, "set_window: transferlen: %d\n", transferlen);
+ DBG (2, "set_window: transferlen: %zu\n", transferlen);
/* command setup */
cmd.cmd.opc = AVISION_SCSI_SET_WINDOW;
@@ -6278,20 +6304,20 @@ set_window (Avision_Scanner* s)
/* here go the most significant bits if bigger than 16 bit */
if (dev->inquiry_new_protocol && !(dev->hw->feature_type & AV_FUJITSU) ) {
DBG (2, "set_window: large data-transfer support (>16bit)!\n");
- cmd.window.avision.type.normal.line_width_msb =
- bytes_per_line >> 16;
- cmd.window.avision.type.normal.line_count_msb =
- line_count >> 16;
+ cmd.window.avision.type.normal.line_width_msb = (uint8_t)
+ (bytes_per_line >> 16);
+ cmd.window.avision.type.normal.line_count_msb = (uint8_t)
+ (line_count >> 16);
}
if (dev->inquiry_background_raster)
- cmd.window.avision.type.normal.background_lines = s->val[OPT_BACKGROUND].w;
+ cmd.window.avision.type.normal.background_lines = (uint8_t) s->val[OPT_BACKGROUND].w;
/* scanner should use our line-width and count */
SET_BIT (cmd.window.avision.bitset1, 6);
/* set speed */
- cmd.window.avision.bitset1 |= s->val[OPT_SPEED].w & 0x07; /* only 3 bit */
+ cmd.window.avision.bitset1 |= (uint8_t) (s->val[OPT_SPEED].w & 0x07); /* only 3 bit */
/* ADF scan? */
DBG (3, "set_window: source mode %d source mode dim %d\n",
@@ -6371,7 +6397,7 @@ set_window (Avision_Scanner* s)
/* fixed values */
cmd.window.descriptor.padding_and_bitset = 3;
cmd.window.descriptor.vendor_specific = 0xFF;
- cmd.window.descriptor.paralen = paralen; /* R² was: 9, later 14 */
+ cmd.window.descriptor.paralen = (uint8_t) paralen; /* R² was: 9, later 14 */
/* This is normally unsupported by Avision scanners, and we do this
via the gamma table - which works for all devices ... */
@@ -6443,7 +6469,7 @@ set_window (Avision_Scanner* s)
debug_print_window_descriptor (5, "set_window", &(cmd.window));
- DBG (3, "set_window: sending command. Bytes: %d\n", transferlen);
+ DBG (3, "set_window: sending command. Bytes: %zu\n", transferlen);
status = avision_cmd (&s->av_con, &cmd, sizeof (cmd.cmd),
&(cmd.window), transferlen, 0, 0);
@@ -6482,7 +6508,7 @@ get_background_raster (Avision_Scanner* s)
dev->inquiry_background_raster_pixel, bytes_per_line);
/* according to spec only 8-bit gray or color, TODO: test for bi-level scans */
- size = bytes_per_line * lines;
+ size = (size_t) bytes_per_line * (size_t) lines;
DBG (3, "get_background_raster: buffer size: %ld\n", (long)size);
@@ -6518,7 +6544,7 @@ get_background_raster (Avision_Scanner* s)
else {
this_lines = s->val[OPT_BACKGROUND].w;
}
- this_read = bytes_per_line * this_lines;
+ this_read = (size_t) bytes_per_line * (size_t) this_lines;
DBG (3, "get_background_raster: line: %d, lines: %d, %lu bytes\n",
i, this_lines, (u_long) this_read);
@@ -6528,8 +6554,8 @@ get_background_raster (Avision_Scanner* s)
read_size = this_read;
status = avision_cmd (&s->av_con, &rcmd, sizeof (rcmd), 0, 0, dst_raster, &read_size);
if (status != SANE_STATUS_GOOD || read_size != this_read) {
- DBG (1, "get_background_raster: read raster failed (%s)\n",
- sane_strstatus (status) );
+ status = (status != SANE_STATUS_GOOD)? status: SANE_STATUS_IO_ERROR;
+ DBG (1, "get_background_raster: read raster failed (%s)\n", sane_strstatus (status) );
return status;
}
@@ -6545,7 +6571,7 @@ get_background_raster (Avision_Scanner* s)
write_pnm_header (f, (color_mode_is_color (s->c_mode) ? AV_TRUECOLOR : AV_GRAYSCALE), 8,
bytes_per_line / bpp, lines);
- fwrite (background, 1, bytes_per_line * lines, f);
+ fwrite (background, 1, (size_t) bytes_per_line * (size_t) lines, f);
fclose (f);
}
@@ -6555,7 +6581,7 @@ get_background_raster (Avision_Scanner* s)
/* TODO: add 16bit per sample code? */
int l, p;
- uint8_t* tmp_data = malloc (bytes_per_line);
+ uint8_t* tmp_data = malloc ((size_t) bytes_per_line);
for (l = 0; l < lines; ++l)
{
uint8_t* out_data = tmp_data;
@@ -6569,7 +6595,7 @@ get_background_raster (Avision_Scanner* s)
out_data [p++] = *(b_ptr++);
}
- memcpy (background + (bytes_per_line * l), tmp_data, bytes_per_line);
+ memcpy (background + (bytes_per_line * l), tmp_data, (size_t) bytes_per_line);
}
free (tmp_data);
@@ -6596,7 +6622,7 @@ get_background_raster (Avision_Scanner* s)
src_raster = background + bytes_per_line * i;
DBG(3, "get_background_raster: deinterlaced %d -> %d\n", i, dst_i);
- memcpy(dst_raster, src_raster, bytes_per_line);
+ memcpy(dst_raster, src_raster, (size_t) bytes_per_line);
}
free (background);
@@ -6619,7 +6645,7 @@ get_background_raster (Avision_Scanner* s)
write_pnm_header (f, (color_mode_is_color (s->c_mode) ? AV_TRUECOLOR : AV_GRAYSCALE), 8,
bytes_per_line / bpp, s->val[OPT_BACKGROUND].w);
- fwrite (raster, 1, bytes_per_line * s->val[OPT_BACKGROUND].w, f);
+ fwrite (raster, 1, (size_t) bytes_per_line * (size_t) s->val[OPT_BACKGROUND].w, f);
fclose (f);
}
@@ -6630,7 +6656,7 @@ get_background_raster (Avision_Scanner* s)
src_ptr = background + s->avdimen.tlx * bpp;
for (i = 0; i < lines; ++i)
{
- memmove (dst_ptr, src_ptr, s->avdimen.hw_bytes_per_line);
+ memmove (dst_ptr, src_ptr, (size_t) s->avdimen.hw_bytes_per_line);
dst_ptr += s->avdimen.hw_bytes_per_line;
src_ptr += bytes_per_line;
}
@@ -6659,10 +6685,10 @@ get_background_raster (Avision_Scanner* s)
switch (bpp) {
case 1:
{
- uint8_t v =
- ( out_data [sy*hwbpl + sx ] * (256-xdist) +
+ uint8_t v = (uint8_t)
+ (( out_data [sy*hwbpl + sx ] * (256-xdist) +
out_data [sy*hwbpl + sxx] * xdist
- ) / (256);
+ ) / (256));
*dst++ = v;
}
break;
@@ -6672,10 +6698,10 @@ get_background_raster (Avision_Scanner* s)
int c;
for (c = 0; c < 3; ++c)
{
- uint8_t v =
- ( out_data [sy*hwbpl + sx*3 + c] * (256-xdist) +
+ uint8_t v = (uint8_t)
+ (( out_data [sy*hwbpl + sx*3 + c] * (256-xdist) +
out_data [sy*hwbpl + sxx*3 + c] * xdist
- ) / (256);
+ ) / (256));
*dst++ = v;
}
}
@@ -6702,7 +6728,7 @@ get_background_raster (Avision_Scanner* s)
write_pnm_header (f, (color_mode_is_color (s->c_mode) ? AV_TRUECOLOR : AV_GRAYSCALE), 8,
s->params.bytes_per_line / bpp, s->val[OPT_BACKGROUND].w);
- fwrite (raster, 1, s->params.bytes_per_line * s->val[OPT_BACKGROUND].w, f);
+ fwrite (raster, 1, (size_t) s->params.bytes_per_line * (size_t) s->val[OPT_BACKGROUND].w, f);
fclose (f);
}
}
@@ -6731,7 +6757,7 @@ release_unit (Avision_Scanner* s, int type)
SANE_Status status;
DBG (1, "release unit: type: %d\n", type);
- cmd[5] = type; /* latest scanners also allow 1: release paper and 2: end job */
+ cmd[5] = (char) type; /* latest scanners also allow 1: release paper and 2: end job */
status = avision_cmd (&s->av_con, cmd, sizeof (cmd), 0, 0, 0, 0);
return status;
}
@@ -6944,8 +6970,9 @@ init_options (Avision_Scanner* s)
case AV_ASIC_C5:
dev->dpi_range.min = 80;
break;
- case AV_ASIC_C6: /* TODO: AV610 in ADF mode does not scan less than 180 or so */
- dev->dpi_range.min = 50;
+ case AV_ASIC_C6: /* TODO: AV610 in ADF mode does not scan less than 180 or so; */
+ /* Scanjet 8250 does not work with 50 in normal mode */
+ dev->dpi_range.min = 60;
break;
case AV_ASIC_C7: /* AV610C2 empirically tested out */
dev->dpi_range.min = 75;
@@ -6983,7 +7010,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_MODE].title = SANE_TITLE_SCAN_MODE;
s->opt[OPT_MODE].desc = SANE_DESC_SCAN_MODE;
s->opt[OPT_MODE].type = SANE_TYPE_STRING;
- s->opt[OPT_MODE].size = max_string_size (dev->color_list);
+ s->opt[OPT_MODE].size = (SANE_Int) max_string_size (dev->color_list);
s->opt[OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
s->opt[OPT_MODE].constraint.string_list = dev->color_list;
s->val[OPT_MODE].s = strdup (dev->color_list[dev->color_list_default]);
@@ -6994,7 +7021,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_SOURCE].title = SANE_TITLE_SCAN_SOURCE;
s->opt[OPT_SOURCE].desc = SANE_DESC_SCAN_SOURCE;
s->opt[OPT_SOURCE].type = SANE_TYPE_STRING;
- s->opt[OPT_SOURCE].size = max_string_size(dev->source_list);
+ s->opt[OPT_SOURCE].size = (SANE_Int) max_string_size(dev->source_list);
s->opt[OPT_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
s->opt[OPT_SOURCE].constraint.string_list = &dev->source_list[0];
s->val[OPT_SOURCE].s = strdup(dev->source_list[0]);
@@ -7314,7 +7341,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_MESSAGE].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
s->opt[OPT_MESSAGE].size = 129;
s->opt[OPT_MESSAGE].constraint_type = SANE_CONSTRAINT_NONE;
- s->val[OPT_MESSAGE].s = malloc(s->opt[OPT_MESSAGE].size);
+ s->val[OPT_MESSAGE].s = malloc((size_t) s->opt[OPT_MESSAGE].size);
s->val[OPT_MESSAGE].s[0] = 0;
/* NVRAM */
@@ -7328,7 +7355,7 @@ init_options (Avision_Scanner* s)
s->opt[OPT_NVRAM].unit = SANE_UNIT_NONE;
s->opt[OPT_NVRAM].size = 1024;
s->opt[OPT_NVRAM].constraint_type = SANE_CONSTRAINT_NONE;
- s->val[OPT_NVRAM].s = malloc(s->opt[OPT_NVRAM].size);
+ s->val[OPT_NVRAM].s = malloc((size_t) s->opt[OPT_NVRAM].size);
s->val[OPT_NVRAM].s[0] = 0;
/* paper_length */
@@ -7472,11 +7499,27 @@ reader_process (void *data)
return SANE_STATUS_NO_MEM;
if (dev->adf_offset_compensation) {
+ char duplex_offtmp_fname [] = "/tmp/avision-offtmp-XXXXXX";
+
+ int fd = mkstemp(duplex_offtmp_fname);
+ if (fd == -1) {
+ DBG (1, "reader_process: failed to generate temporary fname for ADF offset compensation temp file\n");
+ return SANE_STATUS_NO_MEM;
+ }
+ DBG (1, "reader_process: temporary fname for ADF offset compensation temp file: %s\n",
+ duplex_offtmp_fname);
+
+ if (unlink(duplex_offtmp_fname) == -1) {
+ DBG(1, "reader_process: failed to delete temporary file prior to use: %s\n", duplex_offtmp_fname);
+ // continue though.
+ }
+
DBG (3, "reader_process: redirecting output data to temp file for ADF offset compensation.\n");
fp_fd = fp;
- fp = fopen (s->duplex_offtmp_fname, "w+");
+ fp = fdopen (fd, "w+");
if (!fp) {
fclose(fp_fd);
+ close(fd);
return SANE_STATUS_NO_MEM;
}
}
@@ -7525,37 +7568,34 @@ reader_process (void *data)
if (!s->duplex_rear_valid) { /* create new file for writing */
DBG (3, "reader_process: opening duplex rear file for writing.\n");
rear_fp = fopen (s->duplex_rear_fname, "w");
- if (! rear_fp) {
- fclose (fp);
- return SANE_STATUS_NO_MEM;
- }
}
else { /* open saved rear data */
DBG (3, "reader_process: opening duplex rear file for reading.\n");
rear_fp = fopen (s->duplex_rear_fname, "r");
- if (! rear_fp) {
- fclose (fp);
- return SANE_STATUS_IO_ERROR;
- }
+ }
+ if (! rear_fp) {
+ fclose (fp);
+ fclose (fp_fd);
+ return SANE_STATUS_IO_ERROR;
}
}
/* it takes quite a few lines to saturate the (USB) bus */
- lines_per_stripe = dev->read_stripe_size;
+ lines_per_stripe = (unsigned int) dev->read_stripe_size;
if (s->avdimen.line_difference)
- lines_per_stripe += 2 * s->avdimen.line_difference;
+ lines_per_stripe += (2 * (unsigned int) s->avdimen.line_difference);
- stripe_size = s->avdimen.hw_bytes_per_line * lines_per_stripe;
- lines_per_output = lines_per_stripe - 2 * s->avdimen.line_difference;
+ stripe_size = (unsigned int) s->avdimen.hw_bytes_per_line * lines_per_stripe;
+ lines_per_output = lines_per_stripe - 2 * (unsigned int) s->avdimen.line_difference;
if (s->av_con.connection_type == AV_SCSI)
/* maybe better not /2 ... */
- max_bytes_per_read = dev->scsi_buffer_size / 2;
+ max_bytes_per_read = (unsigned int) dev->scsi_buffer_size / 2;
else
/* vast buffer size to saturate the bus */
max_bytes_per_read = 0x100000;
- out_size = s->avdimen.hw_bytes_per_line * lines_per_output;
+ out_size = (unsigned int) s->avdimen.hw_bytes_per_line * lines_per_output;
DBG (3, "dev->scsi_buffer_size / 2: %d\n",
dev->scsi_buffer_size / 2);
@@ -7576,18 +7616,18 @@ reader_process (void *data)
s->avdimen.hw_yres != s->avdimen.yres)
{
/* layout out_data so that the interpolation history is exactly in front */
- ip_history = malloc (s->avdimen.hw_bytes_per_line + out_size);
+ ip_history = malloc ((size_t) s->avdimen.hw_bytes_per_line + out_size);
out_data = ip_history + s->avdimen.hw_bytes_per_line;
- ip_data = malloc (s->params.bytes_per_line);
+ ip_data = malloc ((size_t) s->params.bytes_per_line);
}
else {
out_data = malloc (out_size);
}
/* calculate params for the reading loop */
- total_size = s->avdimen.hw_bytes_per_line *
- (s->avdimen.hw_lines + 2 * s->avdimen.line_difference);
+ total_size = (size_t) s->avdimen.hw_bytes_per_line *
+ ((size_t) s->avdimen.hw_lines + 2 * (size_t) s->avdimen.line_difference);
if (deinterlace != NONE && !s->duplex_rear_valid)
total_size *= 2;
@@ -7599,7 +7639,7 @@ reader_process (void *data)
{
raw_fp = fopen ("/tmp/sane-avision.raw", "w");
write_pnm_header (fp, s->c_mode, s->params.depth,
- s->avdimen.hw_pixels_per_line, total_size / s->avdimen.hw_bytes_per_line);
+ s->avdimen.hw_pixels_per_line, (int) (total_size / (size_t) s->avdimen.hw_bytes_per_line));
}
processed_bytes = 0;
@@ -7613,7 +7653,7 @@ reader_process (void *data)
background += s->params.bytes_per_line * s->val[OPT_BACKGROUND].w;
DBG (5, "reader_process: dumping background raster\n");
- fwrite (background, s->params.bytes_per_line, s->val[OPT_BACKGROUND].w, fp);
+ fwrite (background, (size_t) s->params.bytes_per_line, (size_t) s->val[OPT_BACKGROUND].w, fp);
}
/* Data read; loop until all data has been processed. Might exit
@@ -7636,7 +7676,7 @@ reader_process (void *data)
byte_per_lines, otherwise some scanners freeze. */
if (this_read > max_bytes_per_read)
this_read = (max_bytes_per_read -
- max_bytes_per_read % s->avdimen.hw_bytes_per_line);
+ max_bytes_per_read % (unsigned int) s->avdimen.hw_bytes_per_line);
if (processed_bytes + this_read > total_size)
this_read = total_size - processed_bytes;
@@ -7694,7 +7734,7 @@ reader_process (void *data)
exit_status = status;
}
- stripe_fill += this_read;
+ stripe_fill += (unsigned int) this_read;
processed_bytes += this_read;
}
@@ -7716,7 +7756,7 @@ reader_process (void *data)
DBG (5, "reader_process: virtual this_read: %lu\n", (u_long) this_read);
got = fread (stripe_data + stripe_fill, 1, this_read, rear_fp);
- stripe_fill += got;
+ stripe_fill += (unsigned int) got;
processed_bytes += got;
if (got != this_read)
exit_status = SANE_STATUS_EOF;
@@ -7727,7 +7767,7 @@ reader_process (void *data)
useful_bytes = stripe_fill;
if (color_mode_is_color (s->c_mode))
- useful_bytes -= 2 * s->avdimen.line_difference * s->avdimen.hw_bytes_per_line;
+ useful_bytes -= (unsigned int) (2 * s->avdimen.line_difference * s->avdimen.hw_bytes_per_line);
DBG (3, "reader_process: useful_bytes %i\n", useful_bytes);
@@ -7737,26 +7777,26 @@ reader_process (void *data)
if (deinterlace != NONE && !s->duplex_rear_valid)
{
/* for all lines we have in the buffer: */
- unsigned int absline = (processed_bytes - stripe_fill) / s->avdimen.hw_bytes_per_line;
- unsigned int abslines = absline + useful_bytes / s->avdimen.hw_bytes_per_line;
+ unsigned int absline = (unsigned int) ((processed_bytes - stripe_fill) / (size_t) s->avdimen.hw_bytes_per_line);
+ unsigned int abslines = absline + useful_bytes / (unsigned int) s->avdimen.hw_bytes_per_line;
uint8_t* ptr = stripe_data;
for ( ; absline < abslines; ++absline)
{
DBG (9, "reader_process: deinterlacing line %d\n", absline);
/* interlaced? save the back data to the rear buffer */
if ( (deinterlace == STRIPE && absline % (lines_per_stripe*2) >= lines_per_stripe) ||
- (deinterlace == HALF && absline >= total_size / s->avdimen.hw_bytes_per_line / 2) ||
+ (deinterlace == HALF && absline >= total_size / (size_t) s->avdimen.hw_bytes_per_line / 2) ||
(deinterlace == LINE && (absline & 0x1)) ) /* last bit equals % 2 */
{
DBG (9, "reader_process: saving rear line %d to temporary file.\n", absline);
- fwrite (ptr, s->avdimen.hw_bytes_per_line, 1, rear_fp);
+ fwrite (ptr, (size_t) s->avdimen.hw_bytes_per_line, 1, rear_fp);
if (deinterlace == LINE)
memmove (ptr, ptr+s->avdimen.hw_bytes_per_line,
- stripe_data + stripe_fill - ptr - s->avdimen.hw_bytes_per_line);
+ (size_t) (stripe_data + stripe_fill - ptr - s->avdimen.hw_bytes_per_line));
else
ptr += s->avdimen.hw_bytes_per_line;
- useful_bytes -= s->avdimen.hw_bytes_per_line;
- stripe_fill -= s->avdimen.hw_bytes_per_line;
+ useful_bytes -= (unsigned int) s->avdimen.hw_bytes_per_line;
+ stripe_fill -= (unsigned int) s->avdimen.hw_bytes_per_line;
}
else
ptr += s->avdimen.hw_bytes_per_line;
@@ -7766,14 +7806,14 @@ reader_process (void *data)
}
if ((dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX) && s->source_mode == AV_ADF_DUPLEX && !(s->page % 2) && !s->duplex_rear_valid) {
/* Here we flip the image by writing the lines from the end of the file to the beginning. */
- unsigned int absline = (processed_bytes - stripe_fill) / s->avdimen.hw_bytes_per_line;
- unsigned int abslines = absline + useful_bytes / s->avdimen.hw_bytes_per_line;
+ unsigned int absline = (unsigned int) ((processed_bytes - stripe_fill) / (size_t) s->avdimen.hw_bytes_per_line);
+ unsigned int abslines = absline + useful_bytes / (unsigned int) s->avdimen.hw_bytes_per_line;
uint8_t* ptr = stripe_data;
for ( ; absline < abslines; ++absline) {
- fseek (rear_fp, ((0 - s->params.lines) - absline - 2) * s->avdimen.hw_bytes_per_line, SEEK_SET);
- fwrite (ptr, s->avdimen.hw_bytes_per_line, 1, rear_fp);
- useful_bytes -= s->avdimen.hw_bytes_per_line;
- stripe_fill -= s->avdimen.hw_bytes_per_line;
+ fseek (rear_fp, ((0 - s->params.lines) - (SANE_Int) absline - 2) * s->avdimen.hw_bytes_per_line, SEEK_SET);
+ fwrite (ptr, (size_t) s->avdimen.hw_bytes_per_line, 1, rear_fp);
+ useful_bytes -= (unsigned int) s->avdimen.hw_bytes_per_line;
+ stripe_fill -= (unsigned int) s->avdimen.hw_bytes_per_line;
ptr += s->avdimen.hw_bytes_per_line;
}
DBG (9, "reader_process: after page flip: useful_bytes: %d, stripe_fill: %d\n",
@@ -7813,16 +7853,16 @@ reader_process (void *data)
else if (dev->inquiry_needs_line_pack) /* line-pack */
{
/* TODO: add 16bit per sample code? */
- int i = 0, l, p;
- const int lines = useful_bytes / s->avdimen.hw_bytes_per_line;
+ unsigned int i = 0, l, p;
+ const unsigned int lines = useful_bytes / (unsigned int) s->avdimen.hw_bytes_per_line;
for (l = 0; l < lines; ++l)
{
- uint8_t* r_ptr = stripe_data + (s->avdimen.hw_bytes_per_line * l);
+ uint8_t* r_ptr = stripe_data + ((unsigned int) s->avdimen.hw_bytes_per_line * l);
uint8_t* g_ptr = r_ptr + s->avdimen.hw_pixels_per_line;
uint8_t* b_ptr = g_ptr + s->avdimen.hw_pixels_per_line;
- for (p = 0; p < s->avdimen.hw_pixels_per_line; ++p) {
+ for (p = 0; p < (unsigned int) s->avdimen.hw_pixels_per_line; ++p) {
out_data [i++] = *(r_ptr++);
out_data [i++] = *(g_ptr++);
out_data [i++] = *(b_ptr++);
@@ -7846,12 +7886,12 @@ reader_process (void *data)
/* Mirroring with bgr -> rgb conversion: Just mirror the
* whole line */
- int l;
- int lines = useful_bytes / s->avdimen.hw_bytes_per_line;
+ unsigned int l;
+ unsigned int lines = useful_bytes / (unsigned int) s->avdimen.hw_bytes_per_line;
for (l = 0; l < lines; ++l)
{
- uint8_t* begin_ptr = out_data + (l * s->avdimen.hw_bytes_per_line);
+ uint8_t* begin_ptr = out_data + (l * (unsigned int) s->avdimen.hw_bytes_per_line);
uint8_t* end_ptr = begin_ptr + s->avdimen.hw_bytes_per_line;
while (begin_ptr < end_ptr) {
@@ -7866,12 +7906,12 @@ reader_process (void *data)
{
/* Non-trivial Mirroring with element swapping */
- int l;
- int lines = useful_bytes / s->avdimen.hw_bytes_per_line;
+ unsigned int l;
+ unsigned int lines = useful_bytes / (unsigned int) s->avdimen.hw_bytes_per_line;
for (l = 0; l < lines; ++l)
{
- uint8_t* begin_ptr = out_data + (l * s->avdimen.hw_bytes_per_line);
+ uint8_t* begin_ptr = out_data + (l * (unsigned int) s->avdimen.hw_bytes_per_line);
uint8_t* end_ptr = begin_ptr + s->avdimen.hw_bytes_per_line - 3;
while (begin_ptr < end_ptr) {
@@ -7904,8 +7944,8 @@ reader_process (void *data)
s->c_mode == AV_TRUECOLOR12 ||
s->c_mode == AV_TRUECOLOR16) {
- int l;
- int lines = useful_bytes / s->avdimen.hw_bytes_per_line;
+ unsigned int l;
+ unsigned int lines = useful_bytes / (unsigned int) s->avdimen.hw_bytes_per_line;
uint8_t* dark_avg_data = s->dark_avg_data;
uint8_t* white_avg_data = s->white_avg_data;
@@ -7923,9 +7963,9 @@ reader_process (void *data)
uint16_t white_avg = WHITE_MAP_RANGE;
if (dark_avg_data)
- dark_avg = get_double_le (dark_avg_data);
+ dark_avg = (uint16_t) get_double_le (dark_avg_data);
if (white_avg_data)
- white_avg = get_double_le (white_avg_data);
+ white_avg = (uint16_t) get_double_le (white_avg_data);
line_ptr = begin_ptr;
for (l = 0; l < lines; ++ l)
@@ -7935,11 +7975,11 @@ reader_process (void *data)
if (0)
v = (v - dark_avg) * white_avg / WHITE_MAP_RANGE;
- v2 = v < 0xFFFF ? v : 0xFFFF;
+ v2 = ((uint16_t) v) < 0xFFFF ? ((uint16_t) v) : 0xFFFF;
/* SANE Standard 3.2.1 "... bytes of each sample value are
transmitted in the machine's native byte order." */
- *line_ptr = v2;
+ *line_ptr = (uint8_t) v2;
line_ptr += s->avdimen.hw_bytes_per_line;
}
@@ -7954,19 +7994,14 @@ reader_process (void *data)
/* SOFTWARE SCALING WITH INTERPOLATION (IF NECESSARY) */
- if (s->avdimen.hw_xres == s->avdimen.xres &&
- s->avdimen.hw_yres == s->avdimen.yres) /* No scaling */
- {
- fwrite (out_data, useful_bytes, 1, fp);
- line += useful_bytes / s->avdimen.hw_bytes_per_line;
- }
- else /* Software scaling - watch out - this code bites back! */
+ if (s->avdimen.hw_xres != s->avdimen.xres ||
+ s->avdimen.hw_yres != s->avdimen.yres) /* Software scaling */
{
int x;
/* for convenience in the 16bit code path */
uint16_t* out_data16 = (uint16_t*) out_data;
- const int hw_line_end = hw_line + useful_bytes / s->avdimen.hw_bytes_per_line;
+ const int hw_line_end = hw_line + (int) useful_bytes / s->avdimen.hw_bytes_per_line;
/* on-the-fly bi-linear interpolation */
while (1) {
@@ -7993,6 +8028,9 @@ reader_process (void *data)
break;
}
+ DBG (8, "reader_process: out line: %d <- from: %d-%d\n",
+ line, sy, syy);
+
/* convert to offset in current stripe */
sy -= hw_line;
syy -= hw_line;
@@ -8002,9 +8040,6 @@ reader_process (void *data)
sy = -1;
}
- DBG (8, "reader_process: out line: %d <- from: %d-%d\n",
- line, sy, syy);
-
for (x = 0; x < s->params.pixels_per_line; ++x) {
const double bx = (-1.0 + s->avdimen.hw_pixels_per_line) * x / s->params.pixels_per_line;
const int sx = (int)floor(bx);
@@ -8022,16 +8057,16 @@ reader_process (void *data)
/* Repeating this over and over again is not fast, but
as a seldom used code-path we want it readable.
x/8 is the byte, and x%8 the bit position. */
- v =
+ v = (unsigned int) (
( ((out_data [sy*hwbpl + sx/8 ] >> (7-sx%8 )) & 1) * (256-xdist) * (256-ydist) +
((out_data [sy*hwbpl + sxx/8] >> (7-sxx%8)) & 1) * xdist * (256-ydist) +
((out_data [syy*hwbpl + sx/8 ] >> (7-sx%8 )) & 1) * (256-xdist) * ydist +
((out_data [syy*hwbpl + sxx/8] >> (7-sxx%8)) & 1) * xdist * ydist
- ) / (1 + 1 * 256);
+ ) / (1 + 1 * 256));
/* Shift and or the result together and eventually
jump to the next byte. */
- *dst = (*dst << 1) | ((v>>7)&1);
+ *dst = (uint8_t) ((*dst << 1) | ((v>>7)&1));
if (x % 8 == 7)
++dst;
}
@@ -8039,13 +8074,13 @@ reader_process (void *data)
case AV_GRAYSCALE:
{
- v =
+ v = (unsigned int) (
( out_data [sy*hwbpl + sx ] * (256-xdist) * (256-ydist) +
out_data [sy*hwbpl + sxx] * xdist * (256-ydist) +
out_data [syy*hwbpl + sx ] * (256-xdist) * ydist +
out_data [syy*hwbpl + sxx] * xdist * ydist
- ) / (256 * 256);
- *dst++ = v;
+ ) / (256 * 256));
+ *dst++ = (uint8_t) v;
}
break;
@@ -8053,13 +8088,13 @@ reader_process (void *data)
case AV_GRAYSCALE16:
{
/* TODO: test! */
- v =
+ v = (unsigned int) (
( out_data16 [sy*hwbpl + sx ] * (256-xdist) * (256-ydist) +
out_data16 [sy*hwbpl + sxx] * xdist * (256-ydist) +
out_data16 [syy*hwbpl + sx ] * (256-xdist) * ydist +
out_data16 [syy*hwbpl + sxx] * xdist * ydist
- ) / (256 * 256);
- *dst16++ = v;
+ ) / (256 * 256));
+ *dst16++ = (uint16_t) v;
}
break;
@@ -8068,13 +8103,13 @@ reader_process (void *data)
int c;
for (c = 0; c < 3; ++c)
{
- v =
+ v = (unsigned int) (
( out_data [sy*hwbpl + sx*3 + c] * (256-xdist) * (256-ydist) +
out_data [sy*hwbpl + sxx*3 + c] * xdist * (256-ydist) +
out_data [syy*hwbpl + sx*3 + c] * (256-xdist) * ydist +
out_data [syy*hwbpl + sxx*3 + c] * xdist * ydist
- ) / (256 * 256);
- *dst++ = v;
+ ) / (256 * 256));
+ *dst++ = (uint8_t) v;
}
}
break;
@@ -8086,13 +8121,13 @@ reader_process (void *data)
int c;
for (c = 0; c < 3; ++c)
{
- v =
+ v = (unsigned int) (
( out_data16 [sy*hwbpl + sx*3 + c] * (256-xdist) * (256-ydist) +
out_data16 [sy*hwbpl + sxx*3 + c] * xdist * (256-ydist) +
out_data16 [syy*hwbpl + sx*3 + c] * (256-xdist) * ydist +
out_data16 [syy*hwbpl + sxx*3 + c] * xdist * ydist
- ) / (256 * 256);
- *dst16++ = v;
+ ) / (256 * 256));
+ *dst16++ = (uint16_t) v;
}
}
break;
@@ -8101,13 +8136,18 @@ reader_process (void *data)
; /* silence compiler warning */
}
}
- fwrite (ip_data, s->params.bytes_per_line, 1, fp);
+ fwrite (ip_data, (size_t) s->params.bytes_per_line, 1, fp);
++line;
}
/* copy one line of history for the next pass */
memcpy (ip_history,
out_data + useful_bytes - s->avdimen.hw_bytes_per_line,
- s->avdimen.hw_bytes_per_line);
+ (size_t) s->avdimen.hw_bytes_per_line);
+ }
+ else /* No scaling */
+ {
+ fwrite (out_data, useful_bytes, 1, fp);
+ line += (int) useful_bytes / s->avdimen.hw_bytes_per_line;
}
}
@@ -8116,7 +8156,7 @@ reader_process (void *data)
if (stripe_fill > 0)
memcpy (stripe_data, stripe_data + useful_bytes, stripe_fill);
- hw_line += useful_bytes / s->avdimen.hw_bytes_per_line;
+ hw_line += (int) useful_bytes / s->avdimen.hw_bytes_per_line;
DBG (3, "reader_process: end of iteration\n");
} /* end while not all lines or inf. mode */
@@ -8131,12 +8171,12 @@ reader_process (void *data)
/* maybe we need to fill in some white data */
if (exit_status == SANE_STATUS_EOF && line < s->params.lines) {
DBG (3, "reader_process: padding with white data\n");
- memset (out_data, gray_mode ? 0xff : 0x00, s->params.bytes_per_line);
+ memset (out_data, gray_mode ? 0xff : 0x00, (size_t) s->params.bytes_per_line);
DBG (6, "reader_process: padding line %d - %d\n",
line, s->params.lines);
while (line < s->params.lines) {
- fwrite (out_data, s->params.bytes_per_line, 1, fp);
+ fwrite (out_data, (size_t) s->params.bytes_per_line, 1, fp);
++line;
}
}
@@ -8147,12 +8187,12 @@ reader_process (void *data)
long lines;
uint8_t* buffer;
- buffer = malloc (s->params.bytes_per_line);
+ buffer = malloc ((size_t) s->params.bytes_per_line);
lines = ftell(fp) / s->params.bytes_per_line;
rewind(fp);
for (long line = 0; line < lines; line++) {
- fread(buffer, s->params.bytes_per_line, 1, fp);
+ fread(buffer, (size_t) s->params.bytes_per_line, 1, fp);
if ( (!s->duplex_rear_valid && (line < s->avdimen.offset.front.top)) ||
(s->duplex_rear_valid && (line < s->avdimen.offset.rear.top)) ) {
@@ -8166,7 +8206,7 @@ reader_process (void *data)
break; /* nothing more to write, so break out here */
}
- fwrite(buffer, s->params.bytes_per_line, 1, fp_fd);
+ fwrite(buffer, (size_t) s->params.bytes_per_line, 1, fp_fd);
}
}
@@ -8442,7 +8482,7 @@ sane_reload_devices (void)
SANE_Status
sane_init (SANE_Int* version_code, SANE_Auth_Callback authorize)
{
- authorize = authorize; /* silence gcc */
+ (void) authorize; /* silence gcc */
DBG_INIT();
@@ -8489,9 +8529,9 @@ SANE_Status
sane_get_devices (const SANE_Device*** device_list, SANE_Bool local_only)
{
Avision_Device* dev;
- int i;
+ unsigned int i;
- local_only = local_only; /* silence gcc */
+ (void) local_only; /* silence gcc */
DBG (3, "sane_get_devices:\n");
@@ -8581,7 +8621,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle *handle)
for (i = 0; i < 4; ++ i)
for (j = 0; j < 256; ++ j)
- s->gamma_table[i][j] = pow( (double) j / 255, one_over_gamma) * 255;
+ s->gamma_table[i][j] = (SANE_Int) (pow( (double) j / 255, one_over_gamma) * 255);
}
/* insert newly opened handle into list of open handles: */
@@ -8640,33 +8680,21 @@ sane_open (SANE_String_Const devicename, SANE_Handle *handle)
dev->hw->offset.duplex.rear.bottom != 0) )
dev->adf_offset_compensation = SANE_TRUE;
- if (dev->adf_offset_compensation) {
- strncpy(s->duplex_offtmp_fname, "/tmp/avision-offtmp-XXXXXX", PATH_MAX);
-
- if (! mktemp(s->duplex_offtmp_fname) ) {
- DBG (1, "sane_open: failed to generate temporary fname for ADF offset compensation temp file\n");
- return SANE_STATUS_NO_MEM;
- }
- else {
- DBG (1, "sane_open: temporary fname for ADF offset compensation temp file: %s\n",
- s->duplex_offtmp_fname);
- }
- }
-
if (dev->inquiry_duplex_interlaced || dev->scanner_type == AV_FILM ||
dev->hw->feature_type & AV_ADF_FLIPPING_DUPLEX) {
/* Might need at least *DOS (Windows flavour and OS/2) portability fix
However, I was told Cygwin (et al.) takes care of it. */
+
+ /* Create the file but close the fd. It is not used to open the file later. :( */
strncpy(s->duplex_rear_fname, "/tmp/avision-rear-XXXXXX", PATH_MAX);
- if (! mkstemp(s->duplex_rear_fname) ) {
+ int fd = mkstemp(s->duplex_rear_fname);
+ if (fd == -1) {
DBG (1, "sane_open: failed to generate temporary fname for duplex scans\n");
return SANE_STATUS_NO_MEM;
}
- else {
- DBG (1, "sane_open: temporary fname for duplex scans: %s\n",
- s->duplex_rear_fname);
- }
+ DBG (1, "sane_open: temporary fname for duplex scans: %s\n", s->duplex_rear_fname);
+ close(fd);
}
/* calibrate film scanners, as this must be done without the
@@ -8713,22 +8741,14 @@ void
sane_close (SANE_Handle handle)
{
Avision_Scanner* prev;
- Avision_Scanner* s = handle;
+ Avision_Scanner* s;
int i;
DBG (3, "sane_close:\n");
- /* close the device */
- if (avision_is_open (&s->av_con) ) {
- avision_close (&s->av_con);
- }
-
- /* remove handle from list of open handles: */
- prev = 0;
- for (s = first_handle; s; s = s->next) {
+ for (prev = 0, s = first_handle; s; prev = s, s = s->next) {
if (s == handle)
break;
- prev = s;
}
/* a handle we know about ? */
@@ -8740,6 +8760,12 @@ sane_close (SANE_Handle handle)
if (s->scanning)
do_cancel (handle);
+ /* close the device */
+ if (avision_is_open(&s->av_con)) {
+ avision_close(&s->av_con);
+ }
+
+ /* remove handle from list of open handles */
if (prev)
prev->next = s->next;
else
@@ -8764,11 +8790,6 @@ sane_close (SANE_Handle handle)
*(s->duplex_rear_fname) = 0;
}
- if (*(s->duplex_offtmp_fname)) {
- unlink (s->duplex_offtmp_fname);
- *(s->duplex_offtmp_fname) = 0;
- }
-
free (handle);
}
@@ -8863,7 +8884,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_GAMMA_VECTOR_R:
case OPT_GAMMA_VECTOR_G:
case OPT_GAMMA_VECTOR_B:
- memcpy (val, s->val[option].wa, s->opt[option].size);
+ memcpy (val, s->val[option].wa, (size_t) s->opt[option].size);
return SANE_STATUS_GOOD;
/* string options: */
@@ -8923,7 +8944,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_GAMMA_VECTOR_R:
case OPT_GAMMA_VECTOR_G:
case OPT_GAMMA_VECTOR_B:
- memcpy (s->val[option].wa, val, s->opt[option].size);
+ memcpy (s->val[option].wa, val, (size_t) s->opt[option].size);
return SANE_STATUS_GOOD;
/* options with side-effects: */
@@ -9327,7 +9348,7 @@ sane_read (SANE_Handle handle, SANE_Byte* buf, SANE_Int max_len, SANE_Int* len)
DBG (8, "sane_read: max_len: %d\n", max_len);
- nread = read (s->read_fds, buf, max_len);
+ nread = read (s->read_fds, buf, (size_t) max_len);
if (nread > 0) {
DBG (8, "sane_read: got %ld bytes\n", (long) nread);
}
@@ -9347,7 +9368,7 @@ sane_read (SANE_Handle handle, SANE_Byte* buf, SANE_Int max_len, SANE_Int* len)
}
}
- *len = nread;
+ *len = (SANE_Int) nread;
/* if all data was passed through */
if (nread == 0)
diff --git a/backend/avision.h b/backend/avision.h
index aed6d9e..d2d84ef 100644
--- a/backend/avision.h
+++ b/backend/avision.h
@@ -502,7 +502,6 @@ typedef struct Avision_Scanner
/* Internal data for duplex scans */
char duplex_rear_fname [PATH_MAX];
- char duplex_offtmp_fname [PATH_MAX];
SANE_Bool duplex_rear_valid;
color_mode c_mode;
@@ -795,17 +794,17 @@ typedef struct acceleration_info
/* set/get SCSI highended (big-endian) variables. Declare them as an array
* of chars endianness-safe, int-size safe ... */
-#define set_double(var,val) var[0] = ((val) >> 8) & 0xff; \
- var[1] = ((val) ) & 0xff
+#define set_double(var,val) var[0] = (uint8_t) (((val) >> 8) & 0xff); \
+ var[1] = (uint8_t) (((val) ) & 0xff)
-#define set_triple(var,val) var[0] = ((val) >> 16) & 0xff; \
- var[1] = ((val) >> 8 ) & 0xff; \
- var[2] = ((val) ) & 0xff
+#define set_triple(var,val) var[0] = (uint8_t) (((val) >> 16) & 0xff); \
+ var[1] = (uint8_t) (((val) >> 8 ) & 0xff); \
+ var[2] = (uint8_t) (((val) ) & 0xff)
-#define set_quad(var,val) var[0] = ((val) >> 24) & 0xff; \
- var[1] = ((val) >> 16) & 0xff; \
- var[2] = ((val) >> 8 ) & 0xff; \
- var[3] = ((val) ) & 0xff
+#define set_quad(var,val) var[0] = (uint8_t) (((val) >> 24) & 0xff); \
+ var[1] = (uint8_t) (((val) >> 16) & 0xff); \
+ var[2] = (uint8_t) (((val) >> 8 ) & 0xff); \
+ var[3] = (uint8_t) (((val) ) & 0xff)
#define get_double(var) ((*var << 8) + *(var + 1))
@@ -817,10 +816,10 @@ typedef struct acceleration_info
(*(var + 2) << 8) + *(var + 3))
/* set/get Avision lowended (little-endian) shading data */
-#define set_double_le(var,val) var[0] = ((val) ) & 0xff; \
- var[1] = ((val) >> 8) & 0xff
+#define set_double_le(var,val) var[0] = (uint8_t) (((val) ) & 0xff); \
+ var[1] = (uint8_t) (((val) >> 8) & 0xff)
-#define get_double_le(var) ((*(var + 1) << 8) + *var)
+#define get_double_le(var) ((uint16_t) ((*(var + 1) << 8) + *(var)))
#define BIT(n, p) ((n & (1 << p)) ? 1 : 0)
diff --git a/backend/bh.c b/backend/bh.c
index 0f2e70e..31ebe93 100644
--- a/backend/bh.c
+++ b/backend/bh.c
@@ -1895,6 +1895,11 @@ start_scan (BH_Scanner *s)
{
DBG(1, "sane_start: error opening barfile `%s'\n",
s->barfname);
+ if (fd !=-1)
+ {
+ close(fd);
+ unlink(s->barfname);
+ }
status = SANE_STATUS_IO_ERROR;
}
}
@@ -1979,7 +1984,7 @@ sense_handler (int scsi_fd, u_char *result, void *arg)
SANE_Status status = SANE_STATUS_INVAL;
SANE_Char print_sense[(16 * 3) + 1];
- scsi_fd = scsi_fd; /* get rid of compiler warning */
+ (void) scsi_fd; /* get rid of compiler warning */
ErrorCode = result[0] & 0x7F;
ValidData = (result[0] & 0x80) != 0;
sense = result[2] & 0x0f; /* Key */
@@ -3145,7 +3150,7 @@ sane_init (SANE_Int *version_code, SANE_Auth_Callback authorize)
char devnam[PATH_MAX] = "/dev/scanner";
FILE *fp;
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
DBG_INIT();
DBG(3, "sane_init called\n");
@@ -3233,7 +3238,7 @@ sane_get_devices (const SANE_Device ***device_list, SANE_Bool local)
int i;
DBG(3, "sane_get_devices called\n");
- local = local; /* get rid of compiler warning */
+ (void) local; /* get rid of compiler warning */
if (devlist)
free (devlist);
devlist = malloc ((num_devices + 1) * sizeof (devlist[0]));
@@ -3806,7 +3811,7 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
return SANE_STATUS_GOOD;
#else
- handle = handle; /* get rid of compiler warning */
+ (void) handle; /* get rid of compiler warning */
return (non_blocking == 1) ? SANE_STATUS_UNSUPPORTED : SANE_STATUS_GOOD;
#endif
}
@@ -3828,7 +3833,7 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int *fd)
return SANE_STATUS_GOOD;
#else
- handle = handle; fd = fd; /* get rid of compiler warning */
+ (void) handle; (void) fd; /* get rid of compiler warning */
return SANE_STATUS_UNSUPPORTED;
#endif
}
diff --git a/backend/canon-sane.c b/backend/canon-sane.c
index 6957aa7..e313457 100644
--- a/backend/canon-sane.c
+++ b/backend/canon-sane.c
@@ -1111,9 +1111,6 @@ sane_start (SANE_Handle handle)
u_char cbuf[2]; /* modification for FB620S */
size_t buf_size, i;
- char tmpfilename[] = "/tmp/canon.XXXXXX"; /* for FB1200S */
- char *thistmpfile; /* for FB1200S */
-
DBG (1, ">> sane_start\n");
s->tmpfile = -1; /* for FB1200S */
@@ -1121,36 +1118,18 @@ sane_start (SANE_Handle handle)
/******* making a tempfile for 1200 dpi scanning of FB1200S ******/
if (s->hw->info.model == FB1200)
{
- thistmpfile = strdup(tmpfilename);
-
- if (thistmpfile != NULL)
- {
- if (!mkstemp(thistmpfile))
- {
- DBG(1, "mkstemp(thistmpfile) is failed\n");
- return (SANE_STATUS_INVAL);
- }
- }
- else
- {
- DBG(1, "strdup(thistmpfile) is failed\n");
- return (SANE_STATUS_INVAL);
- }
-
- s->tmpfile = open(thistmpfile, O_RDWR | O_CREAT | O_EXCL, 0600);
+ char tmpfilename[] = "/tmp/canon.XXXXXX"; /* for FB1200S */
+ s->tmpfile = mkstemp(tmpfilename);
if (s->tmpfile == -1)
{
- DBG(1, "error opening temp file %s\n", thistmpfile);
+ DBG(1, "error opening temp file %s\n", tmpfilename);
DBG(1, "errno: %i; %s\n", errno, strerror(errno));
errno = 0;
return (SANE_STATUS_INVAL);
}
DBG(1, " ****** tmpfile is opened ****** \n");
-
- unlink(thistmpfile);
- free (thistmpfile);
- DBG(1, "free thistmpfile\n");
+ unlink(tmpfilename);
}
/******************************************************************/
diff --git a/backend/canon.c b/backend/canon.c
index e2ef932..d17cd01 100644
--- a/backend/canon.c
+++ b/backend/canon.c
@@ -817,14 +817,12 @@ attach (const char *devnam, CANON_Device ** devp)
dev->sane.name = strdup (devnam);
dev->sane.vendor = "CANON";
- if ((str = calloc (16 + 1, 1)) == NULL)
+ if ((str = strndup ((char *) ibuf + 16, 16)) == NULL)
{
sanei_scsi_close (fd);
fd = -1;
return (SANE_STATUS_NO_MEM);
}
- strncpy (str, (char *) (ibuf + 16), 16);
- dev->sane.model = str;
/* Register the fixed properties of the scanner below:
- whether it is a film scanner or a flatbed scanner
@@ -842,6 +840,7 @@ attach (const char *devnam, CANON_Device ** devp)
if (!strncmp (str, "IX-27015", 8)) /* FS2700S */
{
dev->info.model = CS2700;
+ dev->sane.model = strdup("FS2700S");
dev->sane.type = SANE_I18N("film scanner");
dev->adf.Status = ADF_STAT_NONE;
dev->tpu.Status = TPU_STAT_NONE;
@@ -857,6 +856,7 @@ attach (const char *devnam, CANON_Device ** devp)
else if (!strncmp (str, "IX-27025E", 9)) /* FS2710S */
{
dev->info.model = FS2710;
+ dev->sane.model = strdup("FS2710S");
dev->sane.type = SANE_I18N("film scanner");
dev->adf.Status = ADF_STAT_NONE;
dev->tpu.Status = TPU_STAT_NONE;
@@ -872,6 +872,7 @@ attach (const char *devnam, CANON_Device ** devp)
else if (!strncmp (str, "IX-06035E", 9)) /* FB620S */
{
dev->info.model = FB620;
+ dev->sane.model = strdup("FB620S");
dev->sane.type = SANE_I18N("flatbed scanner");
dev->adf.Status = ADF_STAT_NONE;
dev->tpu.Status = TPU_STAT_NONE;
@@ -887,6 +888,7 @@ attach (const char *devnam, CANON_Device ** devp)
else if (!strncmp (str, "IX-12015E", 9)) /* FB1200S */
{
dev->info.model = FB1200;
+ dev->sane.model = strdup("FB1200S");
dev->sane.type = SANE_I18N("flatbed scanner");
dev->adf.Status = ADF_STAT_INACTIVE;
dev->tpu.Status = TPU_STAT_INACTIVE;
@@ -930,6 +932,20 @@ attach (const char *devnam, CANON_Device ** devp)
dev->info.has_fixed_resolutions = SANE_FALSE;
}
+ /*
+ * Use the model from the device if we don't have more
+ * common model name for the device, otherwise free the
+ * string with internal model name.
+ *
+ * Please keep the memory allocation source consistent
+ * for model string - allocate on the heap via dynamic
+ * allocation.
+ */
+ if (dev->sane.model == NULL)
+ dev->sane.model = str;
+ else
+ free(str);
+
DBG (5, "dev->sane.name = '%s'\n", dev->sane.name);
DBG (5, "dev->sane.vendor = '%s'\n", dev->sane.vendor);
DBG (5, "dev->sane.model = '%s'\n", dev->sane.model);
diff --git a/backend/canon630u-common.c b/backend/canon630u-common.c
index e6fcf33..deaef66 100644
--- a/backend/canon630u-common.c
+++ b/backend/canon630u-common.c
@@ -937,7 +937,10 @@ plugin_cal (CANON_Handle * s)
{
DBG (1, "No temp filename!\n");
s->fname = strdup ("/tmp/cal.XXXXXX");
- mkstemp (s->fname);
+
+ /* FIXME: we should be using fd, not discarding it, and also checking for error! */
+ int fd = mkstemp (s->fname);
+ close(fd);
}
s->width = 2551;
s->height = 75;
@@ -1546,7 +1549,7 @@ CANON_open_device (CANON_Handle * scan, const char *dev)
static const char *
CANON_get_device_name (CANON_Handle * scanner)
{
- scanner = scanner; /* Eliminate warning about unused parameters */
+ (void) scanner; /* Eliminate warning about unused parameters */
return "Canoscan FB630U";
}
@@ -1581,8 +1584,12 @@ CANON_start_scan (CANON_Handle * scanner)
/* choose a temp file name for scan data */
scanner->fname = strdup ("/tmp/scan.XXXXXX");
- if (!mkstemp (scanner->fname))
+
+ /* FIXME: we should be using fd, not discarding it! */
+ int fd = mkstemp (scanner->fname);
+ if (fd == -1)
return SANE_STATUS_IO_ERROR;
+ close(fd);
/* calibrate if needed */
rv = init (scanner->fd);
diff --git a/backend/canon630u.c b/backend/canon630u.c
index 659c31f..25c59d6 100644
--- a/backend/canon630u.c
+++ b/backend/canon630u.c
@@ -133,9 +133,9 @@ static SANE_Status
optionNumOptionsCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
- option = option;
- handle = handle;
- info = info; /* Eliminate warning about unused parameters */
+ (void) option;
+ (void) handle;
+ (void) info; /* Eliminate warning about unused parameters */
if (action != SANE_ACTION_GET_VALUE)
return SANE_STATUS_INVAL;
@@ -168,8 +168,8 @@ static SANE_Status
optionCalibrateCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
- handle = handle;
- option = option; /* Eliminate warning about unused parameters */
+ (void) handle;
+ (void) option; /* Eliminate warning about unused parameters */
switch (action)
{
@@ -221,7 +221,7 @@ optionResolutionCallback (SANE_Option * option, SANE_Handle handle,
SANE_Status status;
SANE_Word autoValue = 75;
- handle = handle; /* Eliminate warning about unused parameters */
+ (void) handle; /* Eliminate warning about unused parameters */
switch (action)
{
@@ -268,8 +268,8 @@ static SANE_Status
optionGrayscaleCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
- handle = handle;
- option = option; /* Eliminate warning about unused parameters */
+ (void) handle;
+ (void) option; /* Eliminate warning about unused parameters */
switch (action)
{
@@ -315,9 +315,9 @@ static SANE_Status
optionAGainCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
- option = option;
- handle = handle;
- info = info; /* Eliminate warning about unused parameters */
+ (void) option;
+ (void) handle;
+ (void) info; /* Eliminate warning about unused parameters */
switch (action)
{
@@ -357,9 +357,9 @@ static SANE_Status
optionGammaCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
- option = option;
- handle = handle;
- info = info; /* Eliminate warning about unused parameters */
+ (void) option;
+ (void) handle;
+ (void) info; /* Eliminate warning about unused parameters */
switch (action)
{
@@ -418,9 +418,9 @@ static SANE_Status
optionTopLeftXCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
- option = option;
- handle = handle;
- value = value; /* Eliminate warning about unused parameters */
+ (void) option;
+ (void) handle;
+ (void) value; /* Eliminate warning about unused parameters */
switch (action)
{
@@ -462,8 +462,8 @@ optionTopLeftYCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
/* Eliminate warnings about unused parameters */
- option = option;
- handle = handle;
+ (void) option;
+ (void) handle;
switch (action)
{
@@ -506,8 +506,8 @@ optionBotRightXCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
/* Eliminate warnings about unused parameters */
- option = option;
- handle = handle;
+ (void) option;
+ (void) handle;
switch (action)
{
@@ -550,8 +550,8 @@ optionBotRightYCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
/* Eliminate warnings about unused parameters */
- option = option;
- handle = handle;
+ (void) option;
+ (void) handle;
switch (action)
{
@@ -912,7 +912,7 @@ sane_close (SANE_Handle handle)
const SANE_Option_Descriptor *
sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
{
- handle = handle; /* Eliminate compiler warning */
+ (void) handle; /* Eliminate compiler warning */
DBG (3, "sane_get_option_descriptor: option = %d\n", option);
if (option < 0 || option >= NELEMS (so))
@@ -924,7 +924,7 @@ SANE_Status
sane_control_option (SANE_Handle handle, SANE_Int option,
SANE_Action action, void *value, SANE_Int * info)
{
- handle = handle; /* Eliminate compiler warning */
+ (void) handle; /* Eliminate compiler warning */
DBG (3,
"sane_control_option: handle=%p, opt=%d, act=%d, val=%p, info=%p\n",
@@ -945,7 +945,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
SANE_UNFIX (optionBotRightYValue -
optionTopLeftYValue) / MM_IN_INCH * optionResolutionValue;
- handle = handle; /* Eliminate compiler warning */
+ (void) handle; /* Eliminate compiler warning */
DBG (3, "sane_get_parameters\n");
parms.depth = 8;
@@ -1035,7 +1035,7 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
- handle = handle; /* silence gcc */
- fd = fd; /* silence gcc */
+ (void) handle; /* silence gcc */
+ (void) fd; /* silence gcc */
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/canon_dr-cmd.h b/backend/canon_dr-cmd.h
index e9fc54b..0ef883f 100644
--- a/backend/canon_dr-cmd.h
+++ b/backend/canon_dr-cmd.h
@@ -131,9 +131,12 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define IN_periph_devtype_unknown 0x1f
#define get_IN_response_format(in) getbitfield(in + 0x03, 0x07, 0)
#define IN_recognized 0x02
-#define get_IN_vendor(in, buf) strncpy(buf, (char *)in + 0x08, 0x08)
-#define get_IN_product(in, buf) strncpy(buf, (char *)in + 0x10, 0x010)
-#define get_IN_version(in, buf) strncpy(buf, (char *)in + 0x20, 0x04)
+#define get_IN_vendor(in, buf) snprintf(buf, 0x08 + 1, "%.*s", \
+ 0x08, (char*)in + 0x08)
+#define get_IN_product(in, buf) snprintf(buf, 0x10 + 1, "%.*s", \
+ 0x10, (char*)in + 0x10)
+#define get_IN_version(in, buf) snprintf(buf, 0x04 + 1, "%.*s", \
+ 0x04, (char*)in + 0x20)
/* the VPD response */
#define get_IN_page_length(in) in[0x04]
@@ -219,6 +222,7 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define SR_datatype_endorser 0x90
#define SR_datatype_fineoffset 0x90
#define SR_datatype_finegain 0x91
+#define SR_datatype_imprinters 0x96 /*DR-X10C*/
/* ==================================================================== */
/* READ */
@@ -252,7 +256,20 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
/*counters*/
#define R_COUNTERS_len 0x80
-#define get_R_COUNTERS_scans(in) getnbyte(in + 0x04, 4)
+#define get_R_COUNTERS_total(in) getnbyte(in + 0x04, 4)
+#define get_R_COUNTERS_last_srv(in) getnbyte(in + 0x44, 4)
+
+/*imprinters*/
+#define R_IMPRINTER_len 0x20
+#define R_PRE_IMPRINTER 0
+#define R_POST_IMPRINTER 1
+#define get_R_IMPRINTER_found(in) getbitfield(in+1, 1, 0)
+/*4 bytes at in + 0: (DR-X10C)
+pre-imprinter on: 0x07010000
+pre-imprinter off: 0x06000000
+post-imprinter on: 0x03010000
+post-imprinter off: 0x02000000
+*/
/*endorser unread?*/
@@ -454,6 +471,14 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define SM2_pc_buffer 0x02
#define SM2_pc_hw_enhancement 0x03
#define SM2_pc_dropout 0x06
+#define SM2_pc_date_time 0x07
+#define SM2_pc_imprinter_settings 0x33
+#define SM2_pc_imprinter_specstring 0x34
+
+/* ==================================================================== */
+/* GET SCAN MODE 2 */
+#define GET_SCAN_MODE2_code 0xe4
+#define GET_SCAN_MODE2_len 12
/* ==================================================================== */
/* SET SCAN MODE 2 */
@@ -465,11 +490,15 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
/* the payload */
#define SSM2_PAY_len 0x10
+#define SSM2_IMPRINTER_STRING_PAY_len 0x8e
/* for DF (0x00) page */
-#define set_SSM2_DF_thick(sb, val) setbitfield(sb+3, 1, 2, val)
+#define set_SSM2_DF_imprint(sb, val) setbitfield(sb+2, 1, 0, val)
+#define set_SSM2_DF_post_addon(sb, val) setbitfield(sb+2, 1, 1, val)
#define set_SSM2_DF_len(sb, val) setbitfield(sb+3, 1, 0, val)
+#define set_SSM2_DF_thick(sb, val) setbitfield(sb+3, 1, 2, val)
#define set_SSM2_DF_staple(sb, val) setbitfield(sb+3, 1, 4, val)
+#define set_SSM2_DF_imprint2(sb, val) setbitfield(sb+3, 1, 6, val)
/* for ULTRA (0x01) page */
#define set_SSM2_ULTRA_top(sb, val) putnbyte(sb + 0x07, val, 2)
@@ -489,6 +518,32 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define set_SSM2_DO_en(sb, val) sb[0x0a] = val
#define set_SSM2_DO_side(sb, val) sb[0x05] = val
+/* for IMPRINT DATE & TIME (0x07) */
+#define set_SSM2_imprint_year(sb, val) putnbyte(sb + 0x02, val, 2)
+#define set_SSM2_imprint_month(sb, val) putnbyte(sb + 0x04, val, 1)
+#define set_SSM2_imprint_day(sb, val) putnbyte(sb + 0x05, val, 1)
+#define set_SSM2_imprint_hour(sb, val) putnbyte(sb + 0x06, val, 1)
+#define set_SSM2_imprint_min(sb, val) putnbyte(sb + 0x07, val, 1)
+#define set_SSM2_imprint_sec(sb, val) putnbyte(sb + 0x08, val, 1)
+
+/* for IMPRINTER SETTINGS (0x33) page */
+#define set_SSM2_postimprint_cmd(sb) sb[0x04] = 1
+#define set_SSM2_postimprint_addon(sb) setbitfield(sb, 1, 1, 1)
+#define set_SSM2_imprint_hoffset(sb, val) putnbyte(sb + 0x05, val, 2)
+#define set_SSM2_imprint_voffset(sb, val) putnbyte(sb + 0x07, val, 2)
+
+/* for IMPRINTER STRING SPECIFICATION (0x34) page */
+#define IMPRINTER_12x12_FONT 0
+#define IMPRINTER_8x12_FONT 1
+#define set_SSM2_imprint_fontsize(sb, val) setbitfield(sb + 0xA, 1, 0, val)
+#define set_SSM2_imprint_spacing(sb, val) setbitfield(sb + 0xA, 1, 1, val)
+#define set_SSM2_imprint_addonmode(sb, val) setbitfield(sb + 0x9, 3, 4, val)
+#define IMPRINTER_0_FONT_ROT 0
+#define IMPRINTER_90_FONT_ROT 1
+#define IMPRINTER_180_FONT_ROT 2
+#define IMPRINTER_270_FONT_ROT 3
+#define set_SSM2_imprint_fontrot(sb, val) setbitfield(sb + 0x9, 3, 0, val)
+
/* ==================================================================== */
/* window descriptor macros for SET_WINDOW and GET_WINDOW */
diff --git a/backend/canon_dr.c b/backend/canon_dr.c
index 95799e7..58299d7 100644
--- a/backend/canon_dr.c
+++ b/backend/canon_dr.c
@@ -3,7 +3,7 @@
This file is part of the SANE package, and implements a SANE backend
for various Canon DR-series scanners.
- Copyright (C) 2008-2021 m. allan noah
+ Copyright (C) 2008-2022 m. allan noah
Yabarana Corp. www.yabarana.com provided significant funding
EvriChart, Inc. www.evrichart.com provided funding and loaned equipment
@@ -355,6 +355,10 @@
- rewrite do_cmd() timeout handling
- remove long timeout TUR from v61 (did not help)
- allow config file to set initial tur timeout for DR-X10C (#142)
+ v63 2022-11-18, CQ, MAN
+ - add support for reading the total and roller counters
+ v64 2022-11-18, CQ, MAN
+ - add complete support for imprinters on X10C (#585)
SANE FLOW DIAGRAM
@@ -393,6 +397,7 @@
#include <math.h> /*tan*/
#include <unistd.h> /*usleep*/
#include <sys/time.h> /*gettimeofday*/
+#include <time.h> /*localtime*/
#include <stdlib.h> /*strtol*/
#include "../include/sane/sanei_backend.h"
@@ -406,7 +411,7 @@
#include "canon_dr.h"
#define DEBUG 1
-#define BUILD 62
+#define BUILD 64
/* values for SANE_DEBUG_CANON_DR env var:
- errors 5
@@ -449,6 +454,13 @@
#define STRING_NONE SANE_I18N("None")
#define STRING_JPEG SANE_I18N("JPEG")
+#define STRING_IMPRINTER_8x12_FONT SANE_I18N("8x12")
+#define STRING_IMPRINTER_12x12_FONT SANE_I18N("12x12")
+
+#define STRING_IMPRINTER_ADDON_BoW SANE_I18N("Black-on-White")
+#define STRING_IMPRINTER_ADDON_BoI SANE_I18N("Black-on-Image")
+#define STRING_IMPRINTER_ADDON_WoB SANE_I18N("White-on-Black")
+
/* Also set via config file. */
static int global_buffer_size;
static int global_buffer_size_default = 2 * 1024 * 1024;
@@ -494,7 +506,7 @@ static struct scanner *scanner_devList = NULL;
SANE_Status
sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
DBG_INIT ();
DBG (10, "sane_init: start\n");
@@ -547,7 +559,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
int num_devices=0;
int i=0;
- local_only = local_only; /* get rid of compiler warning */
+ (void) local_only; /* get rid of compiler warning */
DBG (10, "sane_get_devices: start\n");
@@ -992,6 +1004,12 @@ attach_one (const char *device_name, int connType)
return ret;
}
+ /* this detects imprinters if they are available */
+ ret = init_imprinters (s);
+ if (ret != SANE_STATUS_GOOD) {
+ DBG (5, "attach_one: errors while trying to detect optional imprinters, continuing\n");
+ }
+
/* enable/read the buttons */
ret = init_panel (s);
if (ret != SANE_STATUS_GOOD) {
@@ -1001,6 +1019,13 @@ attach_one (const char *device_name, int connType)
return ret;
}
+ /* enable/read the lifecycle counters */
+ ret = init_counters (s);
+ if (ret != SANE_STATUS_GOOD) {
+ DBG (5, "attach_one: unable to detect lifecycle counters, continuing\n");
+ return ret;
+ }
+
/* sets SANE option 'values' to good defaults */
ret = init_user (s);
if (ret != SANE_STATUS_GOOD) {
@@ -1168,6 +1193,7 @@ init_inquire (struct scanner *s)
if (strncmp ("DR", s->model_name, 2)
&& strncmp ("CR", s->model_name, 2)
&& strncmp ("P-", s->model_name, 2)
+ && strncmp ("R", s->model_name, 1)
) {
DBG (5, "The device at '%s' is reported to be a '%s'\n",
s->device_name, s->model_name);
@@ -1388,8 +1414,9 @@ init_model (struct scanner *s)
s->max_x_fb = s->max_x;
s->max_y_fb = s->max_y;
- /* missing from vpd- we will unset this for b&w machines below */
+ /* missing from vpd- we will unset these for some machines below */
s->can_color = 1;
+ s->can_read_lifecycle_counters = 1;
/* specific settings missing from vpd */
if (strstr (s->model_name,"DR-9080")){
@@ -1491,6 +1518,34 @@ init_model (struct scanner *s)
s->can_monochrome=0;
}
+ else if (strstr (s->model_name,"R40")
+ ){
+ /* confirmed */
+ s->gray_interlace[SIDE_FRONT] = GRAY_INTERLACE_C120;
+ s->gray_interlace[SIDE_BACK] = GRAY_INTERLACE_C120;
+ s->color_interlace[SIDE_FRONT] = COLOR_INTERLACE_C120;
+ s->color_interlace[SIDE_BACK] = COLOR_INTERLACE_C120;
+ s->duplex_interlace = DUPLEX_INTERLACE_2510;
+ /*s->duplex_offset = 320; now set in config file*/
+ s->fixed_width = 1;
+ s->need_ccal = 1;
+ s->fcal_src = FCAL_SRC_SCAN;
+ s->fcal_dest = FCAL_DEST_SW;
+ s->rgb_format = 1;
+ s->sw_lut = 1;
+
+ /*only in Y direction, so we trash them in X*/
+ s->std_res_x[DPI_100]=0;
+ s->std_res_x[DPI_150]=0;
+ s->std_res_x[DPI_200]=0;
+ s->std_res_x[DPI_240]=0;
+ s->std_res_x[DPI_400]=0;
+
+ /* suspected settings */
+ s->ccal_version = 3;
+ s->has_df_ultra = 1;
+ }
+
/* copied from 2510, possibly incorrect */
else if (strstr (s->model_name,"DR-3010")){
s->rgb_format = 1;
@@ -1840,6 +1895,7 @@ init_model (struct scanner *s)
}
else if (strstr (s->model_name,"DR-X10C")){
+ int i = 0;
/* Required for USB coms */
s->has_ssm = 0;
@@ -1862,6 +1918,61 @@ init_model (struct scanner *s)
s->std_res_y[DPI_600]=1;
s->has_hwcrop = 1;
+
+ /*valid horizontal offsets for post-imprinter*/
+ s->post_imprinter_h_offset_list[++i] = 21;
+ s->post_imprinter_h_offset_list[++i] = 35;
+ s->post_imprinter_h_offset_list[++i] = 47;
+ s->post_imprinter_h_offset_list[++i] = 59;
+ s->post_imprinter_h_offset_list[++i] = 72;
+ s->post_imprinter_h_offset_list[++i] = 99;
+ s->post_imprinter_h_offset_list[++i] = 114;
+ s->post_imprinter_h_offset_list[++i] = 143;
+ s->post_imprinter_h_offset_list[++i] = 155;
+ s->post_imprinter_h_offset_list[++i] = 167;
+ s->post_imprinter_h_offset_list[++i] = 196;
+ s->post_imprinter_h_offset_list[++i] = 211;
+ s->post_imprinter_h_offset_list[++i] = 239;
+ s->post_imprinter_h_offset_list[++i] = 251;
+ s->post_imprinter_h_offset_list[++i] = 263;
+ s->post_imprinter_h_offset_list[++i] = 275;
+ s->post_imprinter_h_offset_list[++i] = 289;
+ s->post_imprinter_h_offset_list[0] = i;
+
+ i = 0;
+ /*valid horizontal offsets for pre-imprinter*/
+ s->pre_imprinter_h_offset_list[++i] = 14;
+ s->pre_imprinter_h_offset_list[++i] = 28;
+ s->pre_imprinter_h_offset_list[++i] = 41;
+ s->pre_imprinter_h_offset_list[++i] = 53;
+ s->pre_imprinter_h_offset_list[++i] = 65;
+ s->pre_imprinter_h_offset_list[++i] = 106;
+ s->pre_imprinter_h_offset_list[0] = i;
+
+ /*valid vertical offsets for imprinters*/
+ s->imprinter_v_offset_range.min = 0;
+ s->imprinter_v_offset_range.max = 500;
+ s->imprinter_v_offset_range.quant = 1;
+
+ i = 0;
+ /*valid font angles for imprinters*/
+ s->imprinter_font_angle_list[++i] = 0;
+ s->imprinter_font_angle_list[++i] = 90;
+ s->imprinter_font_angle_list[++i] = 180;
+ s->imprinter_font_angle_list[++i] = 270;
+ s->imprinter_font_angle_list[0] = i;
+
+ i = 0;
+ s->imprint_font_size_list[i++] = STRING_IMPRINTER_8x12_FONT;
+ s->imprint_font_size_list[i++] = STRING_IMPRINTER_12x12_FONT;
+ s->imprint_font_size_list[i] = NULL;
+
+ i = 0;
+ s->imprint_addon_mode_list[i++] = STRING_IMPRINTER_ADDON_BoI;
+ s->imprint_addon_mode_list[i++] = STRING_IMPRINTER_ADDON_BoW;
+ s->imprint_addon_mode_list[i++] = STRING_IMPRINTER_ADDON_WoB;
+ s->imprint_addon_mode_list[i++] = STRING_NONE;
+ s->imprint_addon_mode_list[i] = NULL;
}
DBG (10, "init_model: finish\n");
@@ -1870,6 +1981,30 @@ init_model (struct scanner *s)
}
/*
+ * try to detect imprinters.
+ */
+static SANE_Status
+init_imprinters (struct scanner *s)
+{
+ SANE_Status ret = SANE_STATUS_GOOD;
+
+ s->has_pre_imprinter = 0;
+ s->has_post_imprinter = 0;
+
+ ret = detect_imprinter(s,R_PRE_IMPRINTER);
+ if(ret != SANE_STATUS_GOOD){
+ return ret;
+ }
+
+ ret = detect_imprinter(s,R_POST_IMPRINTER);
+ if(ret != SANE_STATUS_GOOD){
+ return ret;
+ }
+
+ return ret;
+}
+
+/*
* This function enables the buttons and preloads the current panel values
*/
static SANE_Status
@@ -1901,6 +2036,28 @@ init_panel (struct scanner *s)
}
/*
+ * This function disables the lifecycle counters if not available
+ */
+static SANE_Status
+init_counters (struct scanner *s)
+{
+ SANE_Status ret = SANE_STATUS_GOOD;
+
+ DBG (10, "init_counters: start\n");
+
+ ret = read_counters(s);
+ if(ret){
+ DBG (5, "init_counters: disabling lifecycle counters\n");
+ s->can_read_lifecycle_counters = 0;
+ return ret;
+ }
+
+ DBG (10, "init_counters: finish\n");
+
+ return ret;
+}
+
+/*
* set good default user values.
* struct is already initialized to 0.
*/
@@ -1953,6 +2110,10 @@ init_user (struct scanner *s)
s->threshold = 90;
s->compress_arg = 50;
+ s->pre_imprint.h_offset = 65;
+ s->post_imprint.h_offset = 155;
+ s->post_imprint_addon_mode = ADDON_BoI;
+
DBG (10, "init_user: finish\n");
return SANE_STATUS_GOOD;
@@ -2737,6 +2898,197 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->cap = SANE_CAP_INACTIVE;
}
+ /* "Imprinter" group --------------------------------------------------- */
+ if(option==OPT_IMPRINT_GROUP){
+ opt->name = "imprinter-options";
+ opt->title = SANE_I18N ("Imprinter Options");
+ opt->desc = SANE_I18N ("Controls for imprinter units");
+ opt->type = SANE_TYPE_GROUP;
+ opt->constraint_type = SANE_CONSTRAINT_NONE;
+
+ /*flaming hack to get scanimage to hide group*/
+ if ( !(s->has_pre_imprinter || s->has_post_imprinter) )
+ opt->type = SANE_TYPE_BOOL;
+ }
+
+ if(option==OPT_PRE_IMPRINT_SPECSTRING){
+ opt->name = "pre-imprint-string";
+ opt->title = "Pre-Imprinter string";
+ opt->desc = "String specifier for the pre-imprinter text";
+ opt->type = SANE_TYPE_STRING;
+ opt->size = IMPRINT_SPECSTRING_LEN;
+ if (s->has_pre_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_PRE_IMPRINT_H_OFFSET){
+ opt->name = "pre-imprint-h-offset";
+ opt->title = "Pre-Imprinter horizontal offset";
+ opt->desc = "Integer specifying the horizontal positioning of the pre-imprinter";
+ opt->type = SANE_TYPE_INT;
+ opt->unit = SANE_UNIT_MM;
+ opt->size = sizeof(SANE_Word);
+ opt->constraint_type = SANE_CONSTRAINT_WORD_LIST;
+ opt->constraint.word_list = s->pre_imprinter_h_offset_list;
+ if (s->has_pre_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_PRE_IMPRINT_V_OFFSET){
+ opt->name = "pre-imprint-v-offset";
+ opt->title = "Pre-Imprinter vertical offset";
+ opt->desc = "Integer specifying the vertical positioning of the pre-imprinter";
+ opt->type = SANE_TYPE_INT;
+ opt->unit = SANE_UNIT_MM;
+ opt->size = sizeof(SANE_Word);
+ opt->constraint_type = SANE_CONSTRAINT_RANGE;
+ opt->constraint.range = &s->imprinter_v_offset_range;
+ if (s->has_pre_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_PRE_IMPRINT_FONT_SIZE){
+ opt->name = "pre-imprint-font-size";
+ opt->title = "Pre-Imprinter font size";
+ opt->desc = "Integer specifying the pre-imprint font size";
+ opt->type = SANE_TYPE_STRING;
+ opt->constraint_type = SANE_CONSTRAINT_STRING_LIST;
+ opt->constraint.string_list = s->imprint_font_size_list;
+ opt->size = maxStringSize (opt->constraint.string_list);
+ if (s->has_pre_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_PRE_IMPRINT_FONT_ROT){
+ opt->name = "pre-imprint-font-rot";
+ opt->title = "Pre-Imprinter font rotation";
+ opt->desc = "Integer specifying the pre-imprint font rotation";
+ opt->type = SANE_TYPE_INT;
+ opt->unit = SANE_UNIT_NONE;
+ opt->size = sizeof(SANE_Word);
+ opt->constraint_type = SANE_CONSTRAINT_WORD_LIST;
+ opt->constraint.word_list = s->imprinter_font_angle_list;
+ if (s->has_pre_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_PRE_IMPRINT_SPACING){
+ opt->name = "pre-imprint-spacing";
+ opt->title = "Pre-Imprinter spacing";
+ opt->desc = "Enables the pre-imprint extra spacing";
+ opt->type = SANE_TYPE_BOOL;
+ if (s->has_pre_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_POST_IMPRINT_SPECSTRING){
+ opt->name = "post-imprint-string";
+ opt->title = "Post-Imprinter string";
+ opt->desc = "String specifier for the post-imprinter text";
+ opt->type = SANE_TYPE_STRING;
+ opt->size = IMPRINT_SPECSTRING_LEN;
+ if (s->has_post_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_POST_IMPRINT_H_OFFSET){
+ opt->name = "post-imprint-h-offset";
+ opt->title = "Post-Imprinter horizontal offset";
+ opt->desc = "Integer specifying the horizontal positioning of the post-imprinter";
+ opt->type = SANE_TYPE_INT;
+ opt->unit = SANE_UNIT_MM;
+ opt->size = sizeof(SANE_Word);
+ opt->constraint_type = SANE_CONSTRAINT_WORD_LIST;
+ opt->constraint.word_list = s->post_imprinter_h_offset_list;
+ if (s->has_post_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_POST_IMPRINT_V_OFFSET){
+ opt->name = "post-imprint-v-offset";
+ opt->title = "Post-Imprinter vertical offset";
+ opt->desc = "Integer specifying the vertical positioning of the post-imprinter";
+ opt->type = SANE_TYPE_INT;
+ opt->unit = SANE_UNIT_MM;
+ opt->size = sizeof(SANE_Word);
+ opt->constraint_type = SANE_CONSTRAINT_RANGE;
+ opt->constraint.range = &s->imprinter_v_offset_range;
+ if (s->has_post_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_POST_IMPRINT_FONT_SIZE){
+ opt->name = "post-imprint-font-size";
+ opt->title = "Post-Imprinter font size";
+ opt->desc = "Integer specifying the post-imprint font size";
+ opt->type = SANE_TYPE_STRING;
+ opt->constraint_type = SANE_CONSTRAINT_STRING_LIST;
+ opt->constraint.string_list = s->imprint_font_size_list;
+ opt->size = maxStringSize (opt->constraint.string_list);
+ if (s->has_post_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_POST_IMPRINT_FONT_ROT){
+ opt->name = "post-imprint-font-rot";
+ opt->title = "Post-Imprinter font rotation";
+ opt->desc = "Integer specifying the post-imprint font rotation";
+ opt->type = SANE_TYPE_INT;
+ opt->unit = SANE_UNIT_NONE;
+ opt->size = sizeof(SANE_Word);
+ opt->constraint_type = SANE_CONSTRAINT_WORD_LIST;
+ opt->constraint.word_list = s->imprinter_font_angle_list;
+ if (s->has_post_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_POST_IMPRINT_SPACING){
+ opt->name = "post-imprint-spacing";
+ opt->title = "Post-Imprinter spacing";
+ opt->desc = "Enables the post-imprint extra spacing";
+ opt->type = SANE_TYPE_BOOL;
+ if (s->has_post_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_POST_IMPRINT_ADDON_MODE){
+ opt->name = "post-imprint-addon-mode";
+ opt->title = "Post-Imprinter addon mode";
+ opt->desc = "Integer specifying the type of post-imprint addon rendered in the scanned image";
+ opt->type = SANE_TYPE_STRING;
+ opt->constraint_type = SANE_CONSTRAINT_STRING_LIST;
+ opt->constraint.string_list = s->imprint_addon_mode_list;
+ opt->size = maxStringSize (opt->constraint.string_list);
+ if (s->has_post_imprinter)
+ opt->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
/* "Sensor" group ------------------------------------------------------ */
if(option==OPT_SENSOR_GROUP){
opt->name = SANE_NAME_SENSORS;
@@ -2830,6 +3182,34 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
opt->cap = SANE_CAP_INACTIVE;
}
+ if(option==OPT_ROLLERCOUNTER){
+ opt->name = "roller-counter";
+ opt->title = "Roller Counter";
+ opt->desc = "Scans since last roller replacement";
+ opt->type = SANE_TYPE_INT;
+ opt->unit = SANE_UNIT_NONE;
+ opt->constraint_type = SANE_CONSTRAINT_NONE;
+
+ if (s->can_read_lifecycle_counters)
+ opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
+ if(option==OPT_TOTALCOUNTER){
+ opt->name = "total-counter";
+ opt->title = "Total Counter";
+ opt->desc = "Total scan count of the device";
+ opt->type = SANE_TYPE_INT;
+ opt->unit = SANE_UNIT_NONE;
+ opt->constraint_type = SANE_CONSTRAINT_NONE;
+
+ if (s->can_read_lifecycle_counters)
+ opt->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
+ else
+ opt->cap = SANE_CAP_INACTIVE;
+ }
+
if(option==OPT_ADF_LOADED){
opt->name = "adf-loaded";
opt->title = "ADF Loaded";
@@ -3108,6 +3488,122 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
*val_p = s->hwcrop;
return SANE_STATUS_GOOD;
+ case OPT_PRE_IMPRINT_SPECSTRING:
+ strcpy(val, s->pre_imprint.specstring);
+ return SANE_STATUS_GOOD;
+
+ case OPT_PRE_IMPRINT_H_OFFSET:
+ *val_p = s->pre_imprint.h_offset;
+ return SANE_STATUS_GOOD;
+
+ case OPT_PRE_IMPRINT_V_OFFSET:
+ *val_p = s->pre_imprint.v_offset;
+ return SANE_STATUS_GOOD;
+
+ case OPT_PRE_IMPRINT_FONT_SIZE:
+ switch (s->pre_imprint.font_size){
+ case IMPRINTER_12x12_FONT:
+ strcpy(val, STRING_IMPRINTER_12x12_FONT);
+ break;
+
+ case IMPRINTER_8x12_FONT:
+ strcpy(val, STRING_IMPRINTER_8x12_FONT);
+ break;
+ }
+ return SANE_STATUS_GOOD;
+
+ case OPT_PRE_IMPRINT_FONT_ROT:
+ switch (s->pre_imprint.font_rot){
+ case IMPRINTER_0_FONT_ROT:
+ *val_p = 0;
+ break;
+
+ case IMPRINTER_90_FONT_ROT:
+ *val_p = 90;
+ break;
+
+ case IMPRINTER_180_FONT_ROT:
+ *val_p = 180;
+ break;
+
+ case IMPRINTER_270_FONT_ROT:
+ *val_p = 270;
+ break;
+ }
+ return SANE_STATUS_GOOD;
+
+ case OPT_PRE_IMPRINT_SPACING:
+ *val_p = s->pre_imprint.spacing;
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_SPECSTRING:
+ strcpy(val, s->post_imprint.specstring);
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_H_OFFSET:
+ *val_p = s->post_imprint.h_offset;
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_V_OFFSET:
+ *val_p = s->post_imprint.v_offset;
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_FONT_SIZE:
+ switch (s->post_imprint.font_size){
+ case IMPRINTER_12x12_FONT:
+ strcpy(val, STRING_IMPRINTER_12x12_FONT);
+ break;
+
+ case IMPRINTER_8x12_FONT:
+ strcpy(val, STRING_IMPRINTER_8x12_FONT);
+ break;
+ }
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_FONT_ROT:
+ switch (s->post_imprint.font_rot){
+ case IMPRINTER_0_FONT_ROT:
+ *val_p = 0;
+ break;
+
+ case IMPRINTER_90_FONT_ROT:
+ *val_p = 90;
+ break;
+
+ case IMPRINTER_180_FONT_ROT:
+ *val_p = 180;
+ break;
+
+ case IMPRINTER_270_FONT_ROT:
+ *val_p = 270;
+ break;
+ }
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_SPACING:
+ *val_p = s->post_imprint.spacing;
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_ADDON_MODE:
+ switch (s->post_imprint_addon_mode){
+ case ADDON_BoW:
+ strcpy(val, STRING_IMPRINTER_ADDON_BoW);
+ break;
+
+ case ADDON_BoI:
+ strcpy(val, STRING_IMPRINTER_ADDON_BoI);
+ break;
+
+ case ADDON_WoB:
+ strcpy(val, STRING_IMPRINTER_ADDON_WoB);
+ break;
+
+ case ADDON_DISABLED:
+ strcpy(val, STRING_NONE);
+ break;
+ }
+ return SANE_STATUS_GOOD;
+
/* Sensor Group */
case OPT_START:
ret = read_panel(s,OPT_START);
@@ -3144,6 +3640,16 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
*val_p = s->panel_counter;
return ret;
+ case OPT_ROLLERCOUNTER:
+ ret = read_counters(s);
+ *val_p = s->roller_counter;
+ return ret;
+
+ case OPT_TOTALCOUNTER:
+ ret = read_counters(s);
+ *val_p = s->total_counter;
+ return ret;
+
case OPT_ADF_LOADED:
ret = read_sensors(s,OPT_ADF_LOADED);
*val_p = s->sensor_adf_loaded;
@@ -3431,6 +3937,119 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
s->hwcrop = val_c;
return SANE_STATUS_GOOD;
+ case OPT_PRE_IMPRINT_SPECSTRING:
+ if (strlen(val) < IMPRINT_SPECSTRING_LEN){
+ strncpy(s->pre_imprint.specstring, val, IMPRINT_SPECSTRING_LEN);
+ return SANE_STATUS_GOOD;
+ }
+ DBG (5, "sane_control_option: pre-imprint spec string '%s' exceed the limit of %d characters\n", (SANE_String)val, IMPRINT_SPECSTRING_LEN);
+ return SANE_STATUS_INVAL;
+
+ case OPT_PRE_IMPRINT_H_OFFSET:
+ s->pre_imprint.h_offset = val_c;
+ return SANE_STATUS_GOOD;
+
+ case OPT_PRE_IMPRINT_V_OFFSET:
+ s->pre_imprint.v_offset = val_c;
+ return SANE_STATUS_GOOD;
+
+ case OPT_PRE_IMPRINT_FONT_SIZE:
+ if (!strcmp (val, STRING_IMPRINTER_12x12_FONT)) {
+ s->pre_imprint.font_size = IMPRINTER_12x12_FONT;
+ }
+ if (!strcmp (val, STRING_IMPRINTER_8x12_FONT)) {
+ s->pre_imprint.font_size = IMPRINTER_8x12_FONT;
+ }
+ return SANE_STATUS_GOOD;
+
+ case OPT_PRE_IMPRINT_FONT_ROT:
+ switch (val_c){
+ case 0:
+ s->pre_imprint.font_rot = IMPRINTER_0_FONT_ROT;
+ break;
+
+ case 90:
+ s->pre_imprint.font_rot = IMPRINTER_90_FONT_ROT;
+ break;
+
+ case 180:
+ s->pre_imprint.font_rot = IMPRINTER_180_FONT_ROT;
+ break;
+
+ case 270:
+ s->pre_imprint.font_rot = IMPRINTER_270_FONT_ROT;
+ break;
+ }
+ return SANE_STATUS_GOOD;
+
+ case OPT_PRE_IMPRINT_SPACING:
+ s->pre_imprint.spacing = val_c;
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_SPECSTRING:
+ if (strlen(val) < IMPRINT_SPECSTRING_LEN){
+ strncpy(s->post_imprint.specstring, val, IMPRINT_SPECSTRING_LEN);
+ return SANE_STATUS_GOOD;
+ }
+ DBG (5, "sane_control_option: post-imprint spec string '%s' exceed the limit of %d characters\n", (SANE_String)val, IMPRINT_SPECSTRING_LEN);
+ return SANE_STATUS_INVAL;
+
+ case OPT_POST_IMPRINT_H_OFFSET:
+ s->post_imprint.h_offset = val_c;
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_V_OFFSET:
+ s->post_imprint.v_offset = val_c;
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_FONT_SIZE:
+ if (!strcmp (val, STRING_IMPRINTER_12x12_FONT)) {
+ s->post_imprint.font_size = IMPRINTER_12x12_FONT;
+ }
+ if (!strcmp (val, STRING_IMPRINTER_8x12_FONT)) {
+ s->post_imprint.font_size = IMPRINTER_8x12_FONT;
+ }
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_FONT_ROT:
+ switch (val_c){
+ case 0:
+ s->post_imprint.font_rot = IMPRINTER_0_FONT_ROT;
+ break;
+
+ case 90:
+ s->post_imprint.font_rot = IMPRINTER_90_FONT_ROT;
+ break;
+
+ case 180:
+ s->post_imprint.font_rot = IMPRINTER_180_FONT_ROT;
+ break;
+
+ case 270:
+ s->post_imprint.font_rot = IMPRINTER_270_FONT_ROT;
+ break;
+ }
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_SPACING:
+ s->post_imprint.spacing = val_c;
+ return SANE_STATUS_GOOD;
+
+ case OPT_POST_IMPRINT_ADDON_MODE:
+ if (!strcmp (val, STRING_IMPRINTER_ADDON_BoW)) {
+ s->post_imprint_addon_mode = ADDON_BoW;
+ }
+ if (!strcmp (val, STRING_IMPRINTER_ADDON_BoI)) {
+ s->post_imprint_addon_mode = ADDON_BoI;
+ }
+ if (!strcmp (val, STRING_IMPRINTER_ADDON_WoB)) {
+ s->post_imprint_addon_mode = ADDON_WoB;
+ }
+ if (!strcmp (val, STRING_NONE)) {
+ s->post_imprint_addon_mode = ADDON_DISABLED;
+ }
+ return SANE_STATUS_GOOD;
+
}
} /* else */
@@ -3636,6 +4255,14 @@ ssm_df (struct scanner *s)
set_SSM2_DF_staple(out, 1);
}
+ int requires_postimprint = s->has_post_imprinter && (strlen(s->post_imprint.specstring) > 0);
+ int requires_preimprint = s->has_pre_imprinter && (strlen(s->pre_imprint.specstring) > 0);
+ if (s->has_post_imprinter)
+ set_SSM2_DF_post_addon(out, requires_postimprint);
+ if (requires_postimprint || requires_preimprint){
+ set_SSM2_DF_imprint(out, 1);
+ }
+
ret = do_cmd (
s, 1, 0,
cmd, cmdLen,
@@ -3897,6 +4524,50 @@ ssm_do (struct scanner *s)
}
static SANE_Status
+read_counters(struct scanner *s)
+{
+ SANE_Status ret = SANE_STATUS_GOOD;
+
+ unsigned char cmd[READ_len];
+ size_t cmdLen = READ_len;
+
+ unsigned char in[R_COUNTERS_len];
+ size_t inLen = R_COUNTERS_len;
+
+ if (!s->can_read_lifecycle_counters){
+ DBG(10, "read_counters: unsupported\n");
+ return ret;
+ }
+
+ DBG(10, "read_counters: start\n");
+
+ memset(cmd,0,cmdLen);
+ set_SCSI_opcode(cmd, READ_code);
+ set_R_datatype_code(cmd, SR_datatype_counters);
+ set_R_xfer_length(cmd, inLen);
+
+ ret = do_cmd(
+ s, 1, 0,
+ cmd, cmdLen,
+ NULL, 0,
+ in, &inLen
+ );
+
+ if (ret == SANE_STATUS_GOOD || ret == SANE_STATUS_EOF){
+
+ s->total_counter = get_R_COUNTERS_total(in);
+ s->roller_counter = s->total_counter - get_R_COUNTERS_last_srv(in);
+
+ DBG(10, "read_counters: total counter: %d roller_counter %d \n",s->total_counter,s->roller_counter);
+ ret = SANE_STATUS_GOOD;
+ }else{
+ DBG(10, "read_counters: ERROR: %d\n",ret);
+ }
+
+ return ret;
+}
+
+static SANE_Status
read_sensors(struct scanner *s,SANE_Int option)
{
SANE_Status ret=SANE_STATUS_GOOD;
@@ -4382,6 +5053,248 @@ update_params(struct scanner *s, int calib)
return ret;
}
+/* simplify handling cmd SANE_STATUS_EOF as SANE_STATUS_GOOD */
+SANE_Status
+send_cmd(struct scanner *s, unsigned char* cmd, size_t cmdLen,
+ unsigned char* out, size_t outLen,
+ unsigned char * inBuff, size_t * inLen)
+{
+ SANE_Status ret=SANE_STATUS_GOOD;
+
+ ret = do_cmd (
+ s, 1, 0,
+ cmd, cmdLen,
+ out, outLen,
+ inBuff, inLen
+ );
+
+ if (ret == SANE_STATUS_EOF) {
+ ret = SANE_STATUS_GOOD;
+ }
+
+ return ret;
+}
+
+SANE_Status
+send_imprint_positioning(struct scanner* s, int is_postimprint, int enabled)
+{
+ unsigned char cmd[SET_SCAN_MODE2_len];
+ size_t cmdLen=SET_SCAN_MODE2_len;
+
+ unsigned char out[SSM2_PAY_len];
+ size_t outLen=SSM2_PAY_len;
+
+ unsigned char out_prefix[5]={ 0x01, 0x00, 0x60, 0x00, 0x60 };
+ size_t outPrefixLen=5;
+
+ memset(cmd,0,cmdLen);
+ set_SCSI_opcode(cmd,SET_SCAN_MODE2_code);
+ set_SSM2_page_code(cmd,SM2_pc_imprinter_settings);
+ if (is_postimprint)
+ set_SSM2_postimprint_cmd(cmd);
+ set_SSM2_pay_len(cmd,outLen);
+
+ memset(out,0,outLen);
+ memcpy(out,out_prefix,outPrefixLen);
+
+ int h_offset;
+ int v_offset;
+ if (is_postimprint){
+ if (s->post_imprint_addon_mode != ADDON_DISABLED)
+ set_SSM2_postimprint_addon(out);
+ h_offset = s->post_imprint.h_offset;
+ v_offset = s->post_imprint.v_offset;
+
+ if (enabled)
+ DBG (10, "send_imprint_positioning: post-imprinter: h_offset: %d v_offset: %d\n",h_offset,v_offset);
+ }else{
+ h_offset = s->pre_imprint.h_offset;
+ v_offset = s->pre_imprint.v_offset;
+ if (enabled)
+ DBG (10, "send_imprint_positioning: pre-imprinter: h_offset: %d v_offset: %d\n",h_offset,v_offset);
+ }
+ if(!enabled)
+ h_offset = v_offset = 0;
+ set_SSM2_imprint_hoffset(out,h_offset);
+ set_SSM2_imprint_voffset(out,v_offset);
+
+ return send_cmd(s, cmd, cmdLen, out, outLen, NULL, NULL);
+}
+
+SANE_Status
+send_imprint_specstring(struct scanner* s, int is_postimprint)
+{
+ unsigned char cmd[SET_SCAN_MODE2_len];
+ size_t cmdLen = SET_SCAN_MODE2_len;
+
+ unsigned char out[SSM2_IMPRINTER_STRING_PAY_len];
+ size_t outLen = SSM2_IMPRINTER_STRING_PAY_len;
+
+ memset(cmd,0,cmdLen);
+ set_SCSI_opcode(cmd, SET_SCAN_MODE2_code);
+ set_SSM2_page_code(cmd, SM2_pc_imprinter_specstring);
+ if (is_postimprint)
+ set_SSM2_postimprint_cmd(cmd);
+ set_SSM2_pay_len(cmd, outLen);
+
+ memset(out,0,outLen);
+ /* most of these bytes have yet to be identified to specific functionalities,
+ as they never seem to change under different imprinting mode */
+ unsigned char out_prefix[32] = {
+ 0x01, 0x00,
+ 0x60, 0x00,
+ 0x60, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x03, 0x00,
+ 0x00, 0x00,
+ 0x01, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x00,
+ 0x00, 0x01,
+ 0x04, 0x00,
+ 0x00, 0x00
+ };
+ memcpy(out, out_prefix, 32);
+ if (is_postimprint){
+ set_SSM2_imprint_fontsize(out, s->post_imprint.font_size);
+ set_SSM2_imprint_fontrot(out, s->post_imprint.font_rot);
+ set_SSM2_imprint_spacing(out, s->post_imprint.spacing);
+ if (s->post_imprint_addon_mode != ADDON_DISABLED)
+ set_SSM2_imprint_addonmode(out, s->post_imprint_addon_mode);
+ strcpy((SANE_Char*)(out + 45), (SANE_String_Const) s->post_imprint.specstring);
+ DBG (10, "send_imprint_specstring: post-imprinter: font size: %d rotation: %d spacing: %d text: '%s' imprint-addon-mode: %d\n",s->post_imprint.font_size,s->post_imprint.font_rot,s->post_imprint.spacing,s->post_imprint.specstring,s->post_imprint_addon_mode);
+ }else{
+ set_SSM2_imprint_fontsize(out, s->pre_imprint.font_size);
+ set_SSM2_imprint_fontrot(out, s->pre_imprint.font_rot);
+ set_SSM2_imprint_spacing(out, s->pre_imprint.spacing);
+ strcpy((SANE_Char*)(out + 45), (SANE_String_Const) s->pre_imprint.specstring);
+ DBG (10, "send_imprint_specstring: pre-imprinter: font size: %d rotation: %d spacing: %d text: '%s'\n",s->pre_imprint.font_size,s->pre_imprint.font_rot,s->pre_imprint.spacing,s->pre_imprint.specstring);
+ }
+
+ return send_cmd(s, cmd, cmdLen, out, outLen, NULL, NULL);
+}
+
+SANE_Status
+send_imprint_date_and_time(struct scanner* s)
+{
+ unsigned char cmd[SET_SCAN_MODE2_len];
+ size_t cmdLen = SET_SCAN_MODE2_len;
+
+ unsigned char out[SSM2_PAY_len];
+ size_t outLen = SSM2_PAY_len;
+
+ memset(cmd,0,cmdLen);
+ set_SCSI_opcode(cmd, SET_SCAN_MODE2_code);
+ set_SSM2_page_code(cmd, SM2_pc_date_time);
+ set_SSM2_pay_len(cmd, outLen);
+
+ memset(out,0,outLen);
+
+ time_t t = time(NULL);
+ struct tm tM = *localtime(&t);
+
+ set_SSM2_imprint_year(out, tM.tm_year + 1900);
+ set_SSM2_imprint_month(out, tM.tm_mon + 1);
+ set_SSM2_imprint_day(out, tM.tm_mday);
+ set_SSM2_imprint_hour(out, tM.tm_hour);
+ set_SSM2_imprint_min(out, tM.tm_min);
+ set_SSM2_imprint_sec(out, tM.tm_sec);
+
+ return send_cmd(s, cmd, cmdLen, out, outLen, NULL, NULL);
+}
+
+SANE_Status
+load_imprinting_settings(struct scanner *s)
+{
+ SANE_Status ret = SANE_STATUS_GOOD;
+
+ int requires_preimprint = (strlen(s->pre_imprint.specstring) > 0);
+ int requires_postimprint = (strlen(s->post_imprint.specstring) > 0);
+ int send_date_time = (s->has_pre_imprinter && requires_preimprint) || (s->has_post_imprinter && requires_postimprint);
+
+ if (s->has_pre_imprinter){
+ ret = send_imprint_positioning(s, 0, requires_preimprint);
+ DBG(10, "load_imprinting_settings: send_pre_imprint_positioning = %d \n", ret);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ if (requires_preimprint){
+ ret = send_imprint_specstring(s, 0);
+ DBG(10, "load_imprinting_settings: send_pre_imprint_specstring = %d \n", ret);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ }
+ }
+
+ if (s->has_post_imprinter){
+ ret = send_imprint_positioning(s, 1, requires_postimprint);
+ DBG(10, "load_imprinting_settings: send_post_imprint_positioning = %d \n", ret);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ if (requires_postimprint){
+ ret = send_imprint_specstring(s, 1);
+ DBG(10, "load_imprinting_settings: send_post_imprint_specstring = %d \n", ret);
+ if (ret != SANE_STATUS_GOOD)
+ return ret;
+ }
+ }
+
+ if (send_date_time){
+ ret = send_imprint_date_and_time(s);
+ DBG(10, "load_imprinting_settings: send_imprint_date_and_time = %d \n", ret);
+ }
+ return ret;
+}
+
+static SANE_Status
+detect_imprinter(struct scanner *s,SANE_Int option)
+{
+ SANE_Status ret = SANE_STATUS_GOOD;
+
+ unsigned char cmd[READ_len];
+ size_t cmdLen = READ_len;
+
+ unsigned char in[R_IMPRINTER_len];
+ size_t inLen = R_IMPRINTER_len;
+
+ DBG (10, "detect_imprinter: start %d\n", option);
+
+ memset(cmd,0,cmdLen);
+ set_SCSI_opcode(cmd, READ_code);
+ set_R_datatype_code(cmd, SR_datatype_imprinters);
+ set_R_xfer_uid(cmd, option);
+ set_R_xfer_length(cmd, inLen);
+
+ ret = do_cmd(
+ s, 1, 0,
+ cmd, cmdLen,
+ NULL, 0,
+ in, &inLen
+ );
+
+ if (ret == SANE_STATUS_GOOD || ret == SANE_STATUS_EOF) {
+ ret = SANE_STATUS_GOOD;
+ }
+
+ int imprinter_found = get_R_IMPRINTER_found(in);
+ const char* imprinter_type = "unknown";
+ if (option == R_PRE_IMPRINTER){
+ s->has_pre_imprinter = imprinter_found;
+ imprinter_type = "pre-imprinter";
+ }
+ else if (option == R_POST_IMPRINTER){
+ s->has_post_imprinter = imprinter_found;
+ imprinter_type = "post-imprinter";
+ }
+
+ DBG (10, "detect_imprinter: type: %s. found status bit: %d \n",imprinter_type,imprinter_found);
+
+ return ret;
+}
+
/* reset image size parameters after buffer_xxx functions changed them */
SANE_Status
update_i_params(struct scanner *s)
@@ -4471,6 +5384,14 @@ sane_start (SANE_Handle handle)
goto errors;
}
+ if (s->has_pre_imprinter || s->has_post_imprinter){
+ ret = load_imprinting_settings(s);
+ if (ret != SANE_STATUS_GOOD) {
+ DBG (5, "sane_start: ERROR: invalid imprinting settings\n");
+ goto errors;
+ }
+ }
+
/* reset the page counter after calibration */
s->panel_counter = 0;
s->prev_page = 0;
@@ -7204,7 +8125,7 @@ sense_handler (int fd, unsigned char * sensed_data, void *arg)
DBG (5, "sense_handler: start\n");
/* kill compiler warning */
- fd = fd;
+ (void) fd;
/* copy the rs return data into the scanner struct
so that the caller can use it if he wants
@@ -7465,8 +8386,8 @@ do_scsi_cmd(struct scanner *s, int runRS, int timeout,
int ret;
/*shut up compiler*/
- runRS=runRS;
- timeout=timeout;
+ (void) runRS;
+ (void) timeout;
DBG(10, "do_scsi_cmd: start\n");
diff --git a/backend/canon_dr.conf.in b/backend/canon_dr.conf.in
index 7bce43c..399ed27 100644
--- a/backend/canon_dr.conf.in
+++ b/backend/canon_dr.conf.in
@@ -214,3 +214,7 @@ usb 0x1083 0x165d
# P-208II
usb 0x1083 0x165f
+
+# R40
+option duplex-offset 320
+usb 0x1083 0x1679
diff --git a/backend/canon_dr.h b/backend/canon_dr.h
index 7afbb90..e84b5b7 100644
--- a/backend/canon_dr.h
+++ b/backend/canon_dr.h
@@ -51,6 +51,22 @@ enum scanner_Option
OPT_SIDE,
OPT_HW_CROP,
+ /*imprinter option group*/
+ OPT_IMPRINT_GROUP,
+ OPT_PRE_IMPRINT_SPECSTRING,
+ OPT_PRE_IMPRINT_H_OFFSET,
+ OPT_PRE_IMPRINT_V_OFFSET,
+ OPT_PRE_IMPRINT_FONT_SIZE,
+ OPT_PRE_IMPRINT_FONT_ROT,
+ OPT_PRE_IMPRINT_SPACING,
+ OPT_POST_IMPRINT_SPECSTRING,
+ OPT_POST_IMPRINT_H_OFFSET,
+ OPT_POST_IMPRINT_V_OFFSET,
+ OPT_POST_IMPRINT_FONT_SIZE,
+ OPT_POST_IMPRINT_FONT_ROT,
+ OPT_POST_IMPRINT_SPACING,
+ OPT_POST_IMPRINT_ADDON_MODE,
+
/*sensor group*/
OPT_SENSOR_GROUP,
OPT_START,
@@ -60,6 +76,8 @@ enum scanner_Option
OPT_COUNTONLY,
OPT_BYPASSMODE,
OPT_COUNTER,
+ OPT_ROLLERCOUNTER,
+ OPT_TOTALCOUNTER,
OPT_ADF_LOADED,
OPT_CARD_LOADED,
@@ -106,6 +124,32 @@ struct img_params
};
+struct imprint_params
+{
+ /* ------------------------------------------------------------------------------ */
+ /* allowed values for post imprinter (in mm units): */
+ /* 21, 35, 47, 59, 72, 99, 114, 143, 155, 167, 196, 211, 239, 251, 263, 275, 289 */
+ /* allowed values for pre imprinter (in mm units): */
+ /* 14, 28, 41, 53, 65, 106 */
+ int h_offset;
+ /* --------------------------------------- */
+ /* allowed values: 0 to 500 (in mm units) */
+ int v_offset;
+
+ int font_size;
+ int font_rot;
+ int spacing;
+
+#define IMPRINT_SPECSTRING_LEN 64
+ /* ---------------------------------- */
+ /* special tokens: */
+ /* \TIME time in HH:MM:SS */
+ /* \DMY date in DD/MM/YYYY */
+ /* \YMD date in YYYY/MM/DD */
+ /* [[0-9]+] scan page count */
+ char specstring[IMPRINT_SPECSTRING_LEN];
+};
+
struct scanner
{
/* --------------------------------------------------------------------- */
@@ -204,9 +248,12 @@ struct scanner
int has_ssm2; /* newer scanners user this similar command */
int has_ssm_pay_head_len; /* newer scanners put the length twice in ssm */
int has_hwcrop;
+ int has_pre_imprinter;
+ int has_post_imprinter;
int can_read_sensors;
int can_read_panel;
int can_write_panel;
+ int can_read_lifecycle_counters;
int rgb_format; /* meaning unknown */
int padding; /* meaning unknown */
@@ -317,13 +364,34 @@ struct scanner
unsigned char lut[256];
/* --------------------------------------------------------------------- */
- /* values used by the software enhancement code (deskew, crop, etc) */
+ /* values used by the software enhancement code (deskew, crop, etc) */
SANE_Status deskew_stat;
int deskew_vals[2];
double deskew_slope;
int crop_vals[4];
+ /* imprinter params */
+ struct imprint_params pre_imprint;
+ struct imprint_params post_imprint;
+ enum {
+ /*Black-on-White*/
+ ADDON_BoW = 0,
+ /*White-on-Black*/
+ ADDON_WoB,
+ /*Black-on-Image*/
+ ADDON_BoI,
+ ADDON_DISABLED
+ } post_imprint_addon_mode;
+
+ /* imprinter param constraints */
+ SANE_Int pre_imprinter_h_offset_list[7];
+ SANE_Int post_imprinter_h_offset_list[18];
+ SANE_Range imprinter_v_offset_range;
+ SANE_String_Const imprint_font_size_list[3];
+ SANE_Int imprinter_font_angle_list[5];
+ SANE_String_Const imprint_addon_mode_list[5];
+
/* this is defined in sane spec as a struct containing:
SANE_Frame format;
SANE_Bool last_frame;
@@ -379,6 +447,8 @@ struct scanner
int panel_counter;
int sensor_adf_loaded;
int sensor_card_loaded;
+ int roller_counter;
+ int total_counter;
/* values which are used to track the frontend's access to sensors */
char panel_read[OPT_COUNTER - OPT_START + 1];
@@ -541,7 +611,9 @@ static SANE_Status sense_handler (int scsi_fd, u_char * result, void *arg);
static SANE_Status init_inquire (struct scanner *s);
static SANE_Status init_vpd (struct scanner *s);
static SANE_Status init_model (struct scanner *s);
+static SANE_Status init_imprinters (struct scanner *s);
static SANE_Status init_panel (struct scanner *s);
+static SANE_Status init_counters (struct scanner *s);
static SANE_Status init_user (struct scanner *s);
static SANE_Status init_options (struct scanner *s);
@@ -589,6 +661,7 @@ static SANE_Status update_params (struct scanner *s, int calib);
static SANE_Status update_i_params (struct scanner *s);
static SANE_Status clean_params (struct scanner *s);
+static SANE_Status read_counters(struct scanner *s);
static SANE_Status read_sensors(struct scanner *s, SANE_Int option);
static SANE_Status read_panel(struct scanner *s, SANE_Int option);
static SANE_Status send_panel(struct scanner *s);
@@ -632,6 +705,12 @@ static SANE_Status calibrate_fine_dest_hw(struct scanner *s);
static SANE_Status write_AFE (struct scanner *s);
static SANE_Status calibration_scan (struct scanner *s, int);
+static SANE_Status send_imprint_positioning(struct scanner* s, int is_postimprint, int enabled);
+static SANE_Status send_imprint_specstring(struct scanner* s, int is_postimprint);
+static SANE_Status send_imprint_date_and_time(struct scanner* s);
+static SANE_Status load_imprinting_settings(struct scanner *s);
+static SANE_Status detect_imprinter(struct scanner *s, SANE_Int option);
+
static void hexdump (int level, char *comment, unsigned char *p, int l);
static void default_globals (void);
diff --git a/backend/canon_lide70-common.c b/backend/canon_lide70-common.c
index 0882fec..4e58222 100644
--- a/backend/canon_lide70-common.c
+++ b/backend/canon_lide70-common.c
@@ -3249,7 +3249,7 @@ CANON_start_scan (CANON_Handle * chndl)
chndl->fname = strdup ("/tmp/scan.XXXXXX");
fd = mkstemp (chndl->fname);
- if (!fd)
+ if (fd == -1)
{
return SANE_STATUS_IO_ERROR;
}
diff --git a/backend/canon_lide70.c b/backend/canon_lide70.c
index 4cc8999..2a3bd30 100644
--- a/backend/canon_lide70.c
+++ b/backend/canon_lide70.c
@@ -819,8 +819,8 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
"sane_control_option: get option %d (%s), value=%.1f %s\n",
option, chndl->opt[option].name,
SANE_UNFIX (*(SANE_Fixed *) value),
- chndl->opt[option].unit ==
- SANE_UNIT_MM ? "mm" : SANE_UNIT_DPI ? "dpi" : "");
+ chndl->opt[option].unit == SANE_UNIT_MM ? "mm" :
+ (chndl->opt[option].unit == SANE_UNIT_DPI ? "dpi" : ""));
break;
}
case opt_non_blocking:
@@ -863,7 +863,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
Canon_Scanner *hndl = handle; /* Eliminate compiler warning */
CANON_Handle *chndl = &hndl->scan;
- int rc = SANE_STATUS_GOOD;
+ SANE_Status rc = SANE_STATUS_GOOD;
int w = SANE_UNFIX (chndl->val[opt_br_x].w -
chndl->val[opt_tl_x].w) / MM_IN_INCH *
chndl->val[opt_resolution].w;
@@ -956,7 +956,7 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
- handle = handle; /* silence gcc */
- fd = fd; /* silence gcc */
+ (void) handle; /* silence gcc */
+ (void) fd; /* silence gcc */
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/canon_pp-io.c b/backend/canon_pp-io.c
index 0b92b11..9e6e006 100644
--- a/backend/canon_pp-io.c
+++ b/backend/canon_pp-io.c
@@ -178,8 +178,8 @@ int sanei_canon_pp_wake_scanner(struct parport *port, int mode)
usleep(100000);
}
- } while ((i < max_cycles) && (!expect(port,"Scanner wakeup reply 2",
- 0x03, 0x1f, 100000) == 0));
+ } while ((i < max_cycles) && expect(port, "Scanner wakeup reply 2",
+ 0x03, 0x1f, 100000));
/* Block just after chessboarding
Reply 1 (S3 and S4 on, S5 and S7 off) */
diff --git a/backend/canon_pp.c b/backend/canon_pp.c
index b933102..79c6c63 100644
--- a/backend/canon_pp.c
+++ b/backend/canon_pp.c
@@ -1787,7 +1787,9 @@ static int init_cal(char *file)
************************************************************************/
static SANE_Status fix_weights_file(CANONP_Scanner *cs)
{
- char *tmp, *myhome, buf[PATH_MAX];
+ static const char default_weights_file_prefix[] =
+ "~/.sane/canon_pp-calibration-";
+ char *tmp, *myhome;
int i;
struct stat *f_stat;
@@ -1804,31 +1806,32 @@ static SANE_Status fix_weights_file(CANONP_Scanner *cs)
if (cs->weights_file == NULL)
{
- /* Will be of form canon_pp-calibration-parport0 or -0x378 */
- sprintf(buf, "~/.sane/canon_pp-calibration-%s",
+ /* Form is ~/.sane/canon_pp-calibration-parport0 or -0x378 */
+ i = strlen(default_weights_file_prefix) +
+ strlen(cs->params.port->name);
+ if ((cs->weights_file = malloc(i + 1)) == NULL)
+ return SANE_STATUS_NO_MEM;
+ sprintf(cs->weights_file, "%s%s", default_weights_file_prefix,
cs->params.port->name);
- cs->weights_file = strdup(buf);
}
/* Get the user's home dir if they used ~ */
if (cs->weights_file[0] == '~')
{
- if ((tmp = malloc(PATH_MAX)) == NULL)
- return SANE_STATUS_NO_MEM;
if ((myhome = getenv("HOME")) == NULL)
{
DBG(0,"fix_weights_file: FATAL: ~ used, but $HOME not"
" set!\n");
- free(tmp);
- tmp = NULL;
return SANE_STATUS_INVAL;
}
- strncpy(tmp, myhome, PATH_MAX);
- strncpy(tmp+strlen(tmp), (cs->weights_file)+1,
- PATH_MAX-strlen(tmp));
+ i = strlen(myhome) + strlen(&cs->weights_file[1]);
+ if ((tmp = malloc(i + 1)) == NULL)
+ return SANE_STATUS_NO_MEM;
+ sprintf(tmp, "%s%s", myhome, &cs->weights_file[1]);
free(cs->weights_file);
cs->weights_file = tmp;
+ tmp = NULL;
}
if ((f_stat = malloc(sizeof(*f_stat))) == NULL)
diff --git a/backend/cardscan.c b/backend/cardscan.c
index 2adad7c..8984f7a 100644
--- a/backend/cardscan.c
+++ b/backend/cardscan.c
@@ -271,7 +271,7 @@ static struct scanner *scanner_devList = NULL;
SANE_Status
sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
DBG_INIT ();
DBG (10, "sane_init: start\n");
@@ -323,7 +323,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
int num_devices=0;
int i=0;
- local_only = local_only; /* get rid of compiler warning */
+ (void) local_only; /* get rid of compiler warning */
DBG (10, "sane_get_devices: start\n");
diff --git a/backend/coolscan.c b/backend/coolscan.c
index e51b499..2aaef4e 100644
--- a/backend/coolscan.c
+++ b/backend/coolscan.c
@@ -1853,8 +1853,8 @@ hexdump (int level, char *comment, unsigned char *p, int l)
static SANE_Status
sense_handler (int scsi_fd, unsigned char * result, void *arg)
{
- scsi_fd = scsi_fd;
- arg = arg;
+ (void) scsi_fd;
+ (void) arg;
if (result[0] != 0x70)
{
@@ -2155,7 +2155,7 @@ attach_one (const char *devName)
static void
sigterm_handler (int signal)
{
- signal = signal;
+ (void) signal;
sanei_scsi_req_flush_all (); /* flush SCSI queue */
_exit (SANE_STATUS_GOOD);
}
@@ -2360,7 +2360,7 @@ static int RGBIfix16(Coolscan_t * scanner,
unsigned short *opr,*opg,*opb,*opi;
int x;
- scanner = scanner; lutr = lutr; lutg = lutg; lutb = lutb; luti = luti;
+ (void) scanner; (void) lutr; (void) lutg; (void) lutb; (void) luti;
for(x=0;x<size;x++)
{
@@ -2459,7 +2459,7 @@ static int RGBIfix1(unsigned char* rgbimat,unsigned char* orgbimat,
int ii;
int x;
- lutg = lutg; lutb = lutb;
+ (void) lutg; (void) lutb;
/* calculate regression between r and ir */
cc.sum=0;
@@ -3237,7 +3237,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize;
+ (void) authorize;
DBG_INIT ();
sanei_thread_init ();
@@ -3297,7 +3297,7 @@ sane_get_devices (const SANE_Device *** device_list,
Coolscan_t *dev;
int i;
- local_only = local_only;
+ (void) local_only;
DBG (10, "sane_get_devices\n");
diff --git a/backend/coolscan2.c b/backend/coolscan2.c
index f0d897f..641784a 100644
--- a/backend/coolscan2.c
+++ b/backend/coolscan2.c
@@ -344,7 +344,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
DBG (10, "sane_init() called.\n");
DBG (1, "coolscan2 backend, version %i.%i.%i initializing.\n", CS2_VERSION_MAJOR, CS2_VERSION_MINOR, CS2_REVISION);
- authorize = authorize; /* to shut up compiler */
+ (void) authorize; /* to shut up compiler */
if (version_code)
*version_code =
@@ -378,7 +378,7 @@ sane_get_devices (const SANE_Device *** list, SANE_Bool local_only)
char line[PATH_MAX], *p;
FILE *config;
- local_only = local_only; /* to shut up compiler */
+ (void) local_only; /* to shut up compiler */
DBG (10, "sane_get_devices() called.\n");
@@ -468,7 +468,10 @@ sane_open (SANE_String_Const name, SANE_Handle * h)
for (i_option = 0; i_option < CS2_N_OPTIONS; i_option++)
{
o.name = o.title = o.desc = NULL;
- o.type = o.unit = o.cap = o.constraint_type = o.size = 0;
+ o.type = SANE_TYPE_BOOL;
+ o.unit = SANE_UNIT_NONE;
+ o.size = o.cap = 0;
+ o.constraint_type = SANE_CONSTRAINT_NONE;
o.constraint.range = NULL; /* only one union member needs to be NULLed */
switch (i_option)
{
@@ -1738,8 +1741,8 @@ sane_get_select_fd (SANE_Handle h, SANE_Int * fd)
DBG (10, "sane_get_select_fd() called.\n");
- fd = fd; /* to shut up compiler */
- s = s; /* to shut up compiler */
+ (void) fd; /* to shut up compiler */
+ (void) s; /* to shut up compiler */
return SANE_STATUS_UNSUPPORTED;
}
@@ -2003,7 +2006,7 @@ cs2_scsi_sense_handler (int fd, u_char * sense_buffer, void *arg)
{
cs2_t *s = (cs2_t *) arg;
- fd = fd; /* to shut up compiler */
+ (void) fd; /* to shut up compiler */
/* sort this out ! XXXXXXXXX */
diff --git a/backend/coolscan3.c b/backend/coolscan3.c
index f279c9c..77a1a5c 100644
--- a/backend/coolscan3.c
+++ b/backend/coolscan3.c
@@ -314,7 +314,7 @@ sane_init(SANE_Int * version_code, SANE_Auth_Callback authorize)
DBG(1, "coolscan3 backend, version %i.%i.%i initializing.\n",
CS3_VERSION_MAJOR, CS3_VERSION_MINOR, CS3_REVISION);
- authorize = authorize; /* to shut up compiler */
+ (void) authorize; /* to shut up compiler */
if (version_code)
*version_code = SANE_VERSION_CODE(SANE_CURRENT_MAJOR, SANE_CURRENT_MINOR, 0);
@@ -346,7 +346,7 @@ sane_get_devices(const SANE_Device *** list, SANE_Bool local_only)
char line[PATH_MAX], *p;
FILE *config;
- local_only = local_only; /* to shut up compiler */
+ (void) local_only; /* to shut up compiler */
DBG(10, "%s\n", __func__);
@@ -424,7 +424,10 @@ sane_open(SANE_String_Const name, SANE_Handle * h)
for (i_option = 0; i_option < CS3_N_OPTIONS; i_option++) {
o.name = o.title = o.desc = NULL;
- o.type = o.unit = o.cap = o.constraint_type = o.size = 0;
+ o.type = SANE_TYPE_BOOL;
+ o.unit = SANE_UNIT_NONE;
+ o.size = o.cap = 0;
+ o.constraint_type = SANE_CONSTRAINT_NONE;
o.constraint.range = NULL; /* only one union member needs to be NULLed */
switch (i_option) {
case CS3_OPTION_NUM:
@@ -1746,8 +1749,8 @@ sane_get_select_fd(SANE_Handle h, SANE_Int * fd)
DBG(10, "%s\n", __func__);
- fd = fd; /* to shut up compiler */
- s = s; /* to shut up compiler */
+ (void) fd; /* to shut up compiler */
+ (void) s; /* to shut up compiler */
return SANE_STATUS_UNSUPPORTED;
}
@@ -2026,7 +2029,7 @@ cs3_scsi_sense_handler(int fd, u_char * sense_buffer, void *arg)
{
cs3_t *s = (cs3_t *) arg;
- fd = fd; /* to shut up compiler */
+ (void) fd; /* to shut up compiler */
/* sort this out ! XXX */
diff --git a/backend/dc25.c b/backend/dc25.c
index 59597a5..73eb53d 100644
--- a/backend/dc25.c
+++ b/backend/dc25.c
@@ -134,8 +134,7 @@ static char tty_name[PATH_MAX];
#define DEF_TTY_NAME "/dev/ttyS0"
static speed_t tty_baud = DEFAULT_TTY_BAUD;
-static char *tmpname;
-static char tmpnamebuf[] = "/tmp/dc25XXXXXX";
+#define TMPFILE_PATTERN "/tmp/dc25XXXXXX";
static Dc20Info *dc20_info;
static Dc20Info CameraInfo;
@@ -925,7 +924,6 @@ adjust_color_and_saturation (short red[], short green[], short blue[])
int line, column;
int r_min = SMAX, g_min = SMAX, b_min = SMAX;
int r_max = 0, g_max = 0, b_max = 0;
- int r_sum = 0, g_sum = 0, b_sum = 0;
float sqr_saturation = sqrt (saturation);
for (line = TOP_MARGIN; line < HEIGHT - BOTTOM_MARGIN; line++)
{
@@ -1008,9 +1006,6 @@ adjust_color_and_saturation (short red[], short green[], short blue[])
g_max = g;
if (b_max < b)
b_max = b;
- r_sum += r;
- g_sum += g;
- b_sum += b;
BIDIM_ARRAY (red, column, line, columns) = r;
BIDIM_ARRAY (green, column, line, columns) = g;
BIDIM_ARRAY (blue, column, line, columns) = b;
@@ -1153,7 +1148,6 @@ output_rgb (const short red[],
{
int r_min = 255, g_min = 255, b_min = 255;
int r_max = 0, g_max = 0, b_max = 0;
- int r_sum = 0, g_sum = 0, b_sum = 0;
int column, line;
unsigned char *gamma_table = make_gamma_table (high_i - low_i);
@@ -1202,19 +1196,9 @@ output_rgb (const short red[],
g_max = g;
if (b_max < b)
b_max = b;
- r_sum += r;
- g_sum += g;
- b_sum += b;
}
}
free (gamma_table);
-/*
- {
- fprintf (stderr, "%s: output_rgb: r: min = %d, max = %d, ave = %d\n", __progname, r_min, r_max, r_sum / NET_PIXELS);
- fprintf (stderr, "%s: output_rgb: g: min = %d, max = %d, ave = %d\n", __progname, g_min, g_max, g_sum / NET_PIXELS);
- fprintf (stderr, "%s: output_rgb: b: min = %d, max = %d, ave = %d\n", __progname, b_min, b_max, b_sum / NET_PIXELS);
- }
-*/
return 0;
}
@@ -2022,16 +2006,6 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
DBG (1, "No device info\n");
}
- if (tmpname == NULL)
- {
- tmpname = tmpnamebuf;
- if (!mkstemp (tmpname))
- {
- DBG (1, "Unable to make temp file %s\n", tmpname);
- return SANE_STATUS_INVAL;
- }
- }
-
DBG (3, "sane_open: pictures taken=%d\n", dc20_info->pic_taken);
return SANE_STATUS_GOOD;
@@ -2445,14 +2419,15 @@ sane_start (SANE_Handle handle)
* port overruns on a 90MHz pentium until I used hdparm
* to set the "-u1" flag on the system drives.
*/
- int fd;
+ char tmpnamebuf[] = TMPFILE_PATTERN;
- fd = open (tmpname, O_CREAT | O_EXCL | O_WRONLY, 0600);
+ int fd = mkstemp (tmpnamebuf);
if (fd == -1)
- {
- DBG (0, "Unable to open tmp file\n");
- return SANE_STATUS_INVAL;
- }
+ {
+ DBG (0, "Unable to make temp file %s\n", tmpnamebuf);
+ return SANE_STATUS_INVAL;
+ }
+
f = fdopen (fd, "wb");
if (f == NULL)
{
@@ -2524,12 +2499,12 @@ sane_start (SANE_Handle handle)
else
{
fclose (f);
- if (convert_pic (tmpname, SAVE_ADJASPECT | SAVE_24BITS) == -1)
+ if (convert_pic (tmpnamebuf, SAVE_ADJASPECT | SAVE_24BITS) == -1)
{
DBG (3, "sane_open: unable to convert\n");
return SANE_STATUS_INVAL;
}
- unlink (tmpname);
+ unlink (tmpnamebuf);
outbytes = 0;
}
}
diff --git a/backend/dell1600n_net.c b/backend/dell1600n_net.c
index 41be589..9f2d48d 100644
--- a/backend/dell1600n_net.c
+++ b/backend/dell1600n_net.c
@@ -946,7 +946,7 @@ HexDump (int debugLevel, const unsigned char *buf, size_t bufSize)
{
if (!(i % 16))
- sprintf (lineBuf, "%p: ", (buf + i));
+ sprintf (lineBuf, "%p: ", (void *) &buf[i]);
sprintf (itemBuf, "%02x ", (const unsigned int) buf[i]);
@@ -1199,7 +1199,7 @@ ProcessFindResponse (unsigned char *pData, size_t size)
DBG (10, "ProcessFindResponse: processing %lu bytes, pData=%p\n",
- (unsigned long)size, pData);
+ (unsigned long) size, (void *) pData);
/* check we have a complete packet */
if (!MessageIsComplete (pData, size))
@@ -1355,7 +1355,7 @@ ProcessUdpResponse (unsigned char *pData, size_t size,
HexDump (15, pData, size);
DBG (10, "ProcessUdpResponse: processing %lu bytes, pData=%p\n",
- (unsigned long)size, pData);
+ (unsigned long) size, (void *) pData);
/* check we have a complete packet */
if (!MessageIsComplete (pData, size))
@@ -1486,7 +1486,7 @@ ProcessTcpResponse (struct ScannerState *pState, struct ComBuf *pTcpBuf)
int bProcessImage = 0;
DBG (10, "ProcessTcpResponse: processing %lu bytes, pData=%p\n",
- (unsigned long)pTcpBuf->m_used, pData);
+ (unsigned long) pTcpBuf->m_used, (void *) pData);
HexDump (15, pData, pTcpBuf->m_used);
/* if message not complete then wait for more to arrive */
@@ -1799,7 +1799,7 @@ ProcessPageData (struct ScannerState *pState)
struct PageInfo pageInfo;
JSAMPLE *pJpegLine = NULL;
- uint32 *pTiffRgba = NULL;
+ uint32_t *pTiffRgba = NULL;
unsigned char *pOut;
char tiffErrBuf[1024];
diff --git a/backend/dll.c b/backend/dll.c
index a3233e8..bf34c4f 100644
--- a/backend/dll.c
+++ b/backend/dll.c
@@ -1068,7 +1068,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
char *full_name;
int i, num_devs;
size_t len;
-#define ASSERT_SPACE(n) \
+#define ASSERT_SPACE(n) do \
{ \
if (devlist_len + (n) > devlist_size) \
{ \
@@ -1080,7 +1080,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
if (!devlist) \
return SANE_STATUS_NO_MEM; \
} \
- }
+ } while (0)
DBG (3, "sane_get_devices\n");
@@ -1365,7 +1365,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data, SANE_Int max_length,
struct meta_scanner *s = handle;
DBG (3, "sane_read(handle=%p,data=%p,maxlen=%d,lenp=%p)\n",
- handle, data, max_length, (void *) length);
+ handle, (void *) data, max_length, (void *) length);
return (*(op_read_t)s->be->op[OP_READ]) (s->handle, data, max_length, length);
}
diff --git a/backend/dmc.c b/backend/dmc.c
index b1a3b5a..410e48a 100644
--- a/backend/dmc.c
+++ b/backend/dmc.c
@@ -812,7 +812,7 @@ sane_init(SANE_Int *version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize;
+ (void) authorize;
DBG_INIT();
if (version_code) {
@@ -891,7 +891,7 @@ sane_get_devices(SANE_Device const ***device_list, SANE_Bool local_only)
DMC_Device *dev;
int i = 0;
- local_only = local_only;
+ (void) local_only;
if (devlist) free(devlist);
devlist = malloc((NumDevices+1) * sizeof(devlist[0]));
@@ -1392,8 +1392,8 @@ sane_cancel (SANE_Handle handle)
SANE_Status
sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
- handle = handle;
- non_blocking = non_blocking;
+ (void) handle;
+ (void) non_blocking;
return SANE_STATUS_UNSUPPORTED;
}
@@ -1401,8 +1401,8 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int *fd)
{
- handle = handle;
- fd = fd;
+ (void) handle;
+ (void) fd;
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/epjitsu.c b/backend/epjitsu.c
index 6fda662..7430108 100644
--- a/backend/epjitsu.c
+++ b/backend/epjitsu.c
@@ -3,7 +3,7 @@
This file implements a SANE backend for the Fujitsu fi-60F, the
ScanSnap S300/S1300, and (hopefully) other Epson-based scanners.
- Copyright 2007-2015 by m. allan noah <kitno455 at gmail dot com>
+ Copyright 2007-2022 by m. allan noah <kitno455 at gmail dot com>
Copyright 2009 by Richard Goedeken <richard at fascinationsoftware dot com>
Development funded by Microdea, Inc., TrueCheck, Inc. and Archivista, GmbH
@@ -155,6 +155,10 @@
v31 2017-04-09, MAN
- hardware gray support for fi-60F/65F (disabled pending calibration)
- merge fi-60F/65F settings
+ v32 2022-11-15, MAN
+ - fix hanging scan when using source = ADF Back (fixes #601)
+ v33 2022-11-17, MAN
+ - S1300i: fix color plane offset at 225 and 330 dpi (fixes #538)
SANE FLOW DIAGRAM
@@ -203,8 +207,14 @@
#include "epjitsu-cmd.h"
#define DEBUG 1
-#define BUILD 31
+#define BUILD 33
+#ifndef MIN
+ #define MIN(a,b) ((a) < (b) ? (a) : (b))
+#endif
+#ifndef MAX
+ #define MAX(a,b) ((a) > (b) ? (a) : (b))
+#endif
#ifndef MAX3
#define MAX3(a,b,c) ((a) > (b) ? ((a) > (c) ? a : c) : ((b) > (c) ? b : c))
#endif
@@ -265,7 +275,7 @@ static struct scanner *scanner_devList = NULL;
SANE_Status
sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
DBG_INIT ();
DBG (10, "sane_init: start\n");
@@ -317,7 +327,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
int num_devices=0;
int i=0;
- local_only = local_only; /* get rid of compiler warning */
+ (void) local_only; /* get rid of compiler warning */
DBG (10, "sane_get_devices: start\n");
@@ -1137,7 +1147,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/* values stored in 1200 dpi units */
/* must be converted to MM for sane */
s->tl_x_range.min = SCANNER_UNIT_TO_FIXED_MM(0);
- s->tl_x_range.max = SCANNER_UNIT_TO_FIXED_MM(get_page_width(s)-s->min_x);
+ s->tl_x_range.max = SCANNER_UNIT_TO_FIXED_MM(MAX(0, get_page_width(s)-s->min_x));
s->tl_x_range.quant = MM_PER_UNIT_FIX;
opt->name = SANE_NAME_SCAN_TL_X;
@@ -1156,7 +1166,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/* values stored in 1200 dpi units */
/* must be converted to MM for sane */
s->tl_y_range.min = SCANNER_UNIT_TO_FIXED_MM(0);
- s->tl_y_range.max = SCANNER_UNIT_TO_FIXED_MM(get_page_height(s)-s->min_y);
+ s->tl_y_range.max = SCANNER_UNIT_TO_FIXED_MM(MAX(0, get_page_height(s)-s->min_y));
s->tl_y_range.quant = MM_PER_UNIT_FIX;
opt->name = SANE_NAME_SCAN_TL_Y;
@@ -1174,7 +1184,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/* values stored in 1200 dpi units */
/* must be converted to MM for sane */
s->br_x_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_x);
- s->br_x_range.max = SCANNER_UNIT_TO_FIXED_MM(get_page_width(s));
+ s->br_x_range.max = SCANNER_UNIT_TO_FIXED_MM(MAX(s->min_x, get_page_width(s)));
s->br_x_range.quant = MM_PER_UNIT_FIX;
opt->name = SANE_NAME_SCAN_BR_X;
@@ -1193,7 +1203,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
/* values stored in 1200 dpi units */
/* must be converted to MM for sane */
s->br_y_range.min = SCANNER_UNIT_TO_FIXED_MM(s->min_y);
- s->br_y_range.max = SCANNER_UNIT_TO_FIXED_MM(get_page_height(s));
+ s->br_y_range.max = SCANNER_UNIT_TO_FIXED_MM(MAX(s->min_y, get_page_height(s)));
s->br_y_range.quant = MM_PER_UNIT_FIX;
opt->name = SANE_NAME_SCAN_BR_Y;
@@ -2042,14 +2052,12 @@ change_params(struct scanner *s)
/* height */
if (s->tl_y > s->max_y - s->min_y)
s->tl_y = s->max_y - s->min_y - s->adf_height_padding;
- if (s->tl_y + s->page_height > s->max_y - s->adf_height_padding)
- s->page_height = s->max_y - s->adf_height_padding - s->tl_y;
- if (s->page_height < s->min_y && s->page_height > 0)
- s->page_height = s->min_y;
+ s->page_height = MIN(s->page_height, s->max_y - s->adf_height_padding - s->tl_y);
+ if (s->page_height > 0)
+ s->page_height = MAX(s->page_height, s->min_y);
if (s->tl_y + s->page_height > s->max_y)
s->tl_y = s->max_y - s->adf_height_padding - s->page_height;
- if (s->tl_y < 0)
- s->tl_y = 0;
+ s->tl_y = MAX(s->tl_y, 0);
if (s->page_height > 0) {
s->br_y = s->tl_y + s->page_height;
@@ -2059,10 +2067,9 @@ change_params(struct scanner *s)
}
/*width*/
- if (s->page_width > s->max_x)
- s->page_width = s->max_x;
- else if (s->page_width < s->min_x)
- s->page_width = s->min_x;
+ s->page_width = MIN(s->page_width, s->max_x);
+ s->page_width = MAX(s->page_width, s->min_x);
+
s->tl_x = (s->max_x - s->page_width)/2;
s->br_x = (s->max_x + s->page_width)/2;
@@ -2177,7 +2184,7 @@ change_params(struct scanner *s)
/* adf with specified paper size */
s->front.height = SCANNER_UNIT_TO_PIX(s->page_height, s->front.y_res);
}
- s->front.width_pix = s->block_img.width_pix;
+ s->front.width_pix = SCANNER_UNIT_TO_PIX(s->page_width, s->resolution * img_heads);
s->front.x_start_offset = (s->block_xfr.image->width_pix - s->front.width_pix)/2;
switch (s->mode) {
case MODE_COLOR:
@@ -2310,12 +2317,8 @@ load_lut (unsigned char * lut,
for(i=0;i<=max_in_val;i++){
j = rise*i + shift;
- if(j<out_min){
- j=out_min;
- }
- else if(j>out_max){
- j=out_max;
- }
+ j = MAX(j, out_min);
+ j = MIN(j, out_max);
*lut_p=j;
lut_p++;
@@ -2654,7 +2657,7 @@ coarsecal_send_cal(struct scanner *s, unsigned char *pay)
unsigned char stat[1];
size_t cmdLen,statLen,payLen;
- DBG (5, "coarsecal_send_cal: start\n");
+ DBG (10, "coarsecal_send_cal: start\n");
/* send coarse cal (c6) */
cmd[0] = 0x1b;
cmd[1] = 0xc6;
@@ -2697,7 +2700,7 @@ coarsecal_send_cal(struct scanner *s, unsigned char *pay)
return SANE_STATUS_IO_ERROR;
}
- DBG (5, "coarsecal_send_cal: finish\n");
+ DBG (10, "coarsecal_send_cal: finish\n");
return ret;
}
@@ -2709,7 +2712,7 @@ coarsecal_get_line(struct scanner *s, struct image *img)
unsigned char stat[1];
size_t cmdLen,statLen;
- DBG (5, "coarsecal_get_line: start\n");
+ DBG (10, "coarsecal_get_line: start\n");
/* send scan d2 command */
cmd[0] = 0x1b;
@@ -2746,7 +2749,7 @@ coarsecal_get_line(struct scanner *s, struct image *img)
/* convert the raw data into normal packed pixel data */
descramble_raw(s, &s->cal_image);
- DBG (5, "coarsecal_get_line: finish\n");
+ DBG (10, "coarsecal_get_line: finish\n");
return ret;
}
@@ -2758,7 +2761,7 @@ coarsecal_dark(struct scanner *s, unsigned char *pay)
int try_count, cal_good[2], x, j;
int param[2], zcount[2], high_param[2], low_param[2], avg[2], maxval[2];
- DBG (5, "coarsecal_dark: start\n");
+ DBG (10, "coarsecal_dark: start\n");
/* dark cal, lamp off */
ret = lamp(s,0);
@@ -2844,7 +2847,7 @@ coarsecal_dark(struct scanner *s, unsigned char *pay)
} /* continue looping for up to 8 tries */
- DBG (5, "coarsecal_dark: finish\n");
+ DBG (10, "coarsecal_dark: finish\n");
return ret;
}
@@ -2857,7 +2860,7 @@ coarsecal_light(struct scanner *s, unsigned char *pay)
int param[2], zcount[2], high_param[2], low_param[2], avg[2];
int rgb_avg[2][3], rgb_hicount[2][3];
- DBG (5, "coarsecal_light: start\n");
+ DBG (10, "coarsecal_light: start\n");
/* light cal, lamp on */
ret = lamp(s,1);
@@ -2961,7 +2964,7 @@ coarsecal_light(struct scanner *s, unsigned char *pay)
}
}
- DBG (5, "coarsecal_light: finish\n");
+ DBG (10, "coarsecal_light: finish\n");
return ret;
}
@@ -3023,6 +3026,8 @@ finecal_send_cal(struct scanner *s)
unsigned char *p_out, *p_in = s->sendcal.buffer;
int planes;
+ DBG (10, "finecal_send_cal: start\n");
+
if(s->model == MODEL_FI60F || s->model == MODEL_FI65F)
planes = 3;
if(s->model == MODEL_S300 || s->model == MODEL_S1300i)
@@ -3165,6 +3170,7 @@ finecal_send_cal(struct scanner *s)
return SANE_STATUS_IO_ERROR;
}
+ DBG (10, "finecal_send_cal: finish\n");
return ret;
}
@@ -3182,6 +3188,8 @@ finecal_get_line(struct scanner *s, struct image *img)
int round_offset = img->height / 2;
int i, j, k;
+ DBG (10, "finecal_get_line: start\n");
+
/* ask for 16 lines */
ret = set_window(s, WINDOW_FINECAL);
if(ret){
@@ -3238,6 +3246,8 @@ finecal_get_line(struct scanner *s, struct image *img)
avgpix[j] = (total + round_offset) / img->height;
}
}
+
+ DBG (10, "finecal_get_line: finish\n");
return ret;
}
@@ -3385,8 +3395,8 @@ finecal(struct scanner *s)
else
s->sendcal.buffer[idx * 2 + 1] = newgain;
/* update statistics */
- if (pixvalue < min_value[i][k]) min_value[i][k] = pixvalue;
- if (pixvalue > max_value[i][k]) max_value[i][k] = pixvalue;
+ min_value[i][k] = MIN(min_value[i][k], pixvalue);
+ max_value[i][k] = MAX(max_value[i][k], pixvalue);
avg_value[i][k] += pixerror;
variance[i][k] += (pixerror * pixerror);
idx++;
@@ -3658,13 +3668,8 @@ send_lut (struct scanner *s)
for(i=0;i<width;i++){
j=slope*i + offset + b;
- if(j<0){
- j=0;
- }
-
- if(j>(height-1)){
- j=height-1;
- }
+ j = MAX(j, 0);
+ j = MIN(j, height-1);
if (s->model == MODEL_S1100){
/*only one table, be order*/
@@ -4078,9 +4083,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
}
*len = page->bytes_scanned - page->bytes_read;
- if(*len > max_len){
- *len = max_len;
- }
+ *len = MIN(*len, max_len);
if(*len){
DBG (10, "sane_read: copy rx:%d tx:%d tot:%d len:%d\n",
@@ -4088,12 +4091,12 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len, SANE_Int * len
memcpy(buf, page->image->buffer + page->bytes_read, *len);
page->bytes_read += *len;
+ }
- /* sent it all, return eof on next read */
- if(page->bytes_read == page->bytes_scanned && s->fullscan.done){
- DBG (10, "sane_read: side done\n");
- page->done = 1;
- }
+ /* sent it all, return eof on next read */
+ if(page->bytes_read == page->bytes_scanned && s->fullscan.done){
+ DBG (10, "sane_read: side done\n");
+ page->done = 1;
}
DBG (10, "sane_read: finish si:%d len:%d max:%d\n",s->side,*len,max_len);
@@ -4161,6 +4164,7 @@ descramble_raw(struct scanner *s, struct transfer * tp)
for (j = 0; j < height; j++){ /* row (y)*/
int curr_col = 0;
int r=0, g=0, b=0, ppc=0;
+ int g_offset=0, b_offset=0;
for (k = 0; k <= tp->plane_width; k++){ /* column (x) */
int this_col = k*tp->image->x_res/tp->x_res;
@@ -4185,14 +4189,20 @@ descramble_raw(struct scanner *s, struct transfer * tp)
break;
}
+ /* if we're using an S1300i with scan resolution 225 or 300, on AC power, the color planes are shifted */
+ if(s->model == MODEL_S1300i && !s->usb_power && (tp->x_res == 225 || tp->x_res == 300) && tp != &s->cal_image && k + 2 <= tp->plane_width){
+ g_offset = 3;
+ b_offset = 6;
+ }
+
/*red is first*/
r += tp->raw_data[j*tp->line_stride + k*3 + i];
/*green is second*/
- g += tp->raw_data[j*tp->line_stride + tp->plane_stride + k*3 + i];
+ g += tp->raw_data[j*tp->line_stride + tp->plane_stride + k*3 + i + g_offset];
/*blue is third*/
- b += tp->raw_data[j*tp->line_stride + 2*tp->plane_stride + k*3 + i];
+ b += tp->raw_data[j*tp->line_stride + 2*tp->plane_stride + k*3 + i + b_offset];
ppc++;
}
@@ -4341,8 +4351,8 @@ read_from_scanner(struct scanner *s, struct transfer * tp)
size_t bufLen;
/* determine amount to ask for, S1300i wants big requests */
- if(bytes > remainBlock && s->model != MODEL_S1300i){
- bytes = remainBlock;
+ if(s->model != MODEL_S1300i){
+ bytes = MIN(bytes, remainBlock);
}
if (tp->image == NULL)
@@ -4932,8 +4942,7 @@ maxStringSize (const SANE_String_Const strings[])
for (i = 0; strings[i]; ++i) {
size = strlen (strings[i]) + 1;
- if (size > max_size)
- max_size = size;
+ max_size = MAX(max_size, size);
}
return max_size;
diff --git a/backend/epson.c b/backend/epson.c
index d0f5e54..d2aba4c 100644
--- a/backend/epson.c
+++ b/backend/epson.c
@@ -2653,7 +2653,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
/* sanei_authorization(devicename, STRINGIFY(BACKEND_NAME), auth_callback); */
@@ -2753,7 +2753,7 @@ sane_get_devices (const SANE_Device * **device_list, SANE_Bool local_only)
DBG (5, "sane_get_devices()\n");
- local_only = local_only; /* just to get rid of the compiler warning */
+ (void) local_only; /* just to get rid of the compiler warning */
if (devlist)
{
@@ -6383,8 +6383,8 @@ SANE_Status
sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
/* get rid of compiler warning */
- handle = handle;
- non_blocking = non_blocking;
+ (void) handle;
+ (void) non_blocking;
return SANE_STATUS_UNSUPPORTED;
}
@@ -6399,8 +6399,8 @@ SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
/* get rid of compiler warnings */
- handle = handle;
- fd = fd;
+ (void) handle;
+ (void) fd;
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/epson2.c b/backend/epson2.c
index 5bb75d4..cfc2aca 100644
--- a/backend/epson2.c
+++ b/backend/epson2.c
@@ -2297,21 +2297,6 @@ sane_start(SANE_Handle handle)
return status;
}
-static inline int
-get_color(int status)
-{
- switch ((status >> 2) & 0x03) {
- case 1:
- return 1;
- case 2:
- return 0;
- case 3:
- return 2;
- default:
- return 0; /* required to make the compiler happy */
- }
-}
-
/* this moves data from our buffers to SANE */
SANE_Status
@@ -2348,7 +2333,7 @@ sane_read(SANE_Handle handle, SANE_Byte *data, SANE_Int max_length,
/* XXX if FS G and STATUS_IOERR, use e2_check_extended_status */
DBG(18, "moving data %p %p, %d (%d lines)\n",
- s->ptr, s->end,
+ (void *) s->ptr, (void *) s->end,
max_length, max_length / s->params.bytes_per_line);
e2_copy_image_data(s, data, max_length, length);
diff --git a/backend/epson2_net.c b/backend/epson2_net.c
index 7f804ee..de9aba3 100644
--- a/backend/epson2_net.c
+++ b/backend/epson2_net.c
@@ -70,7 +70,7 @@ sanei_epson_net_read_buf(Epson_Scanner *s, unsigned char *buf, ssize_t wanted,
ssize_t read = 0;
DBG(23, "%s: reading up to %lu from buffer at %p, %lu available\n",
- __func__, (u_long) wanted, s->netptr, (u_long) s->netlen);
+ __func__, (u_long) wanted, (void *) s->netptr, (u_long) s->netlen);
if ((size_t) wanted > s->netlen) {
*status = SANE_STATUS_IO_ERROR;
@@ -84,7 +84,7 @@ sanei_epson_net_read_buf(Epson_Scanner *s, unsigned char *buf, ssize_t wanted,
s->netlen -= read;
if (s->netlen == 0) {
- DBG(23, "%s: freeing %p\n", __func__, s->netbuf);
+ DBG(23, "%s: freeing %p\n", __func__, (void *) s->netbuf);
free(s->netbuf);
s->netbuf = s->netptr = NULL;
s->netlen = 0;
@@ -179,7 +179,7 @@ sanei_epson_net_write(Epson_Scanner *s, unsigned int cmd, const unsigned char *b
if (reply_len) {
if (s->netbuf) {
DBG(23, "%s, freeing %p, %ld bytes unprocessed\n",
- __func__, s->netbuf, (u_long) s->netlen);
+ __func__, (void *) s->netbuf, (u_long) s->netlen);
free(s->netbuf);
s->netbuf = s->netptr = NULL;
s->netlen = 0;
@@ -192,11 +192,11 @@ sanei_epson_net_write(Epson_Scanner *s, unsigned int cmd, const unsigned char *b
}
s->netlen = reply_len;
DBG(24, "%s: allocated %lu bytes at %p\n", __func__,
- (u_long) s->netlen, s->netbuf);
+ (u_long) s->netlen, (void *) s->netbuf);
}
DBG(24, "%s: cmd = %04x, buf = %p, buf_size = %lu, reply_len = %lu\n",
- __func__, cmd, buf, (u_long) buf_size, (u_long) reply_len);
+ __func__, cmd, (void *) buf, (u_long) buf_size, (u_long) reply_len);
memset(h1, 0x00, 12);
memset(h2, 0x00, 8);
diff --git a/backend/epson2_scsi.c b/backend/epson2_scsi.c
index 8e95c6f..0eaf2c0 100644
--- a/backend/epson2_scsi.c
+++ b/backend/epson2_scsi.c
@@ -27,8 +27,8 @@ sanei_epson2_scsi_sense_handler(int scsi_fd,
unsigned char *result, void *arg)
{
/* to get rid of warnings */
- scsi_fd = scsi_fd;
- arg = arg;
+ (void) scsi_fd;
+ (void) arg;
if (result[0] && result[0] != 0x70) {
DBG(2, "%s: sense code = 0x%02x\n",
diff --git a/backend/epson_scsi.c b/backend/epson_scsi.c
index 698ec61..747ac4c 100644
--- a/backend/epson_scsi.c
+++ b/backend/epson_scsi.c
@@ -32,8 +32,8 @@ SANE_Status
sanei_epson_scsi_sense_handler (int scsi_fd, u_char * result, void *arg)
{
/* to get rid of warnings */
- scsi_fd = scsi_fd;
- arg = arg;
+ (void) scsi_fd;
+ (void) arg;
if (result[0] && result[0] != 0x70)
{
diff --git a/backend/epsonds-cmd.c b/backend/epsonds-cmd.c
index 6f0ec64..d1cba09 100644
--- a/backend/epsonds-cmd.c
+++ b/backend/epsonds-cmd.c
@@ -784,7 +784,7 @@ static SANE_Status stat_cb(void *userdata, char *token, int len)
{
char *value = token + 3;
- userdata = userdata;
+ (void) userdata;
if (DBG_LEVEL >= 11) {
debug_token(DBG_LEVEL, __func__, token, len);
@@ -816,7 +816,7 @@ static SANE_Status resa_cb(void *userdata, char *token, int len)
{
/* epsonds_scanner *s = (epsonds_scanner *)userdata; */
- userdata = userdata;
+ (void) userdata;
if (DBG_LEVEL >= 11) {
debug_token(DBG_LEVEL, __func__, token, len);
@@ -838,7 +838,7 @@ static SANE_Status para_cb(void *userdata, char *token, int len)
debug_token(DBG_LEVEL, __func__, token, len);
}
- userdata = userdata;
+ (void) userdata;
if (strncmp("par", token, 3) == 0) {
if (strncmp("FAIL", token + 3, 4) == 0) {
diff --git a/backend/epsonds-net.c b/backend/epsonds-net.c
index 4f4c1e2..87b44b4 100644
--- a/backend/epsonds-net.c
+++ b/backend/epsonds-net.c
@@ -79,7 +79,7 @@ epsonds_net_read_buf(epsonds_scanner *s, unsigned char *buf, ssize_t wanted,
ssize_t read = 0;
DBG(23, "%s: reading up to %lu from buffer at %p, %lu available\n",
- __func__, (u_long) wanted, s->netptr, (u_long) s->netlen);
+ __func__, (u_long) wanted, (void *) s->netptr, (u_long) s->netlen);
if ((size_t) wanted > s->netlen) {
*status = SANE_STATUS_IO_ERROR;
@@ -93,7 +93,7 @@ epsonds_net_read_buf(epsonds_scanner *s, unsigned char *buf, ssize_t wanted,
s->netlen -= read;
if (s->netlen == 0) {
- DBG(23, "%s: freeing %p\n", __func__, s->netbuf);
+ DBG(23, "%s: freeing %p\n", __func__, (void *) s->netbuf);
free(s->netbuf);
s->netbuf = s->netptr = NULL;
s->netlen = 0;
@@ -195,7 +195,7 @@ epsonds_net_write(epsonds_scanner *s, unsigned int cmd, const unsigned char *buf
if (reply_len) {
if (s->netbuf) {
DBG(23, "%s, freeing %p, %ld bytes unprocessed\n",
- __func__, s->netbuf, (u_long) s->netlen);
+ __func__, (void *) s->netbuf, (u_long) s->netlen);
free(s->netbuf);
s->netbuf = s->netptr = NULL;
s->netlen = 0;
@@ -208,11 +208,11 @@ epsonds_net_write(epsonds_scanner *s, unsigned int cmd, const unsigned char *buf
}
s->netlen = reply_len;
DBG(24, "%s: allocated %lu bytes at %p\n", __func__,
- (u_long) s->netlen, s->netbuf);
+ (u_long) s->netlen, (void *) s->netbuf);
}
DBG(24, "%s: cmd = %04x, buf = %p, buf_size = %lu, reply_len = %lu\n",
- __func__, cmd, buf, (u_long) buf_size, (u_long) reply_len);
+ __func__, cmd, (void *) buf, (u_long) buf_size, (u_long) reply_len);
memset(h1, 0x00, 12);
memset(h2, 0x00, 8);
@@ -513,7 +513,7 @@ fail:
if (simple_poll)
avahi_simple_poll_free(simple_poll);
- DBG(10, "epsonds_searchDevices fin\n");
+ DBG(10, "epsonds_searchDevices fin\n");
return result;
}
diff --git a/backend/epsonds.c b/backend/epsonds.c
index 0815535..72d01d8 100644
--- a/backend/epsonds.c
+++ b/backend/epsonds.c
@@ -1258,6 +1258,7 @@ const epsonds_profile_map epsonds_models_predefined[] = {
{0x118A, "PID 118A","ET-2810 Series", 7},
{0x118A, "PID 118A","L3250 Series", 7},
{0x119B, "PID 119B","XP-2150 Series", 7},
+ {0x11B1, "PID 11B1","XP-2200 Series", 7},
{0x00, "","", 0x00 }
};
@@ -1629,10 +1630,7 @@ device_detect(const char *name, int type, SANE_Status *status)
{//Convert to user friendly model name
free(s->hw->model);
- char* deviceName = (char*)malloc(strlen(map->deviceID) + 1);
- memset(deviceName, 0, strlen(map->deviceID) + 1);
- strncpy(deviceName, map->deviceID, strlen(map->deviceID));
- s->hw->model = deviceName;
+ s->hw->model = strdup(map->deviceID);
s->hw->sane.model = s->hw->model;
}
{// set lutid
diff --git a/backend/escl/escl.c b/backend/escl/escl.c
index 5f02ec8..cbbdb60 100644
--- a/backend/escl/escl.c
+++ b/backend/escl/escl.c
@@ -61,6 +61,26 @@ static const SANE_Device **devlist = NULL;
static ESCL_Device *list_devices_primary = NULL;
static int num_devices = 0;
+#ifdef CURL_SSLVERSION_MAX_DEFAULT
+static int proto_tls[] = {
+ CURL_SSLVERSION_MAX_DEFAULT,
+ #ifdef CURL_SSLVERSION_MAX_TLSv1_3
+ CURL_SSLVERSION_MAX_TLSv1_3,
+ #endif
+ #ifdef CURL_SSLVERSION_MAX_TLSv1_2
+ CURL_SSLVERSION_MAX_TLSv1_2,
+ #endif
+ #ifdef CURL_SSLVERSION_MAX_TLSv1_1
+ CURL_SSLVERSION_MAX_TLSv1_1,
+ #endif
+ #ifdef CURL_SSLVERSION_MAX_TLSv1_0
+ CURL_SSLVERSION_MAX_TLSv1_0,
+ #endif
+ -1
+};
+#endif
+
+
typedef struct Handled {
struct Handled *next;
ESCL_Device *device;
@@ -99,6 +119,60 @@ escl_free_device(ESCL_Device *current)
return NULL;
}
+
+#ifdef CURL_SSLVERSION_MAX_DEFAULT
+static int
+escl_tls_protocol_supported(char *url, int proto)
+{
+ CURLcode res = CURLE_UNSUPPORTED_PROTOCOL;
+ CURL *curl = curl_easy_init();
+ if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, url);
+
+ /* ask libcurl to use TLS version 1.0 or later */
+ curl_easy_setopt(curl, CURLOPT_SSLVERSION, proto);
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
+ curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 3L);
+ /* Perform the request */
+ res = curl_easy_perform(curl);
+ curl_easy_cleanup(curl);
+ }
+ return res;
+}
+
+static int
+escl_is_tls(char * url, char *type)
+{
+ int tls_version = 0;
+ if(!strcmp(type, "_uscans._tcp") ||
+ !strcmp(type, "https"))
+ {
+ while(proto_tls[tls_version] != -1)
+ {
+ if (escl_tls_protocol_supported(url, proto_tls[tls_version]) == CURLE_OK)
+ {
+ DBG(10, "curl tls compatible (%d)\n", proto_tls[tls_version]);
+ break;
+ }
+ tls_version++;
+ }
+ if (proto_tls[tls_version] < 1)
+ return 0;
+ }
+ return proto_tls[tls_version];
+}
+#else
+static int
+escl_is_tls(char * url, char *type)
+{
+ (void)url;
+ (void)type;
+ return 0;
+}
+#endif
+
void
escl_free_handler(escl_sane_t *handler)
{
@@ -187,8 +261,13 @@ escl_device_add(int port_nb,
{
char tmp[PATH_MAX] = { 0 };
char *model = NULL;
+ char url_port[512] = { 0 };
+ int tls_version = 0;
ESCL_Device *current = NULL;
DBG (10, "escl_device_add\n");
+ snprintf(url_port, sizeof(url_port), "https://%s:%d", ip_address, port_nb);
+ tls_version = escl_is_tls(url_port, type);
+
for (current = list_devices_primary; current; current = current->next) {
if ((strcmp(current->ip_address, ip_address) == 0) ||
(uuid && current->uuid && !strcmp(current->uuid, uuid)))
@@ -206,6 +285,7 @@ escl_device_add(int port_nb,
}
current->port_nb = port_nb;
current->https = SANE_TRUE;
+ current->tls = tls_version;
}
return (SANE_STATUS_GOOD);
}
@@ -226,6 +306,7 @@ escl_device_add(int port_nb,
} else {
current->https = SANE_FALSE;
}
+ current->tls = tls_version;
model = (char*)(tmp[0] != 0 ? tmp : model_name);
current->model_name = strdup(model);
current->ip_address = strdup(ip_address);
@@ -470,7 +551,6 @@ attach_one_config(SANEI_Config __sane_unused__ *config, const char *line,
}
escl_device->model_name = opt_model ? opt_model : strdup("Unknown model");
escl_device->is = strdup("flatbed or ADF scanner");
- escl_device->type = strdup("In url");
escl_device->uuid = NULL;
}
@@ -515,6 +595,9 @@ attach_one_config(SANEI_Config __sane_unused__ *config, const char *line,
}
escl_device->is = strdup("flatbed or ADF scanner");
escl_device->uuid = NULL;
+ char url_port[512] = { 0 };
+ snprintf(url_port, sizeof(url_port), "https://%s:%d", escl_device->ip_address, escl_device->port_nb);
+ escl_device->tls = escl_is_tls(url_port, escl_device->type);
status = escl_check_and_add_device(escl_device);
if (status == SANE_STATUS_GOOD)
escl_device = NULL;
@@ -956,7 +1039,7 @@ init_options(SANE_String_Const name_source, escl_sane_t *s)
s->opt[OPT_BRIGHTNESS].constraint_type = SANE_CONSTRAINT_RANGE;
if (s->scanner->brightness) {
s->opt[OPT_BRIGHTNESS].constraint.range = &s->brightness_range;
- s->val[OPT_BRIGHTNESS].w = s->scanner->brightness->normal;
+ s->val[OPT_BRIGHTNESS].w = s->scanner->brightness->value;
s->brightness_range.quant=1;
s->brightness_range.min=s->scanner->brightness->min;
s->brightness_range.max=s->scanner->brightness->max;
@@ -975,7 +1058,7 @@ init_options(SANE_String_Const name_source, escl_sane_t *s)
s->opt[OPT_CONTRAST].constraint_type = SANE_CONSTRAINT_RANGE;
if (s->scanner->contrast) {
s->opt[OPT_CONTRAST].constraint.range = &s->contrast_range;
- s->val[OPT_CONTRAST].w = s->scanner->contrast->normal;
+ s->val[OPT_CONTRAST].w = s->scanner->contrast->value;
s->contrast_range.quant=1;
s->contrast_range.min=s->scanner->contrast->min;
s->contrast_range.max=s->scanner->contrast->max;
@@ -994,7 +1077,7 @@ init_options(SANE_String_Const name_source, escl_sane_t *s)
s->opt[OPT_SHARPEN].constraint_type = SANE_CONSTRAINT_RANGE;
if (s->scanner->sharpen) {
s->opt[OPT_SHARPEN].constraint.range = &s->sharpen_range;
- s->val[OPT_SHARPEN].w = s->scanner->sharpen->normal;
+ s->val[OPT_SHARPEN].w = s->scanner->sharpen->value;
s->sharpen_range.quant=1;
s->sharpen_range.min=s->scanner->sharpen->min;
s->sharpen_range.max=s->scanner->sharpen->max;
@@ -1014,7 +1097,7 @@ init_options(SANE_String_Const name_source, escl_sane_t *s)
s->opt[OPT_THRESHOLD].constraint_type = SANE_CONSTRAINT_RANGE;
if (s->scanner->threshold) {
s->opt[OPT_THRESHOLD].constraint.range = &s->thresold_range;
- s->val[OPT_THRESHOLD].w = s->scanner->threshold->normal;
+ s->val[OPT_THRESHOLD].w = s->scanner->threshold->value;
s->thresold_range.quant=1;
s->thresold_range.min= s->scanner->threshold->min;
s->thresold_range.max=s->scanner->threshold->max;
@@ -1069,9 +1152,11 @@ escl_parse_name(SANE_String_Const name, ESCL_Device *device)
if (strncmp(name, "https://", 8) == 0) {
device->https = SANE_TRUE;
+ device->type = strdup("https");
host = name + 8;
} else if (strncmp(name, "http://", 7) == 0) {
device->https = SANE_FALSE;
+ device->type = strdup("http");
host = name + 7;
} else {
DBG(1, "Unknown URL scheme in %s", name);
@@ -1811,6 +1896,8 @@ escl_curl_url(CURL *handle, const ESCL_Device *device, SANE_String_Const path)
DBG( 1, "Ignoring safety certificates, use https\n");
curl_easy_setopt(handle, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(handle, CURLOPT_SSL_VERIFYHOST, 0L);
+ if (device->tls > 0)
+ curl_easy_setopt(handle, CURLOPT_SSLVERSION, device->tls);
}
if (device->unix_socket != NULL) {
DBG( 1, "Using local socket %s\n", device->unix_socket );
diff --git a/backend/escl/escl.h b/backend/escl/escl.h
index 142b4b4..f99bff9 100644
--- a/backend/escl/escl.h
+++ b/backend/escl/escl.h
@@ -92,10 +92,12 @@ typedef struct {
typedef struct ESCL_Device {
struct ESCL_Device *next;
+ double version;
char *model_name;
int port_nb;
char *ip_address;
char *is;
+ int tls;
char *uuid;
char *type;
SANE_Bool https;
@@ -146,6 +148,7 @@ typedef struct support
int min;
int max;
int normal;
+ int value;
int step;
} support_t;
diff --git a/backend/escl/escl_capabilities.c b/backend/escl/escl_capabilities.c
index 7422896..efbd547 100644
--- a/backend/escl/escl_capabilities.c
+++ b/backend/escl/escl_capabilities.c
@@ -325,7 +325,8 @@ print_support(xmlNode *node)
cpt++;
}
else if (!strcmp((const char *)node->name, "Normal")) {
- sup->normal = atoi((const char *)xmlNodeGetContent(node));
+ sup->value = atoi((const char *)xmlNodeGetContent(node));
+ sup->normal = sup->value;
cpt++;
have_norm = 1;
}
@@ -338,7 +339,8 @@ print_support(xmlNode *node)
if (cpt == 4)
return sup;
if (cpt == 3 && have_norm == 0) {
- sup->normal = (sup->max / 2 );
+ sup->value = (sup->max / 2 );
+ sup->normal = sup->value;
return sup;
}
free(sup);
@@ -428,6 +430,10 @@ print_xml_c(xmlNode *node, ESCL_Device *device, capabilities_t *scanner, int typ
if (find_nodes_c(node) && type != -1)
find_true_variables(node, scanner, type);
}
+ if (!strcmp((const char *)node->name, "Version")&& node->ns && node->ns->prefix){
+ if (!strcmp((const char*)node->ns->prefix, "pwg"))
+ device->version = atof ((const char *)xmlNodeGetContent(node));
+ }
if (!strcmp((const char *)node->name, "MakeAndModel")){
device->model_name = strdup((const char *)xmlNodeGetContent(node));
}
@@ -582,6 +588,7 @@ escl_capabilities(ESCL_Device *device, char *blacklist, SANE_Status *status)
strstr(header->memory, "Server: HP_Compact_Server"))
device->hack = curl_slist_append(NULL, "Host: localhost");
+ device->version = 0.0;
scanner->source = 0;
scanner->Sources = (SANE_String_Const *)malloc(sizeof(SANE_String_Const) * 4);
for (i = 0; i < 4; i++)
diff --git a/backend/escl/escl_devices.c b/backend/escl/escl_devices.c
index 92e064b..a2fdb80 100644
--- a/backend/escl/escl_devices.c
+++ b/backend/escl/escl_devices.c
@@ -30,6 +30,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <arpa/inet.h>
#include <avahi-client/lookup.h>
#include <avahi-common/error.h>
@@ -53,47 +54,65 @@ static int count_finish = 0;
*/
static void
resolve_callback(AvahiServiceResolver *r, AVAHI_GCC_UNUSED AvahiIfIndex interface,
- AVAHI_GCC_UNUSED AvahiProtocol protocol,
- AvahiResolverEvent event, const char *name,
+ AvahiProtocol protocol,
+ AvahiResolverEvent event,
+ const char *name,
const char __sane_unused__ *type,
const char __sane_unused__ *domain,
const char __sane_unused__ *host_name,
- const AvahiAddress *address, uint16_t port, AvahiStringList *txt,
+ const AvahiAddress *address,
+ uint16_t port,
+ AvahiStringList *txt,
AvahiLookupResultFlags __sane_unused__ flags,
void __sane_unused__ *userdata)
{
- char a[AVAHI_ADDRESS_STR_MAX], *t;
+ char a[(AVAHI_ADDRESS_STR_MAX + 10)] = { 0 };
+ char *t;
const char *is;
const char *uuid;
AvahiStringList *s;
assert(r);
switch (event) {
- case AVAHI_RESOLVER_FAILURE:
- break;
- case AVAHI_RESOLVER_FOUND:
- avahi_address_snprint(a, sizeof(a), address);
- t = avahi_string_list_to_string(txt);
- if (strstr(t, "\"rs=eSCL\"") || strstr(t, "\"rs=/eSCL\"")) {
- char ip_add[PATH_MAX] = {0};
- s = avahi_string_list_find(txt, "is");
- if (s && s->size > 3)
- is = (const char*)s->text + 3;
- else
- is = (const char*)NULL;
- s = avahi_string_list_find(txt, "uuid");
- if (s && s->size > 5)
- uuid = (const char*)s->text + 5;
- else
- uuid = (const char*)NULL;
- DBG (10, "resolve_callback [%s]\n", a);
- if (strstr(a, "127.0.0.1") != NULL) {
- snprintf(ip_add, sizeof(ip_add), "%s", "localhost");
- DBG (10,"resolve_callback fix redirect [localhost]\n");
- }
+ case AVAHI_RESOLVER_FAILURE:
+ break;
+ case AVAHI_RESOLVER_FOUND:
+ {
+ char *psz_addr = ((void*)0);
+ char b[128] = { 0 };
+ avahi_address_snprint(b, (sizeof(b)/sizeof(b[0]))-1, address);
+#ifdef ENABLE_IPV6
+ if (protocol == AVAHI_PROTO_INET6 && strchr(b, ':'))
+ {
+ if ( asprintf( &psz_addr, "[%s]", b ) == -1 )
+ break;
+ }
else
- snprintf(ip_add, sizeof(ip_add), "%s", a);
- escl_device_add(port, name, ip_add, is, uuid, (char*)type);
- }
+#endif
+ {
+ if ( asprintf( &psz_addr, "%s", b ) == -1 )
+ break;
+ }
+ t = avahi_string_list_to_string(txt);
+ if (strstr(t, "\"rs=eSCL\"") || strstr(t, "\"rs=/eSCL\"")) {
+ s = avahi_string_list_find(txt, "is");
+ if (s && s->size > 3)
+ is = (const char*)s->text + 3;
+ else
+ is = (const char*)NULL;
+ s = avahi_string_list_find(txt, "uuid");
+ if (s && s->size > 5)
+ uuid = (const char*)s->text + 5;
+ else
+ uuid = (const char*)NULL;
+ DBG (10, "resolve_callback [%s]\n", a);
+ if (strstr(psz_addr, "127.0.0.1") != NULL) {
+ escl_device_add(port, name, "localhost", is, uuid, (char*)type);
+ DBG (10,"resolve_callback fix redirect [localhost]\n");
+ }
+ else
+ escl_device_add(port, name, psz_addr, is, uuid, (char*)type);
+ }
+ }
}
}
diff --git a/backend/escl/escl_newjob.c b/backend/escl/escl_newjob.c
index 98a953f..e1b326f 100644
--- a/backend/escl/escl_newjob.c
+++ b/backend/escl/escl_newjob.c
@@ -46,7 +46,7 @@ struct downloading
static const char settings[] =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" \
"<scan:ScanSettings xmlns:pwg=\"http://www.pwg.org/schemas/2010/12/sm\" xmlns:scan=\"http://schemas.hp.com/imaging/escl/2011/05/03\">" \
- " <pwg:Version>2.0</pwg:Version>" \
+ " <pwg:Version>%.2f</pwg:Version>" \
" <pwg:ScanRegions>" \
" <pwg:ScanRegion>" \
" <pwg:ContentRegionUnits>escl:ThreeHundredthsOfInches</pwg:ContentRegionUnits>" \
@@ -56,13 +56,11 @@ static const char settings[] =
" <pwg:YOffset>%d</pwg:YOffset>" \
" </pwg:ScanRegion>" \
" </pwg:ScanRegions>" \
- " <pwg:DocumentFormat>%s</pwg:DocumentFormat>" \
"%s" \
" <scan:ColorMode>%s</scan:ColorMode>" \
" <scan:XResolution>%d</scan:XResolution>" \
" <scan:YResolution>%d</scan:YResolution>" \
" <pwg:InputSource>%s</pwg:InputSource>" \
- " <scan:InputSource>%s</scan:InputSource>" \
"%s" \
"%s" \
"</scan:ScanSettings>";
@@ -138,8 +136,8 @@ escl_newjob (capabilities_t *scanner, const ESCL_Device *device, SANE_Status *st
char *location = NULL;
char *result = NULL;
char *temporary = NULL;
- char *f_ext = "";
char *format_ext = NULL;
+ char f_ext_tmp[1024];
char duplex_mode[1024] = { 0 };
int wakup_count = 0;
@@ -189,16 +187,22 @@ escl_newjob (capabilities_t *scanner, const ESCL_Device *device, SANE_Status *st
scanner->caps[scanner->source].default_format =
strdup(scanner->caps[scanner->source].DocumentFormats[have_pdf]);
}
- if (scanner->caps[scanner->source].format_ext == 1)
+ if (device->version <= 2.0)
{
- char f_ext_tmp[1024];
+ // For eSCL 2.0 and older clients
snprintf(f_ext_tmp, sizeof(f_ext_tmp),
- " <scan:DocumentFormatExt>%s</scan:DocumentFormatExt>",
+ " <pwg:DocumentFormat>%s</pwg:DocumentFormat>",
scanner->caps[scanner->source].default_format);
- format_ext = f_ext_tmp;
}
else
- format_ext = f_ext;
+ {
+ // For eSCL 2.1 and newer clients
+ snprintf(f_ext_tmp, sizeof(f_ext_tmp),
+ " <scan:DocumentFormatExt>%s</scan:DocumentFormatExt>",
+ scanner->caps[scanner->source].default_format);
+ }
+ format_ext = f_ext_tmp;
+
if(scanner->source > PLATEN && scanner->Sources[ADFDUPLEX]) {
snprintf(duplex_mode, sizeof(duplex_mode),
" <scan:Duplex>%s</scan:Duplex>",
@@ -215,52 +219,63 @@ escl_newjob (capabilities_t *scanner, const ESCL_Device *device, SANE_Status *st
char *source = (scanner->source == PLATEN ? "Platen" : "Feeder");
if (scanner->use_threshold)
{
- char *tmp = add_support_option("ThresholdSupport", scanner->val_threshold);
- if (support_options[0])
- strcat(support_options, tmp);
- else
- strcpy(support_options, tmp);
- free(tmp);
+ if (scanner->val_threshold != scanner->threshold->value)
+ {
+ char *tmp = add_support_option("ThresholdSupport", scanner->val_threshold);
+ if (support_options[0])
+ strcat(support_options, tmp);
+ else
+ strcpy(support_options, tmp);
+ free(tmp);
+ }
}
if (scanner->use_sharpen)
{
- char *tmp = add_support_option("SharpenSupport", scanner->val_sharpen);
- if (support_options[0])
- strcat(support_options, tmp);
- else
- strcpy(support_options, tmp);
- free(tmp);
+ if (scanner->val_sharpen != scanner->sharpen->value)
+ {
+ char *tmp = add_support_option("SharpenSupport", scanner->val_sharpen);
+ if (support_options[0])
+ strcat(support_options, tmp);
+ else
+ strcpy(support_options, tmp);
+ free(tmp);
+ }
}
if (scanner->use_contrast)
{
- char *tmp = add_support_option("ContrastSupport", scanner->val_contrast);
- if (support_options[0])
- strcat(support_options, tmp);
- else
- strcpy(support_options, tmp);
- free(tmp);
+ if (scanner->val_contrast != scanner->contrast->value)
+ {
+ char *tmp = add_support_option("ContrastSupport", scanner->val_contrast);
+ if (support_options[0])
+ strcat(support_options, tmp);
+ else
+ strcpy(support_options, tmp);
+ free(tmp);
+ }
}
if (scanner->use_brightness)
{
- char *tmp = add_support_option("BrightnessSupport", scanner->val_brightness);
- if (support_options[0])
- strcat(support_options, tmp);
- else
- strcpy(support_options, tmp);
- free(tmp);
+ if (scanner->val_brightness != scanner->brightness->value)
+ {
+ char *tmp = add_support_option("BrightnessSupport", scanner->val_brightness);
+ if (support_options[0])
+ strcat(support_options, tmp);
+ else
+ strcpy(support_options, tmp);
+ free(tmp);
+ }
}
snprintf(cap_data, sizeof(cap_data), settings,
+ device->version,
scanner->caps[scanner->source].height,
scanner->caps[scanner->source].width,
off_x,
off_y,
- scanner->caps[scanner->source].default_format,
format_ext,
scanner->caps[scanner->source].default_color,
scanner->caps[scanner->source].default_resolution,
scanner->caps[scanner->source].default_resolution,
source,
- source,
duplex_mode[0] == 0 ? " " : duplex_mode,
support_options[0] == 0 ? " " : support_options);
upload->memory = strdup(cap_data);
diff --git a/backend/escl/escl_pdf.c b/backend/escl/escl_pdf.c
index 02dce66..8277e1d 100644
--- a/backend/escl/escl_pdf.c
+++ b/backend/escl/escl_pdf.c
@@ -44,8 +44,9 @@
#if HAVE_POPPLER_GLIB
-#define INPUT_BUFFER_SIZE 4096
+#define ESCL_PDF_USE_MAPPED_FILE POPPLER_CHECK_VERSION(0,82,0)
+#if ! ESCL_PDF_USE_MAPPED_FILE
static unsigned char*
set_file_in_buffer(FILE *fp, int *size)
{
@@ -70,6 +71,7 @@ set_file_in_buffer(FILE *fp, int *size)
*size = nx;
return data;
}
+#endif
static unsigned char *
cairo_surface_to_pixels (cairo_surface_t *surface, int bps)
@@ -109,28 +111,52 @@ get_PDF_data(capabilities_t *scanner, int *width, int *height, int *bps)
PopplerPage *page;
PopplerDocument *doc;
double dw, dh;
- int w, h, size = 0;
- char *data = NULL;
+ int w, h;
unsigned char* surface = NULL;
SANE_Status status = SANE_STATUS_GOOD;
+#if ESCL_PDF_USE_MAPPED_FILE
+ GMappedFile *file;
+ GBytes *bytes;
+
+ file = g_mapped_file_new_from_fd (fileno (scanner->tmp), 0, NULL);
+ if (!file) {
+ DBG(1, "Error : g_mapped_file_new_from_fd");
+ status = SANE_STATUS_INVAL;
+ goto close_file;
+ }
+
+ bytes = g_mapped_file_get_bytes (file);
+ if (!bytes) {
+ DBG(1, "Error : g_mapped_file_get_bytes");
+ status = SANE_STATUS_INVAL;
+ goto free_file;
+ }
+
+ doc = poppler_document_new_from_bytes (bytes, NULL, NULL);
+ if (!doc) {
+ DBG(1, "Error : poppler_document_new_from_bytes");
+ status = SANE_STATUS_INVAL;
+ goto free_bytes;
+ }
+#else
+ int size = 0;
+ char *data = NULL;
data = (char*)set_file_in_buffer(scanner->tmp, &size);
if (!data) {
- DBG(1, "Error : poppler_document_new_from_data");
+ DBG(1, "Error : set_file_in_buffer");
status = SANE_STATUS_INVAL;
goto close_file;
}
- doc = poppler_document_new_from_data(data,
- size,
- NULL,
- NULL);
+ doc = poppler_document_new_from_data (data, size, NULL, NULL);
if (!doc) {
DBG(1, "Error : poppler_document_new_from_data");
status = SANE_STATUS_INVAL;
- goto free_file;
+ goto free_data;
}
+#endif
page = poppler_document_get_page (doc, 0);
if (!page) {
@@ -201,8 +227,15 @@ free_page:
g_object_unref (page);
free_doc:
g_object_unref (doc);
+#if ESCL_PDF_USE_MAPPED_FILE
+free_bytes:
+ g_bytes_unref (bytes);
free_file:
+ g_mapped_file_unref (file);
+#else
+free_data:
free(data);
+#endif
close_file:
if (scanner->tmp)
fclose(scanner->tmp);
diff --git a/backend/escl/escl_scan.c b/backend/escl/escl_scan.c
index 3350c83..8af6bb2 100644
--- a/backend/escl/escl_scan.c
+++ b/backend/escl/escl_scan.c
@@ -84,6 +84,7 @@ escl_scan(capabilities_t *scanner, const ESCL_Device *device, char *scanJob, cha
CURLcode res = curl_easy_perform(curl_handle);
if (res != CURLE_OK) {
DBG( 1, "Unable to scan: %s\n", curl_easy_strerror(res));
+ scanner->real_read = 0;
fclose(scanner->tmp);
scanner->tmp = NULL;
status = SANE_STATUS_INVAL;
diff --git a/backend/escl/escl_tiff.c b/backend/escl/escl_tiff.c
index e33498c..e17554e 100644
--- a/backend/escl/escl_tiff.c
+++ b/backend/escl/escl_tiff.c
@@ -26,6 +26,8 @@
#include "escl.h"
+#include "../include/_stdint.h"
+
#include "../include/sane/sanei.h"
#include <stdio.h>
@@ -53,11 +55,11 @@ SANE_Status
get_TIFF_data(capabilities_t *scanner, int *width, int *height, int *bps)
{
TIFF* tif = NULL;
- uint32 w = 0;
- uint32 h = 0;
+ uint32_t w = 0;
+ uint32_t h = 0;
unsigned char *surface = NULL; /* image data*/
int components = 4;
- uint32 npixels = 0;
+ uint32_t npixels = 0;
SANE_Status status = SANE_STATUS_GOOD;
lseek(fileno(scanner->tmp), 0, SEEK_SET);
@@ -71,15 +73,15 @@ get_TIFF_data(capabilities_t *scanner, int *width, int *height, int *bps)
TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w);
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h);
npixels = w * h;
- surface = (unsigned char*) malloc(npixels * sizeof (uint32));
- if (surface != NULL)
+ surface = (unsigned char*) malloc(npixels * sizeof (uint32_t));
+ if (surface == NULL)
{
DBG( 1, "Escl Tiff : raster Memory allocation problem.\n");
status = SANE_STATUS_INVAL;
goto close_tiff;
}
- if (!TIFFReadRGBAImage(tif, w, h, (uint32 *)surface, 0))
+ if (!TIFFReadRGBAImage(tif, w, h, (uint32_t *)surface, 0))
{
DBG( 1, "Escl Tiff : Problem reading image data.\n");
status = SANE_STATUS_INVAL;
diff --git a/backend/fujitsu-scsi.h b/backend/fujitsu-scsi.h
index 3d3cf07..c7616f7 100644
--- a/backend/fujitsu-scsi.h
+++ b/backend/fujitsu-scsi.h
@@ -140,9 +140,12 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define IN_periph_devtype_unknown 0x1f
#define get_IN_response_format(in) getbitfield(in + 0x03, 0x07, 0)
#define IN_recognized 0x02
-#define get_IN_vendor(in, buf) strncpy(buf, (char *)in + 0x08, 0x08)
-#define get_IN_product(in, buf) strncpy(buf, (char *)in + 0x10, 0x010)
-#define get_IN_version(in, buf) strncpy(buf, (char *)in + 0x20, 0x04)
+#define get_IN_vendor(in, buf) snprintf(buf, 0x08 + 1, "%.*s", \
+ 0x08, (char *)in + 0x08)
+#define get_IN_product(in, buf) snprintf(buf, 0x10 + 1, "%.*s", \
+ 0x10, (char *)in + 0x10)
+#define get_IN_version(in, buf) snprintf(buf, 0x04 + 1, "%.*s", \
+ 0x04, (char *)in + 0x20)
#define get_IN_color_offset(in) getnbyte (in+0x2A, 2) /* offset between colors */
/* these only in some scanners */
diff --git a/backend/fujitsu.c b/backend/fujitsu.c
index d17e015..52d0988 100644
--- a/backend/fujitsu.c
+++ b/backend/fujitsu.c
@@ -6,7 +6,7 @@
Copyright (C) 2000 Randolph Bentson
Copyright (C) 2001 Frederik Ramm
Copyright (C) 2001-2004 Oliver Schirrmeister
- Copyright (C) 2003-2021 m. allan noah
+ Copyright (C) 2003-2022 m. allan noah
JPEG output and low memory usage support funded by:
Archivista GmbH, www.archivista.ch
@@ -15,7 +15,7 @@
Automatic length detection support funded by:
Martin G. Miller, mgmiller at optonline.net
Software image enhancement routines and recent scanner support funded by:
- Fujitsu Computer Products of America, Inc. www.fcpa.com
+ PFU America, Inc., fujitsuscanners.com
--------------------------------------------------------------------------
@@ -611,6 +611,11 @@
- fix JPEG duplex memory corruption
- change window_gamma init (fixes bright/contrast for iX1500)
- only call send_lut after set_window (remove late_lut)
+ v138 2022-06-01, MAN
+ - minor updates to company name (FCPA -> PFU)
+ v139 2022-11-15, MAN
+ - move updated window_gamma logic to set_window
+ - use internal gamma table if possible (fixes #618)
SANE FLOW DIAGRAM
@@ -660,7 +665,7 @@
#include "fujitsu.h"
#define DEBUG 1
-#define BUILD 137
+#define BUILD 139
/* values for SANE_DEBUG_FUJITSU env var:
- errors 5
@@ -764,7 +769,7 @@ static struct fujitsu *fujitsu_devList = NULL;
SANE_Status
sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
DBG_INIT ();
DBG (10, "sane_init: start\n");
@@ -819,7 +824,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
int num_devices=0;
int i=0;
- local_only = local_only; /* get rid of compiler warning */
+ (void) local_only; /* get rid of compiler warning */
DBG (10, "sane_get_devices: start\n");
@@ -2107,12 +2112,6 @@ init_model (struct fujitsu *s)
s->ppl_mod_by_mode[MODE_GRAYSCALE] = 1;
s->ppl_mod_by_mode[MODE_COLOR] = 1;
- /* we prefer to use the downloaded (LUT) gamma table (0x80) if possible.
- * but if scanner has only built-in gamma tables, we use the first one (0) */
- if (s->num_download_gamma){
- s->window_gamma = 0x80;
- }
-
/* endorser type tells string length (among other things) */
if(s->has_endorser_b){
/*old-style is 40 bytes*/
@@ -2206,7 +2205,10 @@ init_model (struct fujitsu *s)
s->color_interlace = COLOR_INTERLACE_3091;
s->duplex_interlace = DUPLEX_INTERLACE_3091;
s->ghs_in_rs = 1;
- s->window_gamma = 0;
+
+ /* might be inaccurate */
+ s->num_internal_gamma = 1;
+ s->num_download_gamma = 0;
s->reverse_by_mode[MODE_LINEART] = 1;
s->reverse_by_mode[MODE_HALFTONE] = 1;
@@ -7055,12 +7057,11 @@ sane_start (SANE_Handle handle)
goto errors;
}
- /* send lut if scanner has no hardware brightness/contrast,
- * or we are going to ask it to use a downloaded gamma table */
- if (!s->brightness_steps || !s->contrast_steps || s->window_gamma & 0x80){
+ /* send lut if set_window said we would */
+ if ( s->window_gamma ){
ret = send_lut(s);
if (ret != SANE_STATUS_GOOD)
- DBG (5, "sane_start: WARNING: cannot late send_lut %d\n", ret);
+ DBG (5, "sane_start: WARNING: cannot send_lut %d\n", ret);
}
/* some scanners need the q table sent, even when not scanning jpeg */
@@ -7614,6 +7615,23 @@ set_window (struct fujitsu *s)
/* the remainder of the block varies based on model and mode,
* except for gamma and paper size, those are in the same place */
+ /* determine if we need to send gamma LUT.
+ * send lut if scanner supports it and any of:
+ * has no hardware brightness but user changed it
+ * has no hardware contrast but user changed it
+ * has no internal gamma table */
+ if ( s->num_download_gamma && (
+ (!s->brightness_steps && s->brightness != 0)
+ || (!s->contrast_steps && s->contrast != 0 )
+ || !s->num_internal_gamma
+ ) ){
+ s->window_gamma = 0x80;
+ }
+ /* otherwise, use the internal table */
+ else{
+ s->window_gamma = 0;
+ }
+
/*vuid c0*/
if(s->has_vuid_3091){
set_WD_vendor_id_code (desc1, WD_VUID_3091);
@@ -9270,7 +9288,7 @@ sense_handler (int fd, unsigned char * sensed_data, void *arg)
DBG (5, "sense_handler: start\n");
/* kill compiler warning */
- fd = fd;
+ (void) fd;
/* copy the rs return data into the scanner struct
so that the caller can use it if he wants */
@@ -9605,8 +9623,8 @@ do_scsi_cmd(struct fujitsu *s, int runRS, int shortTime,
int ret;
/*shut up compiler*/
- runRS=runRS;
- shortTime=shortTime;
+ (void) runRS;
+ (void) shortTime;
DBG(10, "do_scsi_cmd: start\n");
diff --git a/backend/fujitsu.conf.in b/backend/fujitsu.conf.in
index 1645e87..9da0ae9 100644
--- a/backend/fujitsu.conf.in
+++ b/backend/fujitsu.conf.in
@@ -267,3 +267,39 @@ usb 0x04c5 0x160b
#ScanSnap iX1600
usb 0x04c5 0x1632
+
+#ScanPartner SP30
+usb 0x04c5 0x140a
+
+#fi-7300NX
+usb 0x04c5 0x1575
+
+#fi-8190
+usb 0x04c5 0x15fd
+
+#fi-8290
+usb 0x04c5 0x15fe
+
+#fi-8170
+usb 0x04c5 0x15ff
+
+#fi-8270
+usb 0x04c5 0x1600
+
+#fi-8150
+usb 0x04c5 0x1601
+
+#fi-8250
+usb 0x04c5 0x1602
+
+#fi-8150U
+usb 0x04c5 0x162d
+
+#fi-8250U
+usb 0x04c5 0x162e
+
+#ScanSnap iX1300
+usb 0x04c5 0x162c
+
+#ScanSnap iX1400
+usb 0x04c5 0x1630
diff --git a/backend/fujitsu.h b/backend/fujitsu.h
index 98278eb..6c42ff8 100644
--- a/backend/fujitsu.h
+++ b/backend/fujitsu.h
@@ -325,7 +325,6 @@ struct fujitsu
int jpeg_interlace; /* different models interlace jpeg sides differently */
int cropping_mode; /* lower-end scanners don't crop from paper size */
int ghs_in_rs;
- int window_gamma;
int endorser_string_len;
int has_pixelsize;
int has_short_pixelsize; /* m3091/2 put weird stuff at end, ignore it */
@@ -520,6 +519,7 @@ struct fujitsu
/* the user never directly modifies these */
int s_mode; /*color,lineart,etc: sent to scanner*/
+ int window_gamma; /* depends on brightness/contrast and lut */
/* this is defined in sane spec as a struct containing:
SANE_Frame format;
diff --git a/backend/genesys.conf.in b/backend/genesys.conf.in
index d9c596a..e6788f5 100644
--- a/backend/genesys.conf.in
+++ b/backend/genesys.conf.in
@@ -160,3 +160,6 @@ usb 0x1803 0x162e
# Plustek OpticBook 3800
usb 0x07b3 0x1300
+
+# Plustek OpticFilm 7600i
+usb 0x07b3 0x0c3b
diff --git a/backend/genesys/fwd.h b/backend/genesys/fwd.h
index 9937654..5d341b8 100644
--- a/backend/genesys/fwd.h
+++ b/backend/genesys/fwd.h
@@ -59,7 +59,7 @@ struct Pixel;
struct RawPixel;
// low.h
-struct UsbDeviceEntry;
+class UsbDeviceEntry;
// motor.h
struct Genesys_Motor;
diff --git a/backend/genesys/genesys.cpp b/backend/genesys/genesys.cpp
index 5aba58c..ab1367e 100644
--- a/backend/genesys/genesys.cpp
+++ b/backend/genesys/genesys.cpp
@@ -310,9 +310,8 @@ void sanei_genesys_init_structs (Genesys_Device * dev)
* @param gamma gamma to compute values
* @return a gamma table filled with the computed values
* */
-void
-sanei_genesys_create_gamma_table (std::vector<uint16_t>& gamma_table, int size,
- float maximum, float gamma_max, float gamma)
+void sanei_genesys_create_gamma_table(std::vector<std::uint16_t>& gamma_table, int size,
+ float maximum, float gamma_max, float gamma)
{
gamma_table.clear();
gamma_table.resize(size, 0);
@@ -334,7 +333,7 @@ sanei_genesys_create_gamma_table (std::vector<uint16_t>& gamma_table, int size,
}
void sanei_genesys_create_default_gamma_table(Genesys_Device* dev,
- std::vector<uint16_t>& gamma_table, float gamma)
+ std::vector<std::uint16_t>& gamma_table, float gamma)
{
int size = 0;
int max = 0;
@@ -346,6 +345,7 @@ void sanei_genesys_create_default_gamma_table(Genesys_Device* dev,
}
max = size - 1;
} else if (dev->model->asic_type == AsicType::GL124 ||
+ dev->model->asic_type == AsicType::GL845 ||
dev->model->asic_type == AsicType::GL846 ||
dev->model->asic_type == AsicType::GL847) {
size = 257;
@@ -396,7 +396,7 @@ SANE_Int sanei_genesys_exposure_time2(Genesys_Device * dev, const MotorProfile&
The data needs to be of size "size", and in little endian byte order.
*/
static void genesys_send_offset_and_shading(Genesys_Device* dev, const Genesys_Sensor& sensor,
- uint8_t* data, int size)
+ std::uint8_t* data, int size)
{
DBG_HELPER_ARGS(dbg, "(size = %d)", size);
int start_address;
@@ -427,10 +427,10 @@ void sanei_genesys_init_shading_data(Genesys_Device* dev, const Genesys_Sensor&
unsigned channels = dev->settings.get_channels();
- // 16 bit black, 16 bit white
- std::vector<uint8_t> shading_data(pixels_per_line * 4 * channels, 0);
+ // 16 bit black, 16 bit white
+ std::vector<std::uint8_t> shading_data(pixels_per_line * 4 * channels, 0);
- uint8_t* shading_data_ptr = shading_data.data();
+ std::uint8_t* shading_data_ptr = shading_data.data();
for (unsigned i = 0; i < pixels_per_line * channels; i++) {
*shading_data_ptr++ = 0x00; /* dark lo */
@@ -487,7 +487,7 @@ void scanner_clear_scan_and_feed_counts(Genesys_Device& dev)
}
void scanner_send_slope_table(Genesys_Device* dev, const Genesys_Sensor& sensor, unsigned table_nr,
- const std::vector<uint16_t>& slope_table)
+ const std::vector<std::uint16_t>& slope_table)
{
DBG_HELPER_ARGS(dbg, "table_nr = %d, steps = %zu", table_nr, slope_table.size());
@@ -515,7 +515,7 @@ void scanner_send_slope_table(Genesys_Device* dev, const Genesys_Sensor& sensor,
throw SaneException("invalid table number %d", table_nr);
}
- std::vector<uint8_t> table;
+ std::vector<std::uint8_t> table;
table.reserve(slope_table.size() * 2);
for (std::size_t i = 0; i < slope_table.size(); i++) {
table.push_back(slope_table[i] & 0xff);
@@ -1868,7 +1868,7 @@ void scanner_coarse_gain_calibration(Genesys_Device& dev, const Genesys_Sensor&
dev.model->asic_type == AsicType::GL842 ||
dev.model->asic_type == AsicType::GL843)
{
- std::vector<uint16_t> values;
+ std::vector<std::uint16_t> values;
// FIXME: start from the second line because the first line often has artifacts. Probably
// caused by unclean cleanup of previous scan
for (std::size_t x = pixels / 4; x < (pixels * 3 / 4); x++) {
@@ -2178,12 +2178,12 @@ SensorExposure scanner_led_calibration(Genesys_Device& dev, const Genesys_Sensor
}
void sanei_genesys_calculate_zmod(bool two_table,
- uint32_t exposure_time,
- const std::vector<uint16_t>& slope_table,
+ std::uint32_t exposure_time,
+ const std::vector<std::uint16_t>& slope_table,
unsigned acceleration_steps,
unsigned move_steps,
unsigned buffer_acceleration_steps,
- uint32_t* out_z1, uint32_t* out_z2)
+ std::uint32_t* out_z1, std::uint32_t* out_z2)
{
// acceleration total time
unsigned sum = std::accumulate(slope_table.begin(), slope_table.begin() + acceleration_steps,
@@ -2233,7 +2233,7 @@ static void genesys_shading_calibration_impl(Genesys_Device* dev, const Genesys_
debug_dump(DBG_info, dev->calib_session);
size_t size;
- uint32_t pixels_per_line;
+ std::uint32_t pixels_per_line;
if (dev->model->asic_type == AsicType::GL842 ||
dev->model->asic_type == AsicType::GL843 ||
@@ -2274,7 +2274,7 @@ static void genesys_shading_calibration_impl(Genesys_Device* dev, const Genesys_
size = channels * 2 * pixels_per_line * (dev->calib_session.params.lines + 1);
}
- std::vector<uint16_t> calibration_data(size / 2);
+ std::vector<std::uint16_t> calibration_data(size / 2);
// turn off motor and lamp power for flatbed scanners, but not for sheetfed scanners
// because they have a calibration sheet with a sufficient black strip
@@ -2353,8 +2353,8 @@ static void genesys_shading_calibration_impl(Genesys_Device* dev, const Genesys_
static void genesys_dark_shading_by_dummy_pixel(Genesys_Device* dev, const Genesys_Sensor& sensor)
{
DBG_HELPER(dbg);
- uint32_t pixels_per_line;
- uint32_t skip, xend;
+ std::uint32_t pixels_per_line;
+ std::uint32_t skip, xend;
int dummy1, dummy2, dummy3; /* dummy black average per channel */
if (dev->model->asic_type == AsicType::GL842 ||
@@ -2578,11 +2578,9 @@ static void genesys_dark_white_shading_calibration(Genesys_Device* dev,
dev->interface->write_registers(local_reg);
}
- size_t size;
- uint32_t pixels_per_line;
+ std::size_t size;
+ std::uint32_t pixels_per_line;
unsigned int x;
- uint32_t dark, white, dark_sum, white_sum, dark_count, white_count, col,
- dif;
if (dev->model->asic_type == AsicType::GL842 ||
dev->model->asic_type == AsicType::GL843)
@@ -2618,7 +2616,7 @@ static void genesys_dark_white_shading_calibration(Genesys_Device* dev,
size = channels * 2 * pixels_per_line * dev->calib_session.params.lines;
}
- std::vector<uint8_t> calibration_data(size);
+ std::vector<std::uint8_t> calibration_data(size);
// turn on motor and lamp power
sanei_genesys_set_lamp_power(dev, sensor, local_reg, true);
@@ -2656,19 +2654,17 @@ static void genesys_dark_white_shading_calibration(Genesys_Device* dev,
std::fill(dev->white_average_data.begin(),
dev->white_average_data.begin() + start_offset * channels, 0);
- uint16_t* average_white = dev->white_average_data.data() +
- start_offset * channels;
- uint16_t* average_dark = dev->dark_average_data.data() +
- start_offset * channels;
+ std::uint16_t* average_white = dev->white_average_data.data() + start_offset * channels;
+ std::uint16_t* average_dark = dev->dark_average_data.data() + start_offset * channels;
for (x = 0; x < pixels_per_line * channels; x++)
{
- dark = 0xffff;
- white = 0;
+ std::uint32_t dark = 0xffff;
+ std::uint32_t white = 0;
for (std::size_t y = 0; y < dev->calib_session.params.lines; y++)
{
- col = calibration_data[(x + y * pixels_per_line * channels) * 2];
+ std::uint32_t col = calibration_data[(x + y * pixels_per_line * channels) * 2];
col |=
calibration_data[(x + y * pixels_per_line * channels) * 2 +
1] << 8;
@@ -2679,20 +2675,20 @@ static void genesys_dark_white_shading_calibration(Genesys_Device* dev,
dark = col;
}
- dif = white - dark;
+ std::uint32_t dif = white - dark;
dark = dark + dif / 8;
white = white - dif / 8;
- dark_count = 0;
- dark_sum = 0;
+ std::uint32_t dark_count = 0;
+ std::uint32_t dark_sum = 0;
- white_count = 0;
- white_sum = 0;
+ std::uint32_t white_count = 0;
+ std::uint32_t white_sum = 0;
for (std::size_t y = 0; y < dev->calib_session.params.lines; y++)
{
- col = calibration_data[(x + y * pixels_per_line * channels) * 2];
+ std::uint32_t col = calibration_data[(x + y * pixels_per_line * channels) * 2];
col |=
calibration_data[(x + y * pixels_per_line * channels) * 2 +
1] << 8;
@@ -2780,9 +2776,8 @@ compute_coefficient (unsigned int coeff, unsigned int target, unsigned int value
* @param target_bright value of the white target code
* @param target_dark value of the black target code
*/
-static void
-compute_averaged_planar (Genesys_Device * dev, const Genesys_Sensor& sensor,
- uint8_t * shading_data,
+static void compute_averaged_planar(Genesys_Device * dev, const Genesys_Sensor& sensor,
+ std::uint8_t* shading_data,
unsigned int pixels_per_line,
unsigned int words_per_color,
unsigned int channels,
@@ -2852,7 +2847,8 @@ compute_averaged_planar (Genesys_Device * dev, const Genesys_Sensor& sensor,
avgpixels = 15;
/* LiDE80 packs shading data */
- if (dev->model->sensor_id != SensorId::CIS_CANON_LIDE_80) {
+ if (dev->model->sensor_id != SensorId::CIS_CANON_LIDE_80)
+ {
factor=1;
fill=avgpixels;
}
@@ -2961,7 +2957,7 @@ static std::array<unsigned, 3> color_order_to_cmat(ColorOrder color_order)
* @param target value of the target code
*/
static void compute_coefficients(Genesys_Device * dev,
- uint8_t * shading_data,
+ std::uint8_t* shading_data,
unsigned int pixels_per_line,
unsigned int channels,
ColorOrder color_order,
@@ -2969,7 +2965,6 @@ static void compute_coefficients(Genesys_Device * dev,
unsigned int coeff,
unsigned int target)
{
- uint8_t *ptr; /* contain 16bit words in little endian */
unsigned int x, c;
unsigned int val, br, dk;
unsigned int start, end;
@@ -2995,7 +2990,8 @@ static void compute_coefficients(Genesys_Device * dev,
for (x = start; x < end; x++)
{
/* TODO if channels=1 , use filter to know the base addr */
- ptr = shading_data + 4 * ((x + offset) * channels + cmat[c]);
+ // contain 16bit words in little endian
+ std::uint8_t* ptr = shading_data + 4 * ((x + offset) * channels + cmat[c]);
// dark data
dk = dev->dark_average_data[x * channels + c];
@@ -3033,7 +3029,7 @@ static void compute_coefficients(Genesys_Device * dev,
* @param target white target value
*/
static void compute_planar_coefficients(Genesys_Device * dev,
- uint8_t * shading_data,
+ std::uint8_t* shading_data,
unsigned int factor,
unsigned int pixels_per_line,
unsigned int words_per_color,
@@ -3043,22 +3039,20 @@ static void compute_planar_coefficients(Genesys_Device * dev,
unsigned int coeff,
unsigned int target)
{
- uint8_t *ptr; /* contains 16bit words in little endian */
- uint32_t x, c, i;
- uint32_t val, dk, br;
+ std::uint32_t i;
+ std::uint32_t val, dk, br;
auto cmat = color_order_to_cmat(color_order);
DBG(DBG_io, "%s: factor=%d, pixels_per_line=%d, words=0x%X, coeff=0x%04x\n", __func__, factor,
pixels_per_line, words_per_color, coeff);
- for (c = 0; c < channels; c++)
- {
+ for (unsigned c = 0; c < channels; c++) {
/* shading data is larger than pixels_per_line so offset can be neglected */
- for (x = 0; x < pixels_per_line; x+=factor)
- {
+ for (unsigned x = 0; x < pixels_per_line; x += factor) {
/* x2 because of 16 bit values, and x2 since one coeff for dark
* and another for white */
- ptr = shading_data + words_per_color * cmat[c] * 2 + (x + offset) * 4;
+ // contains 16bit words in little endian
+ std::uint8_t* ptr = shading_data + words_per_color * cmat[c] * 2 + (x + offset) * 4;
dk = 0;
br = 0;
@@ -3074,9 +3068,8 @@ static void compute_planar_coefficients(Genesys_Device * dev,
val = compute_coefficient (coeff, target, br - dk);
- /* we duplicate the information to have calibration data at optical resolution */
- for (i = 0; i < factor; i++)
- {
+ // we duplicate the information to have calibration data at optical resolution
+ for (unsigned i = 0; i < factor; i++) {
ptr[0 + 4 * i] = dk & 255;
ptr[1 + 4 * i] = dk / 256;
ptr[2 + 4 * i] = val & 0xff;
@@ -3097,10 +3090,9 @@ static void compute_planar_coefficients(Genesys_Device * dev,
}
}
-static void
-compute_shifted_coefficients (Genesys_Device * dev,
- const Genesys_Sensor& sensor,
- uint8_t * shading_data,
+static void compute_shifted_coefficients(Genesys_Device * dev,
+ const Genesys_Sensor& sensor,
+ std::uint8_t* shading_data,
unsigned int pixels_per_line,
unsigned int channels,
ColorOrder color_order,
@@ -3112,7 +3104,7 @@ compute_shifted_coefficients (Genesys_Device * dev,
{
unsigned int x, avgpixels, basepixels, i, j, val1, val2;
unsigned int br_tmp [3], dk_tmp [3];
- uint8_t *ptr = shading_data + offset * 3 * 4; /* contain 16bit words in little endian */
+ std::uint8_t* ptr = shading_data + offset * 3 * 4; // contain 16bit words in little endian
unsigned int patch_cnt = offset * 3; /* at start, offset of first patch */
auto cmat = color_order_to_cmat(color_order);
@@ -3198,7 +3190,7 @@ static void genesys_send_shading_coefficient(Genesys_Device* dev, const Genesys_
return;
}
- uint32_t pixels_per_line;
+ std::uint32_t pixels_per_line;
int o;
unsigned int length; /**> number of shading calibration data words */
unsigned int factor;
@@ -3255,8 +3247,8 @@ static void genesys_send_shading_coefficient(Genesys_Device* dev, const Genesys_
length = words_per_color * 3 * 2;
/* allocate computed size */
- // contains 16bit words in little endian
- std::vector<uint8_t> shading_data(length, 0);
+ // contains 16bit words in little endian
+ std::vector<std::uint8_t> shading_data(length, 0);
if (!dev->calib_session.computed) {
genesys_send_offset_and_shading(dev, sensor, shading_data.data(), length);
@@ -3584,7 +3576,7 @@ static void genesys_save_calibration(Genesys_Device* dev, const Genesys_Sensor&
static void genesys_flatbed_calibration(Genesys_Device* dev, Genesys_Sensor& sensor)
{
DBG_HELPER(dbg);
- uint32_t pixels_per_line;
+ std::uint32_t pixels_per_line;
unsigned coarse_res = sensor.full_resolution;
if (dev->settings.yres <= sensor.full_resolution / 2) {
@@ -3857,8 +3849,8 @@ static void genesys_warmup_lamp(Genesys_Device* dev)
auto channels = dev->session.params.channels;
auto lines = dev->session.output_line_count;
- std::vector<uint8_t> first_line(total_size);
- std::vector<uint8_t> second_line(total_size);
+ std::vector<std::uint8_t> first_line(total_size);
+ std::vector<std::uint8_t> second_line(total_size);
do {
first_line = second_line;
@@ -4892,28 +4884,76 @@ static void init_options(Genesys_Scanner* s)
s->opt[OPT_POWER_SW].cap = SANE_CAP_INACTIVE;
/* extra button */
- s->opt[OPT_EXTRA_SW].name = "extra";
- s->opt[OPT_EXTRA_SW].title = SANE_I18N("Extra button");
- s->opt[OPT_EXTRA_SW].desc = SANE_I18N("Extra button");
- s->opt[OPT_EXTRA_SW].type = SANE_TYPE_BOOL;
- s->opt[OPT_EXTRA_SW].unit = SANE_UNIT_NONE;
- if (model->buttons & GENESYS_HAS_EXTRA_SW) {
- s->opt[OPT_EXTRA_SW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- } else {
- s->opt[OPT_EXTRA_SW].cap = SANE_CAP_INACTIVE;
- }
-
- // transparency/scan_film button
- s->opt[OPT_TRANSP_SW].name = "transparency";
- s->opt[OPT_TRANSP_SW].title = SANE_I18N ("Transparency button");
- s->opt[OPT_TRANSP_SW].desc = SANE_I18N ("Transparency button");
- s->opt[OPT_TRANSP_SW].type = SANE_TYPE_BOOL;
- s->opt[OPT_TRANSP_SW].unit = SANE_UNIT_NONE;
- if (model->buttons & GENESYS_HAS_TRANSP_SW) {
- s->opt[OPT_TRANSP_SW].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
- } else {
- s->opt[OPT_TRANSP_SW].cap = SANE_CAP_INACTIVE;
- }
+ s->opt[OPT_EXTRA_SW].name = "extra";
+ s->opt[OPT_EXTRA_SW].title = SANE_I18N("Extra button");
+ s->opt[OPT_EXTRA_SW].desc = SANE_I18N("Extra button");
+ s->opt[OPT_EXTRA_SW].type = SANE_TYPE_BOOL;
+ s->opt[OPT_EXTRA_SW].unit = SANE_UNIT_NONE;
+ if (model->buttons & GENESYS_HAS_EXTRA_SW)
+ s->opt[OPT_EXTRA_SW].cap =
+ SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
+ else
+ s->opt[OPT_EXTRA_SW].cap = SANE_CAP_INACTIVE;
+
+ /* transparency/scan_film button */
+ s->opt[OPT_TRANSP_SW].name = "transparency";
+ s->opt[OPT_TRANSP_SW].title = SANE_I18N ("Transparency button");
+ s->opt[OPT_TRANSP_SW].desc = SANE_I18N ("Transparency button");
+ s->opt[OPT_TRANSP_SW].type = SANE_TYPE_BOOL;
+ s->opt[OPT_TRANSP_SW].unit = SANE_UNIT_NONE;
+ if (model->buttons & GENESYS_HAS_TRANSP_SW)
+ s->opt[OPT_TRANSP_SW].cap =
+ SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
+ else
+ s->opt[OPT_TRANSP_SW].cap = SANE_CAP_INACTIVE;
+
+ /* PDF special function button 1 */
+ s->opt[OPT_PDF1_SW].name = "pdf1";
+ s->opt[OPT_PDF1_SW].title = SANE_I18N ("PDF function button 1");
+ s->opt[OPT_PDF1_SW].desc = SANE_I18N ("PDF function button 1");
+ s->opt[OPT_PDF1_SW].type = SANE_TYPE_BOOL;
+ s->opt[OPT_PDF1_SW].unit = SANE_UNIT_NONE;
+ if (model->buttons & GENESYS_HAS_PDF1_SW)
+ s->opt[OPT_PDF1_SW].cap =
+ SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
+ else
+ s->opt[OPT_PDF1_SW].cap = SANE_CAP_INACTIVE;
+
+ /* PDF special function button 2 */
+ s->opt[OPT_PDF2_SW].name = "pdf2";
+ s->opt[OPT_PDF2_SW].title = SANE_I18N ("PDF function button 2");
+ s->opt[OPT_PDF2_SW].desc = SANE_I18N ("PDF function button 2");
+ s->opt[OPT_PDF2_SW].type = SANE_TYPE_BOOL;
+ s->opt[OPT_PDF2_SW].unit = SANE_UNIT_NONE;
+ if (model->buttons & GENESYS_HAS_PDF2_SW)
+ s->opt[OPT_PDF2_SW].cap =
+ SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
+ else
+ s->opt[OPT_PDF2_SW].cap = SANE_CAP_INACTIVE;
+
+ /* PDF special function button 3 */
+ s->opt[OPT_PDF3_SW].name = "pdf3";
+ s->opt[OPT_PDF3_SW].title = SANE_I18N ("PDF function button 3");
+ s->opt[OPT_PDF3_SW].desc = SANE_I18N ("PDF function button 3");
+ s->opt[OPT_PDF3_SW].type = SANE_TYPE_BOOL;
+ s->opt[OPT_PDF3_SW].unit = SANE_UNIT_NONE;
+ if (model->buttons & GENESYS_HAS_PDF3_SW)
+ s->opt[OPT_PDF3_SW].cap =
+ SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
+ else
+ s->opt[OPT_PDF3_SW].cap = SANE_CAP_INACTIVE;
+
+ /* PDF special function button 4 */
+ s->opt[OPT_PDF4_SW].name = "pdf4";
+ s->opt[OPT_PDF4_SW].title = SANE_I18N ("PDF function button 4");
+ s->opt[OPT_PDF4_SW].desc = SANE_I18N ("PDF function button 4");
+ s->opt[OPT_PDF4_SW].type = SANE_TYPE_BOOL;
+ s->opt[OPT_PDF4_SW].unit = SANE_UNIT_NONE;
+ if (model->buttons & GENESYS_HAS_PDF4_SW)
+ s->opt[OPT_PDF4_SW].cap =
+ SANE_CAP_SOFT_DETECT | SANE_CAP_HARD_SELECT | SANE_CAP_ADVANCED;
+ else
+ s->opt[OPT_PDF4_SW].cap = SANE_CAP_INACTIVE;
/* calibration needed */
s->opt[OPT_NEED_CALIBRATION_SW].name = "need-calibration";
@@ -5588,7 +5628,7 @@ static void get_option_value(Genesys_Scanner* s, int option, void* val)
auto* dev = s->dev;
unsigned int i;
SANE_Word* table = nullptr;
- std::vector<uint16_t> gamma_table;
+ std::vector<std::uint16_t> gamma_table;
unsigned option_size = 0;
const Genesys_Sensor* sensor = nullptr;
@@ -5734,6 +5774,10 @@ static void get_option_value(Genesys_Scanner* s, int option, void* val)
case OPT_POWER_SW:
case OPT_EXTRA_SW:
case OPT_TRANSP_SW:
+ case OPT_PDF1_SW:
+ case OPT_PDF2_SW:
+ case OPT_PDF3_SW:
+ case OPT_PDF4_SW:
s->dev->cmd_set->update_hardware_sensors(s);
*reinterpret_cast<SANE_Bool*>(val) = s->buttons[genesys_option_to_button(option)].read();
break;
@@ -6370,6 +6414,10 @@ GenesysButtonName genesys_option_to_button(int option)
case OPT_POWER_SW: return BUTTON_POWER_SW;
case OPT_EXTRA_SW: return BUTTON_EXTRA_SW;
case OPT_TRANSP_SW: return BUTTON_TRANSP_SW;
+ case OPT_PDF1_SW: return BUTTON_PDF1_SW;
+ case OPT_PDF2_SW: return BUTTON_PDF2_SW;
+ case OPT_PDF3_SW: return BUTTON_PDF3_SW;
+ case OPT_PDF4_SW: return BUTTON_PDF4_SW;
default: throw std::runtime_error("Unknown option to convert to button index");
}
}
diff --git a/backend/genesys/genesys.h b/backend/genesys/genesys.h
index 272beaa..65b66e7 100644
--- a/backend/genesys/genesys.h
+++ b/backend/genesys/genesys.h
@@ -104,6 +104,10 @@ enum Genesys_Option
OPT_POWER_SW,
OPT_EXTRA_SW,
OPT_TRANSP_SW,
+ OPT_PDF1_SW,
+ OPT_PDF2_SW,
+ OPT_PDF3_SW,
+ OPT_PDF4_SW,
OPT_NEED_CALIBRATION_SW,
OPT_BUTTON_GROUP,
OPT_CALIBRATE,
@@ -125,6 +129,10 @@ enum GenesysButtonName : unsigned {
BUTTON_POWER_SW,
BUTTON_EXTRA_SW,
BUTTON_TRANSP_SW,
+ BUTTON_PDF1_SW,
+ BUTTON_PDF2_SW,
+ BUTTON_PDF3_SW,
+ BUTTON_PDF4_SW,
NUM_BUTTONS
};
diff --git a/backend/genesys/gl124.cpp b/backend/genesys/gl124.cpp
index 1fa4d99..af193a3 100644
--- a/backend/genesys/gl124.cpp
+++ b/backend/genesys/gl124.cpp
@@ -355,7 +355,7 @@ gl124_init_registers (Genesys_Device * dev)
* @param dev device owning the AFE
* @param set flag AFE_INIT to specify the AFE must be reset before writing data
* */
-static void gl124_set_ti_fe(Genesys_Device* dev, uint8_t set)
+static void gl124_set_ti_fe(Genesys_Device* dev, std::uint8_t set)
{
DBG_HELPER(dbg);
int i;
@@ -367,9 +367,8 @@ static void gl124_set_ti_fe(Genesys_Device* dev, uint8_t set)
// start writing to DAC
dev->interface->write_fe_register(0x00, 0x80);
- /* write values to analog frontend */
- for (uint16_t addr = 0x01; addr < 0x04; addr++)
- {
+ // write values to analog frontend
+ for (std::uint16_t addr = 0x01; addr < 0x04; addr++) {
dev->interface->write_fe_register(addr, dev->frontend.regs.get_value(addr));
}
@@ -392,13 +391,14 @@ static void gl124_set_ti_fe(Genesys_Device* dev, uint8_t set)
// Set values of analog frontend
-void CommandSetGl124::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const
+void CommandSetGl124::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ std::uint8_t set) const
{
DBG_HELPER_ARGS(dbg, "%s", set == AFE_INIT ? "init" :
set == AFE_SET ? "set" :
set == AFE_POWER_SAVE ? "powersave" : "huh?");
(void) sensor;
- uint8_t val;
+ std::uint8_t val;
if (set == AFE_INIT) {
dev->frontend = dev->frontend_initial;
@@ -434,7 +434,7 @@ static void gl124_init_motor_regs_scan(Genesys_Device* dev,
DBG_HELPER(dbg);
unsigned int lincnt, fast_dpi;
unsigned int feedl,dist;
- uint32_t z1, z2;
+ std::uint32_t z1, z2;
unsigned yres;
unsigned min_speed;
unsigned int linesel;
@@ -489,7 +489,7 @@ static void gl124_init_motor_regs_scan(Genesys_Device* dev,
reg->set24(REG_LINCNT, lincnt);
/* compute register 02 value */
- uint8_t r02 = REG_0x02_NOTHOME;
+ std::uint8_t r02 = REG_0x02_NOTHOME;
if (has_flag(flags, ScanFlag::AUTO_GO_HOME)) {
r02 |= REG_0x02_AGOHOME;
@@ -578,7 +578,6 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
const ScanSession& session)
{
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
- uint32_t expmax;
scanner_setup_sensor(*dev, sensor, *reg);
@@ -659,7 +658,7 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
reg->find_reg(REG_0x60).value &= ~REG_0x60_LEDADD;
if (session.enable_ledadd) {
reg->find_reg(REG_0x60).value |= REG_0x60_LEDADD;
- expmax = reg->get24(REG_EXPR);
+ std::uint32_t expmax = reg->get24(REG_EXPR);
expmax = std::max(expmax, reg->get24(REG_EXPG));
expmax = std::max(expmax, reg->get24(REG_EXPB));
@@ -745,7 +744,7 @@ void CommandSetGl124::init_regs_for_scan_session(Genesys_Device* dev, const Gene
dev->session = session;
dev->total_bytes_read = 0;
- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
DBG(DBG_info, "%s: total bytes to send to frontend = %zu\n", __func__,
dev->total_bytes_to_read);
@@ -826,7 +825,7 @@ void gl124_setup_scan_gpio(Genesys_Device* dev, int resolution)
{
DBG_HELPER(dbg);
- uint8_t val = dev->interface->read_register(REG_0x32);
+ std::uint8_t val = dev->interface->read_register(REG_0x32);
/* LiDE 110, 210 and 220 cases */
if(dev->model->gpio_id != GpioId::CANON_LIDE_120) {
@@ -883,7 +882,7 @@ void CommandSetGl124::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
scanner_clear_scan_and_feed_counts(*dev);
// enable scan and motor
- uint8_t val = dev->interface->read_register(REG_0x01);
+ std::uint8_t val = dev->interface->read_register(REG_0x01);
val |= REG_0x01_SCAN;
dev->interface->write_register(REG_0x01, val);
@@ -974,7 +973,7 @@ void CommandSetGl124::wait_for_motor_stop(Genesys_Device* dev) const
DBG_HELPER(dbg);
auto status = scanner_read_status(*dev);
- uint8_t val40 = dev->interface->read_register(REG_0x100);
+ std::uint8_t val40 = dev->interface->read_register(REG_0x100);
if (!status.is_motor_enabled && (val40 & REG_0x100_MOTMFLG) == 0) {
return;
@@ -997,7 +996,7 @@ void CommandSetGl124::send_shading_data(Genesys_Device* dev, const Genesys_Senso
{
DBG_HELPER_ARGS(dbg, "writing %d bytes of shading data", size);
std::uint32_t addr, length, segcnt, pixels, i;
- uint8_t *ptr, *src;
+ std::uint8_t *ptr, *src;
/* logical size of a color as seen by generic code of the frontend */
length = size / 3;
@@ -1020,7 +1019,7 @@ void CommandSetGl124::send_shading_data(Genesys_Device* dev, const Genesys_Senso
std::to_string(dev->session.segment_count));
DBG( DBG_io2, "%s: using chunks of %d bytes (%d shading data pixels)\n",__func__,length, length/4);
- std::vector<uint8_t> buffer(pixels * dev->session.segment_count, 0);
+ std::vector<std::uint8_t> buffer(pixels * dev->session.segment_count, 0);
/* write actual red data */
for(i=0;i<3;i++)
@@ -1047,7 +1046,7 @@ void CommandSetGl124::send_shading_data(Genesys_Device* dev, const Genesys_Senso
/* next shading coefficient */
ptr+=4;
}
- uint8_t val = dev->interface->read_register(0xd0+i);
+ std::uint8_t val = dev->interface->read_register(0xd0+i);
addr = val * 8192 + 0x10000000;
dev->interface->write_ahb(addr, pixels * dev->session.segment_count, buffer.data());
}
@@ -1254,7 +1253,7 @@ void CommandSetGl124::asic_boot(Genesys_Device* dev, bool cold) const
dev->interface->write_register(0x36, 0x01);
// set GPIO 17
- uint8_t val = dev->interface->read_register(0x33);
+ std::uint8_t val = dev->interface->read_register(0x33);
val |= 0x01;
dev->interface->write_register(0x33, val);
@@ -1297,7 +1296,7 @@ void CommandSetGl124::update_hardware_sensors(Genesys_Scanner* s) const
any of them.
*/
DBG_HELPER(dbg);
- uint8_t val = s->dev->interface->read_register(REG_0x31);
+ std::uint8_t val = s->dev->interface->read_register(REG_0x31);
/* TODO : for the next scanner special case,
* add another per scanner button profile struct to avoid growing
diff --git a/backend/genesys/gl124.h b/backend/genesys/gl124.h
index 02b733b..2b98b1b 100644
--- a/backend/genesys/gl124.h
+++ b/backend/genesys/gl124.h
@@ -46,7 +46,7 @@ public:
Genesys_Register_Set* reg,
const ScanSession& session) const override;
- void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override;
+ void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set) const override;
void set_powersaving(Genesys_Device* dev, int delay) const override;
void save_power(Genesys_Device* dev, bool enable) const override;
@@ -80,7 +80,7 @@ public:
void eject_document(Genesys_Device* dev) const override;
- void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t* data,
+ void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t* data,
int size) const override;
ScanSession calculate_scan_session(const Genesys_Device* dev,
diff --git a/backend/genesys/gl646.cpp b/backend/genesys/gl646.cpp
index bdde703..ac6c617 100644
--- a/backend/genesys/gl646.cpp
+++ b/backend/genesys/gl646.cpp
@@ -43,11 +43,12 @@ constexpr unsigned CALIBRATION_LINES = 10;
static void write_control(Genesys_Device* dev, const Genesys_Sensor& sensor, int resolution);
-static void gl646_set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set, int dpi);
+static void gl646_set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set,
+ int dpi);
static void simple_scan(Genesys_Device* dev, const Genesys_Sensor& sensor,
const ScanSession& session, bool move,
- std::vector<uint8_t>& data, const char* test_identifier);
+ std::vector<std::uint8_t>& data, const char* test_identifier);
/**
* Send the stop scan command
* */
@@ -374,7 +375,7 @@ static Motor_Master motor_master[] = {
/**
* reads value from gpio endpoint
*/
-static void gl646_gpio_read(IUsbDevice& usb_dev, uint8_t* value)
+static void gl646_gpio_read(IUsbDevice& usb_dev, std::uint8_t* value)
{
DBG_HELPER(dbg);
usb_dev.control_msg(REQUEST_TYPE_IN, REQUEST_REGISTER, GPIO_READ, INDEX, 1, value);
@@ -383,7 +384,7 @@ static void gl646_gpio_read(IUsbDevice& usb_dev, uint8_t* value)
/**
* writes the given value to gpio endpoint
*/
-static void gl646_gpio_write(IUsbDevice& usb_dev, uint8_t value)
+static void gl646_gpio_write(IUsbDevice& usb_dev, std::uint8_t value)
{
DBG_HELPER_ARGS(dbg, "(0x%02x)", value);
usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, GPIO_WRITE, INDEX, 1, &value);
@@ -392,7 +393,7 @@ static void gl646_gpio_write(IUsbDevice& usb_dev, uint8_t value)
/**
* writes the given value to gpio output enable endpoint
*/
-static void gl646_gpio_output_enable(IUsbDevice& usb_dev, uint8_t value)
+static void gl646_gpio_output_enable(IUsbDevice& usb_dev, std::uint8_t value)
{
DBG_HELPER_ARGS(dbg, "(0x%02x)", value);
usb_dev.control_msg(REQUEST_TYPE_OUT, REQUEST_REGISTER, GPIO_OUTPUT_ENABLE, INDEX, 1, &value);
@@ -440,10 +441,10 @@ void CommandSetGl646::init_regs_for_scan_session(Genesys_Device* dev, const Gene
debug_dump(DBG_info, sensor);
- uint32_t move = session.params.starty;
+ std::uint32_t move = session.params.starty;
Motor_Master *motor = nullptr;
- uint32_t z1, z2;
+ std::uint32_t z1, z2;
int feedl;
@@ -817,7 +818,8 @@ void CommandSetGl646::init_regs_for_scan_session(Genesys_Device* dev, const Gene
dev->session = session;
dev->total_bytes_read = 0;
- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
+ dev->total_bytes_to_read = (size_t) session.output_line_bytes_requested
+ * (size_t) session.params.lines;
/* select color filter based on settings */
regs->find_reg(0x04).value &= ~REG_0x04_FILTER;
@@ -1023,7 +1025,7 @@ gl646_init_regs (Genesys_Device * dev)
}
// Set values of Analog Device type frontend
-static void gl646_set_ad_fe(Genesys_Device* dev, uint8_t set)
+static void gl646_set_ad_fe(Genesys_Device* dev, std::uint8_t set)
{
DBG_HELPER(dbg);
int i;
@@ -1058,7 +1060,7 @@ static void gl646_set_ad_fe(Genesys_Device* dev, uint8_t set)
* @param set action from AFE_SET, AFE_INIT and AFE_POWERSAVE
* @param dpi resolution of the scan since it affects settings
*/
-static void gl646_wm_hp3670(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set,
+static void gl646_wm_hp3670(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set,
unsigned dpi)
{
DBG_HELPER(dbg);
@@ -1108,16 +1110,17 @@ static void gl646_wm_hp3670(Genesys_Device* dev, const Genesys_Sensor& sensor, u
* @param set action to execute
* @param dpi dpi to setup the AFE
*/
-static void gl646_set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set, int dpi)
+static void gl646_set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set,
+ int dpi)
{
DBG_HELPER_ARGS(dbg, "%s,%d", set == AFE_INIT ? "init" :
set == AFE_SET ? "set" :
set == AFE_POWER_SAVE ? "powersave" : "huh?", dpi);
int i;
- uint8_t val;
+ std::uint8_t val;
/* Analog Device type frontend */
- uint8_t frontend_type = dev->reg.find_reg(0x04).value & REG_0x04_FESET;
+ std::uint8_t frontend_type = dev->reg.find_reg(0x04).value & REG_0x04_FESET;
if (frontend_type == 0x02) {
gl646_set_ad_fe(dev, set);
return;
@@ -1203,7 +1206,8 @@ static void gl646_set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint
* @param dev device to set
* @param set action to execute
*/
-void CommandSetGl646::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const
+void CommandSetGl646::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ std::uint8_t set) const
{
gl646_set_fe(dev, sensor, set, dev->settings.yres);
}
@@ -1854,10 +1858,7 @@ void CommandSetGl646::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor
bits = 12;
}
- /* allocate temporary gamma tables: 16 bits words, 3 channels */
- std::vector<uint8_t> gamma(size * 2 * 3);
-
- sanei_genesys_generate_gamma_buffer(dev, sensor, bits, size-1, size, gamma.data());
+ auto gamma = generate_gamma_buffer(dev, sensor, bits, size-1, size);
/* table address */
switch (dev->reg.find_reg(0x05).value >> 6)
@@ -1892,7 +1893,7 @@ SensorExposure CommandSetGl646::led_calibration(Genesys_Device* dev, const Genes
int val;
int avg[3], avga, avge;
int turn;
- uint16_t expr, expg, expb;
+ std::uint16_t expr, expg, expb;
unsigned channels = dev->settings.get_channels();
@@ -1927,7 +1928,7 @@ SensorExposure CommandSetGl646::led_calibration(Genesys_Device* dev, const Genes
// colors * bytes_per_color * scan lines
unsigned total_size = pixels * channels * 2 * 1;
- std::vector<uint8_t> line(total_size);
+ std::vector<std::uint8_t> line(total_size);
/*
we try to get equal bright leds here:
@@ -2022,13 +2023,12 @@ SensorExposure CommandSetGl646::led_calibration(Genesys_Device* dev, const Genes
/**
* average dark pixels of a scan
*/
-static int
-dark_average (uint8_t * data, unsigned int pixels, unsigned int lines,
- unsigned int channels, unsigned int black)
+static int dark_average(std::uint8_t * data, unsigned int pixels, unsigned int lines,
+ unsigned int channels, unsigned int black)
{
unsigned int i, j, k, average, count;
unsigned int avg[3];
- uint8_t val;
+ std::uint8_t val;
/* computes average value on black margin */
for (k = 0; k < channels; k++)
@@ -2110,7 +2110,7 @@ static void ad_fe_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
dev->frontend.set_gain(1, 0);
dev->frontend.set_gain(2, 0);
- std::vector<uint8_t> line;
+ std::vector<std::uint8_t> line;
/* scan with no move */
bottom = 1;
@@ -2231,7 +2231,7 @@ void CommandSetGl646::offset_calibration(Genesys_Device* dev, const Genesys_Sens
dev->frontend.set_offset(1, bottom);
dev->frontend.set_offset(2, bottom);
- std::vector<uint8_t> first_line, second_line;
+ std::vector<std::uint8_t> first_line, second_line;
dev->cmd_set->init_regs_for_scan_session(dev, sensor, &dev->reg, session);
simple_scan(dev, calib_sensor, session, false, first_line, "offset_first_line");
@@ -2383,7 +2383,7 @@ void CommandSetGl646::coarse_gain_calibration(Genesys_Device* dev, const Genesys
unsigned pass = 0;
- std::vector<uint8_t> line;
+ std::vector<std::uint8_t> line;
/* loop until each channel raises to acceptable level */
while (((average[0] < calib_sensor.gain_white_ref) ||
@@ -2512,8 +2512,8 @@ void CommandSetGl646::init(Genesys_Device* dev) const
DBG_INIT();
DBG_HELPER(dbg);
- uint8_t val = 0;
- uint32_t addr = 0xdead;
+ std::uint8_t val = 0;
+ std::uint32_t addr = 0xdead;
size_t len;
// to detect real power up condition, we write to REG_0x41 with pwrbit set, then read it back.
@@ -2643,7 +2643,7 @@ void CommandSetGl646::init(Genesys_Device* dev) const
static void simple_scan(Genesys_Device* dev, const Genesys_Sensor& sensor,
const ScanSession& session, bool move,
- std::vector<uint8_t>& data, const char* scan_identifier)
+ std::vector<std::uint8_t>& data, const char* scan_identifier)
{
unsigned lines = session.output_line_count;
if (!dev->model->is_cis) {
@@ -2695,7 +2695,7 @@ static void simple_scan(Genesys_Device* dev, const Genesys_Sensor& sensor,
if (dev->model->is_cis && session.params.scan_mode == ScanColorMode::COLOR_SINGLE_PASS) {
auto pixels_count = session.params.pixels;
- std::vector<uint8_t> buffer(pixels_count * 3 * bpp);
+ std::vector<std::uint8_t> buffer(pixels_count * 3 * bpp);
if (bpp == 1) {
for (unsigned y = 0; y < lines; y++) {
@@ -2738,7 +2738,7 @@ void CommandSetGl646::update_hardware_sensors(Genesys_Scanner* session) const
{
DBG_HELPER(dbg);
Genesys_Device *dev = session->dev;
- uint8_t value;
+ std::uint8_t value;
// do what is needed to get a new set of events, but try to not loose any of them.
gl646_gpio_read(dev->interface->get_usb_device(), &value);
@@ -2858,8 +2858,8 @@ void CommandSetGl646::update_home_sensor_gpio(Genesys_Device& dev) const
static void write_control(Genesys_Device* dev, const Genesys_Sensor& sensor, int resolution)
{
DBG_HELPER(dbg);
- uint8_t control[4];
- uint32_t addr = 0xdead;
+ std::uint8_t control[4];
+ std::uint32_t addr = 0xdead;
/* 2300 does not write to 'control' */
if (dev->model->motor_id == MotorId::HP2300) {
diff --git a/backend/genesys/gl646.h b/backend/genesys/gl646.h
index 04e5fb2..5bbcfb2 100644
--- a/backend/genesys/gl646.h
+++ b/backend/genesys/gl646.h
@@ -50,7 +50,7 @@ public:
Genesys_Register_Set* reg,
const ScanSession& session) const override;
- void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override;
+ void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set) const override;
void set_powersaving(Genesys_Device* dev, int delay) const override;
void save_power(Genesys_Device* dev, bool enable) const override;
@@ -84,7 +84,7 @@ public:
void eject_document(Genesys_Device* dev) const override;
- void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t* data,
+ void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t* data,
int size) const override;
bool has_send_shading_data() const override
diff --git a/backend/genesys/gl841.cpp b/backend/genesys/gl841.cpp
index 27a6a36..3b068d1 100644
--- a/backend/genesys/gl841.cpp
+++ b/backend/genesys/gl841.cpp
@@ -288,7 +288,7 @@ gl841_init_registers (Genesys_Device * dev)
}
}
-static void gl841_set_lide80_fe(Genesys_Device* dev, uint8_t set)
+static void gl841_set_lide80_fe(Genesys_Device* dev, std::uint8_t set)
{
DBG_HELPER(dbg);
@@ -311,7 +311,7 @@ static void gl841_set_lide80_fe(Genesys_Device* dev, uint8_t set)
}
// Set values of Analog Device type frontend
-static void gl841_set_ad_fe(Genesys_Device* dev, uint8_t set)
+static void gl841_set_ad_fe(Genesys_Device* dev, std::uint8_t set)
{
DBG_HELPER(dbg);
int i;
@@ -361,7 +361,8 @@ static void gl841_set_ad_fe(Genesys_Device* dev, uint8_t set)
}
// Set values of analog frontend
-void CommandSetGl841::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const
+void CommandSetGl841::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ std::uint8_t set) const
{
DBG_HELPER_ARGS(dbg, "%s", set == AFE_INIT ? "init" :
set == AFE_SET ? "set" :
@@ -369,7 +370,7 @@ void CommandSetGl841::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
(void) sensor;
/* Analog Device type frontend */
- uint8_t frontend_type = dev->reg.find_reg(0x04).value & REG_0x04_FESET;
+ std::uint8_t frontend_type = dev->reg.find_reg(0x04).value & REG_0x04_FESET;
if (frontend_type == 0x02) {
gl841_set_ad_fe(dev, set);
@@ -453,12 +454,68 @@ static void gl841_write_freq(Genesys_Device* dev, unsigned int ydpi)
{
DBG_HELPER(dbg);
/**< fast table */
-uint8_t tdefault[] = {0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0x36,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xb6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0xf6,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76,0x18,0x76};
-uint8_t t1200[] = {0xc7,0x31,0xc7,0x31,0xc7,0x31,0xc7,0x31,0xc7,0x31,0xc7,0x31,0xc7,0x31,0xc7,0x31,0xc0,0x11,0xc0,0x11,0xc0,0x11,0xc0,0x11,0xc0,0x11,0xc0,0x11,0xc0,0x11,0xc0,0x11,0xc7,0xb1,0xc7,0xb1,0xc7,0xb1,0xc7,0xb1,0xc7,0xb1,0xc7,0xb1,0xc7,0xb1,0xc7,0xb1,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0x07,0xe0,0xc7,0xf1,0xc7,0xf1,0xc7,0xf1,0xc7,0xf1,0xc7,0xf1,0xc7,0xf1,0xc7,0xf1,0xc7,0xf1,0xc0,0x51,0xc0,0x51,0xc0,0x51,0xc0,0x51,0xc0,0x51,0xc0,0x51,0xc0,0x51,0xc0,0x51,0xc7,0x71,0xc7,0x71,0xc7,0x71,0xc7,0x71,0xc7,0x71,0xc7,0x71,0xc7,0x71,0xc7,0x71,0x07,0x20,0x07,0x20,0x07,0x20,0x07,0x20,0x07,0x20,0x07,0x20,0x07,0x20,0x07,0x20};
-uint8_t t300[] = {0x08,0x32,0x08,0x32,0x08,0x32,0x08,0x32,0x08,0x32,0x08,0x32,0x08,0x32,0x08,0x32,0x00,0x13,0x00,0x13,0x00,0x13,0x00,0x13,0x00,0x13,0x00,0x13,0x00,0x13,0x00,0x13,0x08,0xb2,0x08,0xb2,0x08,0xb2,0x08,0xb2,0x08,0xb2,0x08,0xb2,0x08,0xb2,0x08,0xb2,0x0c,0xa0,0x0c,0xa0,0x0c,0xa0,0x0c,0xa0,0x0c,0xa0,0x0c,0xa0,0x0c,0xa0,0x0c,0xa0,0x08,0xf2,0x08,0xf2,0x08,0xf2,0x08,0xf2,0x08,0xf2,0x08,0xf2,0x08,0xf2,0x08,0xf2,0x00,0xd3,0x00,0xd3,0x00,0xd3,0x00,0xd3,0x00,0xd3,0x00,0xd3,0x00,0xd3,0x00,0xd3,0x08,0x72,0x08,0x72,0x08,0x72,0x08,0x72,0x08,0x72,0x08,0x72,0x08,0x72,0x08,0x72,0x0c,0x60,0x0c,0x60,0x0c,0x60,0x0c,0x60,0x0c,0x60,0x0c,0x60,0x0c,0x60,0x0c,0x60};
-uint8_t t150[] = {0x0c,0x33,0xcf,0x33,0xcf,0x33,0xcf,0x33,0xcf,0x33,0xcf,0x33,0xcf,0x33,0xcf,0x33,0x40,0x14,0x80,0x15,0x80,0x15,0x80,0x15,0x80,0x15,0x80,0x15,0x80,0x15,0x80,0x15,0x0c,0xb3,0xcf,0xb3,0xcf,0xb3,0xcf,0xb3,0xcf,0xb3,0xcf,0xb3,0xcf,0xb3,0xcf,0xb3,0x11,0xa0,0x16,0xa0,0x16,0xa0,0x16,0xa0,0x16,0xa0,0x16,0xa0,0x16,0xa0,0x16,0xa0,0x0c,0xf3,0xcf,0xf3,0xcf,0xf3,0xcf,0xf3,0xcf,0xf3,0xcf,0xf3,0xcf,0xf3,0xcf,0xf3,0x40,0xd4,0x80,0xd5,0x80,0xd5,0x80,0xd5,0x80,0xd5,0x80,0xd5,0x80,0xd5,0x80,0xd5,0x0c,0x73,0xcf,0x73,0xcf,0x73,0xcf,0x73,0xcf,0x73,0xcf,0x73,0xcf,0x73,0xcf,0x73,0x11,0x60,0x16,0x60,0x16,0x60,0x16,0x60,0x16,0x60,0x16,0x60,0x16,0x60,0x16,0x60};
-
-uint8_t *table;
+ std::uint8_t tdefault[] = {
+ 0x18, 0x36, 0x18, 0x36, 0x18, 0x36, 0x18, 0x36, 0x18, 0x36,
+ 0x18, 0x36, 0x18, 0x36, 0x18, 0x36, 0x18, 0x36, 0x18, 0x36,
+ 0x18, 0x36, 0x18, 0x36, 0x18, 0x36, 0x18, 0x36, 0x18, 0x36,
+ 0x18, 0x36, 0x18, 0xb6, 0x18, 0xb6, 0x18, 0xb6, 0x18, 0xb6,
+ 0x18, 0xb6, 0x18, 0xb6, 0x18, 0xb6, 0x18, 0xb6, 0x18, 0xb6,
+ 0x18, 0xb6, 0x18, 0xb6, 0x18, 0xb6, 0x18, 0xb6, 0x18, 0xb6,
+ 0x18, 0xb6, 0x18, 0xb6, 0x18, 0xf6, 0x18, 0xf6, 0x18, 0xf6,
+ 0x18, 0xf6, 0x18, 0xf6, 0x18, 0xf6, 0x18, 0xf6, 0x18, 0xf6,
+ 0x18, 0xf6, 0x18, 0xf6, 0x18, 0xf6, 0x18, 0xf6, 0x18, 0xf6,
+ 0x18, 0xf6, 0x18, 0xf6, 0x18, 0xf6, 0x18, 0x76, 0x18, 0x76,
+ 0x18, 0x76, 0x18, 0x76, 0x18, 0x76, 0x18, 0x76, 0x18, 0x76,
+ 0x18, 0x76, 0x18, 0x76, 0x18, 0x76, 0x18, 0x76, 0x18, 0x76,
+ 0x18, 0x76, 0x18, 0x76, 0x18, 0x76, 0x18, 0x76
+ };
+ std::uint8_t t1200[] = {
+ 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31,
+ 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc0, 0x11, 0xc0, 0x11,
+ 0xc0, 0x11, 0xc0, 0x11, 0xc0, 0x11, 0xc0, 0x11, 0xc0, 0x11,
+ 0xc0, 0x11, 0xc7, 0xb1, 0xc7, 0xb1, 0xc7, 0xb1, 0xc7, 0xb1,
+ 0xc7, 0xb1, 0xc7, 0xb1, 0xc7, 0xb1, 0xc7, 0xb1, 0x07, 0xe0,
+ 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0, 0x07, 0xe0,
+ 0x07, 0xe0, 0x07, 0xe0, 0xc7, 0xf1, 0xc7, 0xf1, 0xc7, 0xf1,
+ 0xc7, 0xf1, 0xc7, 0xf1, 0xc7, 0xf1, 0xc7, 0xf1, 0xc7, 0xf1,
+ 0xc0, 0x51, 0xc0, 0x51, 0xc0, 0x51, 0xc0, 0x51, 0xc0, 0x51,
+ 0xc0, 0x51, 0xc0, 0x51, 0xc0, 0x51, 0xc7, 0x71, 0xc7, 0x71,
+ 0xc7, 0x71, 0xc7, 0x71, 0xc7, 0x71, 0xc7, 0x71, 0xc7, 0x71,
+ 0xc7, 0x71, 0x07, 0x20, 0x07, 0x20, 0x07, 0x20, 0x07, 0x20,
+ 0x07, 0x20, 0x07, 0x20, 0x07, 0x20, 0x07, 0x20
+ };
+ std::uint8_t t300[] = {
+ 0x08, 0x32, 0x08, 0x32, 0x08, 0x32, 0x08, 0x32, 0x08, 0x32,
+ 0x08, 0x32, 0x08, 0x32, 0x08, 0x32, 0x00, 0x13, 0x00, 0x13,
+ 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13,
+ 0x00, 0x13, 0x08, 0xb2, 0x08, 0xb2, 0x08, 0xb2, 0x08, 0xb2,
+ 0x08, 0xb2, 0x08, 0xb2, 0x08, 0xb2, 0x08, 0xb2, 0x0c, 0xa0,
+ 0x0c, 0xa0, 0x0c, 0xa0, 0x0c, 0xa0, 0x0c, 0xa0, 0x0c, 0xa0,
+ 0x0c, 0xa0, 0x0c, 0xa0, 0x08, 0xf2, 0x08, 0xf2, 0x08, 0xf2,
+ 0x08, 0xf2, 0x08, 0xf2, 0x08, 0xf2, 0x08, 0xf2, 0x08, 0xf2,
+ 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xd3,
+ 0x00, 0xd3, 0x00, 0xd3, 0x00, 0xd3, 0x08, 0x72, 0x08, 0x72,
+ 0x08, 0x72, 0x08, 0x72, 0x08, 0x72, 0x08, 0x72, 0x08, 0x72,
+ 0x08, 0x72, 0x0c, 0x60, 0x0c, 0x60, 0x0c, 0x60, 0x0c, 0x60,
+ 0x0c, 0x60, 0x0c, 0x60, 0x0c, 0x60, 0x0c, 0x60
+ };
+ std::uint8_t t150[] = {
+ 0x0c, 0x33, 0xcf, 0x33, 0xcf, 0x33, 0xcf, 0x33, 0xcf, 0x33,
+ 0xcf, 0x33, 0xcf, 0x33, 0xcf, 0x33, 0x40, 0x14, 0x80, 0x15,
+ 0x80, 0x15, 0x80, 0x15, 0x80, 0x15, 0x80, 0x15, 0x80, 0x15,
+ 0x80, 0x15, 0x0c, 0xb3, 0xcf, 0xb3, 0xcf, 0xb3, 0xcf, 0xb3,
+ 0xcf, 0xb3, 0xcf, 0xb3, 0xcf, 0xb3, 0xcf, 0xb3, 0x11, 0xa0,
+ 0x16, 0xa0, 0x16, 0xa0, 0x16, 0xa0, 0x16, 0xa0, 0x16, 0xa0,
+ 0x16, 0xa0, 0x16, 0xa0, 0x0c, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3,
+ 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3, 0xcf, 0xf3,
+ 0x40, 0xd4, 0x80, 0xd5, 0x80, 0xd5, 0x80, 0xd5, 0x80, 0xd5,
+ 0x80, 0xd5, 0x80, 0xd5, 0x80, 0xd5, 0x0c, 0x73, 0xcf, 0x73,
+ 0xcf, 0x73, 0xcf, 0x73, 0xcf, 0x73, 0xcf, 0x73, 0xcf, 0x73,
+ 0xcf, 0x73, 0x11, 0x60, 0x16, 0x60, 0x16, 0x60, 0x16, 0x60,
+ 0x16, 0x60, 0x16, 0x60, 0x16, 0x60, 0x16, 0x60
+ };
+
+ std::uint8_t *table;
if(dev->model->motor_id == MotorId::CANON_LIDE_80) {
switch(ydpi)
@@ -495,7 +552,7 @@ static void gl841_init_motor_regs_feed(Genesys_Device* dev, const Genesys_Sensor
/*number of scan lines to add in a scan_lines line*/
{
- std::vector<uint16_t> table;
+ std::vector<std::uint16_t> table;
table.resize(256, 0xffff);
scanner_send_slope_table(dev, sensor, 0, table);
@@ -711,6 +768,7 @@ static void gl841_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens
const ScanSession& session)
{
DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time);
+
dev->cmd_set->set_fe(dev, sensor, AFE_SET);
/* gpio part.*/
@@ -920,7 +978,7 @@ dummy \ scanned lines
dev->session = session;
dev->total_bytes_read = 0;
- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
if (session.use_host_side_gray) {
dev->total_bytes_to_read /= 3;
}
@@ -998,7 +1056,7 @@ void CommandSetGl841::save_power(Genesys_Device* dev, bool enable) const
/* final state: GPIO8 disabled, GPIO9 enabled, GPIO17 disabled,
GPIO18 disabled*/
- uint8_t val = dev->interface->read_register(REG_0x6D);
+ std::uint8_t val = dev->interface->read_register(REG_0x6D);
dev->interface->write_register(REG_0x6D, val | 0x80);
dev->interface->sleep_ms(1);
@@ -1023,7 +1081,7 @@ void CommandSetGl841::save_power(Genesys_Device* dev, bool enable) const
}
if (dev->model->gpio_id == GpioId::DP685)
{
- uint8_t val = dev->interface->read_register(REG_0x6B);
+ std::uint8_t val = dev->interface->read_register(REG_0x6B);
dev->interface->write_register(REG_0x6B, val & ~REG_0x6B_GPO17);
dev->reg.find_reg(0x6b).value &= ~REG_0x6B_GPO17;
dev->initial_regs.find_reg(0x6b).value &= ~REG_0x6B_GPO17;
@@ -1041,7 +1099,7 @@ void CommandSetGl841::save_power(Genesys_Device* dev, bool enable) const
/* final state: GPIO8 enabled, GPIO9 disabled, GPIO17 enabled,
GPIO18 enabled*/
- uint8_t val = dev->interface->read_register(REG_0x6D);
+ std::uint8_t val = dev->interface->read_register(REG_0x6D);
dev->interface->write_register(REG_0x6D, val | 0x80);
dev->interface->sleep_ms(10);
@@ -1070,7 +1128,7 @@ void CommandSetGl841::save_power(Genesys_Device* dev, bool enable) const
if (dev->model->gpio_id == GpioId::DP665
|| dev->model->gpio_id == GpioId::DP685)
{
- uint8_t val = dev->interface->read_register(REG_0x6B);
+ std::uint8_t val = dev->interface->read_register(REG_0x6B);
dev->interface->write_register(REG_0x6B, val | REG_0x6B_GPO17);
dev->reg.find_reg(0x6b).value |= REG_0x6B_GPO17;
dev->initial_regs.find_reg(0x6b).value |= REG_0x6B_GPO17;
@@ -1147,7 +1205,7 @@ static bool gl841_get_paper_sensor(Genesys_Device* dev)
{
DBG_HELPER(dbg);
- uint8_t val = dev->interface->read_register(REG_0x6D);
+ std::uint8_t val = dev->interface->read_register(REG_0x6D);
return (val & 0x1) == 0;
}
@@ -1365,7 +1423,7 @@ void CommandSetGl841::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
(void) sensor;
// FIXME: SEQUENTIAL not really needed in this case
Genesys_Register_Set local_reg(Genesys_Register_Set::SEQUENTIAL);
- uint8_t val;
+ std::uint8_t val;
if (dev->model->gpio_id == GpioId::CANON_LIDE_80) {
val = dev->interface->read_register(REG_0x6B);
@@ -1476,10 +1534,7 @@ void CommandSetGl841::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor
size = 256;
- /* allocate temporary gamma tables: 16 bits words, 3 channels */
- std::vector<uint8_t> gamma(size * 2 * 3);
-
- sanei_genesys_generate_gamma_buffer(dev, sensor, 16, 65535, size, gamma.data());
+ auto gamma = generate_gamma_buffer(dev, sensor, 16, 65535, size);
dev->interface->write_gamma(0x28, 0x0000, gamma.data(), size * 2 * 3);
}
@@ -1549,7 +1604,7 @@ static void ad_fe_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
// FIXME: we're reading twice as much data for no reason
std::size_t total_size = session.output_line_bytes * 2;
- std::vector<uint8_t> line(total_size);
+ std::vector<std::uint8_t> line(total_size);
dev->frontend.set_gain(0, 0);
dev->frontend.set_gain(1, 0);
@@ -2029,10 +2084,9 @@ void CommandSetGl841::init(Genesys_Device* dev) const
void CommandSetGl841::update_hardware_sensors(Genesys_Scanner* s) const
{
DBG_HELPER(dbg);
- /* do what is needed to get a new set of events, but try to not lose
- any of them.
- */
- uint8_t val;
+
+ // do what is needed to get a new set of events, but try to not lose any of them.
+ std::uint8_t val;
if (s->dev->model->gpio_id == GpioId::CANON_LIDE_35
|| s->dev->model->gpio_id == GpioId::CANON_LIDE_80)
@@ -2060,11 +2114,10 @@ void CommandSetGl841::update_hardware_sensors(Genesys_Scanner* s) const
* for all the channels.
*/
void CommandSetGl841::send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor,
- uint8_t* data, int size) const
+ std::uint8_t* data, int size) const
{
DBG_HELPER_ARGS(dbg, "writing %d bytes of shading data", size);
- uint32_t length, x, pixels, i;
- uint8_t *ptr,*src;
+ std::uint32_t length, x, pixels, i;
/* old method if no SHDAREA */
if ((dev->reg.find_reg(0x01).value & REG_0x01_SHDAREA) == 0) {
@@ -2094,7 +2147,7 @@ void CommandSetGl841::send_shading_data(Genesys_Device* dev, const Genesys_Senso
DBG(DBG_io2, "%s: using chunks of %d bytes (%d shading data pixels)\n", __func__, length,
length/4);
- std::vector<uint8_t> buffer(pixels, 0);
+ std::vector<std::uint8_t> buffer(pixels, 0);
/* write actual shading data contigously
* channel by channel, starting at addr 0x0000
@@ -2103,14 +2156,14 @@ void CommandSetGl841::send_shading_data(Genesys_Device* dev, const Genesys_Senso
{
/* copy data to work buffer and process it */
/* coefficient destination */
- ptr=buffer.data();
+ std::uint8_t* ptr = buffer.data();
/* iterate on both sensor segment, data has been averaged,
* so is in the right order and we only have to copy it */
for(x=0;x<pixels;x+=4)
{
/* coefficient source */
- src = data + x + beginpixel + i * length;
+ std::uint8_t* src = data + x + beginpixel + i * length;
ptr[0]=src[0];
ptr[1]=src[1];
ptr[2]=src[2];
diff --git a/backend/genesys/gl841.h b/backend/genesys/gl841.h
index 64b23c8..2bdc3cc 100644
--- a/backend/genesys/gl841.h
+++ b/backend/genesys/gl841.h
@@ -46,7 +46,7 @@ public:
Genesys_Register_Set* reg,
const ScanSession& session) const override;
- void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override;
+ void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set) const override;
void set_powersaving(Genesys_Device* dev, int delay) const override;
void save_power(Genesys_Device* dev, bool enable) const override;
@@ -80,7 +80,7 @@ public:
void eject_document(Genesys_Device* dev) const override;
- void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t* data,
+ void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t* data,
int size) const override;
ScanSession calculate_scan_session(const Genesys_Device* dev,
diff --git a/backend/genesys/gl842.cpp b/backend/genesys/gl842.cpp
index a593040..9663799 100644
--- a/backend/genesys/gl842.cpp
+++ b/backend/genesys/gl842.cpp
@@ -223,7 +223,8 @@ static void gl842_init_registers(Genesys_Device& dev)
}
// Set values of analog frontend
-void CommandSetGl842::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const
+void CommandSetGl842::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ std::uint8_t set) const
{
DBG_HELPER_ARGS(dbg, "%s", set == AFE_INIT ? "init" :
set == AFE_SET ? "set" :
@@ -236,7 +237,7 @@ void CommandSetGl842::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
// check analog frontend type
// FIXME: looks like we write to that register with initial data
- uint8_t fe_type = dev->interface->read_register(REG_0x04) & REG_0x04_FESET;
+ std::uint8_t fe_type = dev->interface->read_register(REG_0x04) & REG_0x04_FESET;
if (fe_type == 2 || dev->model->model_id == ModelId::CANON_LIDE_90) {
for (const auto& reg : dev->frontend.regs) {
dev->interface->write_fe_register(reg.address, reg.value);
@@ -568,7 +569,7 @@ void CommandSetGl842::init_regs_for_scan_session(Genesys_Device* dev, const Gene
dev->session = session;
dev->total_bytes_read = 0;
- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
}
ScanSession CommandSetGl842::calculate_scan_session(const Genesys_Device* dev,
@@ -841,11 +842,11 @@ void CommandSetGl842::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor
unsigned size = 256;
- std::vector<uint8_t> gamma(size * 2 * 3);
+ std::vector<std::uint8_t> gamma(size * 2 * 3);
- std::vector<uint16_t> rgamma = get_gamma_table(dev, sensor, GENESYS_RED);
- std::vector<uint16_t> ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN);
- std::vector<uint16_t> bgamma = get_gamma_table(dev, sensor, GENESYS_BLUE);
+ std::vector<std::uint16_t> rgamma = get_gamma_table(dev, sensor, GENESYS_RED);
+ std::vector<std::uint16_t> ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN);
+ std::vector<std::uint16_t> bgamma = get_gamma_table(dev, sensor, GENESYS_BLUE);
// copy sensor specific's gamma tables
for (unsigned i = 0; i < size; i++) {
@@ -951,7 +952,7 @@ void CommandSetGl842::asic_boot(Genesys_Device* dev, bool cold) const
dev->interface->write_registers(dev->reg);
if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200) {
- uint8_t data[32] = {
+ std::uint8_t data[32] = {
0xd0, 0x38, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1006,7 +1007,7 @@ void CommandSetGl842::update_home_sensor_gpio(Genesys_Device& dev) const
* for all the channels.
*/
void CommandSetGl842::send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor,
- uint8_t* data, int size) const
+ std::uint8_t* data, int size) const
{
DBG_HELPER(dbg);
@@ -1032,7 +1033,7 @@ void CommandSetGl842::send_shading_data(Genesys_Device* dev, const Genesys_Senso
dev->interface->record_key_value("shading_offset", std::to_string(offset));
dev->interface->record_key_value("shading_length", std::to_string(length));
- std::vector<uint8_t> final_data(length, 0);
+ std::vector<std::uint8_t> final_data(length, 0);
unsigned count = 0;
if (offset < 0) {
diff --git a/backend/genesys/gl842.h b/backend/genesys/gl842.h
index 3636bac..7a60819 100644
--- a/backend/genesys/gl842.h
+++ b/backend/genesys/gl842.h
@@ -46,7 +46,7 @@ public:
Genesys_Register_Set* reg,
const ScanSession& session) const override;
- void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override;
+ void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set) const override;
void set_powersaving(Genesys_Device* dev, int delay) const override;
void save_power(Genesys_Device* dev, bool enable) const override;
@@ -80,7 +80,7 @@ public:
void eject_document(Genesys_Device* dev) const override;
- void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t* data,
+ void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t* data,
int size) const override;
ScanSession calculate_scan_session(const Genesys_Device* dev,
diff --git a/backend/genesys/gl843.cpp b/backend/genesys/gl843.cpp
index 6180bf9..c2f4b52 100644
--- a/backend/genesys/gl843.cpp
+++ b/backend/genesys/gl843.cpp
@@ -597,7 +597,7 @@ gl843_init_registers (Genesys_Device * dev)
}
if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) {
- uint8_t data[32] = {
+ std::uint8_t data[32] = {
0x8c, 0x8f, 0xc9, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -616,7 +616,8 @@ static void gl843_set_ad_fe(Genesys_Device* dev)
}
// Set values of analog frontend
-void CommandSetGl843::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const
+void CommandSetGl843::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ std::uint8_t set) const
{
DBG_HELPER_ARGS(dbg, "%s", set == AFE_INIT ? "init" :
set == AFE_SET ? "set" :
@@ -629,7 +630,7 @@ void CommandSetGl843::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
// check analog frontend type
// FIXME: looks like we write to that register with initial data
- uint8_t fe_type = dev->interface->read_register(REG_0x04) & REG_0x04_FESET;
+ std::uint8_t fe_type = dev->interface->read_register(REG_0x04) & REG_0x04_FESET;
if (fe_type == 2) {
gl843_set_ad_fe(dev);
return;
@@ -1041,7 +1042,7 @@ void CommandSetGl843::init_regs_for_scan_session(Genesys_Device* dev, const Gene
dev->session = session;
dev->total_bytes_read = 0;
- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
DBG(DBG_info, "%s: total bytes to send = %zu\n", __func__, dev->total_bytes_to_read);
}
@@ -1120,7 +1121,7 @@ void CommandSetGl843::save_power(Genesys_Device* dev, bool enable) const
// switch KV-SS080 lamp off
if (dev->model->gpio_id == GpioId::KVSS080) {
- uint8_t val = dev->interface->read_register(REG_0x6C);
+ std::uint8_t val = dev->interface->read_register(REG_0x6C);
if (enable) {
val &= 0xef;
} else {
@@ -1140,7 +1141,7 @@ static bool gl843_get_paper_sensor(Genesys_Device* dev)
{
DBG_HELPER(dbg);
- uint8_t val = dev->interface->read_register(REG_0x6D);
+ std::uint8_t val = dev->interface->read_register(REG_0x6D);
return (val & 0x1) == 0;
}
@@ -1283,7 +1284,7 @@ void CommandSetGl843::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
scanner_clear_scan_and_feed_counts(*dev);
// enable scan and motor
- uint8_t val = dev->interface->read_register(REG_0x01);
+ std::uint8_t val = dev->interface->read_register(REG_0x01);
val |= REG_0x01_SCAN;
dev->interface->write_register(REG_0x01, val);
@@ -1436,11 +1437,11 @@ void CommandSetGl843::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor
size = 256;
/* allocate temporary gamma tables: 16 bits words, 3 channels */
- std::vector<uint8_t> gamma(size * 2 * 3);
+ std::vector<std::uint8_t> gamma(size * 2 * 3);
- std::vector<uint16_t> rgamma = get_gamma_table(dev, sensor, GENESYS_RED);
- std::vector<uint16_t> ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN);
- std::vector<uint16_t> bgamma = get_gamma_table(dev, sensor, GENESYS_BLUE);
+ std::vector<std::uint16_t> rgamma = get_gamma_table(dev, sensor, GENESYS_RED);
+ std::vector<std::uint16_t> ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN);
+ std::vector<std::uint16_t> bgamma = get_gamma_table(dev, sensor, GENESYS_BLUE);
// copy sensor specific's gamma tables
for (i = 0; i < size; i++) {
@@ -1553,7 +1554,7 @@ static void gl843_init_gpio(Genesys_Device* dev)
void CommandSetGl843::asic_boot(Genesys_Device* dev, bool cold) const
{
DBG_HELPER(dbg);
- uint8_t val;
+ std::uint8_t val;
if (cold) {
dev->interface->write_register(0x0e, 0x01);
@@ -1665,7 +1666,7 @@ void CommandSetGl843::update_hardware_sensors(Genesys_Scanner* s) const
any of them.
*/
- uint8_t val = s->dev->interface->read_register(REG_0x6D);
+ std::uint8_t val = s->dev->interface->read_register(REG_0x6D);
DBG(DBG_io, "%s: read buttons_gpio value=0x%x\n", __func__, (int)val);
switch (s->dev->model->gpio_id)
@@ -1685,8 +1686,21 @@ void CommandSetGl843::update_hardware_sensors(Genesys_Scanner* s) const
s->buttons[BUTTON_TRANSP_SW].write((val & 0x40) == 0);
s->buttons[BUTTON_SCAN_SW].write((val & 0x08) == 0);
break;
- case GpioId::CANON_4400F:
case GpioId::CANON_8400F:
+ s->buttons[BUTTON_COPY_SW].write((val & 0x01) == 0);
+ s->buttons[BUTTON_SCAN_SW].write((val & 0x02) == 0);
+ s->buttons[BUTTON_FILE_SW].write((val & 0x04) == 0);
+ s->buttons[BUTTON_EMAIL_SW].write((val & 0x08) == 0);
+ break;
+ case GpioId::CANON_4400F:
+ s->buttons[BUTTON_COPY_SW].write((val & 0x68) == 0x28);
+ s->buttons[BUTTON_TRANSP_SW].write((val & 0x68) == 0x20);
+ s->buttons[BUTTON_EMAIL_SW].write((val & 0x68) == 0x08);
+ s->buttons[BUTTON_PDF1_SW].write((val & 0x68) == 0x00);
+ s->buttons[BUTTON_PDF2_SW].write((val & 0x68) == 0x60);
+ s->buttons[BUTTON_PDF3_SW].write((val & 0x68) == 0x48);
+ s->buttons[BUTTON_PDF4_SW].write((val & 0x68) == 0x40);
+ break;
default:
break;
}
@@ -1703,11 +1717,10 @@ void CommandSetGl843::update_home_sensor_gpio(Genesys_Device& dev) const
* for all the channels.
*/
void CommandSetGl843::send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor,
- uint8_t* data, int size) const
+ std::uint8_t* data, int size) const
{
DBG_HELPER(dbg);
- uint32_t final_size, i;
- uint8_t *buffer;
+ std::uint32_t final_size, i;
int count;
int offset = 0;
@@ -1735,10 +1748,10 @@ void CommandSetGl843::send_shading_data(Genesys_Device* dev, const Genesys_Senso
/* compute and allocate size for final data */
final_size = ((length+251) / 252) * 256;
DBG(DBG_io, "%s: final shading size=%04x (length=%d)\n", __func__, final_size, length);
- std::vector<uint8_t> final_data(final_size, 0);
+ std::vector<std::uint8_t> final_data(final_size, 0);
/* copy regular shading data to the expected layout */
- buffer = final_data.data();
+ std::uint8_t* buffer = final_data.data();
count = 0;
if (offset < 0) {
count += (-offset);
diff --git a/backend/genesys/gl843.h b/backend/genesys/gl843.h
index ac845bd..6012c36 100644
--- a/backend/genesys/gl843.h
+++ b/backend/genesys/gl843.h
@@ -46,7 +46,7 @@ public:
Genesys_Register_Set* reg,
const ScanSession& session) const override;
- void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override;
+ void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set) const override;
void set_powersaving(Genesys_Device* dev, int delay) const override;
void save_power(Genesys_Device* dev, bool enable) const override;
@@ -80,7 +80,7 @@ public:
void eject_document(Genesys_Device* dev) const override;
- void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t* data,
+ void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t* data,
int size) const override;
ScanSession calculate_scan_session(const Genesys_Device* dev,
diff --git a/backend/genesys/gl846.cpp b/backend/genesys/gl846.cpp
index b427376..6db312a 100644
--- a/backend/genesys/gl846.cpp
+++ b/backend/genesys/gl846.cpp
@@ -284,7 +284,7 @@ gl846_init_registers (Genesys_Device * dev)
/**
* Set register values of Analog Device type frontend
* */
-static void gl846_set_adi_fe(Genesys_Device* dev, uint8_t set)
+static void gl846_set_adi_fe(Genesys_Device* dev, std::uint8_t set)
{
DBG_HELPER(dbg);
int i;
@@ -314,15 +314,16 @@ static void gl846_set_adi_fe(Genesys_Device* dev, uint8_t set)
}
// Set values of analog frontend
-void CommandSetGl846::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const
+void CommandSetGl846::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ std::uint8_t set) const
{
DBG_HELPER_ARGS(dbg, "%s", set == AFE_INIT ? "init" :
set == AFE_SET ? "set" :
set == AFE_POWER_SAVE ? "powersave" : "huh?");
(void) sensor;
- /* route to specific analog frontend setup */
- uint8_t frontend_type = dev->reg.find_reg(0x04).value & REG_0x04_FESET;
+ // route to specific analog frontend setup
+ std::uint8_t frontend_type = dev->reg.find_reg(0x04).value & REG_0x04_FESET;
switch (frontend_type) {
case 0x02: /* ADI FE */
gl846_set_adi_fe(dev, set);
@@ -658,7 +659,7 @@ void CommandSetGl846::init_regs_for_scan_session(Genesys_Device* dev, const Gene
dev->session = session;
dev->total_bytes_read = 0;
- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
DBG(DBG_info, "%s: total bytes to send = %zu\n", __func__, dev->total_bytes_to_read);
}
@@ -748,7 +749,6 @@ void CommandSetGl846::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
{
DBG_HELPER(dbg);
(void) sensor;
- uint8_t val;
if (reg->state.is_xpa_on && reg->state.is_lamp_on) {
dev->cmd_set->set_xpa_lamp_power(*dev, true);
@@ -756,7 +756,7 @@ void CommandSetGl846::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
scanner_clear_scan_and_feed_counts(*dev);
- val = dev->interface->read_register(REG_0x01);
+ std::uint8_t val = dev->interface->read_register(REG_0x01);
val |= REG_0x01_SCAN;
dev->interface->write_register(REG_0x01, val);
reg->set8(REG_0x01, val);
@@ -862,11 +862,10 @@ void CommandSetGl846::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
* for all the channels.
*/
void CommandSetGl846::send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor,
- uint8_t* data, int size) const
+ std::uint8_t* data, int size) const
{
DBG_HELPER_ARGS(dbg, "writing %d bytes of shading data", size);
std::uint32_t addr, i;
- uint8_t val,*ptr,*src;
unsigned length = static_cast<unsigned>(size / 3);
@@ -884,7 +883,7 @@ void CommandSetGl846::send_shading_data(Genesys_Device* dev, const Genesys_Senso
dev->interface->record_key_value("shading_length", std::to_string(length));
dev->interface->record_key_value("shading_factor", std::to_string(sensor.shading_factor));
- std::vector<uint8_t> buffer(pixels, 0);
+ std::vector<std::uint8_t> buffer(pixels, 0);
DBG(DBG_io2, "%s: using chunks of %d (0x%04x) bytes\n", __func__, pixels, pixels);
@@ -896,12 +895,12 @@ void CommandSetGl846::send_shading_data(Genesys_Device* dev, const Genesys_Senso
{
/* build up actual shading data by copying the part from the full width one
* to the one corresponding to SHDAREA */
- ptr = buffer.data();
+ std::uint8_t* ptr = buffer.data();
/* iterate on both sensor segment */
for (unsigned x = 0; x < pixels; x += 4 * sensor.shading_factor) {
// coefficient source
- src = (data + offset + i * length) + x;
+ std::uint8_t* src = (data + offset + i * length) + x;
/* coefficient copy */
ptr[0]=src[0];
@@ -913,7 +912,7 @@ void CommandSetGl846::send_shading_data(Genesys_Device* dev, const Genesys_Senso
ptr+=4;
}
- val = dev->interface->read_register(0xd0+i);
+ std::uint8_t val = dev->interface->read_register(0xd0+i);
addr = val * 8192 + 0x10000000;
dev->interface->write_ahb(addr, pixels, buffer.data());
}
@@ -961,7 +960,7 @@ static void gl846_init_memory_layout(Genesys_Device* dev)
void CommandSetGl846::asic_boot(Genesys_Device* dev, bool cold) const
{
DBG_HELPER(dbg);
- uint8_t val;
+ std::uint8_t val;
// reset ASIC if cold boot
if (cold) {
@@ -1036,8 +1035,7 @@ void CommandSetGl846::update_hardware_sensors(Genesys_Scanner* s) const
/* do what is needed to get a new set of events, but try to not lose
any of them.
*/
- uint8_t val;
- uint8_t scan, file, email, copy;
+ std::uint8_t scan, file, email, copy;
switch(s->dev->model->gpio_id)
{
default:
@@ -1046,7 +1044,7 @@ void CommandSetGl846::update_hardware_sensors(Genesys_Scanner* s) const
email=0x04;
copy=0x08;
}
- val = s->dev->interface->read_register(REG_0x6D);
+ std::uint8_t val = s->dev->interface->read_register(REG_0x6D);
s->buttons[BUTTON_SCAN_SW].write((val & scan) == 0);
s->buttons[BUTTON_FILE_SW].write((val & file) == 0);
diff --git a/backend/genesys/gl846.h b/backend/genesys/gl846.h
index f1d396d..c0acec4 100644
--- a/backend/genesys/gl846.h
+++ b/backend/genesys/gl846.h
@@ -46,7 +46,7 @@ public:
Genesys_Register_Set* reg,
const ScanSession& session) const override;
- void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override;
+ void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set) const override;
void set_powersaving(Genesys_Device* dev, int delay) const override;
void save_power(Genesys_Device* dev, bool enable) const override;
@@ -80,7 +80,7 @@ public:
void eject_document(Genesys_Device* dev) const override;
- void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t* data,
+ void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t* data,
int size) const override;
ScanSession calculate_scan_session(const Genesys_Device* dev,
diff --git a/backend/genesys/gl847.cpp b/backend/genesys/gl847.cpp
index 13f9dd9..14d1fd0 100644
--- a/backend/genesys/gl847.cpp
+++ b/backend/genesys/gl847.cpp
@@ -51,7 +51,7 @@ gl847_init_registers (Genesys_Device * dev)
{
DBG_HELPER(dbg);
int lide700=0;
- uint8_t val;
+ std::uint8_t val;
/* 700F class needs some different initial settings */
if (dev->model->model_id == ModelId::CANON_LIDE_700F) {
@@ -233,7 +233,8 @@ gl847_init_registers (Genesys_Device * dev)
}
// Set values of analog frontend
-void CommandSetGl847::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const
+void CommandSetGl847::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ std::uint8_t set) const
{
DBG_HELPER_ARGS(dbg, "%s", set == AFE_INIT ? "init" :
set == AFE_SET ? "set" :
@@ -389,7 +390,7 @@ static void gl847_init_motor_regs_scan(Genesys_Device* dev,
unsigned tgtime = 1 << (reg->get8(REG_0x1C) & REG_0x1C_TGTIME);
// hi res motor speed GPIO
- uint8_t effective = dev->interface->read_register(REG_0x6C);
+ std::uint8_t effective = dev->interface->read_register(REG_0x6C);
// if quarter step, bipolar Vref2
@@ -624,7 +625,7 @@ void CommandSetGl847::init_regs_for_scan_session(Genesys_Device* dev, const Gene
dev->session = session;
dev->total_bytes_read = 0;
- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
DBG(DBG_info, "%s: total bytes to send = %zu\n", __func__, dev->total_bytes_to_read);
}
@@ -722,7 +723,7 @@ void CommandSetGl847::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sens
{
DBG_HELPER(dbg);
(void) sensor;
- uint8_t val;
+ std::uint8_t val;
if (reg->state.is_xpa_on && reg->state.is_lamp_on) {
dev->cmd_set->set_xpa_lamp_power(*dev, true);
@@ -879,11 +880,10 @@ void CommandSetGl847::init_regs_for_shading(Genesys_Device* dev, const Genesys_S
* for all the channels.
*/
void CommandSetGl847::send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor,
- uint8_t* data, int size) const
+ std::uint8_t* data, int size) const
{
DBG_HELPER_ARGS(dbg, "writing %d bytes of shading data", size);
std::uint32_t addr, i;
- uint8_t val,*ptr,*src;
unsigned length = static_cast<unsigned>(size / 3);
@@ -901,7 +901,7 @@ void CommandSetGl847::send_shading_data(Genesys_Device* dev, const Genesys_Senso
dev->interface->record_key_value("shading_length", std::to_string(length));
dev->interface->record_key_value("shading_factor", std::to_string(sensor.shading_factor));
- std::vector<uint8_t> buffer(pixels, 0);
+ std::vector<std::uint8_t> buffer(pixels, 0);
DBG(DBG_io2, "%s: using chunks of %d (0x%04x) bytes\n", __func__, pixels, pixels);
@@ -917,12 +917,12 @@ void CommandSetGl847::send_shading_data(Genesys_Device* dev, const Genesys_Senso
{
/* build up actual shading data by copying the part from the full width one
* to the one corresponding to SHDAREA */
- ptr = buffer.data();
+ std::uint8_t* ptr = buffer.data();
// iterate on both sensor segment
for (unsigned x = 0; x < pixels; x += 4 * sensor.shading_factor) {
- /* coefficient source */
- src = (data + offset + i * length) + x;
+ // coefficient source
+ std::uint8_t* src = (data + offset + i * length) + x;
/* coefficient copy */
ptr[0]=src[0];
@@ -934,7 +934,7 @@ void CommandSetGl847::send_shading_data(Genesys_Device* dev, const Genesys_Senso
ptr+=4;
}
- val = dev->interface->read_register(0xd0+i);
+ std::uint8_t val = dev->interface->read_register(0xd0+i);
addr = val * 8192 + 0x10000000;
dev->interface->write_ahb(addr, pixels, buffer.data());
}
@@ -1030,7 +1030,7 @@ void CommandSetGl847::asic_boot(Genesys_Device* dev, bool cold) const
}
// test CHKVER
- uint8_t val = dev->interface->read_register(REG_0x40);
+ std::uint8_t val = dev->interface->read_register(REG_0x40);
if (val & REG_0x40_CHKVER) {
val = dev->interface->read_register(0x00);
DBG(DBG_info, "%s: reported version for genesys chip is 0x%02x\n", __func__, val);
@@ -1089,27 +1089,46 @@ void CommandSetGl847::update_hardware_sensors(Genesys_Scanner* s) const
/* do what is needed to get a new set of events, but try to not lose
any of them.
*/
- uint8_t val;
- uint8_t scan, file, email, copy;
+ std::uint8_t val;
switch(s->dev->model->gpio_id) {
case GpioId::CANON_LIDE_700F:
- scan=0x04;
- file=0x02;
- email=0x01;
- copy=0x08;
+ val = s->dev->interface->read_register(REG_0x6D);
+ DBG(DBG_io, "%s: read buttons_gpio value=0x%x\n", __func__, (int)val);
+
+ s->buttons[BUTTON_SCAN_SW].write((val & 0x04) == 0);
+ s->buttons[BUTTON_FILE_SW].write((val & 0x02) == 0);
+ s->buttons[BUTTON_EMAIL_SW].write((val & 0x01) == 0);
+ s->buttons[BUTTON_COPY_SW].write((val & 0x08) == 0);
+ break;
+
+ case GpioId::CANON_5600F:
+ val = s->dev->interface->read_register(REG_0x6D);
+ DBG(DBG_io, "%s: read buttons_gpio 0x6d value=0x%x\n", __func__, (int)val);
+ s->buttons[BUTTON_SCAN_SW].write((val & 0x02) == 0);
+ s->buttons[BUTTON_EMAIL_SW].write((val & 0x01) == 0);
+ s->buttons[BUTTON_COPY_SW].write((val & 0x08) == 0);
+ s->buttons[BUTTON_PDF4_SW].write((val & 0x04) == 0);
+
+ val = s->dev->interface->read_register(REG_0xA6);
+ DBG(DBG_io, "%s: read buttons_gpio 0xa6 value=0x%x\n", __func__, (int)val);
+ s->buttons[BUTTON_PDF1_SW].write((val & 0x03) == 0x01);
+ s->buttons[BUTTON_PDF2_SW].write((val & 0x03) == 0x02);
+
+ val = s->dev->interface->read_register(REG_0x6C);
+ DBG(DBG_io, "%s: read buttons_gpio 0x6c value=0x%x\n", __func__, (int)val);
+ s->buttons[BUTTON_PDF3_SW].write((val & 0x80) == 0x00);
break;
+
default:
- scan=0x01;
- file=0x02;
- email=0x04;
- copy=0x08;
- }
- val = s->dev->interface->read_register(REG_0x6D);
+ val = s->dev->interface->read_register(REG_0x6D);
+ DBG(DBG_io, "%s: read buttons_gpio value=0x%x\n", __func__, (int)val);
- s->buttons[BUTTON_SCAN_SW].write((val & scan) == 0);
- s->buttons[BUTTON_FILE_SW].write((val & file) == 0);
- s->buttons[BUTTON_EMAIL_SW].write((val & email) == 0);
- s->buttons[BUTTON_COPY_SW].write((val & copy) == 0);
+ s->buttons[BUTTON_SCAN_SW].write((val & 0x01) == 0);
+ s->buttons[BUTTON_FILE_SW].write((val & 0x02) == 0);
+ s->buttons[BUTTON_EMAIL_SW].write((val & 0x04) == 0);
+ s->buttons[BUTTON_COPY_SW].write((val & 0x08) == 0);
+ break;
+ }
}
void CommandSetGl847::update_home_sensor_gpio(Genesys_Device& dev) const
diff --git a/backend/genesys/gl847.h b/backend/genesys/gl847.h
index 4b98b7a..68bf553 100644
--- a/backend/genesys/gl847.h
+++ b/backend/genesys/gl847.h
@@ -46,7 +46,7 @@ public:
Genesys_Register_Set* reg,
const ScanSession& session) const override;
- void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t set) const override;
+ void set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t set) const override;
void set_powersaving(Genesys_Device* dev, int delay) const override;
void save_power(Genesys_Device* dev, bool enable) const override;
@@ -80,7 +80,7 @@ public:
void eject_document(Genesys_Device* dev) const override;
- void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, uint8_t* data,
+ void send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, std::uint8_t* data,
int size) const override;
ScanSession calculate_scan_session(const Genesys_Device* dev,
diff --git a/backend/genesys/image.h b/backend/genesys/image.h
index 07d3be3..80797ed 100644
--- a/backend/genesys/image.h
+++ b/backend/genesys/image.h
@@ -15,7 +15,7 @@
General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>.s
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef BACKEND_GENESYS_IMAGE_H
diff --git a/backend/genesys/image_pipeline.cpp b/backend/genesys/image_pipeline.cpp
index f53680f..8dae0c5 100644
--- a/backend/genesys/image_pipeline.cpp
+++ b/backend/genesys/image_pipeline.cpp
@@ -173,7 +173,7 @@ ImagePipelineNodeDesegment::ImagePipelineNodeDesegment(ImagePipelineNode& source
std::iota(segment_order_.begin(), segment_order_.end(), 0);
}
-bool ImagePipelineNodeDesegment::get_next_row_data(uint8_t* out_data)
+bool ImagePipelineNodeDesegment::get_next_row_data(std::uint8_t* out_data)
{
bool got_data = true;
diff --git a/backend/genesys/image_pixel.h b/backend/genesys/image_pixel.h
index e414cfb..4f487ea 100644
--- a/backend/genesys/image_pixel.h
+++ b/backend/genesys/image_pixel.h
@@ -15,7 +15,7 @@
General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>.s
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef BACKEND_GENESYS_IMAGE_PIXEL_H
diff --git a/backend/genesys/low.cpp b/backend/genesys/low.cpp
index a6da2c1..3ffc24a 100644
--- a/backend/genesys/low.cpp
+++ b/backend/genesys/low.cpp
@@ -106,7 +106,7 @@ unsigned sanei_genesys_get_bulk_max_size(AsicType asic_type)
}
// Set address for writing data
-void sanei_genesys_set_buffer_address(Genesys_Device* dev, uint32_t addr)
+void sanei_genesys_set_buffer_address(Genesys_Device* dev, std::uint32_t addr)
{
DBG_HELPER(dbg);
@@ -356,12 +356,12 @@ void wait_until_has_valid_words(Genesys_Device* dev)
}
// Read data (e.g scanned image) from scan buffer
-void sanei_genesys_read_data_from_scanner(Genesys_Device* dev, uint8_t* data, size_t size)
+void sanei_genesys_read_data_from_scanner(Genesys_Device* dev, std::uint8_t* data, size_t size)
{
DBG_HELPER_ARGS(dbg, "size = %zu bytes", size);
- if (size & 1)
- DBG(DBG_info, "WARNING %s: odd number of bytes\n", __func__);
+ if (size & 1)
+ DBG(DBG_info, "WARNING %s: odd number of bytes\n", __func__);
wait_until_has_valid_words(dev);
@@ -565,7 +565,7 @@ void sanei_genesys_read_feed_steps(Genesys_Device* dev, unsigned int* steps)
void sanei_genesys_set_lamp_power(Genesys_Device* dev, const Genesys_Sensor& sensor,
Genesys_Register_Set& regs, bool set)
{
- static const uint8_t REG_0x03_LAMPPWR = 0x10;
+ static const std::uint8_t REG_0x03_LAMPPWR = 0x10;
if (set) {
regs.find_reg(0x03).value |= REG_0x03_LAMPPWR;
@@ -606,7 +606,7 @@ void sanei_genesys_set_lamp_power(Genesys_Device* dev, const Genesys_Sensor& sen
void sanei_genesys_set_motor_power(Genesys_Register_Set& regs, bool set)
{
- static const uint8_t REG_0x02_MTRPWR = 0x10;
+ static const std::uint8_t REG_0x02_MTRPWR = 0x10;
if (set) {
regs.find_reg(0x02).value |= REG_0x02_MTRPWR;
@@ -635,13 +635,13 @@ bool should_enable_gamma(const ScanSession& session, const Genesys_Sensor& senso
return true;
}
-std::vector<uint16_t> get_gamma_table(Genesys_Device* dev, const Genesys_Sensor& sensor,
- int color)
+std::vector<std::uint16_t> get_gamma_table(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ int color)
{
if (!dev->gamma_override_tables[color].empty()) {
return dev->gamma_override_tables[color];
} else {
- std::vector<uint16_t> ret;
+ std::vector<std::uint16_t> ret;
sanei_genesys_create_default_gamma_table(dev, ret, sensor.gamma[color]);
return ret;
}
@@ -654,23 +654,38 @@ std::vector<uint16_t> get_gamma_table(Genesys_Device* dev, const Genesys_Sensor&
* @param bits number of bits used by gamma
* @param max value for gamma
* @param size of the gamma table
- * @param gamma allocated gamma buffer to fill
*/
-void sanei_genesys_generate_gamma_buffer(Genesys_Device* dev,
+std::vector<std::uint8_t> generate_gamma_buffer(Genesys_Device* dev,
const Genesys_Sensor& sensor,
- int bits,
- int max,
- int size,
- uint8_t* gamma)
+ int bits, int max, int size)
{
DBG_HELPER(dbg);
- std::vector<uint16_t> rgamma = get_gamma_table(dev, sensor, GENESYS_RED);
- std::vector<uint16_t> ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN);
- std::vector<uint16_t> bgamma = get_gamma_table(dev, sensor, GENESYS_BLUE);
+
+ // the gamma tables are 16 bits words and contain 3 channels
+ std::vector<std::uint8_t> gamma_buf(size * 2 * 3);
+
+ std::vector<std::uint16_t> rgamma = get_gamma_table(dev, sensor, GENESYS_RED);
+ std::vector<std::uint16_t> ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN);
+ std::vector<std::uint16_t> bgamma = get_gamma_table(dev, sensor, GENESYS_BLUE);
+
+ auto get_gamma_value = [](const std::vector<std::uint16_t>& array,
+ std::size_t index) -> std::uint16_t
+ {
+ if (index < array.size())
+ return array[index];
+ return 0xffff;
+ };
+
+ auto set_gamma_buf_value = [](std::vector<std::uint8_t>& array, std::size_t pos,
+ std::uint16_t value)
+ {
+ array[pos * 2 + 0] = value & 0xff;
+ array[pos * 2 + 1] = (value >> 8) & 0xff;
+ };
if(dev->settings.contrast!=0 || dev->settings.brightness!=0)
{
- std::vector<uint16_t> lut(65536);
+ std::vector<std::uint16_t> lut(65536);
sanei_genesys_load_lut(reinterpret_cast<unsigned char *>(lut.data()),
bits,
bits,
@@ -680,39 +695,21 @@ void sanei_genesys_generate_gamma_buffer(Genesys_Device* dev,
dev->settings.brightness);
for (int i = 0; i < size; i++)
{
- uint16_t value=rgamma[i];
- value=lut[value];
- gamma[i * 2 + size * 0 + 0] = value & 0xff;
- gamma[i * 2 + size * 0 + 1] = (value >> 8) & 0xff;
-
- value=ggamma[i];
- value=lut[value];
- gamma[i * 2 + size * 2 + 0] = value & 0xff;
- gamma[i * 2 + size * 2 + 1] = (value >> 8) & 0xff;
-
- value=bgamma[i];
- value=lut[value];
- gamma[i * 2 + size * 4 + 0] = value & 0xff;
- gamma[i * 2 + size * 4 + 1] = (value >> 8) & 0xff;
+ set_gamma_buf_value(gamma_buf, i + size * 0, lut[get_gamma_value(rgamma, i)]);
+ set_gamma_buf_value(gamma_buf, i + size * 1, lut[get_gamma_value(ggamma, i)]);
+ set_gamma_buf_value(gamma_buf, i + size * 2, lut[get_gamma_value(bgamma, i)]);
}
}
else
{
for (int i = 0; i < size; i++)
{
- uint16_t value=rgamma[i];
- gamma[i * 2 + size * 0 + 0] = value & 0xff;
- gamma[i * 2 + size * 0 + 1] = (value >> 8) & 0xff;
-
- value=ggamma[i];
- gamma[i * 2 + size * 2 + 0] = value & 0xff;
- gamma[i * 2 + size * 2 + 1] = (value >> 8) & 0xff;
-
- value=bgamma[i];
- gamma[i * 2 + size * 4 + 0] = value & 0xff;
- gamma[i * 2 + size * 4 + 1] = (value >> 8) & 0xff;
+ set_gamma_buf_value(gamma_buf, i + size * 0, get_gamma_value(rgamma, i));
+ set_gamma_buf_value(gamma_buf, i + size * 1, get_gamma_value(ggamma, i));
+ set_gamma_buf_value(gamma_buf, i + size * 2, get_gamma_value(bgamma, i));
}
}
+ return gamma_buf;
}
@@ -730,15 +727,12 @@ void sanei_genesys_send_gamma_table(Genesys_Device* dev, const Genesys_Sensor& s
size = 256 + 1;
- /* allocate temporary gamma tables: 16 bits words, 3 channels */
- std::vector<uint8_t> gamma(size * 2 * 3, 255);
-
- sanei_genesys_generate_gamma_buffer(dev, sensor, 16, 65535, size, gamma.data());
+ auto gamma = generate_gamma_buffer(dev, sensor, 16, 65535, size);
// loop sending gamma tables NOTE: 0x01000000 not 0x10000000
for (i = 0; i < 3; i++) {
// clear corresponding GMM_N bit
- uint8_t val = dev->interface->read_register(0xbd);
+ std::uint8_t val = dev->interface->read_register(0xbd);
val &= ~(0x01 << i);
dev->interface->write_register(0xbd, val);
@@ -1410,7 +1404,7 @@ void sanei_genesys_asic_init(Genesys_Device* dev)
{
DBG_HELPER(dbg);
- uint8_t val;
+ std::uint8_t val;
bool cold = true;
// URB 16 control 0xc0 0x0c 0x8e 0x0b len 1 read 0x00 */
@@ -1507,13 +1501,13 @@ void scanner_start_action(Genesys_Device& dev, bool start_motor)
void sanei_genesys_set_dpihw(Genesys_Register_Set& regs, unsigned dpihw)
{
// same across GL646, GL841, GL843, GL846, GL847, GL124
- const uint8_t REG_0x05_DPIHW_MASK = 0xc0;
- const uint8_t REG_0x05_DPIHW_600 = 0x00;
- const uint8_t REG_0x05_DPIHW_1200 = 0x40;
- const uint8_t REG_0x05_DPIHW_2400 = 0x80;
- const uint8_t REG_0x05_DPIHW_4800 = 0xc0;
+ const std::uint8_t REG_0x05_DPIHW_MASK = 0xc0;
+ const std::uint8_t REG_0x05_DPIHW_600 = 0x00;
+ const std::uint8_t REG_0x05_DPIHW_1200 = 0x40;
+ const std::uint8_t REG_0x05_DPIHW_2400 = 0x80;
+ const std::uint8_t REG_0x05_DPIHW_4800 = 0xc0;
- uint8_t dpihw_setting;
+ std::uint8_t dpihw_setting;
switch (dpihw) {
case 600:
dpihw_setting = REG_0x05_DPIHW_600;
@@ -1925,8 +1919,8 @@ void sanei_genesys_load_lut(unsigned char* lut,
double shift, rise;
int max_in_val = (1 << in_bits) - 1;
int max_out_val = (1 << out_bits) - 1;
- uint8_t *lut_p8 = lut;
- uint16_t* lut_p16 = reinterpret_cast<std::uint16_t*>(lut);
+ std::uint8_t* lut_p8 = lut;
+ std::uint16_t* lut_p16 = reinterpret_cast<std::uint16_t*>(lut);
/* slope is converted to rise per unit run:
* first [-127,127] to [-.999,.999]
diff --git a/backend/genesys/low.h b/backend/genesys/low.h
index b0d23fe..1b96cc5 100644
--- a/backend/genesys/low.h
+++ b/backend/genesys/low.h
@@ -95,7 +95,11 @@
#define GENESYS_HAS_POWER_SW (1 << 6) /**< scanner has power button */
#define GENESYS_HAS_CALIBRATE (1 << 7) /**< scanner has 'calibrate' software button to start calibration */
#define GENESYS_HAS_EXTRA_SW (1 << 8) /**< scanner has extra function button */
-#define GENESYS_HAS_TRANSP_SW (1 << 9) /**< scanner has TRANSPARCY/SCAN_FILM button */
+#define GENESYS_HAS_TRANSP_SW (1 << 9) /**< scanner has TRANSPARENCY/SCAN_FILM button */
+#define GENESYS_HAS_PDF1_SW (1 << 10) /**< scanner has special PDF button 1 */
+#define GENESYS_HAS_PDF2_SW (1 << 11) /**< scanner has special PDF button 2 */
+#define GENESYS_HAS_PDF3_SW (1 << 12) /**< scanner has special PDF button 3 */
+#define GENESYS_HAS_PDF4_SW (1 << 13) /**< scanner has special PDF button 4 */
/* USB control message values */
#define REQUEST_TYPE_IN (USB_TYPE_VENDOR | USB_DIR_IN)
@@ -203,8 +207,8 @@ void scanner_register_rw_set_bits(Genesys_Device& dev, std::uint16_t address, st
void scanner_register_rw_bits(Genesys_Device& dev, std::uint16_t address,
std::uint8_t value, std::uint8_t mask);
-extern void sanei_genesys_write_ahb(Genesys_Device* dev, uint32_t addr, uint32_t size,
- uint8_t* data);
+void sanei_genesys_write_ahb(Genesys_Device* dev, std::uint32_t addr, std::uint32_t size,
+ std::uint8_t* data);
extern void sanei_genesys_init_structs (Genesys_Device * dev);
@@ -251,14 +255,14 @@ bool should_enable_gamma(const ScanSession& session, const Genesys_Sensor& senso
i.e. the number written to REG_FWDSTEP.
*/
void sanei_genesys_calculate_zmod(bool two_table,
- uint32_t exposure_time,
- const std::vector<uint16_t>& slope_table,
+ std::uint32_t exposure_time,
+ const std::vector<std::uint16_t>& slope_table,
unsigned acceleration_steps,
unsigned move_steps,
unsigned buffer_acceleration_steps,
- uint32_t* out_z1, uint32_t* out_z2);
+ std::uint32_t* out_z1, std::uint32_t* out_z2);
-extern void sanei_genesys_set_buffer_address(Genesys_Device* dev, uint32_t addr);
+extern void sanei_genesys_set_buffer_address(Genesys_Device* dev, std::uint32_t addr);
unsigned sanei_genesys_get_bulk_max_size(AsicType asic_type);
@@ -266,10 +270,10 @@ SANE_Int sanei_genesys_exposure_time2(Genesys_Device* dev, const MotorProfile& p
int endpixel, int led_exposure);
void sanei_genesys_create_default_gamma_table(Genesys_Device* dev,
- std::vector<uint16_t>& gamma_table, float gamma);
+ std::vector<std::uint16_t>& gamma_table, float gamma);
-std::vector<uint16_t> get_gamma_table(Genesys_Device* dev, const Genesys_Sensor& sensor,
- int color);
+std::vector<std::uint16_t> get_gamma_table(Genesys_Device* dev, const Genesys_Sensor& sensor,
+ int color);
void sanei_genesys_send_gamma_table(Genesys_Device* dev, const Genesys_Sensor& sensor);
@@ -307,14 +311,14 @@ SensorExposure scanner_led_calibration(Genesys_Device& dev, const Genesys_Sensor
void scanner_clear_scan_and_feed_counts(Genesys_Device& dev);
void scanner_send_slope_table(Genesys_Device* dev, const Genesys_Sensor& sensor, unsigned table_nr,
- const std::vector<uint16_t>& slope_table);
+ const std::vector<std::uint16_t>& slope_table);
extern void sanei_genesys_write_file(const char* filename, const std::uint8_t* data,
std::size_t length);
void wait_until_buffer_non_empty(Genesys_Device* dev, bool check_status_twice = false);
-extern void sanei_genesys_read_data_from_scanner(Genesys_Device* dev, uint8_t* data, size_t size);
+void sanei_genesys_read_data_from_scanner(Genesys_Device* dev, std::uint8_t* data, size_t size);
Image read_unshuffled_image_from_scanner(Genesys_Device* dev, const ScanSession& session,
std::size_t total_bytes);
@@ -392,12 +396,9 @@ extern void sanei_genesys_load_lut(unsigned char* lut,
int out_min, int out_max,
int slope, int offset);
-extern void sanei_genesys_generate_gamma_buffer(Genesys_Device* dev,
- const Genesys_Sensor& sensor,
- int bits,
- int max,
- int size,
- uint8_t* gamma);
+std::vector<std::uint8_t> generate_gamma_buffer(Genesys_Device* dev,
+ const Genesys_Sensor& sensor,
+ int bits, int max, int size);
unsigned session_adjust_output_pixels(unsigned output_pixels,
const Genesys_Device& dev, const Genesys_Sensor& sensor,
diff --git a/backend/genesys/scanner_interface_usb.cpp b/backend/genesys/scanner_interface_usb.cpp
index da8823b..542d4ff 100644
--- a/backend/genesys/scanner_interface_usb.cpp
+++ b/backend/genesys/scanner_interface_usb.cpp
@@ -126,8 +126,8 @@ void ScannerInterfaceUsb::write_registers(const Genesys_Register_Set& regs)
if (dev_->model->asic_type == AsicType::GL646 ||
dev_->model->asic_type == AsicType::GL841)
{
- uint8_t outdata[8];
- std::vector<uint8_t> buffer;
+ std::uint8_t outdata[8];
+ std::vector<std::uint8_t> buffer;
buffer.reserve(regs.size() * 2);
/* copy registers and values in data buffer */
@@ -185,7 +185,7 @@ static void bulk_read_data_send_header(UsbDevice& usb_dev, AsicType asic_type, s
{
DBG_HELPER(dbg);
- uint8_t outdata[8];
+ std::uint8_t outdata[8];
if (asic_type == AsicType::GL124 ||
asic_type == AsicType::GL845 ||
asic_type == AsicType::GL846 ||
diff --git a/backend/genesys/serialize.cpp b/backend/genesys/serialize.cpp
deleted file mode 100644
index e69de29..0000000
--- a/backend/genesys/serialize.cpp
+++ /dev/null
diff --git a/backend/genesys/serialize.h b/backend/genesys/serialize.h
index ed67ea3..5040ed0 100644
--- a/backend/genesys/serialize.h
+++ b/backend/genesys/serialize.h
@@ -15,7 +15,7 @@
General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>.s
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef BACKEND_GENESYS_SERIALIZE_H
diff --git a/backend/genesys/tables_model.cpp b/backend/genesys/tables_model.cpp
index d139334..6d02db8 100644
--- a/backend/genesys/tables_model.cpp
+++ b/backend/genesys/tables_model.cpp
@@ -447,7 +447,9 @@ void genesys_init_usb_device_tables()
ModelFlag::SHADING_REPARK |
ModelFlag::UTA_NO_SECONDARY_MOTOR;
- model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW;
+ model.buttons = GENESYS_HAS_TRANSP_SW | GENESYS_HAS_EMAIL_SW
+ | GENESYS_HAS_COPY_SW | GENESYS_HAS_PDF1_SW | GENESYS_HAS_PDF2_SW
+ | GENESYS_HAS_PDF3_SW | GENESYS_HAS_PDF4_SW;
model.search_lines = 100;
s_usb_devices->emplace_back(0x04a9, 0x2228, model);
@@ -517,7 +519,7 @@ void genesys_init_usb_device_tables()
ModelFlag::DARK_CALIBRATION |
ModelFlag::CUSTOM_GAMMA |
ModelFlag::SHADING_REPARK;
- model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW;
+ model.buttons = GENESYS_HAS_SCAN_SW | GENESYS_HAS_FILE_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW;
model.search_lines = 100;
s_usb_devices->emplace_back(0x04a9, 0x221e, model);
@@ -927,7 +929,10 @@ void genesys_init_usb_device_tables()
model.buttons = GENESYS_HAS_SCAN_SW |
GENESYS_HAS_COPY_SW |
GENESYS_HAS_EMAIL_SW |
- GENESYS_HAS_FILE_SW;
+ GENESYS_HAS_PDF1_SW |
+ GENESYS_HAS_PDF2_SW |
+ GENESYS_HAS_PDF3_SW |
+ GENESYS_HAS_PDF4_SW;
model.search_lines = 400;
s_usb_devices->emplace_back(0x04a9, 0x1906, model);
diff --git a/backend/genesys/test_scanner_interface.cpp b/backend/genesys/test_scanner_interface.cpp
index 412176e..ef7cdbb 100644
--- a/backend/genesys/test_scanner_interface.cpp
+++ b/backend/genesys/test_scanner_interface.cpp
@@ -26,8 +26,8 @@
namespace genesys {
-TestScannerInterface::TestScannerInterface(Genesys_Device* dev, uint16_t vendor_id,
- uint16_t product_id, uint16_t bcd_device) :
+TestScannerInterface::TestScannerInterface(Genesys_Device* dev, std::uint16_t vendor_id,
+ std::uint16_t product_id, std::uint16_t bcd_device) :
dev_{dev},
usb_dev_{vendor_id, product_id, bcd_device}
{
diff --git a/backend/gt68xx_low.c b/backend/gt68xx_low.c
index 5aa84ac..c83108b 100644
--- a/backend/gt68xx_low.c
+++ b/backend/gt68xx_low.c
@@ -425,7 +425,7 @@ gt68xx_device_memory_write (GT68xx_Device * dev,
SANE_Status status;
DBG (8,
"gt68xx_device_memory_write: dev=%p, addr=0x%x, size=0x%x, data=%p\n",
- (void *) dev, addr, size, data);
+ (void *) dev, addr, size, (void *) data);
CHECK_DEV_ACTIVE (dev, "gt68xx_device_memory_write");
status =
sanei_usb_control_msg (dev->fd, 0x40,
@@ -448,7 +448,7 @@ gt68xx_device_memory_read (GT68xx_Device * dev,
SANE_Status status;
DBG (8,
"gt68xx_device_memory_read: dev=%p, addr=0x%x, size=0x%x, data=%p\n",
- (void *) dev, addr, size, data);
+ (void *) dev, addr, size, (void *) data);
CHECK_DEV_ACTIVE (dev, "gt68xx_device_memory_read");
status =
sanei_usb_control_msg (dev->fd, 0xc0,
diff --git a/backend/hp.c b/backend/hp.c
index 558a36d..ec43402 100644
--- a/backend/hp.c
+++ b/backend/hp.c
@@ -581,13 +581,9 @@ hp_get_dev (const char *devname, HpDevice* devp)
DBG(3, "hp_get_dev: New device %s, connect-%s, scsi-request=%lu\n",
devname, connect, (unsigned long)info->config.use_scsi_request);
- if (!ptr)
- {
- status = sanei_hp_device_new (&new, devname);
-
- if ( status != SANE_STATUS_GOOD )
- return status;
- }
+ status = sanei_hp_device_new (&new, devname);
+ if (status != SANE_STATUS_GOOD)
+ return status;
if (devp)
*devp = new;
diff --git a/backend/hp3500.c b/backend/hp3500.c
index bf07b36..acb09b6 100644
--- a/backend/hp3500.c
+++ b/backend/hp3500.c
@@ -265,7 +265,7 @@ static const SANE_Device **devlist = 0;
SANE_Status
sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
DBG_INIT ();
DBG (10, "sane_init\n");
@@ -1117,7 +1117,7 @@ init_options (struct hp3500_data *scanner)
static void
do_reset (struct hp3500_data *scanner)
{
- scanner = scanner; /* kill warning */
+ (void) scanner; /* kill warning */
}
static void
@@ -1530,8 +1530,6 @@ rt_get_available_bytes (void)
static int
rt_get_data (int bytes, void *data)
{
- int total = 0;
-
while (bytes)
{
int bytesnow = bytes;
@@ -1542,7 +1540,6 @@ rt_get_data (int bytes, void *data)
(RTCMD_READBYTES, 0, bytesnow, 0, 0, bytesnow, data) < 0
|| rt_execute_commands () < 0)
return -1;
- total += bytesnow;
bytes -= bytesnow;
data = (char *) data + bytesnow;
}
@@ -2774,7 +2771,7 @@ rts8801_doscan (unsigned width,
int result = 0;
unsigned rows_supplied = 0;
- calib_info = calib_info; /* Kill warning */
+ (void) calib_info; /* Kill warning */
if (cancelled_scan)
return -1;
rt_start_moving ();
@@ -3784,7 +3781,7 @@ writefunc (struct hp3500_write_info *winfo, int bytes, char *data)
static void
sigtermHandler (int signal)
{
- signal = signal; /* get rid of compiler warning */
+ (void) signal; /* get rid of compiler warning */
cancelled_scan = 1;
}
#endif
diff --git a/backend/hp3900_config.c b/backend/hp3900_config.c
index daeb583..c40920f 100644
--- a/backend/hp3900_config.c
+++ b/backend/hp3900_config.c
@@ -1523,19 +1523,16 @@ static SANE_Int hp3800_checkstable(SANE_Int lamp, struct st_checkstable *check)
SANE_Int rst = ERROR;
- if (reg != NULL)
- {
- SANE_Int a;
- SANE_Int count = sizeof(reg) / sizeof(struct st_reg);
+ SANE_Int a;
+ SANE_Int count = sizeof(reg) / sizeof(struct st_reg);
- for (a = 0; a < count; a++)
+ for (a = 0; a < count; a++)
+ {
+ if (reg[a].lamp == lamp)
{
- if (reg[a].lamp == lamp)
- {
- memcpy(check, &reg[a].values, sizeof(struct st_checkstable));
- rst = OK;
- break;
- }
+ memcpy(check, &reg[a].values, sizeof(struct st_checkstable));
+ rst = OK;
+ break;
}
}
@@ -1560,19 +1557,16 @@ static SANE_Int hp3970_checkstable(SANE_Int lamp, struct st_checkstable *check)
SANE_Int rst = ERROR;
- if (reg != NULL)
- {
- SANE_Int a;
- SANE_Int count = sizeof(reg) / sizeof(struct st_reg);
+ SANE_Int a;
+ SANE_Int count = sizeof(reg) / sizeof(struct st_reg);
- for (a = 0; a < count; a++)
+ for (a = 0; a < count; a++)
+ {
+ if (reg[a].lamp == lamp)
{
- if (reg[a].lamp == lamp)
- {
- memcpy(check, &reg[a].values, sizeof(struct st_checkstable));
- rst = OK;
- break;
- }
+ memcpy(check, &reg[a].values, sizeof(struct st_checkstable));
+ rst = OK;
+ break;
}
}
@@ -1597,19 +1591,16 @@ static SANE_Int hp4370_checkstable(SANE_Int lamp, struct st_checkstable *check)
SANE_Int rst = ERROR;
- if (reg != NULL)
- {
- SANE_Int a;
- SANE_Int count = sizeof(reg) / sizeof(struct st_reg);
+ SANE_Int a;
+ SANE_Int count = sizeof(reg) / sizeof(struct st_reg);
- for (a = 0; a < count; a++)
+ for (a = 0; a < count; a++)
+ {
+ if (reg[a].lamp == lamp)
{
- if (reg[a].lamp == lamp)
- {
- memcpy(check, &reg[a].values, sizeof(struct st_checkstable));
- rst = OK;
- break;
- }
+ memcpy(check, &reg[a].values, sizeof(struct st_checkstable));
+ rst = OK;
+ break;
}
}
@@ -1634,19 +1625,16 @@ static SANE_Int ua4900_checkstable(SANE_Int lamp, struct st_checkstable *check)
SANE_Int rst = ERROR;
- if (reg != NULL)
- {
- SANE_Int a;
- SANE_Int count = sizeof(reg) / sizeof(struct st_reg);
+ SANE_Int a;
+ SANE_Int count = sizeof(reg) / sizeof(struct st_reg);
- for (a = 0; a < count; a++)
+ for (a = 0; a < count; a++)
+ {
+ if (reg[a].lamp == lamp)
{
- if (reg[a].lamp == lamp)
- {
- memcpy(check, &reg[a].values, sizeof(struct st_checkstable));
- rst = OK;
- break;
- }
+ memcpy(check, &reg[a].values, sizeof(struct st_checkstable));
+ rst = OK;
+ break;
}
}
@@ -2719,7 +2707,7 @@ static SANE_Int bq5550_scanmodes(SANE_Int usb, SANE_Int sm, struct st_scanmode *
SANE_Int rst = ERROR;
/* silence compiler */
- usb = usb;
+ (void) usb;
if (mymode != NULL)
{
diff --git a/backend/hp3900_debug.c b/backend/hp3900_debug.c
index 25254db..881f400 100644
--- a/backend/hp3900_debug.c
+++ b/backend/hp3900_debug.c
@@ -600,15 +600,15 @@ dbg_tiff_save (char *sFile, SANE_Int width, SANE_Int height, SANE_Int depth,
}
#else
/* silent gcc */
- sFile = sFile;
- width = width;
- height = height;
- depth = depth;
- colortype = colortype;
- res_x = res_x;
- res_y = res_y;
- buffer = buffer;
- size = size;
+ (void) sFile;
+ (void) width;
+ (void) height;
+ (void) depth;
+ (void) colortype;
+ (void) res_x;
+ (void) res_y;
+ (void) buffer;
+ (void) size;
DBG (DBG_ERR, "- dbg_tiff_save: tiffio not supported\n");
#endif
diff --git a/backend/hp3900_rts8822.c b/backend/hp3900_rts8822.c
index c818b89..f74d586 100644
--- a/backend/hp3900_rts8822.c
+++ b/backend/hp3900_rts8822.c
@@ -4856,8 +4856,8 @@ Refs_Analyze_Pattern (struct st_scanparams *scancfg,
{
/*d4df */
diff_max = color_dif[cnt];
- if (abs (color_dif[cnt] - color_dif[cnt - 1]) >
- abs (color_dif[coord] - color_dif[coord - 1]))
+ if (fabs (color_dif[cnt] - color_dif[cnt - 1]) >
+ fabs (color_dif[coord] - color_dif[coord - 1]))
coord = cnt;
}
@@ -4907,8 +4907,8 @@ Refs_Analyze_Pattern (struct st_scanparams *scancfg,
if ((color_dif[cnt] >= 0) && (color_dif[cnt] > diff_max))
{
diff_max = color_dif[cnt];
- if (abs (color_dif[cnt] - color_dif[cnt - 1]) >
- abs (color_dif[coord] - color_dif[coord - 1]))
+ if (fabs (color_dif[cnt] - color_dif[cnt - 1]) >
+ fabs (color_dif[coord] - color_dif[coord - 1]))
coord = cnt;
}
@@ -4954,8 +4954,8 @@ Refs_Analyze_Pattern (struct st_scanparams *scancfg,
if ((color_dif[cnt] >= 0) && (color_dif[cnt] > diff_max))
{
diff_max = color_dif[cnt];
- if (abs (color_dif[cnt] - color_dif[cnt - 1]) >
- abs (color_dif[coord] - color_dif[coord - 1]))
+ if (fabs (color_dif[cnt] - color_dif[cnt - 1]) >
+ fabs (color_dif[coord] - color_dif[coord - 1]))
coord = cnt;
}
@@ -7703,7 +7703,7 @@ Scan_Read_BufferA (struct st_device *dev, SANE_Int buffer_size, SANE_Int arg2,
"+ Scan_Read_BufferA(buffer_size=%i, arg2, *pBuffer, *bytes_transferred):\n",
buffer_size);
- arg2 = arg2; /* silence gcc */
+ (void) arg2; /* silence gcc */
*bytes_transferred = 0;
if (pBuffer != NULL)
@@ -11364,7 +11364,7 @@ Calib_CreateBuffers (struct st_device *dev, struct st_calibration *buffer,
SANE_Int ebp, ret, channel;
ret = ERROR;
- dev = dev;
+ (void) dev;
buffer->shadinglength = scan.coord.width;
ebp = 0x14;
@@ -12602,9 +12602,9 @@ Calib_BWShading (struct st_calibration_config *calibcfg,
/*falta codigo */
/*silence gcc */
- calibcfg = calibcfg;
- myCalib = myCalib;
- gainmode = gainmode;
+ (void) calibcfg;
+ (void) myCalib;
+ (void) gainmode;
return OK;
}
@@ -13624,7 +13624,7 @@ Calibration (struct st_device *dev, SANE_Byte * Regs,
DBG (DBG_FNC, "> Calibration\n");
dbg_ScanParams (scancfg);
- value = value; /*silence gcc */
+ (void) value; /*silence gcc */
memcpy (&calibdata->Regs, Regs, sizeof (SANE_Byte) * RT_BUFFER_LEN);
diff --git a/backend/hp3900_sane.c b/backend/hp3900_sane.c
index eae99e0..5face5e 100644
--- a/backend/hp3900_sane.c
+++ b/backend/hp3900_sane.c
@@ -380,7 +380,7 @@ bknd_colormodes (TScanner * scanner, SANE_Int model)
{ SANE_VALUE_SCAN_MODE_COLOR, SANE_VALUE_SCAN_MODE_GRAY, SANE_VALUE_SCAN_MODE_LINEART, 0 };
/* silence gcc */
- model = model;
+ (void) model;
colormode = (SANE_String_Const *) malloc (sizeof (mycolormode));
if (colormode != NULL)
@@ -460,7 +460,7 @@ bknd_depths (TScanner * scanner, SANE_Int model)
SANE_Int mydepth[] = { 2, 8, 16 }; /*{3, 8, 12, 16}; */
/* silence gcc */
- model = model;
+ (void) model;
depth = (SANE_Int *) malloc (sizeof (mydepth));
if (depth != NULL)
@@ -1760,7 +1760,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
DBG (DBG_FNC, "> sane_init\n");
/* silence gcc */
- authorize = authorize;
+ (void) authorize;
/* Initialize usb */
sanei_usb_init ();
@@ -1816,7 +1816,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
{
SANE_Status rst = SANE_STATUS_GOOD;
- local_only = local_only;
+ (void) local_only;
if (_pSaneDevList)
free (_pSaneDevList);
@@ -2654,7 +2654,7 @@ sane_cancel (SANE_Handle h)
DBG (DBG_FNC, "> sane_cancel\n");
/* silence gcc */
- h = h;
+ (void) h;
device->status->cancel = TRUE;
}
@@ -2665,8 +2665,8 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
DBG (DBG_FNC, "> sane_set_io_mode\n");
/* silence gcc */
- handle = handle;
- non_blocking = non_blocking;
+ (void) handle;
+ (void) non_blocking;
return SANE_STATUS_UNSUPPORTED;
}
@@ -2677,8 +2677,8 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
DBG (DBG_FNC, "> sane_get_select_fd\n");
/* silence gcc */
- handle = handle;
- fd = fd;
+ (void) handle;
+ (void) fd;
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/hp4200.c b/backend/hp4200.c
index 5b21b47..e4e885e 100644
--- a/backend/hp4200.c
+++ b/backend/hp4200.c
@@ -512,7 +512,7 @@ read_available_data (HP4200_Scanner * s, SANE_Byte * buffer,
buffer += really_read;
to_read -= really_read;
#ifdef DEBUG
- fprintf (stderr, "read %d bytes\n", really_read);
+ fprintf (stderr, "read %zu bytes\n", really_read);
#endif
}
return SANE_STATUS_GOOD;
@@ -941,7 +941,6 @@ compute_dpd (HP4200_Scanner * s, int step_size, int line_end)
static SANE_Status
read_required_bytes (HP4200_Scanner * s, int required, SANE_Byte * buffer)
{
- int read_count = 0;
unsigned char scankb1;
unsigned char scankb2;
size_t to_read;
@@ -987,7 +986,6 @@ read_required_bytes (HP4200_Scanner * s, int required, SANE_Byte * buffer)
buffer += really_read;
required -= really_read;
to_read -= really_read;
- read_count += really_read;
}
}
@@ -2369,7 +2367,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
char dev_name[PATH_MAX];
FILE *fp;
- authorize = authorize; /* keep gcc quiet */
+ (void) authorize; /* keep gcc quiet */
DBG_INIT ();
@@ -2939,7 +2937,7 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
HP4200_Scanner *dev = handle;
SANE_Status status;
- non_blocking = non_blocking; /* silence gcc */
+ (void) non_blocking; /* silence gcc */
if (dev->scanning == SANE_FALSE)
{
@@ -2965,8 +2963,8 @@ sane_get_select_fd (SANE_Handle h, SANE_Int * fd)
{
static char me[] = "sane_get_select_fd";
- h = h; /* keep gcc quiet */
- fd = fd; /* keep gcc quiet */
+ (void) h; /* keep gcc quiet */
+ (void) fd; /* keep gcc quiet */
DBG (DBG_proc, "%s\n", me);
return SANE_STATUS_UNSUPPORTED;
diff --git a/backend/hp5400_internal.c b/backend/hp5400_internal.c
index 322359a..95866c4 100644
--- a/backend/hp5400_internal.c
+++ b/backend/hp5400_internal.c
@@ -483,7 +483,7 @@ void
CircBufferInit (int iHandle, TDataPipe * p, int iBytesPerLine,
int bpp, int iMisAlignment, int blksize, int iTransferSize)
{
- iHandle = iHandle; /* to avoid compilation warning */
+ (void) iHandle; /* to avoid compilation warning */
p->buffersize = max (BUFFER_SIZE, 3 * blksize);
if (p->buffer)
@@ -746,7 +746,7 @@ HP5400_SANE_STATIC
int
hp5400_test_scan_response (struct ScanResponse *resp, struct ScanRequest *req)
{
- req = req; /* to avoid compilation warning */
+ (void) req; /* to avoid compilation warning */
HP5400_DBG (DBG_MSG, "Scan response:\n");
HP5400_DBG (DBG_MSG, " transfersize=%d htonl-> %d\n", resp->transfersize,
htonl (resp->transfersize));
@@ -828,7 +828,7 @@ DoScan (int iHandle, struct ScanRequest *req, const char *filename, int code,
/* int bpp, planes; */
int i;
- code = code; /*to avoid compilation warning*/
+ (void) code; /*to avoid compilation warning*/
if (res == NULL)
res = &res_temp;
@@ -1011,7 +1011,7 @@ hp5400_scan (int iHandle, TScanParams * params, THWParams * pHWParams,
struct ScanResponse res;
int result;
- pHWParams = pHWParams; /*to avoid compilation warning*/
+ (void) pHWParams; /*to avoid compilation warning*/
HP5400_DBG (DBG_MSG, "\n");
HP5400_DBG (DBG_MSG, "Scanning :\n");
diff --git a/backend/hp5400_sane.c b/backend/hp5400_sane.c
index 5043dad..5e716a2 100644
--- a/backend/hp5400_sane.c
+++ b/backend/hp5400_sane.c
@@ -611,7 +611,7 @@ sane_init (SANE_Int * piVersion, SANE_Auth_Callback pfnAuth)
int nline = 0;
/* prevent compiler from complaining about unused parameters */
- pfnAuth = pfnAuth;
+ (void) pfnAuth;
strcpy(usb_devfile, "/dev/usb/scanner0");
_pFirstSaneDev = 0;
@@ -712,7 +712,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
HP5400_DBG (DBG_MSG, "sane_get_devices\n");
- local_only = local_only;
+ (void) local_only;
if (_pSaneDevList)
{
@@ -1333,7 +1333,7 @@ sane_set_io_mode (SANE_Handle h, SANE_Bool m)
HP5400_DBG (DBG_MSG, "sane_set_io_mode %s\n", m ? "non-blocking" : "blocking");
/* prevent compiler from complaining about unused parameters */
- h = h;
+ (void) h;
if (m)
{
@@ -1349,8 +1349,8 @@ sane_get_select_fd (SANE_Handle h, SANE_Int * fd)
HP5400_DBG (DBG_MSG, "sane_select_fd\n");
/* prevent compiler from complaining about unused parameters */
- h = h;
- fd = fd;
+ (void) h;
+ (void) fd;
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/hp5590_low.c b/backend/hp5590_low.c
index 29e2136..2d19dcf 100644
--- a/backend/hp5590_low.c
+++ b/backend/hp5590_low.c
@@ -796,8 +796,9 @@ hp5590_bulk_read (SANE_Int dn,
DBG (DBG_err,
"%s: USB-in-USB: attempted to access over the end of buffer "
"(in_ptr: %p, end_ptr: %p, ptr: %p, buffer size: %u\n",
- __func__, bulk_read_state->buffer_in_ptr,
- bulk_read_state->buffer_end_ptr, bulk_read_state->buffer,
+ __func__, (void *) bulk_read_state->buffer_in_ptr,
+ (void *) bulk_read_state->buffer_end_ptr,
+ (void *) bulk_read_state->buffer,
bulk_read_state->buffer_size);
return SANE_STATUS_NO_MEM;
}
diff --git a/backend/hs2p.c b/backend/hs2p.c
index 76f4b96..b2c6d76 100644
--- a/backend/hs2p.c
+++ b/backend/hs2p.c
@@ -3125,7 +3125,7 @@ sane_start (SANE_Handle handle) /* begin scanning */
sane_strstatus (status));
return (status);
}
- if ((s->data.adf_status & 0x00) == 0x01)
+ if ((s->data.adf_status & 0x01) == 0x01)
{
DBG (DBG_warning, "sane_start: No document on ADF\n");
return (SANE_STATUS_NO_DOCS);
@@ -3322,8 +3322,8 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
*fd = s->fd;
return SANE_STATUS_GOOD;
#else
- handle = handle;
- fd = fd; /* get rid of compiler warning */
+ (void) handle;
+ (void) fd; /* get rid of compiler warning */
DBG (DBG_proc, "<< sane_get_select_fd\n");
return SANE_STATUS_UNSUPPORTED;
#endif
diff --git a/backend/ibm.c b/backend/ibm.c
index 688cdfb..ab5fbc9 100644
--- a/backend/ibm.c
+++ b/backend/ibm.c
@@ -568,7 +568,8 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
continue; /* ignore empty lines */
/* skip white space: */
- for (lp = line; isspace(*lp); ++lp);
+ for (lp = line; isspace(*lp); ++lp)
+ ;
strcpy (devnam, lp);
}
fclose (fp);
diff --git a/backend/kodak-cmd.h b/backend/kodak-cmd.h
index 7d5d506..17e353c 100644
--- a/backend/kodak-cmd.h
+++ b/backend/kodak-cmd.h
@@ -133,10 +133,14 @@ putnbyte (unsigned char *pnt, unsigned int value, unsigned int nbytes)
#define get_I_cmdque(in) getbitfield(in + 7, 1, 1)
#define get_I_sftre(in) getbitfield(in + 7, 0, 1)
-#define get_I_vendor(in, buf) strncpy(buf,(char *)in + 0x08, 0x08)
-#define get_I_product(in, buf) strncpy(buf,(char *)in + 0x10, 0x10)
-#define get_I_version(in, buf) strncpy(buf,(char *)in + 0x20, 0x04)
-#define get_I_build(in, buf) strncpy(buf,(char *)in + 0x24, 0x02)
+#define get_I_vendor(in, buf) snprintf(buf, 0x08 + 1, "%.*s", \
+ 0x08, (char *)in + 0x08)
+#define get_I_product(in, buf) snprintf(buf, 0x10 + 1, "%.*s", \
+ 0x10, (char *)in + 0x10)
+#define get_I_version(in, buf) snprintf(buf, 0x04 + 1, "%.*s", \
+ 0x04, (char *)in + 0x20)
+#define get_I_build(in, buf) snprintf(buf, 0x02 + 1, "%.*s", \
+ 0x02, (char *)in + 0x24)
#define get_I_mf_disable(in) getbitfield(in + 38, 7, 1)
#define get_I_checkdigit(in) getbitfield(in + 38, 6, 1)
diff --git a/backend/kodak.c b/backend/kodak.c
index c41f088..b46ab2e 100644
--- a/backend/kodak.c
+++ b/backend/kodak.c
@@ -175,7 +175,7 @@ static struct scanner *scanner_devList = NULL;
SANE_Status
sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
DBG_INIT ();
DBG (10, "sane_init: start\n");
@@ -225,7 +225,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
int num_devices=0;
int i=0;
- local_only = local_only; /* get rid of compiler warning */
+ (void) local_only; /* get rid of compiler warning */
DBG (10, "sane_get_devices: start\n");
@@ -2550,7 +2550,7 @@ sense_handler (int fd, unsigned char * sensed_data, void *arg)
DBG (5, "sense_handler: start\n");
/* kill compiler warning */
- fd = fd;
+ (void) fd;
/* save for later */
s->rs_info = get_RS_information (sensed_data);
@@ -2754,8 +2754,8 @@ do_cmd(struct scanner *s, int runRS, int shortTime,
SANE_Status ret = SANE_STATUS_GOOD;
/*shut up compiler*/
- runRS=runRS;
- shortTime=shortTime;
+ (void) runRS;
+ (void) shortTime;
DBG(10, "do_cmd: start\n");
diff --git a/backend/kodakaio.c b/backend/kodakaio.c
index fe83e27..0241e2a 100644
--- a/backend/kodakaio.c
+++ b/backend/kodakaio.c
@@ -716,7 +716,6 @@ That is probably if the scanner disconnected the network connection
/* pollreply is -ve */
DBG(1, "net poll error\n");
*status = SANE_STATUS_IO_ERROR;
- return read;
}
else if((fds[0].revents & POLLIN) && !(fds[0].revents & (POLLERR | POLLHUP | POLLNVAL))) {
while (read < wanted) {
@@ -733,12 +732,11 @@ That is probably if the scanner disconnected the network connection
*status = SANE_STATUS_IO_ERROR;
DBG(32, "net read %lu bytes:%x,%x,%x,%x,%x,%x,%x,%x\n",(unsigned long)read,buf[0],buf[1],buf[2],buf[3],buf[4],buf[5],buf[6],buf[7]);
-
- return read;
}
else
DBG(1, "Unknown problem with poll\n");
- return read;
+
+ return read;
}
@@ -2046,7 +2044,7 @@ open_scanner(KodakAio_Scanner *s)
unsigned int model = 0;
if (!split_scanner_name (s->hw->sane.name, IP, &model))
return SANE_STATUS_INVAL;
- DBG(10, "split_scanner_name OK model=0x%x\n",model);
+ DBG(10, "split_scanner_name OK model=0x%x\n",model);
/* normal with IP */
status = sanei_tcp_open(IP, 9101, &s->fd); /* (host,port,file pointer) */
diff --git a/backend/kvs1025.c b/backend/kvs1025.c
index 9d53690..9c8b56f 100644
--- a/backend/kvs1025.c
+++ b/backend/kvs1025.c
@@ -442,15 +442,15 @@ sane_cancel (SANE_Handle handle)
SANE_Status
sane_set_io_mode (SANE_Handle h, SANE_Bool m)
{
- h=h;
- m=m;
+ (void) h;
+ (void) m;
return SANE_STATUS_UNSUPPORTED;
}
SANE_Status
sane_get_select_fd (SANE_Handle h, SANE_Int * fd)
{
- h=h;
- fd=fd;
+ (void) h;
+ (void) fd;
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/kvs20xx_opt.c b/backend/kvs20xx_opt.c
index 3e82764..229bf85 100644
--- a/backend/kvs20xx_opt.c
+++ b/backend/kvs20xx_opt.c
@@ -673,11 +673,6 @@ mm2scanner_units (unsigned mm)
{
return mm * 12000 / 254;
}
-static inline unsigned
-scanner_units2mm (unsigned u)
-{
- return u * 254 / 12000;
-}
void
kvs20xx_init_window (struct scanner *s, struct window *wnd, int wnd_id)
diff --git a/backend/kvs40xx.c b/backend/kvs40xx.c
index 230bdc2..fd3cfe0 100644
--- a/backend/kvs40xx.c
+++ b/backend/kvs40xx.c
@@ -118,11 +118,6 @@ static inline void buf_set_st(struct buf *b, SANE_Status st)
pthread_mutex_unlock(&b->mu);
}
-static inline void buf_cancel(struct buf *b)
-{
- buf_set_st(b, SANE_STATUS_CANCELLED);
-}
-
static inline void push_buf(struct buf *b, SANE_Int sz)
{
pthread_mutex_lock(&b->mu);
@@ -547,10 +542,10 @@ static void * read_data (void *arg)
sane_get_parameters(s, NULL);
s->page++;
- return SANE_STATUS_GOOD;
+ return NULL;
err:
s->scanning = 0;
- return (void *) st;
+ return NULL;
}
/* Start scanning */
diff --git a/backend/kvs40xx_opt.c b/backend/kvs40xx_opt.c
index 8c37711..2d8d870 100644
--- a/backend/kvs40xx_opt.c
+++ b/backend/kvs40xx_opt.c
@@ -29,11 +29,6 @@ mm2scanner_units (unsigned mm)
{
return (mm * 12000 / 254.0 + .5);
}
-static inline unsigned
-scanner_units2mm (unsigned u)
-{
- return (u * 254.0 / 12000 + .5);
-}
struct restriction
{
unsigned ux, uy, ux_pix, uy_pix;
diff --git a/backend/lexmark_low.c b/backend/lexmark_low.c
index 052ae4d..246455f 100644
--- a/backend/lexmark_low.c
+++ b/backend/lexmark_low.c
@@ -4994,14 +4994,14 @@ sanei_lexmark_low_read_scan_data (SANE_Byte * data, SANE_Int size,
DBG (2, " Filled a buffer from the scanner\n");
DBG (2, " bytes_remaining: %lu\n", (u_long) dev->bytes_remaining);
DBG (2, " bytes_in_buffer: %lu\n", (u_long) dev->bytes_in_buffer);
- DBG (2, " read_pointer: %p\n", dev->read_pointer);
+ DBG (2, " read_pointer: %p\n", (void *) dev->read_pointer);
}
}
DBG (5, "READ BUFFER INFO: \n");
- DBG (5, " write ptr: %p\n", dev->read_buffer->writeptr);
- DBG (5, " read ptr: %p\n", dev->read_buffer->readptr);
- DBG (5, " max write ptr: %p\n", dev->read_buffer->max_writeptr);
+ DBG (5, " write ptr: %p\n", (void *) dev->read_buffer->writeptr);
+ DBG (5, " read ptr: %p\n", (void *) dev->read_buffer->readptr);
+ DBG (5, " max write ptr: %p\n", (void *) dev->read_buffer->max_writeptr);
DBG (5, " buffer size: %lu\n", (u_long) dev->read_buffer->size);
DBG (5, " line size: %lu\n", (u_long) dev->read_buffer->linesize);
DBG (5, " empty: %d\n", dev->read_buffer->empty);
@@ -5059,9 +5059,9 @@ sanei_lexmark_low_read_scan_data (SANE_Byte * data, SANE_Int size,
}
DBG (5, "READ BUFFER INFO: \n");
- DBG (5, " write ptr: %p\n", dev->read_buffer->writeptr);
- DBG (5, " read ptr: %p\n", dev->read_buffer->readptr);
- DBG (5, " max write ptr: %p\n", dev->read_buffer->max_writeptr);
+ DBG (5, " write ptr: %p\n", (void *) dev->read_buffer->writeptr);
+ DBG (5, " read ptr: %p\n", (void *) dev->read_buffer->readptr);
+ DBG (5, " max write ptr: %p\n", (void *) dev->read_buffer->max_writeptr);
DBG (5, " buffer size: %lu\n", (u_long) dev->read_buffer->size);
DBG (5, " line size: %lu\n", (u_long) dev->read_buffer->linesize);
DBG (5, " empty: %d\n", dev->read_buffer->empty);
@@ -5074,7 +5074,7 @@ sanei_lexmark_low_read_scan_data (SANE_Byte * data, SANE_Int size,
DBG (2, " Copying lines from buffer to data\n");
DBG (2, " bytes_remaining: %lu\n", (u_long) dev->bytes_remaining);
DBG (2, " bytes_in_buffer: %lu\n", (u_long) dev->bytes_in_buffer);
- DBG (2, " read_pointer: %p\n", dev->read_buffer->readptr);
+ DBG (2, " read_pointer: %p\n", (void *) dev->read_buffer->readptr);
DBG (2, " bytes_read %lu\n", (u_long) bytes_read);
/* if no more bytes to xfer and read buffer empty we're at the end */
@@ -5252,12 +5252,12 @@ read_buffer_bytes_available (Read_Buffer * rb)
if (rb->empty)
return rb->size;
- else if ((size_t) abs (rb->writeptr - rb->readptr) < rb->linesize)
- return 0; /* ptrs are less than one line apart */
else if (rb->writeptr < rb->readptr)
- return (rb->readptr - rb->writeptr - rb->linesize);
+ return (size_t)(rb->readptr - rb->writeptr) < rb->linesize ? 0 :
+ (size_t)(rb->readptr - rb->writeptr) - rb->linesize;
else
- return (rb->size + rb->readptr - rb->writeptr - rb->linesize);
+ return (size_t)(rb->writeptr - rb->readptr) < rb->linesize ? 0 :
+ rb->size - (size_t)(rb->writeptr - rb->readptr) - rb->linesize;
}
SANE_Status
diff --git a/backend/ma1509.c b/backend/ma1509.c
index 5966a17..f42541f 100644
--- a/backend/ma1509.c
+++ b/backend/ma1509.c
@@ -161,7 +161,7 @@ ma1509_cmd (Ma1509_Scanner * s, const SANE_Byte * cmd, SANE_Byte * data,
#define MA1509_READ_LIMIT (1024 * 256)
DBG (5, "ma1509_cmd: fd=%d, cmd=%p, data=%p, data_size=%ld\n",
- s->fd, cmd, data, (long int) (data_size ? *data_size : 0));
+ s->fd, (void *) cmd, (void *) data, (long int) (data_size ? *data_size : 0));
DBG (5, "ma1509_cmd: cmd = %02x %02x %02x %02x %02x %02x %02x %02x \n",
cmd[0], cmd[1], cmd[2], cmd[3], cmd[4], cmd[5], cmd[6], cmd[7]);
diff --git a/backend/magicolor.c b/backend/magicolor.c
index 8fc6d31..5278937 100644
--- a/backend/magicolor.c
+++ b/backend/magicolor.c
@@ -3001,7 +3001,7 @@ sane_read(SANE_Handle handle, SANE_Byte *data, SANE_Int max_length,
}
DBG(18, "moving data %p %p, %d (%d lines)\n",
- s->ptr, s->end,
+ (void *) s->ptr, (void *) s->end,
max_length, max_length / s->params.bytes_per_line);
mc_copy_image_data(s, data, max_length, length);
diff --git a/backend/microtek.c b/backend/microtek.c
index 17f3151..d9b0a6b 100644
--- a/backend/microtek.c
+++ b/backend/microtek.c
@@ -1502,14 +1502,10 @@ parse_inquiry(Microtek_Info *mi, unsigned char *result)
};
#endif
DBG(15, "parse_inquiry...\n");
- strncpy(mi->vendor_id, (char *)&result[8], 8);
- strncpy(mi->model_name, (char *)&result[16], 16);
- strncpy(mi->revision_num, (char *)&result[32], 4);
- strncpy(mi->vendor_string, (char *)&result[36], 20);
- mi->vendor_id[8] = 0;
- mi->model_name[16] = 0;
- mi->revision_num[4] = 0;
- mi->vendor_string[20] = 0;
+ snprintf(mi->vendor_id, 8 + 1, "%.*s", 8, (char *)&result[8]);
+ snprintf(mi->model_name, 16 + 1, "%.*s", 16, (char *)&result[16]);
+ snprintf(mi->revision_num, 4 + 1, "%.*s", 4, (char *)&result[32]);
+ snprintf(mi->vendor_string, 20 + 1, "%.*s", 20, (char *)&result[36]);
mi->device_type = (SANE_Byte)(result[0] & 0x1f);
mi->SCSI_firmware_ver_major = (SANE_Byte)((result[1] & 0xf0) >> 4);
@@ -1925,7 +1921,7 @@ static SANE_Status
dump_suspect_inquiry(unsigned char *result)
{
int i;
- char vendor_id[64], model_name[64], revision_num[16];
+ char vendor_id[9], model_name[17], revision_num[5];
SANE_Byte device_type, model_code;
SANE_Byte SCSI_firmware_ver_major, SCSI_firmware_ver_minor;
SANE_Byte scanner_firmware_ver_major, scanner_firmware_ver_minor;
@@ -1947,12 +1943,9 @@ dump_suspect_inquiry(unsigned char *result)
}
fprintf(stderr, "\n\n");
#endif
- strncpy(vendor_id, (char *)&result[8], 8);
- strncpy(model_name, (char *)&result[16], 16);
- strncpy(revision_num, (char *)&result[32], 4);
- vendor_id[8] = 0;
- model_name[16] = 0;
- revision_num[5] = 0;
+ snprintf(vendor_id, 8 + 1, "%.*s", 8, (char *)&result[8]);
+ snprintf(model_name, 16 + 1, "%.*s", 16, (char *)&result[16]);
+ snprintf(revision_num, 4 + 1, "%.*s", 4, (char *)&result[32]);
device_type = (SANE_Byte)(result[0] & 0x1f);
SCSI_firmware_ver_major = (SANE_Byte)((result[1] & 0xf0) >> 4);
SCSI_firmware_ver_minor = (SANE_Byte)(result[1] & 0x0f);
@@ -2356,7 +2349,8 @@ static SANE_Status do_real_calibrate(Microtek_Scanner *s)
input = calloc(STRIPS * 3 * linewidth, sizeof(input[0]));
combuff = calloc(linewidth + 6, sizeof(combuff[0]));
if ((input == NULL) || (combuff == NULL)) {
- DBG(23, "do_real_cal: bad calloc %p %p\n", input, combuff);
+ DBG(23, "do_real_cal: bad calloc %p %p\n",
+ (void *) input, (void *) combuff);
free(input);
free(combuff);
return SANE_STATUS_NO_MEM;
@@ -2370,7 +2364,7 @@ static SANE_Status do_real_calibrate(Microtek_Scanner *s)
ntoget = (nleft > nmax) ? nmax : nleft;
buffsize = ntoget * 3 * linewidth;
DBG(23, "...nleft %d toget %d size %lu spot %d input+spot %p\n",
- nleft, ntoget, (u_long) buffsize, spot, input+spot);
+ nleft, ntoget, (u_long) buffsize, spot, (void *) (input+spot));
if ((statusA = read_scan_data(s, ntoget, input+spot, &buffsize))
!= SANE_STATUS_GOOD) {
DBG(23, "...read scan failed\n");
@@ -3060,7 +3054,7 @@ sane_init(SANE_Int *version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize;
+ (void) authorize;
DBG_INIT();
DBG(1, "sane_init: MICROTEK says hello! (v%d.%d.%d)\n",
MICROTEK_MAJOR, MICROTEK_MINOR, MICROTEK_PATCH);
@@ -3111,7 +3105,7 @@ sane_get_devices(const SANE_Device ***device_list,
Microtek_Device *dev;
int i;
- local_only = local_only;
+ (void) local_only;
DBG(10, "sane_get_devices\n");
/* we keep an internal copy */
if (devlist)
@@ -4166,7 +4160,7 @@ SANE_Status
sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
DBG(10, "sane_set_io_mode...\n");
- handle = handle;
+ (void) handle;
if (non_blocking)
return SANE_STATUS_UNSUPPORTED;
else
@@ -4182,6 +4176,6 @@ SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
DBG(10, "sane_get_select_fd...\n");
- handle = handle, fd = fd;
+ (void) handle, (void) fd;
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/microtek2.c b/backend/microtek2.c
index 505e86b..cc14488 100644
--- a/backend/microtek2.c
+++ b/backend/microtek2.c
@@ -195,7 +195,7 @@ sane_exit (void)
if ( md_first_dev->shading_table_w )
{
DBG(100, "free md_first_dev->shading_table_w at %p\n",
- md_first_dev->shading_table_w);
+ (void *) md_first_dev->shading_table_w);
free((void *) md_first_dev->shading_table_w);
md_first_dev->shading_table_w = NULL;
}
@@ -203,7 +203,7 @@ sane_exit (void)
if ( md_first_dev->shading_table_d )
{
DBG(100, "free md_first_dev->shading_table_d at %p\n",
- md_first_dev->shading_table_d);
+ (void *) md_first_dev->shading_table_d);
free((void *) md_first_dev->shading_table_d);
md_first_dev->shading_table_d = NULL;
}
@@ -599,7 +599,8 @@ sane_read(SANE_Handle handle, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *len )
ssize_t nread;
- DBG(30, "sane_read: handle=%p, buf=%p, maxlen=%d\n", handle, buf, maxlen);
+ DBG(30, "sane_read: handle=%p, buf=%p, maxlen=%d\n",
+ handle, (void *) buf, maxlen);
*len = 0;
@@ -742,7 +743,7 @@ add_device_list(SANE_String_Const dev_name, Microtek2_Device **mdev)
md->opts = md_options;
++md_num_devices;
*mdev = md;
- DBG(100, "free hdev at %p\n", hdev);
+ DBG(100, "free hdev at %p\n", (void *) hdev);
free(hdev);
return SANE_STATUS_GOOD;
@@ -1360,53 +1361,56 @@ cleanup_scanner(Microtek2_Scanner *ms)
/* free buffers */
if ( ms->buf.src_buffer[0] )
{
- DBG(100, "free ms->buf.src_buffer[0] at %p\n", ms->buf.src_buffer[0]);
+ DBG(100, "free ms->buf.src_buffer[0] at %p\n",
+ (void *) ms->buf.src_buffer[0]);
free((void *) ms->buf.src_buffer[0]);
ms->buf.src_buffer[0] = NULL;
ms->buf.src_buf = NULL;
}
if ( ms->buf.src_buffer[1] )
{
- DBG(100, "free ms->buf.src_buffer[1] at %p\n", ms->buf.src_buffer[1]);
+ DBG(100, "free ms->buf.src_buffer[1] at %p\n",
+ (void *) ms->buf.src_buffer[1]);
free((void *) ms->buf.src_buffer[1]);
ms->buf.src_buffer[1] = NULL;
ms->buf.src_buf = NULL;
}
if ( ms->buf.src_buf )
{
- DBG(100, "free ms->buf.src_buf at %p\n", ms->buf.src_buf);
+ DBG(100, "free ms->buf.src_buf at %p\n", (void *) ms->buf.src_buf);
free((void *) ms->buf.src_buf);
ms->buf.src_buf = NULL;
}
if ( ms->temporary_buffer )
{
- DBG(100, "free ms->temporary_buffer at %p\n", ms->temporary_buffer);
+ DBG(100, "free ms->temporary_buffer at %p\n",
+ (void *) ms->temporary_buffer);
free((void *) ms->temporary_buffer);
ms->temporary_buffer = NULL;
}
if ( ms->gamma_table )
{
- DBG(100, "free ms->gamma_table at %p\n", ms->gamma_table);
+ DBG(100, "free ms->gamma_table at %p\n", (void *) ms->gamma_table);
free((void *) ms->gamma_table);
ms->gamma_table = NULL;
}
if ( ms->control_bytes )
{
- DBG(100, "free ms->control_bytes at %p\n", ms->control_bytes);
+ DBG(100, "free ms->control_bytes at %p\n", (void *) ms->control_bytes);
free((void *) ms->control_bytes);
ms->control_bytes = NULL;
}
if ( ms->condensed_shading_w )
{
DBG(100, "free ms->condensed_shading_w at %p\n",
- ms->condensed_shading_w);
+ (void *) ms->condensed_shading_w);
free((void *) ms->condensed_shading_w);
ms->condensed_shading_w = NULL;
}
if ( ms->condensed_shading_d )
{
DBG(100, "free ms->condensed_shading_d at %p\n",
- ms->condensed_shading_d);
+ (void *) ms->condensed_shading_d);
free((void *) ms->condensed_shading_d);
ms->condensed_shading_d = NULL;
}
@@ -3901,8 +3905,8 @@ get_scan_parameters(Microtek2_Scanner *ms)
if ( y2_dots >= mi->geo_height )
y2_dots = mi->geo_height - 1;
ms->width_dots = x2_dots - ms->x1_dots;
- if ( md->model_flags && MD_OFFSET_2 ) /* this firmware has problems with */
- if ( ( ms->width_dots % 2 ) == 1 ) /* odd pixel numbers */
+ if ( md->model_flags & MD_OFFSET_2 ) /* this firmware has problems with */
+ if ( ( ms->width_dots % 2 ) == 1 ) /* odd pixel numbers */
ms->width_dots -= 1;
if ( ms->width_dots < 10 )
ms->width_dots = 10;
@@ -4201,7 +4205,8 @@ scsi_send_gamma(Microtek2_Scanner *ms)
DBG(30, "scsi_send_gamma: pos=%p, size=%d, word=%d, color=%d\n",
- ms->gamma_table, ms->lut_size_bytes, ms->word, ms->current_color);
+ (void *) ms->gamma_table, ms->lut_size_bytes, ms->word,
+ ms->current_color);
if ( ( 3 * ms->lut_size_bytes ) <= 0xffff ) /*send Gamma with one command*/
{
@@ -4465,7 +4470,7 @@ scsi_read_control_bits(Microtek2_Scanner *ms)
int count_1s;
DBG(30, "scsi_read_control_bits: ms=%p, fd=%d\n", (void *) ms, ms->sfd);
- DBG(30, "ms->control_bytes = %p\n", ms->control_bytes);
+ DBG(30, "ms->control_bytes = %p\n", (void *) ms->control_bytes);
RCB_SET_CMD(cmd);
RCB_SET_LENGTH(cmd, ms->n_control_bytes);
@@ -4520,7 +4525,7 @@ scsi_set_window(Microtek2_Scanner *ms, int n) { /* n windows, not yet */
size = SW_CMD_L + SW_HEADER_L + n * SW_BODY_L;
setwindow = (uint8_t *) malloc(size);
DBG(100, "scsi_set_window: setwindow= %p, malloc'd %d Bytes\n",
- setwindow, size);
+ (void *) setwindow, size);
if ( setwindow == NULL )
{
DBG(1, "scsi_set_window: malloc for setwindow failed\n");
@@ -4592,7 +4597,7 @@ scsi_set_window(Microtek2_Scanner *ms, int n) { /* n windows, not yet */
if ( status != SANE_STATUS_GOOD )
DBG(1, "scsi_set_window: '%s'\n", sane_strstatus(status));
- DBG(100, "scsi_set_window: free setwindow at %p\n", setwindow);
+ DBG(100, "scsi_set_window: free setwindow at %p\n", (void *) setwindow);
free((void *) setwindow);
return status;
}
@@ -4665,7 +4670,8 @@ scsi_read_image(Microtek2_Scanner *ms, uint8_t *buffer, int bytes_per_pixel)
uint8_t tmp;
- DBG(30, "scsi_read_image: ms=%p, buffer=%p\n", (void *) ms, buffer);
+ DBG(30, "scsi_read_image: ms=%p, buffer=%p\n",
+ (void *) ms, (void *) buffer);
ENDIAN_TYPE(endiantype)
RI_SET_CMD(cmd);
@@ -4790,7 +4796,7 @@ scsi_read_shading(Microtek2_Scanner *ms, uint8_t *buffer, uint32_t length)
size_t size;
DBG(30, "scsi_read_shading: pos=%p, size=%d, word=%d, color=%d, dark=%d\n",
- buffer, length, ms->word, ms->current_color, ms->dark);
+ (void *) buffer, length, ms->word, ms->current_color, ms->dark);
size = length;
@@ -4807,7 +4813,8 @@ scsi_read_shading(Microtek2_Scanner *ms, uint8_t *buffer, uint32_t length)
DBG(100, "scsi_read_shading: sfd=%d, cmd=%p, sizeofcmd=%lu,"
"dest=%p, destsize=%lu\n",
- ms->sfd, cmd, (u_long) sizeof(cmd), buffer, (u_long) size);
+ ms->sfd, (void *) cmd, (u_long) sizeof(cmd), (void *) buffer,
+ (u_long) size);
status = sanei_scsi_cmd(ms->sfd, cmd, sizeof(cmd), buffer, &size);
if ( status != SANE_STATUS_GOOD )
@@ -4837,12 +4844,11 @@ scsi_send_shading(Microtek2_Scanner *ms,
DBG(30, "scsi_send_shading: pos=%p, size=%d, word=%d, color=%d, dark=%d\n",
- shading_data, length, ms->word, ms->current_color,
- dark);
+ (void *) shading_data, length, ms->word, ms->current_color, dark);
cmd = (uint8_t *) malloc(SSI_CMD_L + length);
DBG(100, "scsi_send_shading: cmd=%p, malloc'd %d bytes\n",
- cmd, SSI_CMD_L + length);
+ (void *) cmd, SSI_CMD_L + length);
if ( cmd == NULL )
{
DBG(1, "scsi_send_shading: Couldn't get buffer for shading table\n");
@@ -4868,7 +4874,7 @@ scsi_send_shading(Microtek2_Scanner *ms,
if ( status != SANE_STATUS_GOOD )
DBG(1, "scsi_send_shading: '%s'\n", sane_strstatus(status));
- DBG(100, "free cmd at %p\n", cmd);
+ DBG(100, "free cmd at %p\n", (void *) cmd);
free((void *) cmd);
return status;
@@ -5070,7 +5076,8 @@ scsi_sense_handler (int fd, u_char *sense, void *arg)
uint8_t ascq;
- DBG(30, "scsi_sense_handler: fd=%d, sense=%p arg=%p\n",fd, sense, arg);
+ DBG(30, "scsi_sense_handler: fd=%d, sense=%p arg=%p\n",
+ fd, (void *) sense, arg);
dump_area(sense, RQS_LENGTH(sense), "SenseBuffer");
@@ -5264,7 +5271,7 @@ sane_start(SANE_Handle handle)
if (ms->control_bytes) free((void *)ms->control_bytes);
ms->control_bytes = (uint8_t *) malloc(ms->n_control_bytes);
DBG(100, "sane_start: ms->control_bytes=%p, malloc'd %lu bytes\n",
- ms->control_bytes, (u_long) ms->n_control_bytes);
+ (void *) ms->control_bytes, (u_long) ms->n_control_bytes);
if ( ms->control_bytes == NULL )
{
DBG(1, "sane_start: malloc() for control bits failed\n");
@@ -5373,7 +5380,7 @@ sane_start(SANE_Handle handle)
ms->gamma_table = (uint8_t *) malloc(3 * ms->lut_size_bytes );
DBG(100, "sane_start: ms->gamma_table=%p, malloc'd %d bytes\n",
- ms->gamma_table, 3 * ms->lut_size_bytes);
+ (void *) ms->gamma_table, 3 * ms->lut_size_bytes);
if ( ms->gamma_table == NULL )
{
DBG(1, "sane_start: malloc for gammatable failed\n");
@@ -5559,7 +5566,7 @@ prepare_buffers(Microtek2_Scanner *ms)
ms->buf.src_buffer[i] = (uint8_t *) malloc(ms->src_buffer_size
+ extra_buf_size);
DBG(100, "prepare_buffers: ms->buf.src_buffer[%d]=%p,"
- "malloc'd %d bytes\n", i, ms->buf.src_buffer[i],
+ "malloc'd %d bytes\n", i, (void *) ms->buf.src_buffer[i],
ms->src_buffer_size + extra_buf_size);
if ( ms->buf.src_buffer[i] == NULL )
{
@@ -5579,7 +5586,7 @@ prepare_buffers(Microtek2_Scanner *ms)
free((void *) ms->buf.src_buf);
ms->buf.src_buf = malloc(ms->src_buffer_size);
DBG(100, "sane_start: ms->buf.src_buf=%p, malloc'd %d bytes\n",
- ms->buf.src_buf, ms->src_buffer_size);
+ (void *) ms->buf.src_buf, ms->src_buffer_size);
if ( ms->buf.src_buf == NULL )
{
DBG(1, "sane_start: malloc for scan buffer failed\n");
@@ -5602,7 +5609,7 @@ prepare_buffers(Microtek2_Scanner *ms)
{
ms->temporary_buffer = (uint8_t *) malloc(ms->remaining_bytes);
DBG(100, "sane_start: ms->temporary_buffer=%p, malloc'd %d bytes\n",
- ms->temporary_buffer, ms->remaining_bytes);
+ (void *) ms->temporary_buffer, ms->remaining_bytes);
if ( ms->temporary_buffer == NULL )
{
DBG(1, "sane_start: malloc() for temporary buffer failed\n");
@@ -5918,7 +5925,8 @@ condense_shading(Microtek2_Scanner *ms)
}
ms->condensed_shading_w = (uint8_t *)malloc(cond_length);
DBG(100, "condense_shading: ms->condensed_shading_w=%p,"
- "malloc'd %d bytes\n", ms->condensed_shading_w, cond_length);
+ "malloc'd %d bytes\n",
+ (void *) ms->condensed_shading_w, cond_length);
if ( ms->condensed_shading_w == NULL )
{
DBG(1, "condense_shading: malloc for white table failed\n");
@@ -5938,7 +5946,8 @@ condense_shading(Microtek2_Scanner *ms)
}
ms->condensed_shading_d = (uint8_t *)malloc(cond_length);
DBG(100, "condense_shading: ms->condensed_shading_d=%p,"
- " malloc'd %d bytes\n", ms->condensed_shading_d, cond_length);
+ " malloc'd %d bytes\n",
+ (void *) ms->condensed_shading_d, cond_length);
if ( ms->condensed_shading_d == NULL )
{
DBG(1, "condense_shading: malloc for dark table failed\n");
@@ -6100,7 +6109,8 @@ read_shading_image(Microtek2_Scanner *ms)
ms->shading_image = malloc(ms->bpl * ms->src_remaining_lines);
DBG(100, "read shading image: ms->shading_image=%p,"
" malloc'd %d bytes\n",
- ms->shading_image, ms->bpl * ms->src_remaining_lines);
+ (void *) ms->shading_image,
+ ms->bpl * ms->src_remaining_lines);
if ( ms->shading_image == NULL )
{
DBG(1, "read_shading_image: malloc for buffer failed\n");
@@ -6166,7 +6176,7 @@ read_shading_image(Microtek2_Scanner *ms)
}
DBG(100, "free memory for ms->shading_image at %p\n",
- ms->shading_image);
+ (void *) ms->shading_image);
free((void *) ms->shading_image);
ms->shading_image = NULL;
}
@@ -6241,7 +6251,7 @@ read_shading_image(Microtek2_Scanner *ms)
ms->shading_image = malloc(ms->bpl * ms->src_remaining_lines);
DBG(100, "read shading image: ms->shading_image=%p, malloc'd %d bytes\n",
- ms->shading_image, ms->bpl * ms->src_remaining_lines);
+ (void *) ms->shading_image, ms->bpl * ms->src_remaining_lines);
if ( ms->shading_image == NULL )
{
DBG(1, "read_shading_image: malloc for buffer failed\n");
@@ -6328,7 +6338,7 @@ read_shading_image(Microtek2_Scanner *ms)
return status;
DBG(100, "free memory for ms->shading_image at %p\n",
- ms->shading_image);
+ (void *) ms->shading_image);
free((void *) ms->shading_image);
ms->shading_image = NULL;
@@ -6360,7 +6370,7 @@ prepare_shading_data(Microtek2_Scanner *ms, uint32_t lines, uint8_t **data)
#endif
DBG(30, "prepare_shading_data: ms=%p, lines=%d, *data=%p\n",
- (void *) ms, lines, *data);
+ (void *) ms, lines, (void *) *data);
md = ms->dev;
mi = &md->info[md->scan_source];
@@ -6373,7 +6383,7 @@ prepare_shading_data(Microtek2_Scanner *ms, uint32_t lines, uint8_t **data)
{
*data = (uint8_t *) malloc(length);
DBG(100, "prepare_shading_data: malloc'd %d bytes at %p\n",
- length, *data);
+ length, (void *) *data);
if ( *data == NULL )
{
DBG(1, "prepare_shading_data: malloc for shading table failed\n");
@@ -6597,7 +6607,7 @@ read_cx_shading_image(Microtek2_Scanner *ms)
}
ms->shading_image = malloc(shading_bytes);
DBG(100, "read_cx_shading: ms->shading_image=%p, malloc'd %d bytes\n",
- ms->shading_image, shading_bytes);
+ (void *) ms->shading_image, shading_bytes);
if ( ms->shading_image == NULL )
{
DBG(1, "read_cx_shading: malloc for cx_shading buffer failed\n");
@@ -6642,7 +6652,7 @@ read_cx_shading_image(Microtek2_Scanner *ms)
if ( ms->shading_image )
{
DBG(100, "free memory for ms->shading_image at %p\n",
- ms->shading_image);
+ (void *) ms->shading_image);
free((void *) ms->shading_image);
ms->shading_image = NULL;
}
@@ -6694,7 +6704,7 @@ calc_cx_shading_line(Microtek2_Scanner *ms)
free( (void *)md->shading_table_w );
md->shading_table_w = (uint8_t *) malloc(shading_line_bytes);
DBG(100, "calc_cx_shading: md->shading_table_w=%p, malloc'd %d bytes\n",
- md->shading_table_w, shading_line_bytes);
+ (void *) md->shading_table_w, shading_line_bytes);
if ( md->shading_table_w == NULL )
{
DBG(100, "calc_cx_shading: malloc for white shadingtable failed\n");
@@ -6711,7 +6721,7 @@ calc_cx_shading_line(Microtek2_Scanner *ms)
free( (void *)md->shading_table_d);
md->shading_table_d = (uint8_t *) malloc(shading_line_bytes);
DBG(100, "calc_cx_shading: md->shading_table_d=%p, malloc'd %d bytes\n",
- md->shading_table_d, shading_line_bytes);
+ (void *) md->shading_table_d, shading_line_bytes);
if ( md->shading_table_d == NULL )
{
@@ -6729,8 +6739,9 @@ calc_cx_shading_line(Microtek2_Scanner *ms)
"shading_line_bytes=%d\n"
"shading_line_pixels=%d\n"
"shading_table_pointer=%p\n",
- (void *) ms, md->shading_table_w, md->shading_table_d,
- shading_line_bytes, shading_line_pixels, shading_table_pointer);
+ (void *) ms, (void *) md->shading_table_w,
+ (void *) md->shading_table_d, shading_line_bytes,
+ shading_line_pixels, (void *) shading_table_pointer);
/* calculating the median pixel values over the shading lines */
/* and write them to the shading table */
@@ -6862,7 +6873,7 @@ calculate_gamma(Microtek2_Scanner *ms, uint8_t *pos, int color, char *mode)
DBG(30, "calculate_gamma: ms=%p, pos=%p, color=%d, mode=%s\n",
- (void *) ms, pos, color, mode);
+ (void *) ms, (void *) pos, color, mode);
md = ms->dev;
mi = &md->info[md->scan_source];
@@ -6980,7 +6991,7 @@ shading_function(Microtek2_Scanner *ms, uint8_t *data)
int i;
- DBG(40, "shading_function: ms=%p, data=%p\n", (void *) ms, data);
+ DBG(40, "shading_function: ms=%p, data=%p\n", (void *) ms, (void *) data);
md = ms->dev;
mi = &md->info[md->scan_source];
@@ -7174,8 +7185,9 @@ reader_process(void *data)
ms->transfer_length = ms->src_lines_to_read * ms->bpl;
DBG(30, "reader_process: transferlength=%d, lines=%d, linelength=%d, "
- "real_bpl=%d, srcbuf=%p\n", ms->transfer_length,
- ms->src_lines_to_read, ms->bpl, ms->real_bpl, ms->buf.src_buf);
+ "real_bpl=%d, srcbuf=%p\n",
+ ms->transfer_length, ms->src_lines_to_read, ms->bpl,
+ ms->real_bpl, (void *) ms->buf.src_buf);
sigprocmask (SIG_BLOCK, &sigterm_set, 0);
status = scsi_read_image(ms, ms->buf.src_buf, (ms->depth > 8) ? 2 : 1);
@@ -7333,7 +7345,7 @@ chunky_copy_pixels(Microtek2_Scanner *ms, uint8_t *from)
int color;
DBG(30, "chunky_copy_pixels: from=%p, pixels=%d, fp=%p, depth=%d\n",
- from, ms->ppl, (void *) ms->fp, ms->depth);
+ (void *) from, ms->ppl, (void *) ms->fp, ms->depth);
md = ms->dev;
if ( ms->depth > 8 )
@@ -7512,7 +7524,7 @@ segreg_proc_data(Microtek2_Scanner *ms)
}
DBG(30, "segreg_proc_data: src_buf=%p, free_lines=%d\n",
- ms->buf.src_buf, ms->buf.free_lines);
+ (void *) ms->buf.src_buf, ms->buf.free_lines);
return SANE_STATUS_GOOD;
}
@@ -7881,7 +7893,7 @@ wordchunky_copy_pixels(uint8_t *from, uint32_t pixels, int depth, FILE *fp)
int color;
DBG(30, "wordchunky_copy_pixels: from=%p, pixels=%d, depth=%d\n",
- from, pixels, depth);
+ (void *) from, pixels, depth);
if ( depth > 8 )
{
@@ -7993,7 +8005,7 @@ gray_copy_pixels(Microtek2_Scanner *ms,
float s_w, s_d, shading_factor = 0;
DBG(30, "gray_copy_pixels: pixels=%d, from=%p, fp=%p, depth=%d\n",
- ms->ppl, from, (void *) ms->fp, ms->depth);
+ ms->ppl, (void *) from, (void *) ms->fp, ms->depth);
md = ms->dev;
step = right_to_left == 1 ? -1 : 1;
@@ -8228,7 +8240,7 @@ lineartfake_copy_pixels(Microtek2_Scanner *ms,
DBG(30, "lineartfake_copy_pixels: from=%p,pixels=%d,threshold=%d,file=%p\n",
- from, pixels, threshold, (void *) fp);
+ (void *) from, pixels, threshold, (void *) fp);
md = ms->dev;
bit = 0;
dest = 0;
@@ -8302,7 +8314,7 @@ auto_adjust_proc_data(Microtek2_Scanner *ms, uint8_t **temp_current)
DBG(30, "auto_adjust_proc_data: ms=%p, temp_current=%p\n",
- (void *) ms, *temp_current);
+ (void *) ms, (void *) *temp_current);
md = ms->dev;
mi = &md->info[md->scan_source];
diff --git a/backend/microtek2.h b/backend/microtek2.h
index 3cd1365..e3bc493 100644
--- a/backend/microtek2.h
+++ b/backend/microtek2.h
@@ -827,7 +827,7 @@ typedef struct Microtek2_Info {
SANE_Byte nlens;
SANE_Byte nwindows;
SANE_Byte shtrnsferequ;
-#define MI_WHITE_SHADING_ONLY(x) ((x) & 0x20) == 0
+#define MI_WHITE_SHADING_ONLY(x) (((x) & 0x20) == 0)
#define MI_HAS_SCNBTTN SANE_TRUE
SANE_Bool scnbuttn;
#define MI_HAS_PIPOBUF SANE_TRUE
diff --git a/backend/mustek.c b/backend/mustek.c
index 4d77fb5..bad118a 100644
--- a/backend/mustek.c
+++ b/backend/mustek.c
@@ -198,15 +198,6 @@ static const SANE_Byte scsi_inquiry[] = {
static const SANE_Byte scsi_test_unit_ready[] = {
MUSTEK_SCSI_TEST_UNIT_READY, 0x00, 0x00, 0x00, 0x00, 0x00
};
-/* Remove #ifdef and this comment when this SCSI command is used for
- something. Keeping this definition around so we don't loose info
- about the protocol.
- */
-#ifdef ENABLE_MUSTEK_SCSI_AREA_AND_WINDOWS
-static const SANE_Byte scsi_area_and_windows[] = {
- MUSTEK_SCSI_AREA_AND_WINDOWS, 0x00, 0x00, 0x00, 0x09, 0x00
-};
-#endif
static const SANE_Byte scsi_request_sense[] = {
MUSTEK_SCSI_REQUEST_SENSE, 0x00, 0x00, 0x00, 0x04, 0x00
};
@@ -219,28 +210,16 @@ static const SANE_Byte scsi_ccd_distance[] = {
static const SANE_Byte scsi_get_image_status[] = {
MUSTEK_SCSI_GET_IMAGE_STATUS, 0x00, 0x00, 0x00, 0x06, 0x00
};
-static const SANE_Byte scsi_set_window[] = {
- MUSTEK_SCSI_SET_WINDOW, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00
-};
static const SANE_Byte scsi_get_window[] = {
MUSTEK_SCSI_GET_WINDOW, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00
};
-static const SANE_Byte scsi_read_data[] = {
- MUSTEK_SCSI_READ_DATA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-static const SANE_Byte scsi_send_data[] = {
- MUSTEK_SCSI_SEND_DATA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-/* Remove #ifdef and this comment when this SCSI command is used for
- something. Keeping this definition around so we don't loose info
- about the protocol.
- */
-#ifdef ENABLE_MUSTEK_SCSI_LOOKUP_TABLE
-static const SANE_Byte scsi_lookup_table[] = {
- MUSTEK_SCSI_LOOKUP_TABLE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00
-};
-#endif
+
+/* Sizes for fixed-length, non-vendor-specific CDB formats (others are 0) */
+#define CDB_SIZE(opcode) ((opcode) < 0x20 ? 6 : \
+ (opcode) < 0x60 ? 10 : \
+ (opcode) < 0x80 ? 0 : \
+ (opcode) < 0xa0 ? 16 : \
+ (opcode) < 0xc0 ? 12 : 0)
/* prototypes */
static SANE_Status area_and_windows (Mustek_Scanner * s);
@@ -1994,7 +1973,7 @@ set_window_se (Mustek_Scanner * s, SANE_Int lamp)
/* setup SCSI command (except length): */
memset (cmd, 0, sizeof (cmd));
cmd[0] = MUSTEK_SCSI_SET_WINDOW;
- cp = cmd + sizeof (scsi_set_window); /* skip command block */
+ cp = cmd + CDB_SIZE (MUSTEK_SCSI_SET_WINDOW); /* skip command block */
if (s->mode & MUSTEK_MODE_COLOR)
{
@@ -2093,7 +2072,7 @@ set_window_se (Mustek_Scanner * s, SANE_Int lamp)
*cp++ = 0;
cp += 5; /* skip reserved bytes */
- cmd[8] = cp - cmd - sizeof (scsi_set_window);
+ cmd[8] = cp - cmd - CDB_SIZE (MUSTEK_SCSI_SET_WINDOW);
return dev_cmd (s, cmd, (cp - cmd), 0, 0);
}
@@ -2111,7 +2090,7 @@ set_window_pro (Mustek_Scanner * s)
else
cmd[8] = 0x0a;
- cp = cmd + sizeof (scsi_set_window); /* skip command block */
+ cp = cmd + CDB_SIZE (MUSTEK_SCSI_SET_WINDOW); /* skip command block */
*cp++ = 0; /* what's this? */
pixels_per_mm = SANE_UNFIX (s->hw->dpi_range.max) / MM_PER_INCH;
@@ -2174,7 +2153,7 @@ get_calibration_lines_pro (Mustek_Scanner * s)
for (line = 0; line < s->hw->cal.lines; line++)
{
- status = dev_cmd (s, cmd, sizeof (scsi_read_data),
+ status = dev_cmd (s, cmd, CDB_SIZE (MUSTEK_SCSI_READ_DATA),
s->hw->cal.buffer + line * len, &len);
if ((status != SANE_STATUS_GOOD)
@@ -2199,17 +2178,17 @@ send_calibration_lines_pro (Mustek_Scanner * s)
DBG (5, "send_calibration_lines_pro\n");
buf_size = s->hw->cal.bytes / 2;
- cmd1 = (SANE_Byte *) malloc (buf_size + sizeof (scsi_send_data));
- cmd2 = (SANE_Byte *) malloc (buf_size + sizeof (scsi_send_data));
+ cmd1 = (SANE_Byte *) malloc (buf_size + CDB_SIZE (MUSTEK_SCSI_SEND_DATA));
+ cmd2 = (SANE_Byte *) malloc (buf_size + CDB_SIZE (MUSTEK_SCSI_SEND_DATA));
if (!cmd1 || !cmd2)
{
- DBG (1, "send_calibration_lines_pro: failed to malloc %ld bytes for "
+ DBG (1, "send_calibration_lines_pro: failed to malloc %zu bytes for "
"sending lines\n",
- (long int) (buf_size + sizeof (scsi_send_data)));
+ buf_size + CDB_SIZE (MUSTEK_SCSI_SEND_DATA));
return SANE_STATUS_NO_MEM;
}
- memset (cmd1, 0, sizeof (scsi_send_data));
- memset (cmd2, 0, sizeof (scsi_send_data));
+ memset (cmd1, 0, CDB_SIZE (MUSTEK_SCSI_SEND_DATA));
+ memset (cmd2, 0, CDB_SIZE (MUSTEK_SCSI_SEND_DATA));
cmd1[0] = cmd2[0] = MUSTEK_SCSI_SEND_DATA;
cmd1[6] = cmd2[6] = (buf_size >> 16) & 0xff;
@@ -2236,21 +2215,21 @@ send_calibration_lines_pro (Mustek_Scanner * s)
calibration_word = (1024 * 65536 / calibration_word) - 1024;
if (calibration_word > 1023)
calibration_word = 1023;
- *(cmd1 + sizeof (scsi_send_data) + (buf_size / 3) * color + column)
- = calibration_word & 0xff;
- *(cmd2 + sizeof (scsi_send_data) + (buf_size / 3) * color + column)
- = (calibration_word >> 8) & 0xff;
+ *(cmd1 + CDB_SIZE (MUSTEK_SCSI_SEND_DATA) + (buf_size / 3) * color
+ + column) = calibration_word & 0xff;
+ *(cmd2 + CDB_SIZE (MUSTEK_SCSI_SEND_DATA) + (buf_size / 3) * color
+ + column) = (calibration_word >> 8) & 0xff;
}
}
- status = dev_cmd (s, cmd1, buf_size + sizeof (scsi_send_data), 0, 0);
+ status = dev_cmd (s, cmd1, buf_size + CDB_SIZE (MUSTEK_SCSI_SEND_DATA), 0, 0);
if (status != SANE_STATUS_GOOD)
{
DBG (1, "send_calibration_lines_pro: send failed\n");
return status;
}
- status = dev_cmd (s, cmd2, buf_size + sizeof (scsi_send_data), 0, 0);
+ status = dev_cmd (s, cmd2, buf_size + CDB_SIZE (MUSTEK_SCSI_SEND_DATA), 0, 0);
if (status != SANE_STATUS_GOOD)
{
DBG (1, "send_calibration_lines_pro: send failed\n");
@@ -2328,7 +2307,8 @@ get_calibration_lines_se (Mustek_Scanner * s)
cmd[7] = (lines >> 8) & 0xff;
cmd[8] = (lines >> 0) & 0xff;
len = lines * bytes_per_color;
- status = dev_cmd (s, cmd, sizeof (scsi_read_data), s->hw->cal.buffer, &len);
+ status = dev_cmd (s, cmd, CDB_SIZE (MUSTEK_SCSI_READ_DATA),
+ s->hw->cal.buffer, &len);
if ((status != SANE_STATUS_GOOD)
|| (len != (unsigned int) (lines * bytes_per_color)))
{
@@ -2361,15 +2341,15 @@ send_calibration_lines_se (Mustek_Scanner * s, SANE_Word color)
DBG (5, "send_calibration_lines_se: %d bytes, color: %d\n",
bytes_per_color, color + 1);
- cmd = (SANE_Byte *) malloc (buf_size + sizeof (scsi_send_data));
+ cmd = (SANE_Byte *) malloc (buf_size + CDB_SIZE (MUSTEK_SCSI_SEND_DATA));
if (!cmd)
{
- DBG (1, "send_calibration_lines_se: failed to malloc %ld bytes for "
+ DBG (1, "send_calibration_lines_se: failed to malloc %zu bytes for "
"sending lines\n",
- (long int) (buf_size + sizeof (scsi_send_data)));
+ buf_size + CDB_SIZE (MUSTEK_SCSI_SEND_DATA));
return SANE_STATUS_NO_MEM;
}
- memset (cmd, 0, sizeof (scsi_send_data));
+ memset (cmd, 0, CDB_SIZE (MUSTEK_SCSI_SEND_DATA));
for (column = 0; column < bytes_per_color; column++)
{
@@ -2386,7 +2366,7 @@ send_calibration_lines_se (Mustek_Scanner * s, SANE_Word color)
cali_word = 256 * s->hw->cal.lines * 255 / cali_word - 256;
if (cali_word > 255)
cali_word = 255;
- *(cmd + sizeof (scsi_send_data) + column) = cali_word;
+ *(cmd + CDB_SIZE (MUSTEK_SCSI_SEND_DATA) + column) = cali_word;
}
cmd[0] = MUSTEK_SCSI_SEND_DATA;
@@ -2395,7 +2375,7 @@ send_calibration_lines_se (Mustek_Scanner * s, SANE_Word color)
cmd[7] = (buf_size >> 8) & 0xff;
cmd[8] = (buf_size >> 0) & 0xff;
- status = dev_cmd (s, cmd, buf_size + sizeof (scsi_send_data), 0, 0);
+ status = dev_cmd (s, cmd, buf_size + CDB_SIZE (MUSTEK_SCSI_SEND_DATA), 0, 0);
if (status != SANE_STATUS_GOOD)
{
DBG (1, "send_calibration_lines_se: send failed\n");
@@ -2457,14 +2437,15 @@ send_gamma_table_se (Mustek_Scanner * s)
SANE_Int i, j;
# define CLIP(x) ((x) < 0 ? 0 : ((x) > 255 ? 255 : (x)))
- memset (gamma, 0, sizeof (scsi_send_data));
+ memset (gamma, 0, CDB_SIZE (MUSTEK_SCSI_SEND_DATA));
gamma[0] = MUSTEK_SCSI_SEND_DATA;
gamma[2] = 0x03; /* indicates gamma table */
if ((s->mode & MUSTEK_MODE_GRAY) || (s->mode & MUSTEK_MODE_COLOR))
{
- if (s->hw->gamma_length + sizeof (scsi_send_data) > sizeof (gamma))
+ if ((size_t) s->hw->gamma_length + CDB_SIZE (MUSTEK_SCSI_SEND_DATA)
+ > sizeof (gamma))
return SANE_STATUS_NO_MEM;
gamma[7] = (s->hw->gamma_length >> 8) & 0xff;
gamma[8] = (s->hw->gamma_length >> 0) & 0xff;
@@ -2491,7 +2472,7 @@ send_gamma_table_se (Mustek_Scanner * s)
val_a = MAX (2 * val_b - val_a, 0);
/* Interpolate first entries from 256 entry table */
- cp = gamma + sizeof (scsi_send_data);
+ cp = gamma + CDB_SIZE (MUSTEK_SCSI_SEND_DATA);
for (j = 0; j < factor; j++)
*cp++ = CLIP (((factor - j) * val_a + j * val_b
+ factor / 2) / factor);
@@ -2518,7 +2499,7 @@ send_gamma_table_se (Mustek_Scanner * s)
DBG (5, "send_gamma_table_se: sending table for color %d\n",
gamma[6]);
- status = dev_cmd (s, gamma, sizeof (scsi_send_data)
+ status = dev_cmd (s, gamma, CDB_SIZE (MUSTEK_SCSI_SEND_DATA)
+ s->hw->gamma_length, 0, 0);
++color;
}
@@ -2535,7 +2516,7 @@ send_gamma_table_se (Mustek_Scanner * s)
DBG (5, "send_gamma_table_se: sending lineart threshold %2X\n",
gamma[8]);
- return dev_cmd (s, gamma, sizeof (scsi_send_data), 0, 0);
+ return dev_cmd (s, gamma, CDB_SIZE (MUSTEK_SCSI_SEND_DATA), 0, 0);
}
}
@@ -4656,7 +4637,7 @@ output_data (Mustek_Scanner * s, FILE * fp,
SANE_Int y, num_lines;
DBG (5, "output_data: data=%p, lpb=%d, bpl=%d, extra=%p\n",
- data, lines_per_buffer, bpl, extra);
+ (void *) data, lines_per_buffer, bpl, (void *) extra);
/* convert to pixel-interleaved format: */
if ((s->mode & MUSTEK_MODE_COLOR)
diff --git a/backend/mustek_usb2.c b/backend/mustek_usb2.c
index 9faeff6..cb511b9 100644
--- a/backend/mustek_usb2.c
+++ b/backend/mustek_usb2.c
@@ -1165,12 +1165,12 @@ IsTAConnected ()
DBG (DBG_FUNC, "StopScan: start\n");
- if (Asic_Open (&g_chip, g_pDeviceFile) != STATUS_GOOD)
+ if (Asic_Open (&g_chip, g_pDeviceFile) != SANE_STATUS_GOOD)
{
return FALSE;
}
- if (Asic_IsTAConnected (&g_chip, &hasTA) != STATUS_GOOD)
+ if (Asic_IsTAConnected (&g_chip, &hasTA) != SANE_STATUS_GOOD)
{
Asic_Close (&g_chip);
return FALSE;
@@ -1199,16 +1199,16 @@ static SANE_Bool
GetKeyStatus (SANE_Byte * pKey)
{
SANE_Byte pKeyTemp = 0x00;
- STATUS status = Asic_CheckFunctionKey (&g_chip, &pKeyTemp);
+ SANE_Status status = Asic_CheckFunctionKey (&g_chip, &pKeyTemp);
DBG (DBG_FUNC, "GetKeyStatus: start\n");
- if (STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
+ if (SANE_STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
{
DBG (DBG_ERR, "GetKeyStatus: Asic_Open is fail\n");
return FALSE;
}
- if (STATUS_GOOD != status)
+ if (SANE_STATUS_GOOD != status)
{
DBG (DBG_ERR, "GetKeyStatus: Asic_CheckFunctionKey is fail\n");
return FALSE;
@@ -1236,7 +1236,7 @@ GetKeyStatus (SANE_Byte * pKey)
*pKey = 0x05; /*Panel key pressed */
}
- if (STATUS_GOOD != Asic_Close (&g_chip))
+ if (SANE_STATUS_GOOD != Asic_Close (&g_chip))
{
DBG (DBG_ERR, "GetKeyStatus: Asic_Close is fail\n");
return FALSE;
diff --git a/backend/mustek_usb2_asic.c b/backend/mustek_usb2_asic.c
index 039ffa1..8a2325e 100644
--- a/backend/mustek_usb2_asic.c
+++ b/backend/mustek_usb2_asic.c
@@ -49,34 +49,34 @@
static SANE_Byte RegisterBankStatus = -1;
-static STATUS
+static SANE_Status
WriteIOControl (PAsic chip, unsigned short wValue, unsigned short wIndex, unsigned short wLength,
SANE_Byte * lpbuf)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
status =
sanei_usb_control_msg (chip->fd, 0x40, 0x01, wValue, wIndex, wLength,
lpbuf);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "WriteIOControl Error!\n");
return status;
}
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
-static STATUS
+static SANE_Status
ReadIOControl (PAsic chip, unsigned short wValue, unsigned short wIndex, unsigned short wLength,
SANE_Byte * lpbuf)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
status =
sanei_usb_control_msg (chip->fd, 0xc0, 0x01, wValue, wIndex, wLength,
lpbuf);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "WriteIOControl Error!\n");
return status;
@@ -85,10 +85,10 @@ ReadIOControl (PAsic chip, unsigned short wValue, unsigned short wIndex, unsigne
return status;
}
-static STATUS
+static SANE_Status
Mustek_ClearFIFO (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte buf[4];
DBG (DBG_ASIC, "Mustek_ClearFIFO:Enter\n");
@@ -97,24 +97,24 @@ Mustek_ClearFIFO (PAsic chip)
buf[2] = 0;
buf[3] = 0;
status = WriteIOControl (chip, 0x05, 0, 4, (SANE_Byte *) (buf));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
status = WriteIOControl (chip, 0xc0, 0, 4, (SANE_Byte *) (buf));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
DBG (DBG_ASIC, "Mustek_ClearFIFO:Exit\n");
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
-static STATUS
+static SANE_Status
Mustek_SendData (PAsic chip, unsigned short reg, SANE_Byte data)
{
SANE_Byte buf[4];
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "Mustek_SendData: Enter. reg=%x,data=%x\n", reg, data);
@@ -167,16 +167,16 @@ Mustek_SendData (PAsic chip, unsigned short reg, SANE_Byte data)
buf[2] = LOBYTE (reg);
buf[3] = data;
status = WriteIOControl (chip, 0xb0, 0, 4, buf);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
DBG (DBG_ERR, ("Mustek_SendData: write error\n"));
return status;
}
-static STATUS
+static SANE_Status
Mustek_ReceiveData (PAsic chip, SANE_Byte * reg)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte buf[4];
DBG (DBG_ASIC, "Mustek_ReceiveData\n");
@@ -187,10 +187,10 @@ Mustek_ReceiveData (PAsic chip, SANE_Byte * reg)
return status;
}
-static STATUS
+static SANE_Status
Mustek_WriteAddressLineForRegister (PAsic chip, SANE_Byte x)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte buf[4];
DBG (DBG_ASIC, "Mustek_WriteAddressLineForRegister: Enter\n");
@@ -206,51 +206,51 @@ Mustek_WriteAddressLineForRegister (PAsic chip, SANE_Byte x)
}
-static STATUS
+static SANE_Status
SetRWSize (PAsic chip, SANE_Byte ReadWrite, unsigned int size)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "SetRWSize: Enter\n");
if (ReadWrite == 0)
{ /*write */
status = Mustek_SendData (chip, 0x7C, (SANE_Byte) (size));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
status = Mustek_SendData (chip, 0x7D, (SANE_Byte) (size >> 8));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
status = Mustek_SendData (chip, 0x7E, (SANE_Byte) (size >> 16));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
status = Mustek_SendData (chip, 0x7F, (SANE_Byte) (size >> 24));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
}
else
{ /* read */
status = Mustek_SendData (chip, 0x7C, (SANE_Byte) (size >> 1));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
status = Mustek_SendData (chip, 0x7D, (SANE_Byte) (size >> 9));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
status = Mustek_SendData (chip, 0x7E, (SANE_Byte) (size >> 17));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
status = Mustek_SendData (chip, 0x7F, (SANE_Byte) (size >> 25));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
}
DBG (DBG_ASIC, "SetRWSize: Exit\n");
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
-static STATUS
+static SANE_Status
Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned int i, buf[1];
unsigned int read_size;
size_t read_size_usb;
@@ -258,7 +258,7 @@ Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata)
DBG (DBG_ASIC, "Mustek_DMARead: Enter\n");
status = Mustek_ClearFIFO (chip);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
buf[0] = read_size = 32 * 1024;
@@ -272,7 +272,7 @@ Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata)
sanei_usb_read_bulk (chip->fd, lpdata + i * read_size,
&read_size_usb);
buf[0] = read_size_usb;
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Mustek_DMARead: read error\n");
return status;
@@ -290,7 +290,7 @@ Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata)
sanei_usb_read_bulk (chip->fd, lpdata + i * read_size,
&read_size_usb);
buf[0] = read_size_usb;
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Mustek_DMARead: read error\n");
return status;
@@ -300,13 +300,13 @@ Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata)
}
DBG (DBG_ASIC, "Mustek_DMARead: Exit\n");
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
-static STATUS
+static SANE_Status
Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned int buf[1];
unsigned int i;
unsigned int write_size;
@@ -315,7 +315,7 @@ Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata)
DBG (DBG_ASIC, "Mustek_DMAWrite: Enter:size=%d\n", size);
status = Mustek_ClearFIFO (chip);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
buf[0] = write_size = 32 * 1024;
@@ -329,7 +329,7 @@ Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata)
sanei_usb_write_bulk (chip->fd, lpdata + i * write_size,
&write_size_usb);
buf[0] = write_size_usb;
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Mustek_DMAWrite: write error\n");
return status;
@@ -348,7 +348,7 @@ Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata)
sanei_usb_write_bulk (chip->fd, lpdata + i * write_size,
&write_size_usb);
buf[0] = write_size_usb;
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Mustek_DMAWrite: write error\n");
return status;
@@ -358,11 +358,11 @@ Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata)
Mustek_ClearFIFO (chip);
DBG (DBG_ASIC, "Mustek_DMAWrite: Exit\n");
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
-static STATUS
+static SANE_Status
Mustek_SendData2Byte (PAsic chip, unsigned short reg, SANE_Byte data)
{
static SANE_Bool isTransfer = FALSE;
@@ -425,17 +425,17 @@ Mustek_SendData2Byte (PAsic chip, unsigned short reg, SANE_Byte data)
isTransfer = FALSE;
}
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
/* ---------------------- asic motor functions ----------------------------- */
-static STATUS
+static SANE_Status
LLFRamAccess (PAsic chip, LLF_RAMACCESS * RamAccess)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte a[2];
DBG (DBG_ASIC, "LLFRamAccess:Enter\n");
@@ -499,12 +499,12 @@ LLFRamAccess (PAsic chip, LLF_RAMACCESS * RamAccess)
}
-static STATUS
+static SANE_Status
LLFSetMotorCurrentAndPhase (PAsic chip,
LLF_MOTOR_CURRENT_AND_PHASE *
MotorCurrentAndPhase)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte MotorPhase;
DBG (DBG_ASIC, "LLFSetMotorCurrentAndPhase:Enter\n");
@@ -1558,10 +1558,10 @@ LLFSetMotorCurrentAndPhase (PAsic chip,
#if SANE_UNUSED
-static STATUS
+static SANE_Status
LLFStopMotorMove (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "LLFStopMotorMove:Enter\n");
Mustek_SendData (chip, ES01_F4_ActiveTriger, ACTION_TRIGER_DISABLE);
@@ -1573,10 +1573,10 @@ LLFStopMotorMove (PAsic chip)
}
#endif
-static STATUS
+static SANE_Status
LLFSetMotorTable (PAsic chip, LLF_SETMOTORTABLE * LLF_SetMotorTable)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
LLF_RAMACCESS RamAccess;
DBG (DBG_ASIC, "LLFSetMotorTable:Enter\n");
@@ -1609,10 +1609,10 @@ LLFSetMotorTable (PAsic chip, LLF_SETMOTORTABLE * LLF_SetMotorTable)
return status;
}
-static STATUS
+static SANE_Status
LLFMotorMove (PAsic chip, LLF_MOTORMOVE * LLF_MotorMove)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned int motor_steps;
SANE_Byte temp_motor_action;
@@ -1751,11 +1751,11 @@ LLFMotorMove (PAsic chip, LLF_MOTORMOVE * LLF_MotorMove)
return status;
}
-static STATUS
+static SANE_Status
SetMotorStepTable (PAsic chip, LLF_MOTORMOVE * MotorStepsTable, unsigned short wStartY,
unsigned int dwScanImageSteps, unsigned short wYResolution)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned short wAccSteps = 511;
unsigned short wForwardSteps = 20;
SANE_Byte bDecSteps = 255;
@@ -1891,11 +1891,11 @@ SetMotorStepTable (PAsic chip, LLF_MOTORMOVE * MotorStepsTable, unsigned short w
return status;
}
-static STATUS
+static SANE_Status
CalculateMotorTable (LLF_CALCULATEMOTORTABLE * lpCalculateMotorTable,
unsigned short wYResolution)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned short i;
unsigned short wEndSpeed, wStartSpeed;
unsigned short wScanAccSteps;
@@ -1980,10 +1980,10 @@ CalculateMotorTable (LLF_CALCULATEMOTORTABLE * lpCalculateMotorTable,
return status;
}
-static STATUS
+static SANE_Status
LLFCalculateMotorTable (LLF_CALCULATEMOTORTABLE * LLF_CalculateMotorTable)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned short i;
double PI = 3.1415926535;
double x;
@@ -2085,14 +2085,14 @@ LLFCalculateMotorTable (LLF_CALCULATEMOTORTABLE * LLF_CalculateMotorTable)
}
-static STATUS
+static SANE_Status
SetMotorCurrent (PAsic chip, unsigned short dwMotorSpeed,
LLF_MOTOR_CURRENT_AND_PHASE * CurrentPhase)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "SetMotorCurrent:Enter\n");
- chip = chip;
+ (void) chip;
if (dwMotorSpeed < 2000)
{
@@ -2135,10 +2135,10 @@ SetMotorCurrent (PAsic chip, unsigned short dwMotorSpeed,
}
-static STATUS
+static SANE_Status
MotorBackHome (PAsic chip, SANE_Byte WaitOrNoWait)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned short BackHomeMotorTable[512 * 8];
LLF_CALCULATEMOTORTABLE CalMotorTable;
LLF_MOTOR_CURRENT_AND_PHASE CurrentPhase;
@@ -2184,11 +2184,11 @@ MotorBackHome (PAsic chip, SANE_Byte WaitOrNoWait)
}
-static STATUS
+static SANE_Status
LLFSetRamAddress (PAsic chip, unsigned int dwStartAddr, unsigned int dwEndAddr,
SANE_Byte byAccessTarget)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte * pStartAddr = (SANE_Byte *) & dwStartAddr;
SANE_Byte * pEndAddr = (SANE_Byte *) & dwEndAddr;
@@ -2219,10 +2219,10 @@ LLFSetRamAddress (PAsic chip, unsigned int dwStartAddr, unsigned int dwEndAddr,
/* ---------------------- medium level asic functions ---------------------- */
-static STATUS
+static SANE_Status
InitTiming (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "InitTiming:Enter\n");
chip->Timing.AFE_ADCCLK_Timing = 1010580480;
@@ -2267,10 +2267,10 @@ InitTiming (PAsic chip)
return status;
}
-static STATUS
+static SANE_Status
OpenScanChip (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte x[4];
DBG (DBG_ASIC, "OpenScanChip:Enter\n");
@@ -2280,7 +2280,7 @@ OpenScanChip (PAsic chip)
x[2] = 0x64;
x[3] = 0x64;
status = WriteIOControl (chip, 0x90, 0, 4, x);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
x[0] = 0x65;
@@ -2288,7 +2288,7 @@ OpenScanChip (PAsic chip)
x[2] = 0x65;
x[3] = 0x65;
status = WriteIOControl (chip, 0x90, 0, 4, x);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
x[0] = 0x44;
@@ -2296,7 +2296,7 @@ OpenScanChip (PAsic chip)
x[2] = 0x44;
x[3] = 0x44;
status = WriteIOControl (chip, 0x90, 0, 4, x);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
x[0] = 0x45;
@@ -2310,10 +2310,10 @@ OpenScanChip (PAsic chip)
}
-static STATUS
+static SANE_Status
CloseScanChip (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte x[4];
DBG (DBG_ASIC, "CloseScanChip:Enter\n");
@@ -2323,7 +2323,7 @@ CloseScanChip (PAsic chip)
x[2] = 0x64;
x[3] = 0x64;
status = WriteIOControl (chip, 0x90, 0, 4, x);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
x[0] = 0x65;
@@ -2331,7 +2331,7 @@ CloseScanChip (PAsic chip)
x[2] = 0x65;
x[3] = 0x65;
status = WriteIOControl (chip, 0x90, 0, 4, x);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
x[0] = 0x16;
@@ -2339,7 +2339,7 @@ CloseScanChip (PAsic chip)
x[2] = 0x16;
x[3] = 0x16;
status = WriteIOControl (chip, 0x90, 0, 4, x);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
x[0] = 0x17;
@@ -2353,10 +2353,10 @@ CloseScanChip (PAsic chip)
}
-static STATUS
+static SANE_Status
SafeInitialChip (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "SafeInitialChip:Enter\n");
@@ -2372,7 +2372,7 @@ SafeInitialChip (PAsic chip)
{
DBG (DBG_ASIC, "isFirstOpenChip=%d\n", chip->isFirstOpenChip);
status = DRAM_Test (chip);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ASIC, "DRAM_Test: Error\n");
return status;
@@ -2385,10 +2385,10 @@ SafeInitialChip (PAsic chip)
}
-static STATUS
+static SANE_Status
DRAM_Test (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned char *temps;
unsigned int i;
@@ -2403,14 +2403,14 @@ DRAM_Test (PAsic chip)
/*set start address */
status = Mustek_SendData (chip, ES01_A0_HostStartAddr0_7, 0x00);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
}
status = Mustek_SendData (chip, ES01_A1_HostStartAddr8_15, 0x00);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
@@ -2418,7 +2418,7 @@ DRAM_Test (PAsic chip)
status =
Mustek_SendData (chip, ES01_A2_HostStartAddr16_21, 0x00 | ACCESS_DRAM);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
@@ -2427,28 +2427,28 @@ DRAM_Test (PAsic chip)
Mustek_SendData (chip, ES01_79_AFEMCLK_SDRAMCLK_DELAY_CONTROL,
SDRAMCLK_DELAY_12_ns);
status = Mustek_SendData (chip, ES01_A3_HostEndAddr0_7, 0xff);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
}
status = Mustek_SendData (chip, ES01_A4_HostEndAddr8_15, 0xff);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
}
status = Mustek_SendData (chip, ES01_A5_HostEndAddr16_21, 0xff);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
}
status = Mustek_DMAWrite (chip, 64, (SANE_Byte *) (temps));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ASIC, "Mustek_DMAWrite error\n");
free (temps);
@@ -2456,14 +2456,14 @@ DRAM_Test (PAsic chip)
}
status = Mustek_SendData (chip, ES01_A0_HostStartAddr0_7, 0x00);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
}
status = Mustek_SendData (chip, ES01_A1_HostStartAddr8_15, 0x00);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
@@ -2471,7 +2471,7 @@ DRAM_Test (PAsic chip)
status =
Mustek_SendData (chip, ES01_A2_HostStartAddr16_21, 0x00 | ACCESS_DRAM);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
@@ -2479,21 +2479,21 @@ DRAM_Test (PAsic chip)
/*set end address */
status = Mustek_SendData (chip, ES01_A3_HostEndAddr0_7, 0xff);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
}
status = Mustek_SendData (chip, ES01_A4_HostEndAddr8_15, 0xff);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
}
status = Mustek_SendData (chip, ES01_A5_HostEndAddr16_21, 0xff);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
@@ -2502,7 +2502,7 @@ DRAM_Test (PAsic chip)
memset (temps, 0, 64);
status = Mustek_DMARead (chip, 64, (SANE_Byte *) (temps));
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (temps);
return status;
@@ -2521,7 +2521,7 @@ DRAM_Test (PAsic chip)
if (*(temps + i) != i)
{
DBG (DBG_ERR, "DRAM Test error...(No.=%d)\n", i + 1);
- return STATUS_IO_ERROR;
+ return SANE_STATUS_IO_ERROR;
}
}
@@ -2532,10 +2532,10 @@ DRAM_Test (PAsic chip)
}
#if SANE_UNUSED
-static STATUS
+static SANE_Status
SetPowerSave (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "SetPowerSave:Enter\n");
if (chip->firmwarestate < FS_OPENED)
@@ -2552,10 +2552,10 @@ SetPowerSave (PAsic chip)
}
#endif
-static STATUS
+static SANE_Status
SetLineTimeAndExposure (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "SetLineTimeAndExposure:Enter\n");
if (chip->firmwarestate < FS_OPENED)
@@ -2584,10 +2584,10 @@ SetLineTimeAndExposure (PAsic chip)
-static STATUS
+static SANE_Status
CCDTiming (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned int dwPH1, dwPH2, dwPHRS, dwPHCP;
DBG (DBG_ASIC, "CCDTiming:Enter\n");
@@ -2701,16 +2701,16 @@ CCDTiming (PAsic chip)
return status;
}
-static STATUS
+static SANE_Status
IsCarriageHome (PAsic chip, SANE_Bool * LampHome, SANE_Bool * TAHome)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte temp;
DBG (DBG_ASIC, "IsCarriageHome:Enter\n");
status = GetChipStatus (chip, 0, &temp);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ASIC, "IsCarriageHome:Error!\n");
return status;
@@ -2732,33 +2732,33 @@ IsCarriageHome (PAsic chip, SANE_Bool * LampHome, SANE_Bool * TAHome)
}
-static STATUS
+static SANE_Status
GetChipStatus (PAsic chip, SANE_Byte Selector, SANE_Byte * ChipStatus)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "GetChipStatus:Enter\n");
status = Mustek_SendData (chip, ES01_8B_Status, Selector);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
status = Mustek_WriteAddressLineForRegister (chip, ES01_8B_Status);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
*ChipStatus = ES01_8B_Status;
status = Mustek_ReceiveData (chip, ChipStatus);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
return status;
DBG (DBG_ASIC, "GetChipStatus:Exit\n");
return status;
}
-static STATUS
+static SANE_Status
SetAFEGainOffset (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
int i = 0;
DBG (DBG_ASIC, "SetAFEGainOffset:Enter\n");
@@ -2918,10 +2918,10 @@ SetAFEGainOffset (PAsic chip)
return status;
}
-static STATUS
+static SANE_Status
SetLEDTime (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "SetLEDTime:Enter\n");
Mustek_SendData (chip, ES01_B8_ChannelRedExpStartPixelLSB,
@@ -2955,10 +2955,10 @@ SetLEDTime (PAsic chip)
return status;
}
-static STATUS
+static SANE_Status
SetScanMode (PAsic chip, SANE_Byte bScanBits)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte temp_f5_register = 0;
SANE_Byte GrayBWChannel;
@@ -3019,12 +3019,12 @@ SetScanMode (PAsic chip, SANE_Byte bScanBits)
return status;
}
-static STATUS
+static SANE_Status
SetPackAddress (PAsic chip, unsigned short wXResolution, unsigned short wWidth, unsigned short wX,
double XRatioAdderDouble, double XRatioTypeDouble,
SANE_Byte byClear_Pulse_Width, unsigned short * PValidPixelNumber)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte OverLapPixel;
SANE_Byte TotalLineShift;
@@ -3402,11 +3402,11 @@ SetPackAddress (PAsic chip, unsigned short wXResolution, unsigned short wWidth,
return status;
}
-static STATUS
+static SANE_Status
SetExtraSetting (PAsic chip, unsigned short wXResolution, unsigned short wCCD_PixelNumber,
SANE_Bool isCaribrate)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte byPHTG_PulseWidth, byPHTG_WaitWidth;
SANE_Byte temp_ff_register = 0;
SANE_Byte bThreshold = 128;
@@ -3532,10 +3532,10 @@ attach_one_scanner (SANE_String_Const devname)
return SANE_STATUS_GOOD;
}
-static STATUS
+static SANE_Status
Asic_Open (PAsic chip, SANE_Byte *pDeviceName)
{
- STATUS status;
+ SANE_Status status;
SANE_Status sane_status;
DBG (DBG_ASIC, "Asic_Open: Enter\n");
@@ -3545,7 +3545,7 @@ Asic_Open (PAsic chip, SANE_Byte *pDeviceName)
if (chip->firmwarestate > FS_OPENED)
{
DBG (DBG_ASIC, "chip has been opened. fd=%d\n", chip->fd);
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
/* init usb */
@@ -3558,25 +3558,25 @@ Asic_Open (PAsic chip, SANE_Byte *pDeviceName)
{
DBG (DBG_ERR, "Asic_Open: sanei_usb_find_devices failed: %s\n",
sane_strstatus (sane_status));
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
/* open usb */
if (device_name == NULL)
{
DBG (DBG_ERR, "Asic_Open: no scanner found\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
sane_status = sanei_usb_open (device_name, &chip->fd);
if (sane_status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Asic_Open: sanei_usb_open of %s failed: %s\n",
device_name, sane_strstatus (sane_status));
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
/* open scanner chip */
status = OpenScanChip (chip);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
sanei_usb_close (chip->fd);
DBG (DBG_ASIC, "Asic_Open: OpenScanChip error\n");
@@ -3601,7 +3601,7 @@ Asic_Open (PAsic chip, SANE_Byte *pDeviceName)
Asic_WaitUnitReady (chip);
DBG (DBG_ASIC, "Asic_WaitUnitReady\n");
status = SafeInitialChip (chip);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Asic_Open: SafeInitialChip error\n");
return status;
@@ -3611,7 +3611,7 @@ Asic_Open (PAsic chip, SANE_Byte *pDeviceName)
if (!pDeviceName)
{
DBG (DBG_ERR, "Asic_Open: not enough memory\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
DBG (DBG_INFO, "Asic_Open: device %s successfully opened\n", pDeviceName);
DBG (DBG_ASIC, "Asic_Open: Exit\n");
@@ -3619,16 +3619,16 @@ Asic_Open (PAsic chip, SANE_Byte *pDeviceName)
}
-static STATUS
+static SANE_Status
Asic_Close (PAsic chip)
{
- STATUS status;
+ SANE_Status status;
DBG (DBG_ASIC, "Asic_Close: Enter\n");
if (chip->firmwarestate < FS_OPENED)
{
DBG (DBG_ASIC, "Asic_Close: Scanner is not opened\n");
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
if (chip->firmwarestate > FS_OPENED)
@@ -3642,7 +3642,7 @@ Asic_Close (PAsic chip)
CLOSE_ALL_CLOCK_ENABLE);
status = CloseScanChip (chip);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Asic_Close: CloseScanChip error\n");
return status;
@@ -3655,10 +3655,10 @@ Asic_Close (PAsic chip)
return status;
}
-static STATUS
+static SANE_Status
Asic_TurnLamp (PAsic chip, SANE_Bool isLampOn)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte PWM;
DBG (DBG_ASIC, "Asic_TurnLamp: Enter\n");
@@ -3666,7 +3666,7 @@ Asic_TurnLamp (PAsic chip, SANE_Bool isLampOn)
if (chip->firmwarestate < FS_OPENED)
{
DBG (DBG_ERR, "Asic_TurnLamp: Scanner is not opened\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
if (chip->firmwarestate > FS_OPENED)
@@ -3693,7 +3693,7 @@ Asic_TurnLamp (PAsic chip, SANE_Bool isLampOn)
}
-static STATUS
+static SANE_Status
Asic_TurnTA (PAsic chip, SANE_Bool isTAOn)
{
SANE_Byte PWM;
@@ -3703,7 +3703,7 @@ Asic_TurnTA (PAsic chip, SANE_Bool isTAOn)
if (chip->firmwarestate < FS_OPENED)
{
DBG (DBG_ERR, "Asic_TurnTA: Scanner is not opened\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
if (chip->firmwarestate > FS_OPENED)
@@ -3724,13 +3724,13 @@ Asic_TurnTA (PAsic chip, SANE_Bool isTAOn)
chip->firmwarestate = FS_OPENED;
DBG (DBG_ASIC, "Asic_TurnTA: Exit\n");
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
-static STATUS
+static SANE_Status
Asic_WaitUnitReady (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte temp_status;
int i = 0;
@@ -3740,14 +3740,14 @@ Asic_WaitUnitReady (PAsic chip)
{
DBG (DBG_ERR, "Asic_WaitUnitReady: Scanner has not been opened\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
do
{
status = GetChipStatus (chip, 1, &temp_status);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ASIC, "WaitChipIdle:Error!\n");
return status;
@@ -3766,10 +3766,10 @@ Asic_WaitUnitReady (PAsic chip)
}
#if SANE_UNUSED
-static STATUS
+static SANE_Status
Asic_Release (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "Asic_Release()\n");
if (chip->firmwarestate > FS_ATTACHED)
@@ -3782,10 +3782,10 @@ Asic_Release (PAsic chip)
}
#endif
-static STATUS
+static SANE_Status
Asic_Initialize (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "Asic_Initialize:Enter\n");
@@ -3814,12 +3814,12 @@ Asic_Initialize (PAsic chip)
return status;
}
-static STATUS
+static SANE_Status
Asic_SetWindow (PAsic chip, SANE_Byte bScanBits,
unsigned short wXResolution, unsigned short wYResolution,
unsigned short wX, unsigned short wY, unsigned short wWidth, unsigned short wLength)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned short ValidPixelNumber;
@@ -3869,7 +3869,7 @@ Asic_SetWindow (PAsic chip, SANE_Byte bScanBits,
if (chip->firmwarestate != FS_OPENED)
{
DBG (DBG_ERR, "Asic_SetWindow: Scanner is not opened\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
Mustek_SendData (chip, ES01_F3_ActionOption, 0);
@@ -3901,12 +3901,12 @@ Asic_SetWindow (PAsic chip, SANE_Byte bScanBits,
BytePerPixel = 2;
chip->dwBytesCountPerRow = (unsigned int) (wWidth) * 2;
}
- else if ((bScanBits == 8))
+ else if (bScanBits == 8)
{
BytePerPixel = 1;
chip->dwBytesCountPerRow = (unsigned int) (wWidth);
}
- else if ((bScanBits < 8))
+ else if (bScanBits < 8)
{
BytePerPixel = 1;
chip->dwBytesCountPerRow = (unsigned int) (wWidth);
@@ -4269,10 +4269,10 @@ Asic_SetWindow (PAsic chip, SANE_Byte bScanBits,
return status;
}
-static STATUS
+static SANE_Status
Asic_Reset (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "Asic_Reset: Enter\n");
chip->lsLightSource = LS_REFLECTIVE;
@@ -4297,10 +4297,10 @@ Asic_Reset (PAsic chip)
return status;
}
-static STATUS
+static SANE_Status
Asic_SetSource (PAsic chip, LIGHTSOURCE lsLightSource)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "Asic_SetSource: Enter\n");
chip->lsLightSource = lsLightSource;
@@ -4323,16 +4323,16 @@ Asic_SetSource (PAsic chip, LIGHTSOURCE lsLightSource)
return status;
}
-static STATUS
+static SANE_Status
Asic_ScanStart (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "Asic_ScanStart: Enter\n");
if (chip->firmwarestate != FS_OPENED)
{
DBG (DBG_ERR, "Asic_ScanStart: Scanner is not opened\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
Mustek_SendData (chip, ES01_8B_Status, 0x1c | 0x20);
@@ -4347,10 +4347,10 @@ Asic_ScanStart (PAsic chip)
return status;
}
-static STATUS
+static SANE_Status
Asic_ScanStop (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte temps[2];
SANE_Byte buf[4];
@@ -4368,7 +4368,7 @@ Asic_ScanStop (PAsic chip)
buf[2] = 0x02;
buf[3] = 0x02;
status = WriteIOControl (chip, 0xc0, 0, 4, buf);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Asic_ScanStop: Stop scan error\n");
return status;
@@ -4379,14 +4379,14 @@ Asic_ScanStop (PAsic chip)
buf[2] = 0x00;
buf[3] = 0x00;
status = WriteIOControl (chip, 0xc0, 0, 4, buf);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Asic_ScanStop: Clear scan error\n");
return status;
}
status = Mustek_DMARead (chip, 2, temps);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_ERR, "Asic_ScanStop: DMAReadGeneralMode error\n");
return status;
@@ -4403,10 +4403,10 @@ Asic_ScanStop (PAsic chip)
return status;
}
-static STATUS
+static SANE_Status
Asic_ReadImage (PAsic chip, SANE_Byte * pBuffer, unsigned short LinesCount)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned int dwXferBytes;
DBG (DBG_ASIC, "Asic_ReadImage: Enter : LinesCount = %d\n", LinesCount);
@@ -4414,7 +4414,7 @@ Asic_ReadImage (PAsic chip, SANE_Byte * pBuffer, unsigned short LinesCount)
if (chip->firmwarestate != FS_SCANNING)
{
DBG (DBG_ERR, "Asic_ReadImage: Scanner is not scanning\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
dwXferBytes = (unsigned int) (LinesCount) * chip->dwBytesCountPerRow;
@@ -4425,14 +4425,14 @@ Asic_ReadImage (PAsic chip, SANE_Byte * pBuffer, unsigned short LinesCount)
if (dwXferBytes < 0)
{
DBG (DBG_ASIC, "Asic_ReadImage: dwXferBytes <0\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
*/
if (dwXferBytes == 0)
{
DBG (DBG_ASIC, "Asic_ReadImage: dwXferBytes == 0\n");
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
status = Mustek_DMARead (chip, dwXferBytes, pBuffer);
@@ -4443,10 +4443,10 @@ Asic_ReadImage (PAsic chip, SANE_Byte * pBuffer, unsigned short LinesCount)
#if SANE_UNUSED
-static STATUS
+static SANE_Status
Asic_CheckFunctionKey (PAsic chip, SANE_Byte * key)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte bBuffer_1 = 0xff;
SANE_Byte bBuffer_2 = 0xff;
@@ -4455,7 +4455,7 @@ Asic_CheckFunctionKey (PAsic chip, SANE_Byte * key)
if (chip->firmwarestate != FS_OPENED)
{
DBG (DBG_ERR, "Asic_CheckFunctionKey: Scanner is not Opened\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
Mustek_SendData (chip, ES01_97_GPIOControl0_7, 0x00);
@@ -4486,7 +4486,7 @@ Asic_CheckFunctionKey (PAsic chip, SANE_Byte * key)
}
#endif
-static STATUS
+static SANE_Status
Asic_IsTAConnected (PAsic chip, SANE_Bool * hasTA)
{
SANE_Byte bBuffer_1 = 0xff;
@@ -4509,14 +4509,14 @@ Asic_IsTAConnected (PAsic chip, SANE_Bool * hasTA)
DBG (DBG_ASIC, "hasTA=%d\n", *hasTA);
DBG (DBG_ASIC, "Asic_IsTAConnected():Exit\n");
- return STATUS_GOOD;
+ return SANE_STATUS_GOOD;
}
#if SANE_UNUSED
-static STATUS
+static SANE_Status
Asic_DownloadGammaTable (PAsic chip, void * lpBuffer)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "Asic_DownloadGammaTable()\n");
chip->lpGammaTable = lpBuffer;
@@ -4526,11 +4526,11 @@ Asic_DownloadGammaTable (PAsic chip, void * lpBuffer)
}
#endif
-static STATUS
+static SANE_Status
Asic_ReadCalibrationData (PAsic chip, void * pBuffer,
unsigned int dwXferBytes, SANE_Byte bScanBits)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Byte * pCalBuffer;
unsigned int dwTotalReadData;
unsigned int dwReadImageData;
@@ -4540,7 +4540,7 @@ Asic_ReadCalibrationData (PAsic chip, void * pBuffer,
if (chip->firmwarestate != FS_SCANNING)
{
DBG (DBG_ERR, "Asic_ReadCalibrationData: Scanner is not scanning\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
if (bScanBits == 24)
@@ -4551,7 +4551,7 @@ Asic_ReadCalibrationData (PAsic chip, void * pBuffer,
{
DBG (DBG_ERR,
"Asic_ReadCalibrationData: Can't malloc bCalBuffer memory\n");
- return STATUS_MEM_ERROR;
+ return SANE_STATUS_NO_MEM;
}
for (dwTotalReadData = 0; dwTotalReadData < dwXferBytes;)
@@ -4592,11 +4592,11 @@ Asic_ReadCalibrationData (PAsic chip, void * pBuffer,
return status;
}
-static STATUS
+static SANE_Status
Asic_SetMotorType (PAsic chip, SANE_Bool isMotorMove, SANE_Bool isUniformSpeed)
{
- STATUS status = STATUS_GOOD;
- isUniformSpeed = isUniformSpeed;
+ SANE_Status status = SANE_STATUS_GOOD;
+ (void) isUniformSpeed;
DBG (DBG_ASIC, "Asic_SetMotorType:Enter\n");
if (isMotorMove)
@@ -4611,10 +4611,10 @@ Asic_SetMotorType (PAsic chip, SANE_Bool isMotorMove, SANE_Bool isUniformSpeed)
return status;
}
-static STATUS
+static SANE_Status
Asic_MotorMove (PAsic chip, SANE_Bool isForward, unsigned int dwTotalSteps)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned short *NormalMoveMotorTable;
LLF_CALCULATEMOTORTABLE CalMotorTable;
LLF_MOTOR_CURRENT_AND_PHASE CurrentPhase;
@@ -4675,12 +4675,12 @@ Asic_MotorMove (PAsic chip, SANE_Bool isForward, unsigned int dwTotalSteps)
return status;
}
-static STATUS
+static SANE_Status
Asic_CarriageHome (PAsic chip, SANE_Bool isTA)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Bool LampHome, TAHome;
- isTA = isTA;
+ (void) isTA;
DBG (DBG_ASIC, "Asic_CarriageHome:Enter\n");
@@ -4694,18 +4694,18 @@ Asic_CarriageHome (PAsic chip, SANE_Bool isTA)
return status;
}
-static STATUS
+static SANE_Status
Asic_SetShadingTable (PAsic chip, unsigned short * lpWhiteShading,
unsigned short * lpDarkShading,
unsigned short wXResolution, unsigned short wWidth, unsigned short wX)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned short i, j, n;
unsigned short wValidPixelNumber;
double dbXRatioAdderDouble;
unsigned int wShadingTableSize;
- wX = wX;
+ (void) wX;
DBG (DBG_ASIC, "Asic_SetShadingTable:Enter\n");
if (chip->firmwarestate < FS_OPENED)
@@ -4737,7 +4737,7 @@ Asic_SetShadingTable (PAsic chip, unsigned short * lpWhiteShading,
if (chip->lpShadingTable == NULL)
{
DBG (DBG_ASIC, "lpShadingTable == NULL\n");
- return STATUS_MEM_ERROR;
+ return SANE_STATUS_NO_MEM;
}
n = 0;
@@ -4800,14 +4800,14 @@ Asic_SetShadingTable (PAsic chip, unsigned short * lpWhiteShading,
return status;
}
-static STATUS
+static SANE_Status
Asic_WaitCarriageHome (PAsic chip, SANE_Bool isTA)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
SANE_Bool LampHome, TAHome;
int i;
- isTA = isTA;
+ (void) isTA;
DBG (DBG_ASIC, "Asic_WaitCarriageHome:Enter\n");
@@ -4819,7 +4819,7 @@ Asic_WaitCarriageHome (PAsic chip, SANE_Bool isTA)
usleep (300000);
}
if (i == 100)
- status = STATUS_DEVICE_BUSY;
+ status = SANE_STATUS_DEVICE_BUSY;
DBG (DBG_ASIC, "Wait %d s\n", (unsigned short) (i * 0.3));
Mustek_SendData (chip, ES01_F4_ActiveTriger, ACTION_TRIGER_DISABLE);
@@ -4830,12 +4830,12 @@ Asic_WaitCarriageHome (PAsic chip, SANE_Bool isTA)
return status;
}
-static STATUS
+static SANE_Status
Asic_SetCalibrate (PAsic chip, SANE_Byte bScanBits, unsigned short wXResolution,
unsigned short wYResolution, unsigned short wX, unsigned short wY,
unsigned short wWidth, unsigned short wLength, SANE_Bool isShading)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
unsigned short ValidPixelNumber;
unsigned short wPerLineNeedBufferSize = 0;
@@ -4886,13 +4886,13 @@ Asic_SetCalibrate (PAsic chip, SANE_Byte bScanBits, unsigned short wXResolution,
if (chip->firmwarestate != FS_OPENED)
{
DBG (DBG_ERR, "Asic_SetCalibrate: Scanner is not opened\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
if (lpMotorStepsTable == NULL)
{
DBG (DBG_ERR, "Asic_SetCalibrate: insufficiency memory!\n");
- return STATUS_INVAL;
+ return SANE_STATUS_INVAL;
}
DBG (DBG_ASIC, "malloc LLF_MOTORMOVE =%ld Byte\n", (long int) (sizeof (LLF_MOTORMOVE)));
@@ -4926,13 +4926,13 @@ Asic_SetCalibrate (PAsic chip, SANE_Byte bScanBits, unsigned short wXResolution,
BytePerPixel = 2;
chip->dwBytesCountPerRow = (unsigned int) (wWidth) * 2;
}
- else if ((bScanBits == 8))
+ else if (bScanBits == 8)
{
wPerLineNeedBufferSize = wWidth;
BytePerPixel = 1;
chip->dwBytesCountPerRow = (unsigned int) (wWidth);
}
- else if ((bScanBits < 8))
+ else if (bScanBits < 8)
{
wPerLineNeedBufferSize = wWidth >> 3;
BytePerPixel = 1;
@@ -5241,10 +5241,10 @@ Asic_SetCalibrate (PAsic chip, SANE_Byte bScanBits, unsigned short wXResolution,
}
-static STATUS
+static SANE_Status
Asic_SetAFEGainOffset (PAsic chip)
{
- STATUS status = STATUS_GOOD;
+ SANE_Status status = SANE_STATUS_GOOD;
DBG (DBG_ASIC, "Asic_SetAFEGainOffset:Enter\n");
status = SetAFEGainOffset (chip);
diff --git a/backend/mustek_usb2_asic.h b/backend/mustek_usb2_asic.h
index 34ebba7..9550d33 100644
--- a/backend/mustek_usb2_asic.h
+++ b/backend/mustek_usb2_asic.h
@@ -256,19 +256,6 @@ typedef struct
}
Asic, *PAsic;
-typedef enum
-{
- STATUS_GOOD = 0,
- STATUS_CANCELLED,
- STATUS_EOF,
- STATUS_DEVICE_BUSY,
- STATUS_INVAL,
- STATUS_MEM_ERROR,
- STATUS_IO_ERROR,
- STATUS_ACCESS_ERROR
-}
-STATUS;
-
/* For ScanObj */
typedef struct Point
@@ -1211,107 +1198,107 @@ RGBColor;
#define ES01_2CF_VALID_PIXEL_PARAMETER_OF_SEGMENT16 0x2CF
/* forward declarations */
-static STATUS OpenScanChip (PAsic chip);
-static STATUS CloseScanChip (PAsic chip);
-static STATUS SafeInitialChip (PAsic chip);
-static STATUS DRAM_Test (PAsic chip);
+static SANE_Status OpenScanChip (PAsic chip);
+static SANE_Status CloseScanChip (PAsic chip);
+static SANE_Status SafeInitialChip (PAsic chip);
+static SANE_Status DRAM_Test (PAsic chip);
#if SANE_UNUSED
-static STATUS SetPowerSave (PAsic chip);
+static SANE_Status SetPowerSave (PAsic chip);
#endif
-static STATUS SetLineTimeAndExposure (PAsic chip);
-static STATUS CCDTiming (PAsic chip);
-static STATUS IsCarriageHome (PAsic chip, SANE_Bool * LampHome, SANE_Bool * TAHome);
-static STATUS InitTiming (PAsic chip);
-static STATUS GetChipStatus (PAsic chip, SANE_Byte Selector, SANE_Byte * ChipStatus);
-static STATUS SetAFEGainOffset (PAsic chip);
-static STATUS SetLEDTime (PAsic chip);
-static STATUS SetScanMode (PAsic chip, SANE_Byte bScanBits);
-static STATUS SetPackAddress (PAsic chip, unsigned short wXResolution,
- unsigned short wWidth, unsigned short wX, double XRatioAdderDouble,
- double XRatioTypeDouble,
- SANE_Byte byClear_Pulse_Width,
- unsigned short * PValidPixelNumber);
-static STATUS SetExtraSetting (PAsic chip, unsigned short wXResolution,
- unsigned short wCCD_PixelNumber, SANE_Bool isCaribrate);
+static SANE_Status SetLineTimeAndExposure (PAsic chip);
+static SANE_Status CCDTiming (PAsic chip);
+static SANE_Status IsCarriageHome (PAsic chip, SANE_Bool * LampHome, SANE_Bool * TAHome);
+static SANE_Status InitTiming (PAsic chip);
+static SANE_Status GetChipStatus (PAsic chip, SANE_Byte Selector, SANE_Byte * ChipStatus);
+static SANE_Status SetAFEGainOffset (PAsic chip);
+static SANE_Status SetLEDTime (PAsic chip);
+static SANE_Status SetScanMode (PAsic chip, SANE_Byte bScanBits);
+static SANE_Status SetPackAddress (PAsic chip, unsigned short wXResolution,
+ unsigned short wWidth, unsigned short wX, double XRatioAdderDouble,
+ double XRatioTypeDouble,
+ SANE_Byte byClear_Pulse_Width,
+ unsigned short * PValidPixelNumber);
+static SANE_Status SetExtraSetting (PAsic chip, unsigned short wXResolution,
+ unsigned short wCCD_PixelNumber, SANE_Bool isCaribrate);
/* Forward declarations */
-static STATUS Mustek_SendData (PAsic chip, unsigned short reg, SANE_Byte data);
-static STATUS Mustek_SendData2Byte (PAsic chip, unsigned short reg, SANE_Byte data);
-static STATUS Mustek_ReceiveData (PAsic chip, SANE_Byte * reg);
-static STATUS Mustek_WriteAddressLineForRegister (PAsic chip, SANE_Byte x);
-static STATUS WriteIOControl (PAsic chip, unsigned short wValue, unsigned short wIndex,
- unsigned short wLength, SANE_Byte * lpbuf);
-static STATUS ReadIOControl (PAsic chip, unsigned short wValue, unsigned short wIndex,
- unsigned short wLength, SANE_Byte * lpbuf);
-static STATUS Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata);
-static STATUS Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata);
-static STATUS Mustek_ClearFIFO (PAsic chip);
-static STATUS SetRWSize (PAsic chip, SANE_Byte ReadWrite, unsigned int size);
+static SANE_Status Mustek_SendData (PAsic chip, unsigned short reg, SANE_Byte data);
+static SANE_Status Mustek_SendData2Byte (PAsic chip, unsigned short reg, SANE_Byte data);
+static SANE_Status Mustek_ReceiveData (PAsic chip, SANE_Byte * reg);
+static SANE_Status Mustek_WriteAddressLineForRegister (PAsic chip, SANE_Byte x);
+static SANE_Status WriteIOControl (PAsic chip, unsigned short wValue, unsigned short wIndex,
+ unsigned short wLength, SANE_Byte * lpbuf);
+static SANE_Status ReadIOControl (PAsic chip, unsigned short wValue, unsigned short wIndex,
+ unsigned short wLength, SANE_Byte * lpbuf);
+static SANE_Status Mustek_DMARead (PAsic chip, unsigned int size, SANE_Byte * lpdata);
+static SANE_Status Mustek_DMAWrite (PAsic chip, unsigned int size, SANE_Byte * lpdata);
+static SANE_Status Mustek_ClearFIFO (PAsic chip);
+static SANE_Status SetRWSize (PAsic chip, SANE_Byte ReadWrite, unsigned int size);
/* Open Scanner by Scanner Name and return Chip Information */
-static STATUS Asic_Open (PAsic chip, SANE_Byte *pDeviceName);
+static SANE_Status Asic_Open (PAsic chip, SANE_Byte *pDeviceName);
/* Close Scanner */
-static STATUS Asic_Close (PAsic chip);
+static SANE_Status Asic_Close (PAsic chip);
#if SANE_UNUSED
/* Release Scanner Resource */
-static STATUS Asic_Release (PAsic chip);
+static SANE_Status Asic_Release (PAsic chip);
#endif
/* Initialize Scanner Parameters */
-static STATUS Asic_Initialize (PAsic chip);
+static SANE_Status Asic_Initialize (PAsic chip);
/* Set Scan Window */
-static STATUS Asic_SetWindow (PAsic chip, SANE_Byte bScanBits,
- unsigned short wXResolution, unsigned short wYResolution,
- unsigned short wX, unsigned short wY, unsigned short wWidth, unsigned short wLength);
+static SANE_Status Asic_SetWindow (PAsic chip, SANE_Byte bScanBits,
+ unsigned short wXResolution, unsigned short wYResolution,
+ unsigned short wX, unsigned short wY, unsigned short wWidth, unsigned short wLength);
/* Turn Lamp ON or OFF */
-static STATUS Asic_TurnLamp (PAsic chip, SANE_Bool isLampOn);
+static SANE_Status Asic_TurnLamp (PAsic chip, SANE_Bool isLampOn);
/* Turn TA ON or OFF */
-static STATUS Asic_TurnTA (PAsic chip, SANE_Bool isTAOn);
+static SANE_Status Asic_TurnTA (PAsic chip, SANE_Bool isTAOn);
/* Reset some parameter of asic */
-static STATUS Asic_Reset (PAsic chip);
+static SANE_Status Asic_Reset (PAsic chip);
/* Set scan source */
-static STATUS Asic_SetSource (PAsic chip, LIGHTSOURCE lsLightSource);
+static SANE_Status Asic_SetSource (PAsic chip, LIGHTSOURCE lsLightSource);
/* Start scanner to scan */
-static STATUS Asic_ScanStart (PAsic chip);
+static SANE_Status Asic_ScanStart (PAsic chip);
/* Stop scanner to scan */
-static STATUS Asic_ScanStop (PAsic chip);
+static SANE_Status Asic_ScanStop (PAsic chip);
/* Read One Scan Line When Scanning */
-static STATUS Asic_ReadImage (PAsic chip, SANE_Byte * pBuffer, unsigned short LinesCount);
+static SANE_Status Asic_ReadImage (PAsic chip, SANE_Byte * pBuffer, unsigned short LinesCount);
#if SANE_UNUSED
/* To Check Hard Key */
-static STATUS Asic_CheckFunctionKey (PAsic chip, SANE_Byte * key);
+static SANE_Status Asic_CheckFunctionKey (PAsic chip, SANE_Byte * key);
#endif
/* To Check if TA id connected */
-static STATUS Asic_IsTAConnected (PAsic chip, SANE_Bool *hasTA);
+static SANE_Status Asic_IsTAConnected (PAsic chip, SANE_Bool *hasTA);
#if SANE_UNUSED
/* Download GammaTable to Scanner */
-static STATUS Asic_DownloadGammaTable (PAsic chip, void * lpBuffer);
+static SANE_Status Asic_DownloadGammaTable (PAsic chip, void * lpBuffer);
#endif
/* For AdjustAD Calculate Scanner*/
-static STATUS Asic_ReadCalibrationData (PAsic chip, void * pBuffer,
- unsigned int dwXferBytes, SANE_Byte bScanBits);
+static SANE_Status Asic_ReadCalibrationData (PAsic chip, void * pBuffer,
+ unsigned int dwXferBytes, SANE_Byte bScanBits);
/* Set motor move or not */
-static STATUS Asic_SetMotorType (PAsic chip, SANE_Bool isMotorMove, SANE_Bool isUniformSpeed);
+static SANE_Status Asic_SetMotorType (PAsic chip, SANE_Bool isMotorMove, SANE_Bool isUniformSpeed);
/* Move Motor Forward or Backward */
-static STATUS Asic_MotorMove (PAsic chip, SANE_Bool isForward, unsigned int dwTotalSteps);
+static SANE_Status Asic_MotorMove (PAsic chip, SANE_Bool isForward, unsigned int dwTotalSteps);
/* Move Motor to Home. */
/* If isTA is TRUE, move TA to home, else move Lamp to home */
-static STATUS Asic_CarriageHome (PAsic chip, SANE_Bool isTA);
+static SANE_Status Asic_CarriageHome (PAsic chip, SANE_Bool isTA);
/* For ShadingTable */
-static STATUS Asic_SetShadingTable (PAsic chip, unsigned short * lpWhiteShading,
- unsigned short * lpDarkShading,
- unsigned short wXResolution, unsigned short wWidth, unsigned short wX);
+static SANE_Status Asic_SetShadingTable (PAsic chip, unsigned short * lpWhiteShading,
+ unsigned short * lpDarkShading,
+ unsigned short wXResolution, unsigned short wWidth, unsigned short wX);
/* Wait motor move to home. isTA no used */
-static STATUS Asic_WaitCarriageHome (PAsic chip, SANE_Bool isTA);
+static SANE_Status Asic_WaitCarriageHome (PAsic chip, SANE_Bool isTA);
/* Wait until asic idle */
-static STATUS Asic_WaitUnitReady (PAsic chip);
+static SANE_Status Asic_WaitUnitReady (PAsic chip);
/* Set Scan Parameter to Scanner */
-static STATUS Asic_SetCalibrate (PAsic chip, SANE_Byte bScanBits, unsigned short wXResolution,
- unsigned short wYResolution, unsigned short wX, unsigned short wY,
- unsigned short wWidth, unsigned short wLength, SANE_Bool isShading);
+static SANE_Status Asic_SetCalibrate (PAsic chip, SANE_Byte bScanBits, unsigned short wXResolution,
+ unsigned short wYResolution, unsigned short wX, unsigned short wY,
+ unsigned short wWidth, unsigned short wLength, SANE_Bool isShading);
/* Set AFE Parameter to Scanner */
-static STATUS Asic_SetAFEGainOffset (PAsic chip);
+static SANE_Status Asic_SetAFEGainOffset (PAsic chip);
/* ---------------------- asic motor defines -------------------------- */
@@ -1393,27 +1380,27 @@ typedef struct tagLLF_MOTORMOVE
unsigned short wScanBackHomeExtSteps;
} LLF_MOTORMOVE;
-static STATUS CalculateMotorTable (LLF_CALCULATEMOTORTABLE *
- lpCalculateMotorTable, unsigned short wYResolution);
-static STATUS LLFCalculateMotorTable (LLF_CALCULATEMOTORTABLE *
- lpCalculateMotorTable);
-static STATUS LLFSetMotorCurrentAndPhase (PAsic chip,
- LLF_MOTOR_CURRENT_AND_PHASE *
- MotorCurrentAndPhase);
-static STATUS SetMotorStepTable (PAsic chip, LLF_MOTORMOVE * MotorStepsTable,
- unsigned short wStartY, unsigned int dwScanImageSteps,
- unsigned short wYResolution);
-static STATUS LLFSetMotorTable (PAsic chip,
- LLF_SETMOTORTABLE * LLF_SetMotorTable);
-static STATUS SetMotorCurrent (PAsic chip, unsigned short dwMotorSpeed,
- LLF_MOTOR_CURRENT_AND_PHASE * CurrentPhase);
-static STATUS LLFMotorMove (PAsic chip, LLF_MOTORMOVE * LLF_MotorMove);
+static SANE_Status CalculateMotorTable (LLF_CALCULATEMOTORTABLE *
+ lpCalculateMotorTable, unsigned short wYResolution);
+static SANE_Status LLFCalculateMotorTable (LLF_CALCULATEMOTORTABLE *
+ lpCalculateMotorTable);
+static SANE_Status LLFSetMotorCurrentAndPhase (PAsic chip,
+ LLF_MOTOR_CURRENT_AND_PHASE *
+ MotorCurrentAndPhase);
+static SANE_Status SetMotorStepTable (PAsic chip, LLF_MOTORMOVE * MotorStepsTable,
+ unsigned short wStartY, unsigned int dwScanImageSteps,
+ unsigned short wYResolution);
+static SANE_Status LLFSetMotorTable (PAsic chip,
+ LLF_SETMOTORTABLE * LLF_SetMotorTable);
+static SANE_Status SetMotorCurrent (PAsic chip, unsigned short dwMotorSpeed,
+ LLF_MOTOR_CURRENT_AND_PHASE * CurrentPhase);
+static SANE_Status LLFMotorMove (PAsic chip, LLF_MOTORMOVE * LLF_MotorMove);
#if SANE_UNUSED
-static STATUS LLFStopMotorMove (PAsic chip);
+static SANE_Status LLFStopMotorMove (PAsic chip);
#endif
-static STATUS LLFSetRamAddress (PAsic chip, unsigned int dwStartAddr,
- unsigned int dwEndAddr, SANE_Byte byAccessTarget);
-static STATUS LLFRamAccess (PAsic chip, LLF_RAMACCESS * RamAccess);
-static STATUS MotorBackHome (PAsic chip, SANE_Byte WaitOrNoWait);
+static SANE_Status LLFSetRamAddress (PAsic chip, unsigned int dwStartAddr,
+ unsigned int dwEndAddr, SANE_Byte byAccessTarget);
+static SANE_Status LLFRamAccess (PAsic chip, LLF_RAMACCESS * RamAccess);
+static SANE_Status MotorBackHome (PAsic chip, SANE_Byte WaitOrNoWait);
#endif
diff --git a/backend/mustek_usb2_high.c b/backend/mustek_usb2_high.c
index 5119d55..e8b067f 100644
--- a/backend/mustek_usb2_high.c
+++ b/backend/mustek_usb2_high.c
@@ -204,13 +204,13 @@ MustScanner_Init ()
DBG (DBG_FUNC, "MustScanner_Init: Call in\n");
g_chip.firmwarestate = FS_NULL;
- if (STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
+ if (SANE_STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
{
DBG (DBG_FUNC, "MustScanner_Init: Asic_Open return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_Initialize (&g_chip))
+ if (SANE_STATUS_GOOD != Asic_Initialize (&g_chip))
{
DBG (DBG_FUNC, "MustScanner_Init: Asic_Initialize return error\n");
return FALSE;
@@ -263,7 +263,7 @@ static SANE_Bool
MustScanner_GetScannerState ()
{
- if (STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
+ if (SANE_STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
{
DBG (DBG_FUNC, "MustScanner_GetScannerState: Asic_Open return error\n");
return FALSE;
@@ -293,20 +293,20 @@ MustScanner_PowerControl (SANE_Bool isLampOn, SANE_Bool isTALampOn)
{
SANE_Bool hasTA;
DBG (DBG_FUNC, "MustScanner_PowerControl: Call in\n");
- if (STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
+ if (SANE_STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
{
DBG (DBG_FUNC, "MustScanner_PowerControl: Asic_Open return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_TurnLamp (&g_chip, isLampOn))
+ if (SANE_STATUS_GOOD != Asic_TurnLamp (&g_chip, isLampOn))
{
DBG (DBG_FUNC,
"MustScanner_PowerControl: Asic_TurnLamp return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_IsTAConnected (&g_chip, &hasTA))
+ if (SANE_STATUS_GOOD != Asic_IsTAConnected (&g_chip, &hasTA))
{
DBG (DBG_FUNC,
"MustScanner_PowerControl: Asic_IsTAConnected return error\n");
@@ -315,7 +315,7 @@ MustScanner_PowerControl (SANE_Bool isLampOn, SANE_Bool isTALampOn)
if (hasTA)
{
- if (STATUS_GOOD != Asic_TurnTA (&g_chip, isTALampOn))
+ if (SANE_STATUS_GOOD != Asic_TurnTA (&g_chip, isTALampOn))
{
DBG (DBG_FUNC,
"MustScanner_PowerControl: Asic_TurnTA return error\n");
@@ -347,20 +347,20 @@ MustScanner_BackHome ()
{
DBG (DBG_FUNC, "MustScanner_BackHome: call in \n");
- if (STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
+ if (SANE_STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
{
DBG (DBG_FUNC, "MustScanner_BackHome: Asic_Open return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_CarriageHome (&g_chip, FALSE))
+ if (SANE_STATUS_GOOD != Asic_CarriageHome (&g_chip, FALSE))
{
DBG (DBG_FUNC,
"MustScanner_BackHome: Asic_CarriageHome return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_WaitUnitReady (&g_chip))
+ if (SANE_STATUS_GOOD != Asic_WaitUnitReady (&g_chip))
{
DBG (DBG_FUNC,
"MustScanner_BackHome: Asic_WaitUnitReady return error\n");
@@ -390,14 +390,14 @@ MustScanner_Prepare (SANE_Byte bScanSource)
{
DBG (DBG_FUNC, "MustScanner_Prepare: call in\n");
- if (STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
+ if (SANE_STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
{
DBG (DBG_FUNC, "MustScanner_Prepare: Asic_Open return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_WaitUnitReady (&g_chip))
+ if (SANE_STATUS_GOOD != Asic_WaitUnitReady (&g_chip))
{
DBG (DBG_FUNC,
"MustScanner_Prepare: Asic_WaitUnitReady return error\n");
@@ -407,13 +407,13 @@ MustScanner_Prepare (SANE_Byte bScanSource)
if (SS_Reflective == bScanSource)
{
DBG (DBG_FUNC, "MustScanner_Prepare:ScanSource is SS_Reflective\n");
- if (STATUS_GOOD != Asic_TurnLamp (&g_chip, TRUE))
+ if (SANE_STATUS_GOOD != Asic_TurnLamp (&g_chip, TRUE))
{
DBG (DBG_FUNC, "MustScanner_Prepare: Asic_TurnLamp return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_SetSource (&g_chip, LS_REFLECTIVE))
+ if (SANE_STATUS_GOOD != Asic_SetSource (&g_chip, LS_REFLECTIVE))
{
DBG (DBG_FUNC,
"MustScanner_Prepare: Asic_SetSource return error\n");
@@ -423,12 +423,12 @@ MustScanner_Prepare (SANE_Byte bScanSource)
else if (SS_Positive == bScanSource)
{
DBG (DBG_FUNC, "MustScanner_Prepare:ScanSource is SS_Positive\n");
- if (STATUS_GOOD != Asic_TurnTA (&g_chip, TRUE))
+ if (SANE_STATUS_GOOD != Asic_TurnTA (&g_chip, TRUE))
{
DBG (DBG_FUNC, "MustScanner_Prepare: Asic_TurnTA return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_SetSource (&g_chip, LS_POSITIVE))
+ if (SANE_STATUS_GOOD != Asic_SetSource (&g_chip, LS_POSITIVE))
{
DBG (DBG_FUNC,
"MustScanner_Prepare: Asic_SetSource return error\n");
@@ -439,13 +439,13 @@ MustScanner_Prepare (SANE_Byte bScanSource)
{
DBG (DBG_FUNC, "MustScanner_Prepare:ScanSource is SS_Negative\n");
- if (STATUS_GOOD != Asic_TurnTA (&g_chip, TRUE))
+ if (SANE_STATUS_GOOD != Asic_TurnTA (&g_chip, TRUE))
{
DBG (DBG_FUNC, "MustScanner_Prepare: Asic_TurnTA return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_SetSource (&g_chip, LS_NEGATIVE))
+ if (SANE_STATUS_GOOD != Asic_SetSource (&g_chip, LS_NEGATIVE))
{
DBG (DBG_FUNC,
"MustScanner_Prepare: Asic_SetSource return error\n");
@@ -2132,7 +2132,7 @@ MustScanner_GetMono16BitLine (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
unsigned short wLinePos = 0;
unsigned short i;
- isOrderInvert = isOrderInvert;
+ (void) isOrderInvert;
DBG (DBG_FUNC, "MustScanner_GetMono16BitLine: call in\n");
@@ -2228,7 +2228,7 @@ MustScanner_GetMono16BitLine1200DPI (SANE_Byte * lpLine, SANE_Bool isOrderInvert
unsigned short i;
SANE_Byte * lpTemp = lpLine;
- isOrderInvert = isOrderInvert;
+ (void) isOrderInvert;
DBG (DBG_FUNC, "MustScanner_GetMono16BitLine1200DPI: call in\n");
TotalXferLines = 0;
@@ -2407,7 +2407,7 @@ MustScanner_GetMono8BitLine (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
unsigned short i;
unsigned short wLinePos = 0;
- isOrderInvert = isOrderInvert;
+ (void) isOrderInvert;
DBG (DBG_FUNC, "MustScanner_GetMono8BitLine: call in\n");
TotalXferLines = 0;
@@ -2502,7 +2502,7 @@ MustScanner_GetMono8BitLine1200DPI (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
unsigned short i;
SANE_Byte bNextPixel = 0;
- isOrderInvert = isOrderInvert;
+ (void) isOrderInvert;
DBG (DBG_FUNC, "MustScanner_GetMono8BitLine1200DPI: call in\n");
TotalXferLines = 0;
@@ -2660,7 +2660,7 @@ MustScanner_GetMono1BitLine (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
unsigned short wLinePos;
unsigned short i;
- isOrderInvert = isOrderInvert;
+ (void) isOrderInvert;
DBG (DBG_FUNC, "MustScanner_GetMono1BitLine: call in\n");
@@ -2752,7 +2752,7 @@ MustScanner_GetMono1BitLine1200DPI (SANE_Byte * lpLine, SANE_Bool isOrderInvert,
unsigned short wLinePosOdd;
unsigned short wLinePosEven;
- isOrderInvert = isOrderInvert;
+ (void) isOrderInvert;
DBG (DBG_FUNC, "MustScanner_GetMono1BitLine1200DPI: call in\n");
@@ -2919,7 +2919,7 @@ MustScanner_CalculateMaxMin (SANE_Byte * pBuffer, unsigned short * lpMaxValue,
unsigned short *wSecData = NULL, *wDarkSecData = NULL;
int i, j;
- wResolution = wResolution;
+ (void) wResolution;
wSecData = (unsigned short *) malloc (sizeof (unsigned short) * g_nSecNum);
if (wSecData == NULL)
@@ -3001,7 +3001,7 @@ MustScanner_ReadDataFromScanner (void * dummy)
unsigned short wScanLinesThisBlock;
unsigned short wBufferLines = g_wLineDistance * 2 + g_wPixelDistance;
- dummy = dummy;
+ (void) dummy;
DBG (DBG_FUNC,
"MustScanner_ReadDataFromScanner: call in, and in new thread\n");
@@ -3023,7 +3023,7 @@ MustScanner_ReadDataFromScanner (void * dummy)
"MustScanner_ReadDataFromScanner: wScanLinesThisBlock=%d\n",
wScanLinesThisBlock);
- if (STATUS_GOOD !=
+ if (SANE_STATUS_GOOD !=
Asic_ReadImage (&g_chip, lpReadImage, wScanLinesThisBlock))
{
DBG (DBG_FUNC,
diff --git a/backend/mustek_usb2_reflective.c b/backend/mustek_usb2_reflective.c
index baf80e4..ed37296 100644
--- a/backend/mustek_usb2_reflective.c
+++ b/backend/mustek_usb2_reflective.c
@@ -82,31 +82,31 @@ Reflective_Reset ()
return FALSE;
}
- if (STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
+ if (SANE_STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_Open return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_Reset (&g_chip))
+ if (SANE_STATUS_GOOD != Asic_Reset (&g_chip))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_Reset return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_SetSource (&g_chip, LS_REFLECTIVE))
+ if (SANE_STATUS_GOOD != Asic_SetSource (&g_chip, LS_REFLECTIVE))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_SetSource return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_TurnLamp (&g_chip, TRUE))
+ if (SANE_STATUS_GOOD != Asic_TurnLamp (&g_chip, TRUE))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_TurnLamp return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_Close (&g_chip))
+ if (SANE_STATUS_GOOD != Asic_Close (&g_chip))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_Close return error\n");
return FALSE;
@@ -362,7 +362,7 @@ Reflective_SetupScan (COLORMODE ColorMode,
unsigned short YDpi,
SANE_Bool isInvert, unsigned short X, unsigned short Y, unsigned short Width, unsigned short Height)
{
- isInvert = isInvert;
+ (void) isInvert;
DBG (DBG_FUNC, "Reflective_SetupScan: Call in\n");
if (g_bOpened)
{
@@ -439,7 +439,7 @@ Reflective_SetupScan (COLORMODE ColorMode,
break;
}
- if (Asic_Open (&g_chip, g_pDeviceFile) != STATUS_GOOD)
+ if (Asic_Open (&g_chip, g_pDeviceFile) != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC, "Reflective_SetupScan: Asic_Open return error\n");
return FALSE;
@@ -1153,7 +1153,7 @@ Reflective_FindTopLeft (unsigned short * lpwStartX, unsigned short * lpwStartY)
Asic_SetCalibrate (&g_chip, 8, wXResolution, wYResolution, 0, 0, wCalWidth,
wCalHeight, FALSE);
Asic_SetAFEGainOffset (&g_chip);
- if (Asic_ScanStart (&g_chip) != STATUS_GOOD)
+ if (Asic_ScanStart (&g_chip) != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC, "Reflective_FindTopLeft: Asic_ScanStart return error\n");
free (lpCalData);
@@ -1162,7 +1162,7 @@ Reflective_FindTopLeft (unsigned short * lpwStartX, unsigned short * lpwStartY)
for (i = 0; i < nScanBlock; i++)
{
- if (STATUS_GOOD !=
+ if (SANE_STATUS_GOOD !=
Asic_ReadCalibrationData (&g_chip,
lpCalData + i * g_dwCalibrationSize,
g_dwCalibrationSize, 8))
@@ -1174,7 +1174,7 @@ Reflective_FindTopLeft (unsigned short * lpwStartX, unsigned short * lpwStartY)
}
}
- if (STATUS_GOOD !=
+ if (SANE_STATUS_GOOD !=
Asic_ReadCalibrationData (&g_chip,
lpCalData +
(nScanBlock) * g_dwCalibrationSize,
@@ -1340,7 +1340,7 @@ Return value:
static SANE_Bool
Reflective_LineCalibration16Bits ()
{
- STATUS status;
+ SANE_Status status;
SANE_Byte * lpWhiteData;
SANE_Byte * lpDarkData;
unsigned int dwWhiteTotalSize;
@@ -1403,7 +1403,7 @@ Reflective_LineCalibration16Bits ()
status =
Asic_SetCalibrate (&g_chip, 48, g_XDpi, g_YDpi, g_X, 0, wCalWidth,
wCalHeight, TRUE);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC,
"Reflective_LineCalibration16Bits: Asic_SetCalibrate return error \n");
@@ -1415,7 +1415,7 @@ Reflective_LineCalibration16Bits ()
}
status = Asic_ScanStart (&g_chip);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC,
"Reflective_LineCalibration16Bits: Asic_ScanStart return error \n");
@@ -1427,7 +1427,7 @@ Reflective_LineCalibration16Bits ()
status =
Asic_ReadCalibrationData (&g_chip, lpWhiteData, dwWhiteTotalSize, 8);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
free (lpWhiteData);
free (lpDarkData);
@@ -1438,7 +1438,7 @@ Reflective_LineCalibration16Bits ()
/*Read dark level data */
status = Asic_SetMotorType (&g_chip, FALSE, TRUE);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC,
"Reflective_LineCalibration16Bits: Asic_SetMotorType return error \n");
@@ -1451,7 +1451,7 @@ Reflective_LineCalibration16Bits ()
status =
Asic_SetCalibrate (&g_chip, 48, g_XDpi, g_YDpi, g_X, 0, wCalWidth,
wCalHeight, TRUE);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC,
"Reflective_LineCalibration16Bits: Asic_SetCalibrate return error \n");
@@ -1462,7 +1462,7 @@ Reflective_LineCalibration16Bits ()
}
status = Asic_TurnLamp (&g_chip, FALSE);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC,
"Reflective_LineCalibration16Bits: Asic_TurnLamp return error \n");
@@ -1475,7 +1475,7 @@ Reflective_LineCalibration16Bits ()
usleep (500000);
status = Asic_ScanStart (&g_chip);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC,
"Reflective_LineCalibration16Bits: Asic_ScanStart return error \n");
@@ -1486,7 +1486,7 @@ Reflective_LineCalibration16Bits ()
}
status = Asic_ReadCalibrationData (&g_chip, lpDarkData, dwDarkTotalSize, 8);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC,
"Reflective_LineCalibration16Bits: Asic_ReadCalibrationData return error \n");
@@ -1500,7 +1500,7 @@ Reflective_LineCalibration16Bits ()
/* Turn on lamp */
status = Asic_TurnLamp (&g_chip, TRUE);
- if (status != STATUS_GOOD)
+ if (status != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC,
"Reflective_LineCalibration16Bits: Asic_TurnLamp return error \n");
diff --git a/backend/mustek_usb2_transparent.c b/backend/mustek_usb2_transparent.c
index 21c7734..1c4b91b 100644
--- a/backend/mustek_usb2_transparent.c
+++ b/backend/mustek_usb2_transparent.c
@@ -82,37 +82,37 @@ Transparent_Reset ()
DBG (DBG_FUNC, "Transparent_Reset: scanner has been opened\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
+ if (SANE_STATUS_GOOD != Asic_Open (&g_chip, g_pDeviceFile))
{
DBG (DBG_FUNC, "Transparent_Reset: can not open scanner\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_Reset (&g_chip))
+ if (SANE_STATUS_GOOD != Asic_Reset (&g_chip))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_Reset return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_SetSource (&g_chip, LS_POSITIVE))
+ if (SANE_STATUS_GOOD != Asic_SetSource (&g_chip, LS_POSITIVE))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_SetSource return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_TurnLamp (&g_chip, FALSE))
+ if (SANE_STATUS_GOOD != Asic_TurnLamp (&g_chip, FALSE))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_TurnLamp return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_TurnTA (&g_chip, TRUE))
+ if (SANE_STATUS_GOOD != Asic_TurnTA (&g_chip, TRUE))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_TurnTA return error\n");
return FALSE;
}
- if (STATUS_GOOD != Asic_Close (&g_chip))
+ if (SANE_STATUS_GOOD != Asic_Close (&g_chip))
{
DBG (DBG_FUNC, "Reflective_Reset: Asic_Close return error\n");
return FALSE;
@@ -305,7 +305,7 @@ Transparent_SetupScan (COLORMODE ColorMode, unsigned short XDpi, unsigned short
SANE_Bool hasTA;
unsigned short wTAShadingMinus = 0;
- isInvert = isInvert;
+ (void) isInvert;
DBG (DBG_FUNC, "Transparent_SetupScan: call in\n");
if (g_bOpened)
@@ -391,7 +391,7 @@ Transparent_SetupScan (COLORMODE ColorMode, unsigned short XDpi, unsigned short
break;
}
- if (Asic_Open (&g_chip, g_pDeviceFile) != STATUS_GOOD)
+ if (Asic_Open (&g_chip, g_pDeviceFile) != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC, "Transparent_SetupScan: Asic_Open return error\n");
return FALSE;
@@ -399,13 +399,13 @@ Transparent_SetupScan (COLORMODE ColorMode, unsigned short XDpi, unsigned short
g_bOpened = TRUE;
- if (STATUS_GOOD != Asic_TurnLamp (&g_chip, FALSE))
+ if (SANE_STATUS_GOOD != Asic_TurnLamp (&g_chip, FALSE))
{
DBG (DBG_FUNC, "Transparent_SetupScan: Asic_TurnLamp return error\n");
return FALSE;
}
- if (Asic_IsTAConnected (&g_chip, &hasTA) != STATUS_GOOD)
+ if (Asic_IsTAConnected (&g_chip, &hasTA) != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC,
"Transparent_SetupScan: Asic_IsTAConnected return error\n");
@@ -417,7 +417,7 @@ Transparent_SetupScan (COLORMODE ColorMode, unsigned short XDpi, unsigned short
return FALSE;
}
- if (Asic_TurnTA (&g_chip, TRUE) != STATUS_GOOD)
+ if (Asic_TurnTA (&g_chip, TRUE) != SANE_STATUS_GOOD)
{
DBG (DBG_FUNC, "Transparent_SetupScan: Asic_TurnTA return error\n");
return FALSE;
diff --git a/backend/mustek_usb_high.c b/backend/mustek_usb_high.c
index 7b03475..8c89571 100644
--- a/backend/mustek_usb_high.c
+++ b/backend/mustek_usb_high.c
@@ -2672,7 +2672,7 @@ usb_high_scan_get_rgb_24_bit_line (Mustek_Usb_Device * dev, SANE_Byte * line,
SANE_Word lines_left;
DBG (5, "usb_high_scan_get_rgb_24_bit_line: start, dev=%p, line=%p, "
- "is_order_invert=%d\n", (void *) dev, line, is_order_invert);
+ "is_order_invert=%d\n", (void *) dev, (void *) line, is_order_invert);
RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
@@ -2701,7 +2701,7 @@ usb_high_scan_get_mono_8_bit_line (Mustek_Usb_Device * dev, SANE_Byte * line,
SANE_Word lines_left;
DBG (5, "usb_high_scan_get_mono_8_bit_line: start, dev=%p, line=%p, "
- "is_order_invert=%d\n", (void *) dev, line, is_order_invert);
+ "is_order_invert=%d\n", (void *) dev, (void *) line, is_order_invert);
RIE (usb_low_get_row (dev->chip, dev->green, &lines_left));
RIE (usb_high_cal_calibrate (dev->mono_calibrator, dev->green +
diff --git a/backend/nec.c b/backend/nec.c
index 66bfc9b..6de89a8 100644
--- a/backend/nec.c
+++ b/backend/nec.c
@@ -290,7 +290,7 @@ sense_handler(int fd, u_char *sense_buffer, void *ss)
int sense_key;
NEC_Sense_Data *sdat = (NEC_Sense_Data *) ss;
- fd = fd; /* silence compilation warnings */
+ (void) fd; /* silence compilation warnings */
#define add_sense_code sense_buffer[12]
#define add_sense_qual sense_buffer[13]
@@ -1890,7 +1890,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
NEC_New_Device *np;
int i;
- authorize = authorize; /* silence compilation warnings */
+ (void) authorize; /* silence compilation warnings */
DBG_INIT ();
DBG (10, "<< sane_init ");
@@ -2079,7 +2079,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
int i;
DBG (10, "<< sane_get_devices ");
- local_only = local_only; /* silence compilation warnings */
+ (void) local_only; /* silence compilation warnings */
if (devlist)
free (devlist);
@@ -2714,7 +2714,7 @@ send_binary_g_table(NEC_Scanner *s, SANE_Word *a, int dtq)
SANE_Status status;
unsigned int i, j;
- dtq = dtq; /* silence compilation warnings */
+ (void) dtq; /* silence compilation warnings */
DBG(11, "<< send_binary_g_table\n");
@@ -3696,8 +3696,8 @@ sane_cancel (SANE_Handle handle)
SANE_Status
sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
- handle = handle;
- non_blocking = non_blocking; /* silence compilation warnings */
+ (void) handle;
+ (void) non_blocking; /* silence compilation warnings */
DBG (10, "<< sane_set_io_mode");
DBG (10, ">>\n");
@@ -3708,8 +3708,8 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
- handle = handle;
- fd = fd; /* silence compilation warnings */
+ (void) handle;
+ (void) fd; /* silence compilation warnings */
DBG (10, "<< sane_get_select_fd");
DBG (10, ">>\n");
diff --git a/backend/net.c b/backend/net.c
index 7c4aae9..d16119a 100644
--- a/backend/net.c
+++ b/backend/net.c
@@ -705,9 +705,9 @@ net_avahi_resolve_callback (AvahiServiceResolver *r, AvahiIfIndex interface, Ava
char *t;
/* unused */
- interface = interface;
- protocol = protocol;
- userdata = userdata;
+ (void) interface;
+ (void) protocol;
+ (void) userdata;
if (!r)
return;
@@ -759,8 +759,8 @@ net_avahi_browse_callback (AvahiServiceBrowser *b, AvahiIfIndex interface, Avahi
AvahiProtocol proto;
/* unused */
- flags = flags;
- userdata = userdata;
+ (void) flags;
+ (void) userdata;
if (!b)
return;
@@ -808,7 +808,7 @@ net_avahi_callback (AvahiClient *c, AvahiClientState state, void * userdata)
int error;
/* unused */
- userdata = userdata;
+ (void) userdata;
if (!c)
return;
@@ -1201,7 +1201,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
char *full_name;
int i, num_devs;
size_t len;
-#define ASSERT_SPACE(n) \
+#define ASSERT_SPACE(n) do \
{ \
if (devlist_len + (n) > devlist_size) \
{ \
@@ -1216,7 +1216,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
return SANE_STATUS_NO_MEM; \
} \
} \
- }
+ } while (0)
DBG (3, "sane_get_devices: local_only = %d\n", local_only);
@@ -2132,7 +2132,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data, SANE_Int max_length,
int is_even;
DBG (3, "sane_read: handle=%p, data=%p, max_length=%d, length=%p\n",
- handle, data, max_length, (void *) length);
+ handle, (void *) data, max_length, (void *) length);
if (!length)
{
DBG (1, "sane_read: length == NULL\n");
diff --git a/backend/niash.c b/backend/niash.c
index bce6c2f..91d99a9 100644
--- a/backend/niash.c
+++ b/backend/niash.c
@@ -1368,7 +1368,7 @@ sane_read (SANE_Handle h, SANE_Byte * buf, SANE_Int maxlen, SANE_Int * len)
TDataPipe *p;
TModeParam const *pMode;
- DBG (DBG_MSG, "sane_read: buf=%p, maxlen=%d, ", buf, maxlen);
+ DBG (DBG_MSG, "sane_read: buf=%p, maxlen=%d, ", (void *) buf, maxlen);
s = (TScanner *) h;
diff --git a/backend/p5.c b/backend/p5.c
index 558d9d2..26d78c6 100644
--- a/backend/p5.c
+++ b/backend/p5.c
@@ -157,7 +157,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
SANE_Status status;
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
init_count++;
@@ -459,8 +459,8 @@ SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fdp)
{
/* make compiler happy ... */
- handle = handle;
- fdp = fdp;
+ (void) handle;
+ (void) fdp;
DBG (DBG_proc, "sane_get_select_fd: start\n");
DBG (DBG_warn, "sane_get_select_fd: unsupported ...\n");
@@ -1595,7 +1595,7 @@ config_attach (SANEI_Config __sane_unused__ * config, const char *devname,
/* currently, the config is a global variable so config is useless here */
/* the correct thing would be to have a generic sanei_attach_matching_devices
* using an attach function with a config parameter */
- config = config;
+ (void) config;
/* the devname has been processed and is ready to be used
* directly. The config struct contains all the configuration data for
diff --git a/backend/p5_device.c b/backend/p5_device.c
index a9026f0..83bf63c 100644
--- a/backend/p5_device.c
+++ b/backend/p5_device.c
@@ -55,7 +55,7 @@ addr_name (uint16_t addr)
*/
static uint8_t
-inb (int fd, uint16_t addr)
+p5_inb (int fd, uint16_t addr)
{
#ifdef HAVE_LINUX_PPDEV_H
uint8_t val = 0xff;
@@ -84,7 +84,7 @@ inb (int fd, uint16_t addr)
rc = read (fd, &val, 1);
break;
default:
- DBG (DBG_error, "inb(%s) escaped ppdev\n", addr_name (addr));
+ DBG (DBG_error, "p5_inb(%s) escaped ppdev\n", addr_name (addr));
return 0xFF;
}
if (rc < 0)
@@ -100,7 +100,7 @@ inb (int fd, uint16_t addr)
}
static void
-outb (int fd, uint16_t addr, uint8_t value)
+p5_outb (int fd, uint16_t addr, uint8_t value)
{
#ifdef HAVE_LINUX_PPDEV_H
int rc = 0, mode = 0xff;
@@ -134,7 +134,7 @@ outb (int fd, uint16_t addr, uint8_t value)
rc = write (fd, &value, 1);
break;
default:
- DBG (DBG_error, "outb(%s,0x%02x) escaped ppdev\n", addr_name (addr),
+ DBG (DBG_error, "p5_outb(%s,0x%02x) escaped ppdev\n", addr_name (addr),
value);
break;
}
@@ -157,8 +157,8 @@ write_reg (int fd, uint8_t index, uint8_t value)
idx = index & 0x0F;
DBG (DBG_io2, "write_reg(REG%X,0x%x)\n", idx, value);
idx = idx << 4 | idx;
- outb (fd, EPPADR, idx);
- outb (fd, EPPDATA, value);
+ p5_outb (fd, EPPADR, idx);
+ p5_outb (fd, EPPDATA, value);
}
static uint8_t
@@ -169,8 +169,8 @@ read_reg (int fd, uint8_t index)
/* both nibbles hold the same value */
idx = index & 0x0F;
idx = idx << 4 | idx;
- outb (fd, EPPADR, idx);
- return inb (fd, EPPDATA);
+ p5_outb (fd, EPPADR, idx);
+ return p5_inb (fd, EPPDATA);
}
#ifdef HAVE_LINUX_PPDEV_H
@@ -311,7 +311,7 @@ memtest (int fd, uint16_t addr)
}
-#define INB(k,y,z) val=inb(k,y); if(val!=z) { DBG(DBG_error,"expected 0x%02x, got 0x%02x\n",z, val); return SANE_FALSE; }
+#define P5_INB(k,y,z) val=p5_inb(k,y); if(val!=z) { DBG(DBG_error,"expected 0x%02x, got 0x%02x\n",z, val); return SANE_FALSE; }
/** @brief connect to scanner
* This function sends the connect sequence for the scanner.
@@ -323,66 +323,66 @@ connect (int fd)
{
uint8_t val;
- inb (fd, CONTROL);
- outb (fd, CONTROL, 0x04);
- outb (fd, DATA, 0x02);
- INB (fd, DATA, 0x02);
- outb (fd, DATA, 0x03);
- INB (fd, DATA, 0x03);
- outb (fd, DATA, 0x03);
- outb (fd, DATA, 0x83);
- outb (fd, DATA, 0x03);
- outb (fd, DATA, 0x83);
- INB (fd, DATA, 0x83);
- outb (fd, DATA, 0x82);
- INB (fd, DATA, 0x82);
- outb (fd, DATA, 0x02);
- outb (fd, DATA, 0x82);
- outb (fd, DATA, 0x02);
- outb (fd, DATA, 0x82);
- INB (fd, DATA, 0x82);
- outb (fd, DATA, 0x82);
- INB (fd, DATA, 0x82);
- outb (fd, DATA, 0x02);
- outb (fd, DATA, 0x82);
- outb (fd, DATA, 0x02);
- outb (fd, DATA, 0x82);
- INB (fd, DATA, 0x82);
- outb (fd, DATA, 0x83);
- INB (fd, DATA, 0x83);
- outb (fd, DATA, 0x03);
- outb (fd, DATA, 0x83);
- outb (fd, DATA, 0x03);
- outb (fd, DATA, 0x83);
- INB (fd, DATA, 0x83);
- outb (fd, DATA, 0x82);
- INB (fd, DATA, 0x82);
- outb (fd, DATA, 0x02);
- outb (fd, DATA, 0x82);
- outb (fd, DATA, 0x02);
- outb (fd, DATA, 0x82);
- INB (fd, DATA, 0x82);
- outb (fd, DATA, 0x83);
- INB (fd, DATA, 0x83);
- outb (fd, DATA, 0x03);
- outb (fd, DATA, 0x83);
- outb (fd, DATA, 0x03);
- outb (fd, DATA, 0x83);
- INB (fd, DATA, 0x83);
- outb (fd, DATA, 0x83);
- INB (fd, DATA, 0x83);
- outb (fd, DATA, 0x03);
- outb (fd, DATA, 0x83);
- outb (fd, DATA, 0x03);
- outb (fd, DATA, 0x83);
- INB (fd, DATA, 0x83);
- outb (fd, DATA, 0x82);
- INB (fd, DATA, 0x82);
- outb (fd, DATA, 0x02);
- outb (fd, DATA, 0x82);
- outb (fd, DATA, 0x02);
- outb (fd, DATA, 0x82);
- outb (fd, DATA, 0xFF);
+ p5_inb (fd, CONTROL);
+ p5_outb (fd, CONTROL, 0x04);
+ p5_outb (fd, DATA, 0x02);
+ P5_INB (fd, DATA, 0x02);
+ p5_outb (fd, DATA, 0x03);
+ P5_INB (fd, DATA, 0x03);
+ p5_outb (fd, DATA, 0x03);
+ p5_outb (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x03);
+ p5_outb (fd, DATA, 0x83);
+ P5_INB (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x82);
+ P5_INB (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x02);
+ p5_outb (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x02);
+ p5_outb (fd, DATA, 0x82);
+ P5_INB (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x82);
+ P5_INB (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x02);
+ p5_outb (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x02);
+ p5_outb (fd, DATA, 0x82);
+ P5_INB (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x83);
+ P5_INB (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x03);
+ p5_outb (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x03);
+ p5_outb (fd, DATA, 0x83);
+ P5_INB (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x82);
+ P5_INB (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x02);
+ p5_outb (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x02);
+ p5_outb (fd, DATA, 0x82);
+ P5_INB (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x83);
+ P5_INB (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x03);
+ p5_outb (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x03);
+ p5_outb (fd, DATA, 0x83);
+ P5_INB (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x83);
+ P5_INB (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x03);
+ p5_outb (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x03);
+ p5_outb (fd, DATA, 0x83);
+ P5_INB (fd, DATA, 0x83);
+ p5_outb (fd, DATA, 0x82);
+ P5_INB (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x02);
+ p5_outb (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0x02);
+ p5_outb (fd, DATA, 0x82);
+ p5_outb (fd, DATA, 0xFF);
DBG (DBG_info, "connect() OK...\n");
return SANE_TRUE;
}
@@ -392,60 +392,60 @@ disconnect (int fd)
{
uint8_t val;
- outb (fd, CONTROL, 0x04);
- outb (fd, DATA, 0x00);
- INB (fd, DATA, 0x00);
- outb (fd, DATA, 0x01);
- INB (fd, DATA, 0x01);
- outb (fd, DATA, 0x01);
- outb (fd, DATA, 0x81);
- outb (fd, DATA, 0x01);
- outb (fd, DATA, 0x81);
- INB (fd, DATA, 0x81);
- outb (fd, DATA, 0x80);
- INB (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- INB (fd, DATA, 0x80);
- outb (fd, DATA, 0x80);
- INB (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- INB (fd, DATA, 0x80);
- outb (fd, DATA, 0x81);
- INB (fd, DATA, 0x81);
- outb (fd, DATA, 0x01);
- outb (fd, DATA, 0x81);
- outb (fd, DATA, 0x01);
- outb (fd, DATA, 0x81);
- INB (fd, DATA, 0x81);
- outb (fd, DATA, 0x80);
- INB (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- INB (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- INB (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- INB (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- outb (fd, DATA, 0x00);
- outb (fd, DATA, 0x80);
- inb (fd, CONTROL);
- outb (fd, CONTROL, 0x0C);
+ p5_outb (fd, CONTROL, 0x04);
+ p5_outb (fd, DATA, 0x00);
+ P5_INB (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x01);
+ P5_INB (fd, DATA, 0x01);
+ p5_outb (fd, DATA, 0x01);
+ p5_outb (fd, DATA, 0x81);
+ p5_outb (fd, DATA, 0x01);
+ p5_outb (fd, DATA, 0x81);
+ P5_INB (fd, DATA, 0x81);
+ p5_outb (fd, DATA, 0x80);
+ P5_INB (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ P5_INB (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x80);
+ P5_INB (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ P5_INB (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x81);
+ P5_INB (fd, DATA, 0x81);
+ p5_outb (fd, DATA, 0x01);
+ p5_outb (fd, DATA, 0x81);
+ p5_outb (fd, DATA, 0x01);
+ p5_outb (fd, DATA, 0x81);
+ P5_INB (fd, DATA, 0x81);
+ p5_outb (fd, DATA, 0x80);
+ P5_INB (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ P5_INB (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ P5_INB (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ P5_INB (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ p5_outb (fd, DATA, 0x00);
+ p5_outb (fd, DATA, 0x80);
+ p5_inb (fd, CONTROL);
+ p5_outb (fd, CONTROL, 0x0C);
return SANE_STATUS_GOOD;
}
@@ -1018,7 +1018,7 @@ wait_document (int fd, uint8_t detector)
write_reg (fd, REG2, 0x90);
write_reg (fd, REGF, 0x82);
write_reg (fd, REG0, 0x00);
- val = inb (fd, STATUS) & 0xf8;
+ val = p5_inb (fd, STATUS) & 0xf8;
if (val != 0xf8)
{
DBG (DBG_error, "wait_document: unexpected STATUS value 0x%02x instead of 0xf8", val);
diff --git a/backend/pie-scsidef.h b/backend/pie-scsidef.h
index 05aa18f..9563452 100644
--- a/backend/pie-scsidef.h
+++ b/backend/pie-scsidef.h
@@ -189,9 +189,12 @@ static scsiblk inquiry = { inquiryC, sizeof(inquiryC) };
#define get_inquiry_additional_length(in) in[0x04]
#define set_inquiry_length(out,n) out[0x04]=n-5
-#define get_inquiry_vendor(in, buf) strncpy(buf, in + 0x08, 0x08)
-#define get_inquiry_product(in, buf) strncpy(buf, in + 0x10, 0x010)
-#define get_inquiry_version(in, buf) strncpy(buf, in + 0x20, 0x04)
+#define get_inquiry_vendor(in, buf) snprintf(buf, 0x08 + 1, "%.*s", \
+ 0x08, in + 0x08)
+#define get_inquiry_product(in, buf) snprintf(buf, 0x10 + 1, "%.*s", \
+ 0x10, in + 0x10)
+#define get_inquiry_version(in, buf) snprintf(buf, 0x04 + 1, "%.*s", \
+ 0x04, in + 0x20)
#define get_inquiry_max_x_res(in) getnbyte1(in + 0x24, 2)
#define get_inquiry_max_y_res(in) getnbyte1(in + 0x26, 2)
diff --git a/backend/pie.c b/backend/pie.c
index 2db90dc..bfa68f0 100644
--- a/backend/pie.c
+++ b/backend/pie.c
@@ -744,11 +744,8 @@ pie_get_inquiry_values (Pie_Device * dev, unsigned char *buffer)
dev->inquiry_len = get_inquiry_additional_length (buffer) + 5;
get_inquiry_vendor ((char *) buffer, dev->vendor);
- dev->vendor[8] = '\0';
get_inquiry_product ((char *) buffer, dev->product);
- dev->product[16] = '\0';
get_inquiry_version ((char *) buffer, dev->version);
- dev->version[4] = '\0';
dev->inquiry_x_res = get_inquiry_max_x_res (buffer);
dev->inquiry_y_res = get_inquiry_max_y_res (buffer);
diff --git a/backend/pieusb.c b/backend/pieusb.c
index f8dc073..ec787d1 100644
--- a/backend/pieusb.c
+++ b/backend/pieusb.c
@@ -1436,7 +1436,7 @@ SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
DBG(DBG_info_sane,"sane_get_select_fd(): not supported (only for non-blocking IO)\n");
- handle = handle;
- fd = fd;
+ (void) handle;
+ (void) fd;
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/pieusb_scancmd.c b/backend/pieusb_scancmd.c
index 583c4ac..3ed4f03 100644
--- a/backend/pieusb_scancmd.c
+++ b/backend/pieusb_scancmd.c
@@ -205,7 +205,8 @@ sanei_pieusb_cmd_test_unit_ready(SANE_Int device_number, struct Pieusb_Command_S
status->pieusb_status = sanei_pieusb_command (device_number, command, NULL, 0);
- DBG (DBG_info_scan, "sanei_pieusb_cmd_test_unit_ready() return status = %s\n", sane_strstatus(status->pieusb_status));
+ DBG (DBG_info_scan, "sanei_pieusb_cmd_test_unit_ready() return status = %s\n",
+ sane_strstatus (sanei_pieusb_convert_status (status->pieusb_status)));
}
/**
diff --git a/backend/pieusb_specific.c b/backend/pieusb_specific.c
index e5471ee..f319278 100644
--- a/backend/pieusb_specific.c
+++ b/backend/pieusb_specific.c
@@ -260,7 +260,7 @@ sanei_pieusb_find_device_callback (const char *devicename)
free (dev);
DBG (DBG_error, "sanei_pieusb_find_device_callback: get scanner properties (5 bytes) failed with %d\n", status.pieusb_status);
sanei_usb_close (device_number);
- return status.pieusb_status;
+ return sanei_pieusb_convert_status (status.pieusb_status);
}
/* get full inquiry data */
sanei_pieusb_cmd_inquiry(device_number, &inq, inq.additionalLength+4, &status);
@@ -268,7 +268,7 @@ sanei_pieusb_find_device_callback (const char *devicename)
free (dev);
DBG (DBG_error, "sanei_pieusb_find_device_callback: get scanner properties failed\n");
sanei_usb_close (device_number);
- return status.pieusb_status;
+ return sanei_pieusb_convert_status (status.pieusb_status);
}
/* Close the device again */
@@ -1781,7 +1781,7 @@ sanei_pieusb_set_frame_from_options(Pieusb_Scanner * scanner)
scanner->frame.index = 0x80; /* 0x80: value from cyberview */
sanei_pieusb_cmd_set_scan_frame (scanner->device_number, scanner->frame.index, &(scanner->frame), &status);
DBG (DBG_info_sane, "sanei_pieusb_set_frame_from_options(): sanei_pieusb_cmd_set_scan_frame status %s\n", sane_strstatus (sanei_pieusb_convert_status (status.pieusb_status)));
- return status.pieusb_status;
+ return sanei_pieusb_convert_status (status.pieusb_status);
}
/*
diff --git a/backend/pixma/pixma.c b/backend/pixma/pixma.c
index 31e71f0..72385b2 100644
--- a/backend/pixma/pixma.c
+++ b/backend/pixma/pixma.c
@@ -899,7 +899,7 @@ print_scan_param (int level, const pixma_scan_param_t * sp)
pixma_dbg (level, " dpi=%ux%u offset=(%u,%u) dimension=%ux%u\n",
sp->xdpi, sp->ydpi, sp->x, sp->y, sp->w, sp->h);
pixma_dbg (level, " gamma=%f gamma_table=%p source=%d\n", sp->gamma,
- sp->gamma_table, sp->source);
+ (void *) sp->gamma_table, sp->source);
pixma_dbg (level, " adf-wait=%d\n", sp->adf_wait);
}
#endif
diff --git a/backend/pixma/pixma_bjnp.c b/backend/pixma/pixma_bjnp.c
index 63dd56d..75ad658 100644
--- a/backend/pixma/pixma_bjnp.c
+++ b/backend/pixma/pixma_bjnp.c
@@ -994,7 +994,7 @@ prepare_socket(const char *if_name, const bjnp_sockaddr_t *local_sa,
/* send broadcasts to the broadcast address of the interface */
- memcpy(dest_sa, broadcast_sa, sa_size(dest_sa) );
+ memcpy(dest_sa, broadcast_sa, sa_size(broadcast_sa) );
/* we fill port when we send the broadcast */
dest_sa -> ipv4.sin_port = htons(0);
diff --git a/backend/pixma/pixma_common.c b/backend/pixma/pixma_common.c
index 24912b8..f626db1 100644
--- a/backend/pixma/pixma_common.c
+++ b/backend/pixma/pixma_common.c
@@ -877,7 +877,7 @@ pixma_scan (pixma_t * s, pixma_scan_param_t * sp)
sp->line_size, sp->image_size, sp->channels, sp->depth);
pixma_dbg (3, " dpi=%ux%u offset=(%u,%u) dimension=%ux%u\n",
sp->xdpi, sp->ydpi, sp->x, sp->y, sp->w, sp->h);
- pixma_dbg (3, " gamma=%f gamma_table=%p source=%d\n", sp->gamma, sp->gamma_table, sp->source);
+ pixma_dbg (3, " gamma=%f gamma_table=%p source=%d\n", sp->gamma, (void *) sp->gamma_table, sp->source);
pixma_dbg (3, " threshold=%d threshold_curve=%d\n", sp->threshold, sp->threshold_curve);
pixma_dbg (3, " adf-wait=%d\n", sp->adf_wait);
pixma_dbg (3, " ADF page count: %d\n", sp->adf_pageid);
diff --git a/backend/pixma/pixma_imageclass.c b/backend/pixma/pixma_imageclass.c
index ae06180..6a485de 100644
--- a/backend/pixma/pixma_imageclass.c
+++ b/backend/pixma/pixma_imageclass.c
@@ -77,6 +77,7 @@
#define D420_PID 0x26ef
#define MF3200_PID 0x2684
#define MF6500_PID 0x2686
+#define IR1018_PID 0x269d
/* generation 2 scanners (>=0x2707) */
#define MF8300_PID 0x2708
#define MF4500_PID 0x2736
@@ -88,8 +89,6 @@
#define MF4700_PID 0x2774
#define MF8200_PID 0x2779
/* the following are all untested */
-#define MF5630_PID 0x264e
-#define MF5650_PID 0x264f
#define MF8100_PID 0x2659
#define MF5880_PID 0x26f9
#define MF6680_PID 0x26fa
@@ -243,6 +242,7 @@ activate (pixma_t * s, uint8_t x)
case MF4360_PID:
case MF4100_PID:
case MF8300_PID:
+ case IR1018_PID:
return iclass_exec (s, &mf->cb, 1);
break;
default:
@@ -275,6 +275,7 @@ select_source (pixma_t * s)
case MF4360_PID:
case MF4100_PID:
case MF8300_PID:
+ case IR1018_PID:
return iclass_exec (s, &mf->cb, 0);
break;
default:
@@ -310,6 +311,7 @@ send_scan_param (pixma_t * s)
case MF4360_PID:
case MF4100_PID:
case MF8300_PID:
+ case IR1018_PID:
return iclass_exec (s, &mf->cb, 0);
break;
default:
@@ -336,7 +338,8 @@ request_image_block (pixma_t * s, unsigned flag, uint8_t * info,
expected_len = (mf->generation >= 2 ||
s->cfg->pid == MF4600_PID ||
s->cfg->pid == MF6500_PID ||
- s->cfg->pid == MF8030_PID) ? 512 : hlen;
+ s->cfg->pid == MF8030_PID ||
+ s->cfg->pid == IR1018_PID) ? 512 : hlen;
mf->cb.reslen = pixma_cmd_transaction (s, mf->cb.buf, 11, mf->cb.buf, expected_len);
if (mf->cb.reslen >= hlen)
{
@@ -347,7 +350,8 @@ request_image_block (pixma_t * s, unsigned flag, uint8_t * info,
if (mf->generation >= 2 ||
s->cfg->pid == MF4600_PID ||
s->cfg->pid == MF6500_PID ||
- s->cfg->pid == MF8030_PID)
+ s->cfg->pid == MF8030_PID ||
+ s->cfg->pid == IR1018_PID)
{ /* 32bit size */
*datalen = mf->cb.reslen - hlen;
*size = (*datalen + hlen == 512) ? pixma_get_be32 (mf->cb.buf + 4) - *datalen : *size;
@@ -372,7 +376,8 @@ read_image_block (pixma_t * s, uint8_t * data, unsigned size)
maxchunksize = MAX_CHUNK_SIZE * ((mf->generation >= 2 ||
s->cfg->pid == MF4600_PID ||
s->cfg->pid == MF6500_PID ||
- s->cfg->pid == MF8030_PID) ? 4 : 1);
+ s->cfg->pid == MF8030_PID ||
+ s->cfg->pid == IR1018_PID) ? 4 : 1);
while (size)
{
if (size >= maxchunksize)
@@ -410,6 +415,7 @@ read_error_info (pixma_t * s, void *buf, unsigned size)
case MF4360_PID:
case MF4100_PID:
case MF8300_PID:
+ case IR1018_PID:
error = iclass_exec (s, &mf->cb, 0);
break;
default:
@@ -790,7 +796,8 @@ iclass_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
mf->generation == 1 &&
s->cfg->pid != MF4600_PID &&
s->cfg->pid != MF6500_PID &&
- s->cfg->pid != MF8030_PID)
+ s->cfg->pid != MF8030_PID &&
+ s->cfg->pid != IR1018_PID)
{
/* color and not MF46xx or MF65xx */
pack_rgb (mf->blkptr, n, mf->raw_width, mf->lineptr);
@@ -948,14 +955,14 @@ const pixma_config_t pixma_iclass_devices[] = {
DEV ("Canon i-SENSYS MF8200C Series", "MF8200C", MF8200_PID, 600, 300, 640, 1050, PIXMA_CAP_ADF),
DEV ("Canon i-SENSYS MF8300 Series", "MF8300", MF8300_PID, 600, 0, 640, 1050, PIXMA_CAP_ADF),
DEV ("Canon imageCLASS D530", "D530", D530_PID, 600, 0, 640, 877, 0),
+ DEV ("Canon imageRUNNER 1018/1022/1023", "iR1018/1022/1023", IR1018_PID, 600, 0, 640, 877, PIXMA_CAP_ADFDUP),
/* FIXME: the following capabilities all need updating/verifying */
- DEV ("Canon imageCLASS MF5630", "MF5630", MF5630_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
- DEV ("Canon laserBase MF5650", "MF5650", MF5650_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
DEV ("Canon imageCLASS MF8170c", "MF8170c", MF8100_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
DEV ("Canon imageClass MF8030", "MF8030", MF8030_PID, 600, 0, 640, 877, PIXMA_CAP_ADF),
DEV ("Canon i-SENSYS MF5880dn", "MF5880", MF5880_PID, 600, 0, 640, 877, PIXMA_CAP_ADFDUP),
DEV ("Canon i-SENSYS MF6680dn", "MF6680", MF6680_PID, 600, 0, 640, 877, PIXMA_CAP_ADFDUP),
DEV ("Canon imageRUNNER 1133", "iR1133", IR1133_PID, 600, 0, 637, 877, PIXMA_CAP_ADFDUP), /* max. w = 216mm */
+ DEV ("Canon imageRUNNER 1133A", "imageRUNNER1133", IR1133_PID, 600, 0, 637, 877, PIXMA_CAP_ADFDUP), /* max. w = 216mm */
DEV ("Canon i-SENSYS MF5900 Series", "MF5900", MF5900_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
DEV ("Canon i-SENSYS MF8500C Series", "MF8500C", MF8500_PID, 600, 0, 640, 1050, PIXMA_CAP_ADFDUP),
DEV ("Canon i-SENSYS MF6100 Series", "MF6100", MF6100_PID, 600, 300, 640, 1050, PIXMA_CAP_ADFDUP),
diff --git a/backend/pixma/pixma_mp150.c b/backend/pixma/pixma_mp150.c
index f3d5934..171eccf 100644
--- a/backend/pixma/pixma_mp150.c
+++ b/backend/pixma/pixma_mp150.c
@@ -230,7 +230,7 @@
#define G3000_PID 0x1794
#define G2000_PID 0x1795
#define TS9000_PID 0x179f
-#define TS8000_PID 0x1800
+#define TS8000_PID 0x1800 /* tested: TS8030 */
#define TS6000_PID 0x1801
#define TS5000_PID 0x1802
#define MG3000_PID 0x180b
@@ -308,7 +308,7 @@
#define G2060_PID 0x18C1
#define G3020_PID 0x18BF
#define TS7430_PID 0x18B2
-#define XK90_PID 0x18B6
+#define XK90_PID 0x18B6 /* tested */
#define TS8430_PID 0x18B5
#define TR7600_PID 0x18AA
#define TR8600_PID 0x18AD
@@ -316,6 +316,27 @@
#define TS6400_PID 0x18D3
#define TS7400_PID 0x18D7
+/* 2021 new device (untested) */
+#define TS5350i_PID 0x18D9
+#define G600_PID 0x18D5
+#define TS3500_PID 0x18D4
+#define TR4600_PID 0x18DA
+#define E4500_PID 0x18DB
+#define TR4700_PID 0x18DC
+#define XK500_PID 0x18DF
+#define TS8530_PID 0x18E0
+#define XK100_PID 0x18E2
+#define TS7530_PID 0x18E1
+#define TS7450i_PID 0x18F7
+#define GX6000_PID 0x18A6
+#define GX7000_PID 0x18A8
+#define TS5400_PID 0x18D8
+
+/* 2022 new device (untested) */
+#define TS2400_PID 0x1108
+#define TS2600_PID 0x1107
+
+
/* Generation 4 XML messages that encapsulates the Pixma protocol messages */
#define XML_START_1 \
"<?xml version=\"1.0\" encoding=\"utf-8\" ?>\
@@ -693,7 +714,7 @@ send_scan_param (pixma_t * s)
if (mp->generation <= 2)
{
- PDBG (pixma_dbg (4, "*send_scan_param gen. 1-2 ***** Setting: xdpi=%hi ydpi=%hi x=%i y=%i wx=%i ***** \n",
+ PDBG (pixma_dbg (4, "*send_scan_param gen. 1-2 ***** Setting: xdpi=%u ydpi=%u x=%i y=%i wx=%i ***** \n",
xdpi, ydpi, x-xs, y, wx));
data = pixma_newcmd (&mp->cb, cmd_scan_param, 0x30, 0);
pixma_set_be16 (xdpi | 0x8000, data + 0x04);
@@ -715,7 +736,7 @@ send_scan_param (pixma_t * s)
}
else
{
- PDBG (pixma_dbg (4, "*send_scan_param gen. 3+ ***** Setting: xdpi=%hi ydpi=%hi x=%i xs=%i y=%i wx=%i h=%i ***** \n",
+ PDBG (pixma_dbg (4, "*send_scan_param gen. 3+ ***** Setting: xdpi=%u ydpi=%u x=%i xs=%i y=%i wx=%i h=%i ***** \n",
xdpi, ydpi, x, xs, y, wx, h));
data = pixma_newcmd (&mp->cb, cmd_scan_param_3, 0x38, 0);
data[0x00] = (is_scanning_from_adf (s)) ? 0x02 : 0x01;
@@ -929,6 +950,7 @@ handle_interrupt (pixma_t * s, int timeout)
* poll event with 'scanimage -A' */
if (s->cfg->pid == MG5300_PID
|| s->cfg->pid == MG5400_PID
+ || s->cfg->pid == MG5700_PID
|| s->cfg->pid == MG6200_PID
|| s->cfg->pid == MG6300_PID
|| s->cfg->pid == MX340_PID
@@ -1147,7 +1169,7 @@ post_process_image_data (pixma_t * s, pixma_imagebuf_t * ib)
n = s->param->xdpi / 600;
else
n = s->param->xdpi / 2400;
- if (s->cfg->pid == MP600_PID || s->cfg->pid == MP600R_PID)
+ if (s->cfg->pid == MP600_PID || s->cfg->pid == MP600R_PID || s->cfg->pid == XK90_PID)
n = s->param->xdpi / 1200;
m = (n > 0) ? s->param->wx / n : 1;
@@ -1188,6 +1210,7 @@ post_process_image_data (pixma_t * s, pixma_imagebuf_t * ib)
|| s->cfg->pid == MP230_PID
|| s->cfg->pid == MX470_PID
|| s->cfg->pid == MX510_PID
+ || s->cfg->pid == XK90_PID
|| s->cfg->pid == MX520_PID))
reorder_pixels (mp->linebuf, sptr, c, n, m, s->param->wx, line_size);
@@ -1641,7 +1664,7 @@ mp150_finish_scan (pixma_t * s)
else
PDBG (pixma_dbg (4, "*mp150_finish_scan***** wait for next page from ADF *****\n"));
- mp->state = state_idle;
+ mp->state = state_idle;
/* fall through */
case state_idle:
break;
@@ -1906,9 +1929,9 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA TS8330 Series", "TS8330", TS8330_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA XK60 Series", "XK60", XK60_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA TS6330 Series", "TS6330", TS6330_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA TS3300 Series", "TS3300", TS3300_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS3300 Series", "TS3300", TS3300_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA E3300 Series", "E3300", E3300_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA TS3400 Series", "TS3400", TS3400_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS3400 Series", "TS3400", TS3400_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA E3400 Series", "E3400", E3400_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA TR7000 Series", "TR7000", TR7000_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA G2020", "G2020", G2020_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
@@ -1923,8 +1946,26 @@ const pixma_config_t pixma_mp150_devices[] = {
DEVICE ("Canon PIXMA TR8630 Series", "TR8630", TR8630_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
DEVICE ("Canon PIXMA TS6400 Series", "TS6400", TS6400_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
DEVICE ("Canon PIXMA TS7400 Series", "TS7400", TS7400_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA G7080 Series", "G7080", G7080_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
- DEVICE ("Canon PIXMA GM4080", "GM4080", GM4080_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA G7080 Series", "G7080", G7080_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA GM4080", "GM4080", GM4080_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TS5350i Series", "TS5350i", TS5350i_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA G600", "G600", G600_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS3500 Series", "TS3500", TS3500_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ /* ToDo: max. scan resolution = 600x1200dpi */
+ DEVICE ("Canon PIXMA TR4600 Series", "TR4600", TR4600_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF | PIXMA_CAP_ADF_JPEG),
+ /* ToDo: max. scan resolution = 600x1200dpi */
+ DEVICE ("Canon PIXMA TR4700 Series", "TR4700", TR4700_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF | PIXMA_CAP_ADF_JPEG),
+ DEVICE ("Canon PIXMA E4500 Series", "E4500", E4500_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXUS XK500 Series", "XK500", XK500_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS8530 Series", "TS8530", TS8530_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXUS XK100 Series", "XK100", XK100_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS7530 Series", "TS7530", TS7530_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS7450i Series", "TS7450i", TS7450i_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA GX6000 Series", "GX6000", GX6000_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA GX7000 Series", "GX7000", GX7000_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS | PIXMA_CAP_ADF),
+ DEVICE ("Canon PIXMA TS5400 Series", "TS5400", TS5400_PID, 0, 1200, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS2400 Series", "TS2400", TS2400_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
+ DEVICE ("Canon PIXMA TS2600 Series", "TS2600", TS2600_PID, 0, 600, 0, 0, 638, 877, PIXMA_CAP_CIS),
END_OF_DEVICE_LIST
};
diff --git a/backend/pixma/pixma_mp730.c b/backend/pixma/pixma_mp730.c
index 3a436d7..1fc9a74 100644
--- a/backend/pixma/pixma_mp730.c
+++ b/backend/pixma/pixma_mp730.c
@@ -76,6 +76,8 @@
#define MP740_PID 0x264c /* Untested */
#define MP710_PID 0x264d
+#define MF5630_PID 0x264e /* Untested */
+#define MF5650_PID 0x264f
#define MF5730_PID 0x265d /* Untested */
#define MF5750_PID 0x265e /* Untested */
#define MF5770_PID 0x265f
@@ -318,6 +320,8 @@ handle_interrupt (pixma_t * s, int timeout)
case MP370_PID:
case MP375R_PID:
case MP390_PID:
+ case MF5630_PID:
+ case MF5650_PID:
case MF5730_PID:
case MF5750_PID:
case MF5770_PID:
@@ -372,6 +376,8 @@ has_ccd_sensor (pixma_t * s)
s->cfg->pid == MP370_PID ||
s->cfg->pid == MP375R_PID ||
s->cfg->pid == MP390_PID ||
+ s->cfg->pid == MF5630_PID ||
+ s->cfg->pid == MF5650_PID ||
s->cfg->pid == MF5730_PID ||
s->cfg->pid == MF5750_PID ||
s->cfg->pid == MF5770_PID);
@@ -415,6 +421,8 @@ step1 (pixma_t * s)
{
switch (s->cfg->pid)
{
+ case MF5630_PID:
+ case MF5650_PID:
case MF5730_PID:
case MF5750_PID:
case MF5770_PID:
@@ -424,10 +432,10 @@ step1 (pixma_t * s)
int tmo = 10; /* like Windows driver, 10 sec CCD calibration ? */
while (--tmo >= 0)
{
- error = handle_interrupt (s, 1000); \
- if (s->cancel) \
- return PIXMA_ECANCELED; \
- if (error != PIXMA_ECANCELED && error < 0) \
+ error = handle_interrupt (s, 1000);
+ if (s->cancel)
+ return PIXMA_ECANCELED;
+ if (error != PIXMA_ECANCELED && error < 0)
return error;
PDBG (pixma_dbg (2, "CCD Calibration ends in %d sec.\n", tmo));
}
@@ -443,6 +451,8 @@ step1 (pixma_t * s)
switch (s->cfg->pid)
{
+ case MF5630_PID:
+ case MF5650_PID:
case MF5730_PID:
case MF5750_PID:
case MF5770_PID:
@@ -696,6 +706,8 @@ mp730_fill_buffer (pixma_t * s, pixma_imagebuf_t * ib)
if (n != 0)
{
if (s->param->channels != 1 &&
+ s->cfg->pid != MF5630_PID &&
+ s->cfg->pid != MF5650_PID &&
s->cfg->pid != MF5730_PID &&
s->cfg->pid != MF5750_PID &&
s->cfg->pid != MF5770_PID &&
@@ -751,7 +763,9 @@ mp730_finish_scan (pixma_t * s)
(s->param->source == PIXMA_SOURCE_ADF ||
s->param->source == PIXMA_SOURCE_ADFDUP) &&
has_paper (s) &&
- (s->cfg->pid == MF5730_PID ||
+ (s->cfg->pid == MF5630_PID ||
+ s->cfg->pid == MF5650_PID ||
+ s->cfg->pid == MF5730_PID ||
s->cfg->pid == MF5750_PID ||
s->cfg->pid == MF5770_PID ||
s->cfg->pid == IR1020_PID))
@@ -833,6 +847,8 @@ const pixma_config_t pixma_mp730_devices[] = {
DEVICE ("PIXMA MP730", "MP730", MP730_PID, 1200, 637, 868, PIXMA_CAP_ADF | PIXMA_CAP_LINEART),
DEVICE ("PIXMA MP740", "MP740", MP740_PID, 1200, 637, 868, PIXMA_CAP_ADF | PIXMA_CAP_LINEART),
+ DEVICE ("Canon imageCLASS MF5630", "MF5630", MF5630_PID, 1200, 636, 868, PIXMA_CAP_ADF),
+ DEVICE ("Canon laserBase MF5650", "MF5650", MF5650_PID, 1200, 636, 868, PIXMA_CAP_ADF),
DEVICE ("Canon imageCLASS MF5730", "MF5730", MF5730_PID, 1200, 636, 868, PIXMA_CAP_ADF),
DEVICE ("Canon imageCLASS MF5750", "MF5750", MF5750_PID, 1200, 636, 868, PIXMA_CAP_ADF),
DEVICE ("Canon imageCLASS MF5770", "MF5770", MF5770_PID, 1200, 636, 868, PIXMA_CAP_ADF),
diff --git a/backend/plustek-pp.h b/backend/plustek-pp.h
index 447065b..4c0b0f4 100644
--- a/backend/plustek-pp.h
+++ b/backend/plustek-pp.h
@@ -235,11 +235,7 @@ typedef const struct mode_param
#define _E_SEQUENCE (_FIRST_ERR-30) /* caller sequence does not match */
#define _E_NO_ASIC (_FIRST_ERR-31) /* can't detect ASIC */
-#ifdef __KERNEL__
-# define _E_FAULT (-EFAULT)
-#else
# define _E_FAULT (_E_INTERNAL) /* should never happen in userspace */
-#endif
#define _E_LAMP_NOT_IN_POS (_FIRST_ERR-40)
#define _E_LAMP_NOT_STABLE (_FIRST_ERR-41)
@@ -471,10 +467,6 @@ typedef struct {
#define _ScanMode_AverageOut 1 /* CCD averaged 2 pixels value for output*/
#define _ScanMode_Mono 2 /* not color mode */
-
-#ifndef __KERNEL__
-
-
#define PLUSTEK_CONFIG_FILE "plustek_pp.conf"
#ifndef PATH_MAX
@@ -631,7 +623,6 @@ typedef struct {
AdjDef adj;
} CnfDef, *pCnfDef;
-#endif /* guard __KERNEL__ */
#endif /* guard __PLUSTEKPP_H__ */
diff --git a/backend/plustek-pp_dbg.h b/backend/plustek-pp_dbg.h
index 71315bd..d416315 100644
--- a/backend/plustek-pp_dbg.h
+++ b/backend/plustek-pp_dbg.h
@@ -47,22 +47,11 @@
/* #define _ASIC_98001_SIM */
/*
- * the print macros
- */
-#ifdef __KERNEL__
-# define _PRINT printk
-#endif
-
-/*
* some debug definitions
*/
#ifdef DEBUG
-# ifndef __KERNEL__
# include <assert.h>
# define _ASSERT(x) assert(x)
-# else
-# define _ASSERT(x)
-# endif
# ifndef DBG
# define DBG(level, msg, args...) if ((dbg_level) & (level)) { \
diff --git a/backend/plustek-pp_detect.c b/backend/plustek-pp_detect.c
index 2cc6f1a..5099986 100644
--- a/backend/plustek-pp_detect.c
+++ b/backend/plustek-pp_detect.c
@@ -97,11 +97,6 @@ static int detectScannerConnection( pScanData ps )
UChar data, control, status;
int retval = _E_NO_CONN;
-#ifdef __KERNEL__
- DBG( DBG_LOW, "Dataport = 0x%04x\n", ps->IO.pbSppDataPort );
- DBG( DBG_LOW, "Ctrlport = 0x%04x\n", ps->IO.pbControlPort );
-#endif
-
detectResetPort( ps );
/*
@@ -177,11 +172,7 @@ static int detectScannerConnection( pScanData ps )
/* work on the result */
if ( _OK == retval ) {
-#ifdef __KERNEL__
- ps->sCaps.wIOBase = ps->IO.pbSppDataPort;
-#else
ps->sCaps.wIOBase = ps->pardev;
-#endif
ps->PutToIdleMode( ps );
} else {
@@ -209,11 +200,7 @@ static int detectSetupBuffers( pScanData ps )
*/
if ( 0 == ps->TotalBufferRequire ) {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"pt_drv: asic 0x%x probably not supported\n", ps->sCaps.AsicID);
return _E_ALLOC; /* Out of memory */
@@ -228,11 +215,7 @@ static int detectSetupBuffers( pScanData ps )
if ( NULL == ps->driverbuf ) {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"pt_drv: Not enough kernel memory %d\n",
ps->TotalBufferRequire);
return _E_ALLOC; /* Out of memory */
@@ -380,11 +363,7 @@ static int detectAsic98001( pScanData ps )
return detectScannerConnection( ps );
#else
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"!!!! WARNING, have a look at function detectAsic98001() !!!!\n" );
ps->sCaps.AsicID = _ASIC_IS_98001;
ps->sCaps.wIOBase = ps->IO.pbSppDataPort;
@@ -434,11 +413,7 @@ _LOC int DetectScanner( pScanData ps, int mode )
/* read Register 0x18 (AsicID Register) of Asic9800x based devices */
#ifdef _ASIC_98001_SIM
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"!!!! WARNING, SW-Emulation active !!!!\n" );
asic = _ASIC_IS_98001;
#else
diff --git a/backend/plustek-pp_hwdefs.h b/backend/plustek-pp_hwdefs.h
index 51599f2..7b9213e 100644
--- a/backend/plustek-pp_hwdefs.h
+++ b/backend/plustek-pp_hwdefs.h
@@ -586,19 +586,6 @@ typedef struct
* structure to hold IO port specific stuff
*/
typedef struct {
-
-#ifdef __KERNEL__
- pFnOut fnOut;
- pFnIn fnIn;
-
- UShort pbSppDataPort;
- UShort pbEppDataPort;
-
- UShort pbStatusPort;
- UShort pbControlPort;
- UShort pbAddrOffsetPort;
-#endif
-
UShort portBase;
UShort portMode;
UShort lastPortMode;
diff --git a/backend/plustek-pp_image.c b/backend/plustek-pp_image.c
index 63f1f88..80d213a 100644
--- a/backend/plustek-pp_image.c
+++ b/backend/plustek-pp_image.c
@@ -1288,11 +1288,7 @@ static Bool imageP98003ReadOneImageLine( pScanData ps )
} while( !MiscCheckTimer( &timer ));
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"Timeout - Scanner malfunction !!\n" );
MotorToHomePosition(ps);
diff --git a/backend/plustek-pp_io.c b/backend/plustek-pp_io.c
index af3e8c4..45ffe8b 100644
--- a/backend/plustek-pp_io.c
+++ b/backend/plustek-pp_io.c
@@ -257,21 +257,11 @@ static Bool fnEPPRead( pScanData ps, pUChar pBuffer, ULong ulSize )
if( _IS_ASIC98(ps->sCaps.AsicID)) {
-#ifndef __KERNEL__
sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAIN );
-#else
- _OUTB_CTRL( ps, (_CTRL_GENSIGNAL + _CTRL_DIRECTION));
- _DO_UDELAY( 1 );
-#endif
for( i = 0; i < ulSize; i++ )
pBuffer[i] = _INB_EPPDATA( ps );
-#ifndef __KERNEL__
sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAOUT );
-#else
- _OUTB_CTRL( ps, _CTRL_GENSIGNAL );
- _DO_UDELAY( 1 );
-#endif
} else {
for( i = 0; i < ulSize; i++ )
@@ -290,18 +280,12 @@ static Bool fnBiDirRead( pScanData ps, pUChar pBuffer, ULong ulSize )
start = _CTRL_START_BIDIREAD;
end = _CTRL_END_BIDIREAD;
-#ifndef __KERNEL__
sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAIN );
if( !sanei_pp_uses_directio()) {
start &= ~_CTRL_DIRECTION;
end &= ~_CTRL_DIRECTION;
}
-#else
- if( _IS_ASIC98(ps->sCaps.AsicID)) {
- _OUTB_CTRL( ps, (_CTRL_GENSIGNAL + _CTRL_DIRECTION));
- }
-#endif
switch( ps->IO.delay ) {
@@ -341,13 +325,7 @@ static Bool fnBiDirRead( pScanData ps, pUChar pBuffer, ULong ulSize )
}
-#ifndef __KERNEL__
sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAOUT );
-#else
- if( _IS_ASIC98(ps->sCaps.AsicID)) {
- _OUTB_CTRL( ps, _CTRL_GENSIGNAL );
- }
-#endif
return _TRUE;
}
@@ -953,45 +931,4 @@ _LOC void IOReadScannerImageData( pScanData ps, pUChar pBuf, ULong size )
ps->OpenScanPath( ps );
}
-#ifdef __KERNEL__
-
-/** the wrapper functions to support delayed and non-delayed I/O
- */
-_LOC void IOOut( Byte data, UShort port )
-{
- DBG( DBG_IOF, "outb(0x%04x, 0x%02x)\n", port, data );
- outb( data, port );
-}
-
-_LOC void IOOutDelayed( Byte data, UShort port )
-{
- DBG( DBG_IOF, "outb_p(0x%04x, 0x%02x)\n", port, data );
- outb_p( data, port );
-}
-
-_LOC Byte IOIn( UShort port )
-{
-#ifdef DEBUG
- Byte data = inb( port );
-
- DBG( DBG_IOF, "inb(0x%04x) = 0x%02x\n", port, data );
- return data;
-#else
- return inb( port );
-#endif
-}
-
-_LOC Byte IOInDelayed( UShort port )
-{
-#ifdef DEBUG
- Byte data = inb_p( port );
-
- DBG( DBG_IOF, "inb_p(0x%04x) = 0x%02x\n", port, data );
- return data;
-#else
- return inb_p( port );
-#endif
-}
-#endif /* guard __KERNEL__ */
-
/* END PLUSTEK-PP_IO.C ......................................................*/
diff --git a/backend/plustek-pp_misc.c b/backend/plustek-pp_misc.c
index ec2f129..ffcfa7c 100644
--- a/backend/plustek-pp_misc.c
+++ b/backend/plustek-pp_misc.c
@@ -77,27 +77,11 @@
/*************************** some definitions ********************************/
-#ifndef __KERNEL__
# define PPA_PROBE_SPP 0x0001
# define PPA_PROBE_PS2 0x0002
# define PPA_PROBE_ECR 0x0010
# define PPA_PROBE_EPP17 0x0100
# define PPA_PROBE_EPP19 0x0200
-#else
-
-/* the parport driver in Kernel 2.4 has changed. It does report the
- * possible modes in a different, more general way. As long, as
- * we do not use the parport-module change mode facility, I assume
- * the following correlations
- */
-#if defined LINUX_24 || defined LINUX_26
-# define PARPORT_MODE_PCPS2 PARPORT_MODE_TRISTATE
-# define PARPORT_MODE_PCEPP PARPORT_MODE_EPP
-# define PARPORT_MODE_PCECPPS2 PARPORT_MODE_TRISTATE
-# define PARPORT_MODE_PCECPEPP PARPORT_MODE_EPP
-# define PARPORT_MODE_PCECR PARPORT_MODE_ECP
-#endif
-#endif
#define _PP_A 16807 /**< multiplier */
#define _PP_M 2147483647L /**< 2**31 - 1 */
@@ -107,299 +91,10 @@
static int port_feature = 0;
static long randomnum = 1;
-#ifdef __KERNEL__
-static int portIsClaimed[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
-
-MODELSTR; /**< a static char array (see plustek-pp.h) */
-
-#else
static int portIsClaimed[_MAX_PTDEVS] = { 0, 0, 0, 0 };
-#endif
/*************************** local functions *********************************/
-#ifdef __KERNEL__
-#ifdef LINUX_26
-
-static pScanData __ps = NULL;
-static int __pa = -1;
-
-/** callback from parport driver
- */
-static void misc_attach(struct parport *port)
-{
- DBG( DBG_LOW, "misc_attach\n" );
-
- __ps->pp = NULL;
- if( port->base == (unsigned long)__pa ) {
- DBG( DBG_LOW, "Requested port (0x%02x) found\n", __pa );
- DBG( DBG_LOW, "Port mode reported: (0x%04x)\n", port->modes );
- __ps->pp = port;
- }
-}
-
-static void misc_detach( struct parport *port )
-{
- DBG( DBG_LOW, "misc_detach\n" );
-}
-
-static struct parport_driver pt_drv = {
- .name = "pt_drv",
- .attach = misc_attach,
- .detach = misc_detach,
-};
-#endif
-
-/** display the available port-modes
- */
-#ifdef DEBUG
-static void miscShowPortModes( int modes )
-{
- DBG( DBG_LOW, "parport-modi:" );
-
- if( modes & PARPORT_MODE_PCSPP )
- DBG( DBG_LOW, " SPP" );
-
- if( modes & PARPORT_MODE_PCPS2 )
- DBG( DBG_LOW, " PS/2" );
-
- if( modes & PARPORT_MODE_PCEPP )
- DBG( DBG_LOW, " EPP" );
-
- if( modes & PARPORT_MODE_PCECR )
- DBG( DBG_LOW, " ECP" );
-
- if( modes & PARPORT_MODE_PCECPEPP )
- DBG( DBG_LOW, " EPP(ECP)" );
-
- if( modes & PARPORT_MODE_PCECPPS2 )
- DBG( DBG_LOW, " PS/2(ECP)" );
-
- DBG( DBG_LOW, "\n" );
-}
-#endif
-
-/** probe the parallel port
- */
-static int initPortProbe( pScanData ps )
-{
- int retv = 0;
-
- /* clear the controls */
- ps->IO.lastPortMode = 0xFFFF;
-
- if( NULL != ps->pardev )
- retv = ps->pardev->port->modes;
- return retv;
-}
-
-/** will be called by the parport module when we already have access, but
- * another module wants access to the port...
- */
-static int miscPreemptionCallback( pVoid data )
-{
- pScanData ps = (pScanData)data;
-
- if( NULL != ps ) {
-
- /* never release during scanning */
- if( ps->DataInf.dwScanFlag & _SCANNER_SCANNING ) {
- DBG( DBG_LOW, "no way!!!\n" );
- return 1;
- }
- }
-
- /* let the port go...*/
- return 0;
-}
-
-/** depending on the reported possible port modes, we try to set a faster mode
- * than SPP
- */
-static int miscSetFastMode( pScanData ps )
-{
- UChar a, b;
-
- /*
- * when previously found the EPP mode, break right here
- */
- if (( _PORT_EPP == ps->IO.portMode ) && (!(port_feature & PARPORT_MODE_PCECR)))
- return _OK;
-
- /* CHECK REMOVE: from here we should have SPP (Paranoia Code !) */
- if (( _PORT_SPP != ps->IO.portMode ) && (!(port_feature & PARPORT_MODE_PCECR)))
- return _OK;
-
- DBG(DBG_LOW, "Trying faster mode...\n" );
-
- /*
- * ECP mode usually has sub-modes of EPP and/or PS2.
- * First we try to set EPP
- */
- if((port_feature & PARPORT_MODE_PCECR) &&
- (port_feature & PARPORT_MODE_PCECPEPP)){
-
- DBG(DBG_LOW, "Attempting to set EPP from ECP mode.\n" );
-
- a = _INB_ECTL(ps); /* get current ECR */
- ps->IO.lastPortMode = a; /* save it for restoring later */
- a = (a & 0x1F) | 0x80; /* set to EPP */
- _OUTB_ECTL(ps, a); /* write it back */
- _DO_UDELAY(1);
-
- /*
- * It is probably unnecessary to
- * do this check but it makes me feel better
- */
- b = _INB_ECTL(ps); /* check to see if port set */
- if( a == b ) {
- DBG( DBG_LOW, "Port is set to (ECP) EPP mode.\n" );
- ps->IO.portMode = _PORT_EPP;
- return _OK;
-
- } else {
- DBG( DBG_LOW, "Port could not be set to (ECP) EPP mode. "
- "Using SPP mode.\n" );
- _OUTB_ECTL(ps,(Byte)ps->IO.lastPortMode); /* restore */
- _DO_UDELAY(1);
- ps->IO.portMode = _PORT_SPP;
-
- /* go ahead and try with other settings...*/
- }
- }
-
- /* If port cannot be set to EPP, try PS2 */
- if((port_feature & PARPORT_MODE_PCECR) &&
- (port_feature & PARPORT_MODE_PCECPPS2)) {
-
- DBG(DBG_LOW, "Attempting to set PS2 from ECPPS2 mode.\n" );
-
- a = _INB_ECTL(ps); /* get current ECR */
- ps->IO.lastPortMode = a; /* save it for restoring later */
-
- /* set to Fast Centronics/bi-directional/PS2 */
- a = (a & 0x1F) | 0x20;
- _OUTB_ECTL(ps,a); /* write it back */
- _DO_UDELAY(1);
-
- /*
- * It is probably unnecessary to do this check
- * but it makes me feel better
- */
- b = _INB_ECTL(ps); /* check to see if port set */
- if (a == b) {
- DBG(DBG_LOW, "Port is set to (ECP) PS2 bidirectional mode.\n");
- ps->IO.portMode = _PORT_BIDI;
- return _OK;
- } else {
- DBG(DBG_LOW, "Port could not be set to (ECP) PS2 mode. "
- "Using SPP mode.\n");
- a = ps->IO.lastPortMode & 0x1F;
- _OUTB_ECTL(ps, a); /* set ECP ctrl to SPP */
- _DO_UDELAY(1);
- ps->IO.portMode = _PORT_SPP;
-
- /* next mode, last attempt... */
- }
- }
-
- /*
- * Some BIOS/cards have only a Bi-directional/PS2 mode (no EPP).
- * Make one last attempt to set to PS2 mode.
- */
- if ( port_feature & PARPORT_MODE_PCPS2 ){
-
- DBG(DBG_LOW, "Attempting to set PS2 mode.\n" );
-
- a = _INB_CTRL(ps); /* get current setting of control register*/
- ps->IO.lastPortMode = a; /* save it for restoring later */
- a = a | 0x20; /* set bit 5 of control reg */
- _OUTB_CTRL(ps,a); /* set to Fast Centronics/bi-directional/PS2 */
- _DO_UDELAY(1);
- a = 0;
-
- _OUTB_DATA(ps,0x55);
- _DO_UDELAY(1);
- if ((inb(ps->IO.portBase)) != 0x55) /* read data */
- a++;
-
- _OUTB_DATA(ps,0xAA);
- _DO_UDELAY(1);
-
- if (_INB_DATA(ps) != 0xAA) /* read data */
- a++;
-
- if( 2 == a ) {
- DBG(DBG_LOW, "Port is set to PS2 bidirectional mode.\n");
- ps->IO.portMode = _PORT_BIDI;
- return _OK;
-
- } else {
- DBG(DBG_LOW, "Port could not be set to PS2 mode. "
- "Using SPP mode.\n");
- _OUTB_CTRL(ps,(Byte)ps->IO.lastPortMode); /* restore */
- _DO_UDELAY(1);
- ps->IO.portMode = _PORT_SPP;
- }
- }
-
- /* reaching this point, we're back in SPP mode and there's no need
- * to restore at shutdown...
- */
- ps->IO.lastPortMode = 0xFFFF;
-
- return _OK;
-}
-
-/** check the state of the par-port and switch to EPP-mode if possible
- */
-static int miscSetPortMode( pScanData ps )
-{
- /* try to detect the port settings, SPP seems to work in any case ! */
- port_feature = initPortProbe( ps );
-
-#ifdef DEBUG
- miscShowPortModes( port_feature );
-#endif
-
- switch( ps->IO.forceMode ) {
-
- case 1:
- DBG( DBG_LOW, "Use of SPP-mode enforced\n" );
- ps->IO.portMode = _PORT_SPP;
- return _OK;
- break;
-
- case 2:
- DBG( DBG_LOW, "Use of EPP-mode enforced\n" );
- ps->IO.portMode = _PORT_EPP;
- return _OK;
- break;
-
- default:
- break;
- }
-
- if( !(port_feature & PARPORT_MODE_PCEPP)) {
-
- if( !(port_feature & PARPORT_MODE_PCSPP )) {
- _PRINT("\nThis Port supports not the SPP- or EPP-Mode\n" );
- _PRINT("Please activate SPP-Mode, EPP-Mode or\nEPP + ECP-Mode!\n");
- return _E_NOSUPP;
- } else {
- DBG(DBG_LOW, "Using SPP-mode\n" );
- ps->IO.portMode = _PORT_SPP;
- }
- } else {
- DBG(DBG_LOW, "Using EPP-mode\n" );
- ps->IO.portMode = _PORT_EPP;
- }
-
- /* else try to set to a faster mode than SPP */
- return miscSetFastMode( ps );
-}
-#endif
-
/** miscNextLongRand() -- generate 2**31-2 random numbers
**
** public domain by Ray Gardner
@@ -488,34 +183,6 @@ _LOC int MiscReinitStruct( pScanData ps )
*/
_LOC int MiscInitPorts( pScanData ps, int port )
{
-#ifdef __KERNEL__
- int status;
-
- if( NULL == ps )
- return _E_NULLPTR;
-
- /*
- * Get access to the ports
- */
- ps->IO.portBase = (UShort)port;
-
- status = miscSetPortMode(ps);
-
- if( _OK != status ) {
- ps->sCaps.wIOBase = _NO_BASE;
- ps->IO.portBase = _NO_BASE;
- return status;
- }
-
- /*
- * the port settings
- */
- ps->IO.pbSppDataPort = (UShort)port;
- ps->IO.pbStatusPort = (UShort)port+1;
- ps->IO.pbControlPort = (UShort)port+2;
- ps->IO.pbEppDataPort = (UShort)port+4;
-
-#else
int mode, mts;
if( NULL == ps )
@@ -560,7 +227,6 @@ _LOC int MiscInitPorts( pScanData ps, int port )
sanei_pp_setmode( ps->pardev, mts );
_VAR_NOT_USED( port );
-#endif
return _OK;
}
@@ -568,11 +234,6 @@ _LOC int MiscInitPorts( pScanData ps, int port )
*/
_LOC void MiscRestorePort( pScanData ps )
{
-#ifdef __KERNEL__
- if( 0 == ps->IO.pbSppDataPort )
- return;
-#endif
-
DBG(DBG_LOW,"MiscRestorePort()\n");
/* don't restore if not necessary */
@@ -582,19 +243,9 @@ _LOC void MiscRestorePort( pScanData ps )
}
/*Restore Port-Mode*/
-#ifdef __KERNEL__
- if( port_feature & PARPORT_MODE_PCECR ){
- _OUTB_ECTL( ps, (Byte)ps->IO.lastPortMode );
- _DO_UDELAY(1);
- } else {
- _OUTB_CTRL( ps, (Byte)ps->IO.lastPortMode );
- _DO_UDELAY(1);
- }
-#else
if( port_feature & PPA_PROBE_ECR ){
_OUTB_ECTL(ps,ps->IO.lastPortMode);
}
-#endif
}
/** Initializes a timer.
@@ -605,11 +256,7 @@ _LOC void MiscStartTimer( TimerDef *timer , unsigned long us)
{
struct timeval start_time;
-#ifdef __KERNEL__
- _GET_TIME( &start_time );
-#else
gettimeofday(&start_time, NULL);
-#endif
*timer = (TimerDef)start_time.tv_sec * 1000000 + (TimerDef)start_time.tv_usec + us;
}
@@ -624,21 +271,14 @@ _LOC int MiscCheckTimer( TimerDef *timer )
{
struct timeval current_time;
-#ifdef __KERNEL__
- _GET_TIME( &current_time );
-#else
gettimeofday(&current_time, NULL);
-#endif
if ((TimerDef)current_time.tv_sec * 1000000 + (TimerDef)current_time.tv_usec > *timer) {
return _E_TIMEOUT;
} else {
-#ifdef __KERNEL__
- schedule();
/*#else
sched_yield();
*/
-#endif
return _OK;
}
}
@@ -673,65 +313,8 @@ _LOC Bool MiscAllPointersSet( pScanData ps )
*/
_LOC int MiscRegisterPort( pScanData ps, int portAddr )
{
-#ifndef __KERNEL__
DBG( DBG_LOW, "Assigning port handle %i\n", portAddr );
ps->pardev = portAddr;
-#else
-
-#ifdef LINUX_26
- __ps = ps;
- __pa = portAddr;
-
- DBG( DBG_LOW, "Requested port at 0x%02x\n", portAddr );
-
- if( parport_register_driver(&pt_drv)) {
- /* Failed; nothing we can do. */
- return _E_REGISTER;
- }
-
-#else
- struct parport *pp = NULL;
-
- DBG( DBG_LOW, "Requested port at 0x%02x\n", portAddr );
-
- pp = parport_enumerate();
- ps->pardev = NULL;
-
- if( NULL == pp ) {
- return _E_PORTSEARCH;
- }
-
- /* go through the list
- */
- for( ps->pp = NULL; NULL != pp; ) {
-
- if( pp->base == (unsigned long)portAddr ) {
- DBG( DBG_LOW, "Requested port (0x%02x) found\n", portAddr );
- DBG( DBG_LOW, "Port mode reported: (0x%04x)\n", pp->modes );
- ps->pp = pp;
- break;
- }
- pp = pp->next;
- }
-#endif
-
- if( NULL == ps->pp ) {
- printk("PORT not found!!!\n");
- return _E_NO_PORT;
- }
-
- /*
- * register this device
- */
- ps->pardev = parport_register_device( ps->pp, "Plustek Driver",
- miscPreemptionCallback, NULL, NULL, 0, (pVoid)ps );
-
- if( NULL == ps->pardev ) {
- return _E_REGISTER;
- }
-
- DBG( DBG_LOW, "Port for device %u registered\n", ps->devno );
-#endif
portIsClaimed[ps->devno] = 0;
return _OK;
@@ -741,17 +324,7 @@ _LOC int MiscRegisterPort( pScanData ps, int portAddr )
*/
_LOC void MiscUnregisterPort( pScanData ps )
{
-#ifdef __KERNEL__
- if( NULL != ps->pardev ) {
- DBG( DBG_LOW, "Port unregistered\n" );
- parport_unregister_device( ps->pardev );
- }
-#ifdef LINUX_26
- parport_unregister_driver( &pt_drv );
-#endif
-#else
sanei_pp_close( ps->pardev );
-#endif
}
/** Try to claim the port
@@ -763,11 +336,7 @@ _LOC int MiscClaimPort( pScanData ps )
if( 0 == portIsClaimed[ps->devno] ) {
DBG( DBG_HIGH, "Try to claim the parport\n" );
-#ifdef __KERNEL__
- if( 0 != parport_claim( ps->pardev )) {
-#else
if( SANE_STATUS_GOOD != sanei_pp_claim( ps->pardev )) {
-#endif
return _E_BUSY;
}
}
@@ -785,11 +354,7 @@ _LOC void MiscReleasePort( pScanData ps )
if( 0 == portIsClaimed[ps->devno] ) {
DBG( DBG_HIGH, "Releasing parport\n" );
-#ifdef __KERNEL__
- parport_release( ps->pardev );
-#else
sanei_pp_release( ps->pardev );
-#endif
}
}
}
diff --git a/backend/plustek-pp_motor.c b/backend/plustek-pp_motor.c
index ac6d458..b58e92d 100644
--- a/backend/plustek-pp_motor.c
+++ b/backend/plustek-pp_motor.c
@@ -3128,7 +3128,7 @@ _LOC Bool MotorP96AheadToDarkArea( pScanData ps )
if((bDark < 0x80) || (wTotalLastLine==wTL)) {
IOCmdRegisterToScanner( ps, ps->RegMotorControl, 0 );
- return _TRUE;
+ return _TRUE;
}
}
#else
@@ -3216,9 +3216,10 @@ _LOC void MotorP98003BackToHomeSensor( pScanData ps )
MiscStartTimer( &timer, _SECOND * 2 );
while(!(IOGetScanState( ps, _TRUE ) & _SCANSTATE_STOP) &&
- !MiscCheckTimer( &timer ));
+ !MiscCheckTimer( &timer ))
+ ;
- _DODELAY( 1000UL );
+ _DODELAY( 1000UL );
ps->AsicReg.RD_ModeControl = _ModeScan;
@@ -3324,7 +3325,8 @@ _LOC void MotorP98003PositionYProc( pScanData ps, ULong steps)
MiscStartTimer( &timer, _SECOND * 5 );
while(!(IOGetScanState( ps, _TRUE ) & _SCANSTATE_STOP) &&
- (!MiscCheckTimer( &timer )));
+ !MiscCheckTimer( &timer ))
+ ;
_DODELAY( 12 );
diff --git a/backend/plustek-pp_p12.c b/backend/plustek-pp_p12.c
index e78c682..26566e5 100644
--- a/backend/plustek-pp_p12.c
+++ b/backend/plustek-pp_p12.c
@@ -472,7 +472,7 @@ static void p12Init98003( pScanData ps, Bool shading )
if( _AGFA_SCANNER == ps->Device.bPCBID )
ps->Device.bDACType = _DA_WOLFSON8141;
- DBG( DBG_LOW, "PCB-ID=0x%02x, CCD-ID=0x%02x, DAC-TYPE=0x%02x\n",
+ DBG( DBG_LOW, "PCB-ID=0x%02x, CCD-ID=0x%02x, DAC-TYPE=0x%02x\n",
ps->Device.bPCBID, ps->Device.bCCDID, ps->Device.bDACType );
p12InitiateComponentModel( ps );
diff --git a/backend/plustek-pp_p48xx.c b/backend/plustek-pp_p48xx.c
index 3c28357..9ae1239 100644
--- a/backend/plustek-pp_p48xx.c
+++ b/backend/plustek-pp_p48xx.c
@@ -613,9 +613,9 @@ static void p48xxSetGeneralRegister( pScanData ps )
if (ps->DataInf.xyPhyDpi.x <= 200)
ps->AsicReg.RD_ScanControl |= _SCAN_1ST_AVERAGE;
- DBG( DBG_LOW, "RD_ModeControl = 0x%02x\n", ps->AsicReg.RD_ModeControl );
- DBG( DBG_LOW, "RD_MotorControl = 0x%02x\n", ps->Asic96Reg.RD_MotorControl );
- DBG( DBG_LOW, "RD_ScanControl = 0x%02x\n", ps->AsicReg.RD_ScanControl );
+ DBG( DBG_LOW, "RD_ModeControl = 0x%02x\n", ps->AsicReg.RD_ModeControl );
+ DBG( DBG_LOW, "RD_MotorControl = 0x%02x\n", ps->Asic96Reg.RD_MotorControl );
+ DBG( DBG_LOW, "RD_ScanControl = 0x%02x\n", ps->AsicReg.RD_ScanControl );
}
/*.............................................................................
diff --git a/backend/plustek-pp_procs.h b/backend/plustek-pp_procs.h
index 96666ea..972252a 100644
--- a/backend/plustek-pp_procs.h
+++ b/backend/plustek-pp_procs.h
@@ -219,13 +219,6 @@ _LOC void IORegisterDirectToScanner( pScanData, Byte bReg );
_LOC void IOSoftwareReset ( pScanData ps );
_LOC void IOReadScannerImageData ( pScanData ps, pUChar pBuf, ULong size );
-#ifdef __KERNEL__
-_LOC void IOOut ( Byte data, UShort port );
-_LOC void IOOutDelayed( Byte data, UShort port );
-_LOC Byte IOIn ( UShort port );
-_LOC Byte IOInDelayed ( UShort port );
-#endif
-
/*
* implementation in plustek-pp_tpa.c
*/
@@ -238,16 +231,6 @@ _LOC void TPAP98003Reshading ( pScanData ps );
*/
_LOC void ScaleX( pScanData ps, pUChar inBuf, pUChar outBuf );
-/*
- * implementation in plustek-pp_procfs.c (Kernel-mode only)
- */
-#ifdef __KERNEL__
-int ProcFsInitialize ( void );
-void ProcFsShutdown ( void );
-void ProcFsRegisterDevice ( pScanData ps );
-void ProcFsUnregisterDevice( pScanData ps );
-#endif
-
#endif /* guard __PROCS_H__ */
/* END PLUSTEK-PP_PROCS.H ...................................................*/
diff --git a/backend/plustek-pp_ptdrv.c b/backend/plustek-pp_ptdrv.c
index bf3a389..58b58b1 100644
--- a/backend/plustek-pp_ptdrv.c
+++ b/backend/plustek-pp_ptdrv.c
@@ -94,52 +94,13 @@
* If you do not wish that, delete this exception notice.
* <hr>
*/
-#ifdef __KERNEL__
-# include <linux/module.h>
-# include <linux/version.h>
-
-# ifdef CONFIG_DEVFS_FS
-# include <linux/devfs_fs_kernel.h>
-# if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,69))
-# define DEVFS_26_STYLE
-# endif
-# endif
-#endif
-
#include "plustek-pp_scan.h"
-#ifdef __KERNEL__
-# include <linux/param.h>
-#endif
-
/****************************** static vars **********************************/
/* default port is at 0x378 */
static int port[_MAX_PTDEVS] = { 0x378, 0, 0, 0 };
-#ifdef __KERNEL__
-static pScanData PtDrvDevices[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = NULL};
-
-/* default is 180 secs for lamp switch off */
-static int lampoff[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 180 };
-
-/* warmup period for lamp (30 secs) */
-static int warmup[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 30 };
-
-/* switch lamp off on unload (default = no)*/
-static int lOffonEnd[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
-
-/* model override (0-->none) */
-static UShort mov[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
-
-/* forceMode (0--> auto, 1: SPP, 2:EPP, others: auto) */
-static UShort forceMode[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
-
-/* to use delayed I/O for each device */
-static Bool slowIO[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = _FALSE };
-
-#else
-
static pScanData PtDrvDevices[_MAX_PTDEVS]= { NULL, NULL, NULL, NULL };
static int lampoff[_MAX_PTDEVS] = { 180, 180, 180, 180 };
static int warmup[_MAX_PTDEVS] = { 30, 30, 30, 30 };
@@ -147,140 +108,14 @@ static int lOffonEnd[_MAX_PTDEVS] = { 0, 0, 0, 0 };
static UShort mov[_MAX_PTDEVS] = { 0, 0, 0, 0 };
static UShort forceMode[_MAX_PTDEVS] = { 0, 0, 0, 0 };
-#endif
-
/* timers for warmup checks */
static TimerDef toTimer[_MAX_PTDEVS];
-#ifndef __KERNEL__
static Bool PtDrvInitialized = _FALSE;
#ifdef HAVE_SETITIMER
static struct itimerval saveSettings;
#endif
-#else
-static Bool deviceScanning = _FALSE;
-
-static struct timer_list tl[_MAX_PTDEVS];
-
-/* for calculation of the timer expiration */
-extern volatile unsigned long jiffies;
-
-/* the parameter interface
- */
-#if ((LINUX_VERSION_CODE > 0x020111) && defined(MODULE))
-MODULE_AUTHOR("Gerhard Jaeger <gerhard@gjaeger.de>");
-MODULE_DESCRIPTION("Plustek parallelport-scanner driver");
-
-/* addresses this 'new' license feature... */
-#ifdef MODULE_LICENSE
-MODULE_LICENSE("GPL");
-#endif
-
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13))
-MODULE_PARM(port, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(lampoff, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(warmup,"1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(lOffonEnd, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(mov, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(slowIO,"1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(forceMode,"1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-
-#else
-
-static int array_len = _MAX_PTDEVS;
-
-module_param_array(port, int, &array_len, 0);
-module_param_array(lampoff, int, &array_len, 0);
-module_param_array(warmup, int, &array_len, 0);
-module_param_array(lOffonEnd, int, &array_len, 0);
-module_param_array(mov, ushort, &array_len, 0);
-module_param_array(slowIO, int, &array_len, 0);
-module_param_array(forceMode, ushort, &array_len, 0);
-
-#endif
-
-
-MODULE_PARM_DESC(port, "I/O base address of parport");
-MODULE_PARM_DESC(lampoff, "Lamp-Off timer preset in seconds");
-MODULE_PARM_DESC(warmup, "Minimum warmup time in seconds");
-MODULE_PARM_DESC(lOffonEnd, "1 - switchoff lamp on unload");
-MODULE_PARM_DESC(mov, "Modell-override switch");
-MODULE_PARM_DESC(slowIO, "0 = Fast I/O, 1 = Delayed I/O");
-MODULE_PARM_DESC(forceMode, "0 = use auto detection, "
- "1 = use SPP mode, 2 = use EPP mode");
-#endif
-
-#if defined (CONFIG_DEVFS_FS)
-# ifndef (DEVFS_26_STYLE)
- static devfs_handle_t devfs_handle = NULL;
-# endif
-#else
-# ifdef LINUX_26
- static class_t *ptdrv_class;
-# endif
-#endif
-/*
- * the module interface
- */
-static int pt_drv_open ( struct inode *, struct file *);
-static CLOSETYPE pt_drv_close( struct inode *, struct file *);
-
-#ifdef LINUX_20
- static int pt_drv_read( struct inode*, struct file*, char*, int );
- static int pt_drv_write( struct inode*, struct file*, const char*, int );
-#else
- static ssize_t pt_drv_read ( struct file *file,
- char *buffer, size_t count, loff_t *);
- static ssize_t pt_drv_write( struct file *file,
- const char *buffer, size_t tmp,loff_t *count);
-#endif
-
-#ifdef NOLOCK_IOCTL
- static long pt_drv_ioctl( struct file *, UInt, unsigned long );
-#else
- static int pt_drv_ioctl( struct inode *, struct file *, UInt, unsigned long );
-#endif
-
-
-/*
- * the driver interface
- */
-#ifdef LINUX_20
-
-static struct file_operations pt_drv_fops =
-{
- NULL, /* seek */
- pt_drv_read, /* read */
- pt_drv_write, /* write */
- NULL, /* readdir */
- NULL, /* select */
- pt_drv_ioctl, /* ioctl */
- NULL, /* mmap */
- pt_drv_open, /* open */
- pt_drv_close, /* release */
- NULL, /* fsync */
- NULL, /* fasync */
- NULL, /* check_media_change */
- NULL /* revalidate */
-};
-
-#else /* 2.2.x and higher stuff */
-
-static struct file_operations pt_drv_fops = {
-#ifdef LINUX_24
- owner: THIS_MODULE,
-#endif
- read: pt_drv_read,
- write: pt_drv_write,
- IOCTL: pt_drv_ioctl,
- open: pt_drv_open,
- release: pt_drv_close,
-};
-
-#endif
-
-#endif /* guard __KERNEL */
/****************************** some prototypes ******************************/
@@ -288,23 +123,6 @@ static void ptdrvStartLampTimer( pScanData ps );
/****************************** local functions ******************************/
-#ifdef __KERNEL__
-/** depending on the device, return the data structure
- */
-static pScanData get_pt_from_inode(struct inode *ip)
-{
- int minor = _MINOR(ip);
-
- /*
- * unit out of range
- */
- if (minor >= _MAX_PTDEVS )
- return NULL;
-
- return( PtDrvDevices[minor] );
-}
-#endif
-
/** copy user-space data into kernel memory
*/
static int getUserPtr(const pVoid useraddr, pVoid where, UInt size )
@@ -315,32 +133,9 @@ static int getUserPtr(const pVoid useraddr, pVoid where, UInt size )
if((NULL == useraddr) || ( 0 == size))
return _E_INVALID;
-#ifdef __KERNEL__
- if ((err = verify_area_20(VERIFY_READ, useraddr, size)))
- return err;
-#endif
-
switch (size) {
-#ifdef __KERNEL__
- case sizeof(u_char):
- GET_USER_RET(*(u_char *)where, (u_char *) useraddr, -EFAULT);
- break;
-
- case sizeof(u_short):
- GET_USER_RET(*(u_short *)where, (u_short *) useraddr, -EFAULT);
- break;
-
- case sizeof(u_long):
- GET_USER_RET(*(u_long *)where, (u_long *) useraddr, -EFAULT);
- break;
-
- default:
- if (copy_from_user(where, useraddr, size))
- return -EFAULT;
-#else
default:
memcpy( where, useraddr, size );
-#endif
}
return err;
}
@@ -354,20 +149,11 @@ static int putUserPtr( const pVoid ptr, pVoid useraddr, UInt size )
if (NULL == useraddr)
return _E_INVALID;
-#ifdef __KERNEL__
- if ((err = verify_area_20(VERIFY_WRITE, useraddr, size)))
- return err;
-
- if (copy_to_user(useraddr, ptr, size ))
- return -EFAULT;
-#else
memcpy( useraddr, ptr, size );
-#endif
return err;
}
-#ifndef __KERNEL__
static unsigned long copy_from_user( pVoid dest, pVoid src, unsigned long len )
{
memcpy( dest, src, len );
@@ -379,37 +165,16 @@ static unsigned long copy_to_user( pVoid dest, pVoid src, unsigned long len )
memcpy( dest, src, len );
return 0;
}
-#endif
/**
*/
static int putUserVal(const ULong value, pVoid useraddr, UInt size)
{
-#ifdef __KERNEL__
- int err;
-#endif
-
if (NULL == useraddr)
return _E_INVALID;
-#ifdef __KERNEL__
- if ((err = verify_area_20(VERIFY_WRITE, useraddr, size)))
- return err;
-#endif
-
switch (size) {
-#ifdef __KERNEL__
- case sizeof(u_char):
- PUT_USER_RET((u_char)value, (u_char *) useraddr, -EFAULT);
- break;
- case sizeof(u_short):
- PUT_USER_RET((u_short)value, (u_short *) useraddr, -EFAULT);
- break;
- case sizeof(u_long):
- PUT_USER_RET((u_long)value, (u_long *) useraddr, -EFAULT);
- break;
-#else
case sizeof(UChar):
*(pUChar)useraddr = (UChar)value;
break;
@@ -420,7 +185,6 @@ static int putUserVal(const ULong value, pVoid useraddr, UInt size)
*(pULong)useraddr = (ULong)value;
break;
-#endif
default:
return _E_INVALID;
}
@@ -506,22 +270,14 @@ static void ptdrvLampWarmup( pScanData ps )
/**
*/
-#ifdef __KERNEL__
-static void ptdrvLampTimerIrq( unsigned long ptr )
-#else
static void ptdrvLampTimerIrq( int sig_num )
-#endif
{
pScanData ps;
DBG( DBG_HIGH, "!! IRQ !! Lamp-Timer stopped.\n" );
-#ifdef __KERNEL__
- ps = (pScanData)ptr;
-#else
_VAR_NOT_USED( sig_num );
ps = PtDrvDevices[0];
-#endif
/*
* paranoia check!
@@ -559,7 +315,6 @@ static void ptdrvLampTimerIrq( int sig_num )
*/
static void ptdrvStartLampTimer( pScanData ps )
{
-#ifndef __KERNEL__
sigset_t block, pause_mask;
struct sigaction s;
#ifdef HAVE_SETITIMER
@@ -597,17 +352,6 @@ static void ptdrvStartLampTimer( pScanData ps )
#else
alarm( ps->lampoff );
#endif
-#else
- init_timer( &tl[ps->devno] );
-
- /* timeout val in seconds */
- tl[ps->devno].expires = jiffies + ps->lampoff * HZ;
- tl[ps->devno].data = (unsigned long)ps;
- tl[ps->devno].function = ptdrvLampTimerIrq;
-
- if( 0 != ps->lampoff )
- add_timer( &tl[ps->devno] );
-#endif
DBG( DBG_HIGH, "Lamp-Timer started!\n" );
}
@@ -616,7 +360,6 @@ static void ptdrvStartLampTimer( pScanData ps )
*/
static void ptdrvStopLampTimer( pScanData ps )
{
-#ifndef __KERNEL__
sigset_t block, pause_mask;
/* block SIGALRM */
@@ -630,10 +373,6 @@ static void ptdrvStopLampTimer( pScanData ps )
_VAR_NOT_USED( ps );
alarm(0);
#endif
-#else
- if( 0 != ps->lampoff )
- del_timer( &tl[ps->devno] );
-#endif
DBG( DBG_HIGH, "Lamp-Timer stopped!\n" );
}
@@ -701,23 +440,11 @@ static int ptdrvOpenDevice( pScanData ps )
UShort lastMode;
ULong devno;
-#ifdef __KERNEL__
- UShort flags;
- struct pardevice *pd;
- struct parport *pp;
- ProcDirDef procDir;
-#else
int pd;
-#endif
/*
* push some values from the struct
*/
-#ifdef __KERNEL__
- flags = ps->flags;
- pp = ps->pp;
- procDir = ps->procDir;
-#endif
pd = ps->pardev;
iobase = ps->sCaps.wIOBase;
asic = ps->sCaps.AsicID;
@@ -734,29 +461,10 @@ static int ptdrvOpenDevice( pScanData ps )
/*
* pop the val(s)
*/
-#ifdef __KERNEL__
- ps->flags = flags;
- ps->pp = pp;
- ps->procDir = procDir;
-#endif
ps->pardev = pd;
ps->bLastLampStatus = lastStat;
ps->IO.lastPortMode = lastMode;
ps->devno = devno;
-
-#ifdef __KERNEL__
- if( _TRUE == slowIO[devno] ) {
- DBG( DBG_LOW, "Using slow I/O\n" );
- ps->IO.slowIO = _TRUE;
- ps->IO.fnOut = IOOutDelayed;
- ps->IO.fnIn = IOInDelayed;
- } else {
- DBG( DBG_LOW, "Using fast I/O\n" );
- ps->IO.slowIO = _FALSE;
- ps->IO.fnOut = IOOut;
- ps->IO.fnIn = IOIn;
- }
-#endif
ps->ModelOverride = mov[devno];
ps->warmup = warmup[devno];
ps->lampoff = lampoff[devno];
@@ -798,19 +506,6 @@ static int ptdrvInit( int devno )
return _E_ALLOC;
}
-#ifdef __KERNEL__
- if( _TRUE == slowIO[devno] ) {
- DBG( DBG_LOW, "Using slow I/O\n" );
- ps->IO.slowIO = _TRUE;
- ps->IO.fnOut = IOOutDelayed;
- ps->IO.fnIn = IOInDelayed;
- } else {
- DBG( DBG_LOW, "Using fast I/O\n" );
- ps->IO.slowIO = _FALSE;
- ps->IO.fnOut = IOOut;
- ps->IO.fnIn = IOIn;
- }
-#endif
ps->ModelOverride = mov[devno];
ps->warmup = warmup[devno];
ps->lampoff = lampoff[devno];
@@ -845,13 +540,8 @@ static int ptdrvInit( int devno )
if( _OK == retval ) {
-#ifdef __KERNEL__
- _PRINT( "pt_drv%u: %s found on port 0x%04x\n",
- devno, MiscGetModelName(ps->sCaps.Model), ps->IO.pbSppDataPort );
-#else
DBG( DBG_LOW, "pt_drv%u: %s found\n",
devno, MiscGetModelName(ps->sCaps.Model));
-#endif
/*
* initialize the timespan timer
@@ -859,43 +549,23 @@ static int ptdrvInit( int devno )
MiscStartTimer( &toTimer[ps->devno], (_SECOND * ps->warmup));
if( 0 == ps->lampoff )
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_LOW,
-#endif
"pt_drv%u: Lamp-Timer switched off.\n", devno );
else {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_LOW,
-#endif
"pt_drv%u: Lamp-Timer set to %u seconds.\n",
devno, ps->lampoff );
}
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_LOW,
-#endif
"pt_drv%u: WarmUp period set to %u seconds.\n",
devno, ps->warmup );
if( 0 == ps->lOffonEnd ) {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_LOW,
-#endif
"pt_drv%u: Lamp untouched on driver unload.\n", devno );
} else {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_LOW,
-#endif
"pt_drv%u: Lamp switch-off on driver unload.\n", devno );
}
@@ -1287,31 +957,19 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
int retval = _OK;
#ifdef _ASIC_98001_SIM
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_LOW,
-#endif
"pt_drv : Software-Emulation active, can't read!\n" );
return _E_INVALID;
#endif
if((NULL == buffer) || (NULL == ps)) {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"pt_drv : Internal NULL-pointer!\n" );
return _E_NULLPTR;
}
if( 0 == count ) {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"pt_drv%u: reading 0 bytes makes no sense!\n", ps->devno );
return _E_INVALID;
}
@@ -1325,11 +983,7 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
* when using the cat /dev/pt_drv command!
*/
if (!(ps->DataInf.dwVxdFlag & _VF_ENVIRONMENT_READY)) {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"pt_drv%u: Cannot read, driver not initialized!\n",ps->devno);
return _E_SEQUENCE;
}
@@ -1340,11 +994,7 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
ps->Scan.bp.pMonoBuf = _KALLOC( ps->DataInf.dwAppPhyBytesPerLine, GFP_KERNEL);
if ( NULL == ps->Scan.bp.pMonoBuf ) {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"pt_drv%u: Not enough memory available!\n", ps->devno );
return _E_ALLOC;
}
@@ -1355,11 +1005,7 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
scaleBuf = _KALLOC( ps->DataInf.dwAppPhyBytesPerLine, GFP_KERNEL);
if ( NULL == scaleBuf ) {
_KFREE( ps->Scan.bp.pMonoBuf );
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"pt_drv%u: Not enough memory available!\n", ps->devno );
return _E_ALLOC;
}
@@ -1406,11 +1052,7 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
retval = ps->Calibration( ps );
if( _OK != retval ) {
-#ifdef __KERNEL__
- _PRINT(
-#else
DBG( DBG_HIGH,
-#endif
"pt_drv%u: calibration failed, result = %i\n",
ps->devno, retval );
goto ReadFinished;
@@ -1507,12 +1149,9 @@ static int ptdrvRead( pScanData ps, pUChar buffer, int count )
ps->Scan.dwLinesToRead--;
/* needed, esp. to avoid freezing the system in SPP mode */
-#ifdef __KERNEL__
- schedule();
/*#else
sched_yield();
*/
-#endif
}
if (ps->fScanningStatus) {
@@ -1565,346 +1204,6 @@ ReadFinished:
return retval;
}
-/*************************** the module interface ****************************/
-
-#ifdef __KERNEL__ /* the kernel module interface */
-
-/* Designed to be used as a module */
-#ifdef MODULE
-
-/*.............................................................................
- * gets called upon module initialization
- */
-#ifdef LINUX_26
-static int __init ptdrv_init( void )
-#else
-int init_module( void )
-#endif
-{
- UInt devCount;
- UInt i;
- int retval = _OK;
- int result = _OK;
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
- char controlname[24];
-#endif
-# ifdef LINUX_26
- char devname[20];
-#endif
-
- DBG( DBG_HIGH, "*********************************************\n" );
- DBG( DBG_HIGH, "pt_drv: init_module()\n" );
-
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
- devfs_handle = devfs_mk_dir(NULL, "scanner", NULL);
- if( devfs_register_chrdev(_PTDRV_MAJOR, _DRV_NAME, &pt_drv_fops)) {
-#else
- if( register_chrdev(_PTDRV_MAJOR, _DRV_NAME, &pt_drv_fops)) {
-#endif
-
- _PRINT(KERN_INFO "pt_drv: unable to get major %d for pt_drv devices\n",
- _PTDRV_MAJOR);
- return -EIO;
- }
- printk( KERN_INFO "pt_drv : driver version "_PTDRV_VERSTR"\n" );
-
-#if !defined (CONFIG_DEVFS_FS) && defined (LINUX_26)
- ptdrv_class = class_create(THIS_MODULE, "scanner");
- if (IS_ERR(ptdrv_class))
- goto out_devfs;
-#endif
-
- /* register the proc_fs */
- ProcFsInitialize();
-
- /* go through the list of defined ports and try to find a device
- */
- devCount = 0;
- for( i = 0; i < _MAX_PTDEVS; i++ ) {
-
- if( 0 != port[i] ) {
- result = ptdrvInit( i );
-
- if ( _OK == result ) {
- PtDrvDevices[i]->flags |= _PTDRV_INITALIZED;
-
-#ifdef CONFIG_DEVFS_FS
-# ifndef DEVFS_26_STYLE
- sprintf( controlname, "scanner/pt_drv%d", devCount );
- devfs_register( NULL, controlname,
- DEVFS_FL_DEFAULT, _PTDRV_MAJOR, 0,
- (S_IFCHR | S_IRUGO | S_IWUGO | S_IFCHR),
- &pt_drv_fops, NULL );
-# else /* DEVFS_26_STYLE */
- devfs_mk_cdev(MKDEV(_PTDRV_MAJOR, devCount),
- (S_IFCHR | S_IRUGO | S_IWUGO | S_IFCHR),
- "scanner/pt_drv%d", devCount);
-# endif
-#else
-# ifdef LINUX_26
- sprintf(devname, "pt_drv%d", devCount);
- CLASS_DEV_CREATE(ptdrv_class,
- MKDEV(_PTDRV_MAJOR, devCount), NULL,
- devname);
-
-# endif /* LINUX_26 */
-#endif /* CONFIG_DEVFS_FS */
- ProcFsRegisterDevice( PtDrvDevices[i] );
- devCount++;
- } else {
- retval = result;
- ptdrvShutdown( PtDrvDevices[i] );
- PtDrvDevices[i] = NULL;
- }
- }
- }
-
- /* * if something went wrong, shutdown all... */
- if( devCount == 0 ) {
-
-#if !defined (CONFIG_DEVFS_FS) && defined (LINUX_26)
-out_devfs:
- class_destroy(ptdrv_class);
-#endif
-
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
- devfs_unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
-#else
- unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
-#endif
- ProcFsShutdown();
-
-#ifdef __KERNEL__
- _PRINT( KERN_INFO "pt_drv : no device(s) detected, (%i)\n", retval );
-#endif
-
- } else {
-
- DBG( DBG_HIGH, "pt_drv : init done, %u device(s) found\n", devCount );
- retval = _OK;
- }
- DBG( DBG_HIGH, "---------------------------------------------\n" );
-
- deviceScanning = _FALSE;
- return retval;
-}
-
-/*.............................................................................
- * cleanup the show
- */
-#ifdef LINUX_26
-static void __exit ptdrv_exit( void )
-#else
-void cleanup_module( void )
-#endif
-{
- UInt i;
- pScanData ps;
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
- char controlname[24];
- devfs_handle_t master;
-#endif
-
- DBG( DBG_HIGH, "pt_drv: cleanup_module()\n" );
-
- for ( i = 0; i < _MAX_PTDEVS; i++ ) {
-
- ps = PtDrvDevices[i];
- PtDrvDevices[i] = NULL;
-
- if ( NULL != ps ) {
-#ifdef CONFIG_DEVFS_FS
-# ifndef DEVFS_26_STYLE
- sprintf( controlname, "scanner/pt_drv%d", i );
- master = devfs_find_handle( NULL,controlname, 0, 0,
- DEVFS_SPECIAL_CHR, 0 );
- devfs_unregister( master );
-# else
- devfs_remove("scanner/pt_drv%d", i);
-# endif
-#else
-# ifdef LINUX_26
- CLASS_DEV_DESTROY(ptdrv_class, MKDEV(_PTDRV_MAJOR, i));
-# endif /* LINUX_26 */
-#endif /* CONFIG_DEVFS_FS */
- ptdrvShutdown( ps );
- ProcFsUnregisterDevice( ps );
- }
- }
-
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
- devfs_unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
-#else
- unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
-#endif
- ProcFsShutdown();
-
-#if !defined (CONFIG_DEVFS_FS) && defined (LINUX_26)
- class_destroy(ptdrv_class);
-#endif
-
- DBG( DBG_HIGH, "pt_drv: cleanup done.\n" );
- DBG( DBG_HIGH, "*********************************************\n" );
-}
-
-#ifdef LINUX_26
-module_init(ptdrv_init);
-module_exit(ptdrv_exit);
-#endif
-
-#endif /*MODULE*/
-
-
-/*.............................................................................
- * device open...
- */
-static int pt_drv_open(struct inode *inode, struct file *file)
-{
- pScanData ps;
-
- DBG( DBG_HIGH, "pt_drv_open()\n" );
-
- ps = get_pt_from_inode(inode);
-
- if ( NULL == ps ) {
- return(-ENXIO);
- }
-
- /* device not found ? */
- if (!(ps->flags & _PTDRV_INITALIZED)) {
- return(-ENXIO);
- }
-
- /* device is busy ? */
- if (ps->flags & _PTDRV_OPEN) {
- return(-EBUSY);
- }
-
-#ifdef LINUX_26
- if (!try_module_get(THIS_MODULE))
- return -EAGAIN;
-#else
- MOD_INC_USE_COUNT;
-#endif
- ps->flags |= _PTDRV_OPEN;
-
- return _OK;
-}
-
-/*.............................................................................
- * device close...
- */
-static CLOSETYPE pt_drv_close(struct inode * inode, struct file * file)
-{
- pScanData ps;
-
- DBG( DBG_HIGH, "pt_drv_close()\n" );
-
- if ((ps = get_pt_from_inode(inode)) ) {
-
- ptdrvClose( ps );
-
- ps->flags &= ~_PTDRV_OPEN;
-#ifdef LINUX_26
- module_put(THIS_MODULE);
-#else
- MOD_DEC_USE_COUNT;
-#endif
- CLOSERETURN(0);
- } else {
-
- DBG( DBG_HIGH, "pt_drv: - close failed!\n" );
- CLOSERETURN(-ENXIO);
- }
-}
-
-/*.............................................................................
- * read data from device
- */
-#ifdef LINUX_20
-static int pt_drv_read(struct inode *inode, struct file *file,
- char *buffer, int count)
-{
- int result;
- pScanData ps;
-
- if ( !(ps = get_pt_from_inode(inode)))
- return(-ENXIO);
-#else
-static ssize_t pt_drv_read( struct file *file,
- char *buffer, size_t count, loff_t *tmp )
-{
- int result;
- pScanData ps;
-
- if ( !(ps = get_pt_from_inode(file->f_dentry->d_inode)) )
- return(-ENXIO);
-#endif
- if ((result = verify_area_20(VERIFY_WRITE, buffer, count)))
- return result;
-
- /*
- * as the driver contains some global vars, it is not
- * possible to scan simultaenously with two or more devices
- */
- if( _TRUE == deviceScanning ) {
- printk( KERN_INFO "pt_drv: device %u busy!!!\n", ps->devno );
- return(-EBUSY);
- }
-
- deviceScanning = _TRUE;
-
- result = ptdrvRead( ps, buffer, count );
-
- deviceScanning = _FALSE;
- return result;
-}
-
-/*.............................................................................
- * writing makes no sense
- */
-#ifdef LINUX_20
-static int pt_drv_write(struct inode * inode, struct file * file,
- const char * buffer, int count)
-{
- return -EPERM;
-}
-#else
- static ssize_t pt_drv_write( struct file * file,const char * buffer,
- size_t tmp,loff_t* count)
-{
- return -EPERM;
-}
-#endif
-
-/*.............................................................................
- * the ioctl interface
- */
-#ifdef NOLOCK_IOCTL
-static long pt_drv_ioctl( struct file *file, UInt cmd, unsigned long arg )
-{
- pScanData ps;
-
- if ( !(ps = get_pt_from_inode(file->f_dentry->d_inode)) )
- return(-ENXIO);
-
- return ptdrvIoctl( ps, cmd, (pVoid)arg);
-}
-#else
-static int pt_drv_ioctl( struct inode *inode, struct file *file,
- UInt cmd, unsigned long arg )
-{
- pScanData ps;
-
- if ( !(ps = get_pt_from_inode(inode)) )
- return(-ENXIO);
-
- return ptdrvIoctl( ps, cmd, (pVoid)arg);
-}
-#endif
-
-#else /* the user-mode interface */
-
/*.............................................................................
* here we only have wrapper functions
*/
@@ -1980,6 +1279,4 @@ static int PtDrvRead ( pUChar buffer, int count )
return ptdrvRead( PtDrvDevices[0], buffer, count );
}
-#endif /* guard __KERNEL__ */
-
/* END PLUSTEK-PP_PTDRV.C ...................................................*/
diff --git a/backend/plustek-pp_scan.h b/backend/plustek-pp_scan.h
index ccc9b97..b57148f 100644
--- a/backend/plustek-pp_scan.h
+++ b/backend/plustek-pp_scan.h
@@ -63,8 +63,6 @@
#ifndef __PLUSTEK_SCAN_H__
#define __PLUSTEK_SCAN_H__
-#ifndef __KERNEL__
-
# include <stdlib.h>
# include <stdarg.h>
# include <string.h>
@@ -76,19 +74,6 @@
# ifdef HAVE_SYS_IO_H
# include <sys/io.h>
# endif
-#else
-# include <linux/kernel.h>
-# include <linux/init.h>
-# include <linux/version.h>
-# include "plustek-pp_sysdep.h"
-# include <linux/delay.h>
-# include <linux/parport.h>
-
-#ifdef LINUX_24
-# include <linux/parport_pc.h>
-#endif /* LINUX_24 */
-
-#endif /* __KERNEL__ */
/*.............................................................................
* driver properties
@@ -104,20 +89,6 @@
# define _OPF ps->IO.fnOut
# define _IPF ps->IO.fnIn
-#ifdef __KERNEL__
-
-#define _OUTB_CTRL(pSD,port_value) _OPF(port_value,pSD->IO.pbControlPort)
-#define _OUTB_DATA(pSD,port_value) _OPF(port_value,pSD->IO.pbSppDataPort)
-#define _OUTB_ECTL(pSD,port_value) _OPF(port_value,(pSD->IO.portBase+0x402))
-
-#define _INB_CTRL(pSD) _IPF(pSD->IO.pbControlPort)
-#define _INB_DATA(pSD) _IPF(pSD->IO.pbSppDataPort)
-#define _INB_EPPDATA(pSD) _IPF(pSD->IO.pbEppDataPort)
-#define _INB_STATUS(pSD) _IPF(pSD->IO.pbStatusPort)
-#define _INB_ECTL(pSD) _IPF((pSD->IO.portBase+0x402))
-
-#else
-
#define _OUTB_CTRL(pSD,port_value) sanei_pp_outb_ctrl(pSD->pardev, port_value)
#define _OUTB_DATA(pSD,port_value) sanei_pp_outb_data(pSD->pardev, port_value)
#define _OUTB_ECTL(pSD,port_value)
@@ -127,32 +98,19 @@
#define _INB_EPPDATA(pSD) sanei_pp_inb_epp(pSD->pardev)
#define _INB_STATUS(pSD) sanei_pp_inb_stat(pSD->pardev)
-#endif
-
/*.............................................................................
* for memory allocation
*/
-#ifndef __KERNEL__
# define _KALLOC(x,y) malloc(x)
# define _KFREE(x) free(x)
# define _VMALLOC(x) malloc(x)
# define _VFREE(x) free(x)
-#else
-# define _KALLOC(x,y) kmalloc(x,y)
-# define _KFREE(x) kfree(x)
-# define _VMALLOC(x) vmalloc(x)
-# define _VFREE(x) vfree(x)
-#endif
/*
* WARNING - never use the _SECOND define with the _DODELAY macro !!
* they are for use the MiscStartTimer function and the _DO_UDELAY macro
*/
-#ifndef __KERNEL__
typedef double TimerDef, *pTimerDef;
-#else
-typedef long long TimerDef, *pTimerDef;
-#endif
#define _MSECOND 1000 /* based on 1 us */
#define _SECOND (1000*_MSECOND)
@@ -160,13 +118,8 @@ typedef long long TimerDef, *pTimerDef;
/*.............................................................................
* timer topics
*/
-#ifndef __KERNEL__
# define _DO_UDELAY(usecs) sanei_pp_udelay(usecs)
# define _DODELAY(msecs) { int i; for( i = msecs; i--; ) _DO_UDELAY(1000); }
-#else
-# define _DO_UDELAY(usecs) udelay(usecs)
-# define _DODELAY(msecs) mdelay(msecs)
-#endif
/*.............................................................................
* include the shared stuff right here, this concerns the ioctl interface
diff --git a/backend/plustek-pp_scandata.h b/backend/plustek-pp_scandata.h
index 1ba0fc5..ea98139 100644
--- a/backend/plustek-pp_scandata.h
+++ b/backend/plustek-pp_scandata.h
@@ -143,17 +143,7 @@ typedef struct {
*/
typedef struct scandata
{
-#ifdef __KERNEL__
- UInt flags; /* as follows: */
-#define _PTDRV_INITALIZED 0x00000001
-#define _PTDRV_OPEN 0x00000002
-
- struct pardevice *pardev; /* for accessing parport... */
- struct parport *pp;
- ProcDirDef procDir;
-#else
int pardev; /* parport handle in user-space */
-#endif
/*
* device control
diff --git a/backend/plustek-usbshading.c b/backend/plustek-usbshading.c
index c585c8b..f7eb619 100644
--- a/backend/plustek-usbshading.c
+++ b/backend/plustek-usbshading.c
@@ -685,7 +685,7 @@ static u_char usb_GetNewGain( Plustek_Device *dev, u_short wMax, int channel )
dwInc = (u_long)((0.93 + ceil (dRatio) * 0.067) * wMax / dAmp);
dwDec = (u_long)((0.93 + floor (dRatio) * 0.067) * wMax / dAmp);
if((dwInc >= 0xff00) ||
- (labs (dwInc - m_dwIdealGain) > labs(dwDec - m_dwIdealGain))) {
+ (dwInc - m_dwIdealGain > m_dwIdealGain - dwDec)) {
bGain = (u_char)floor(dRatio);
} else {
bGain = (u_char)ceil(dRatio);
diff --git a/backend/qcam.c b/backend/qcam.c
index 9d55055..8e302e9 100644
--- a/backend/qcam.c
+++ b/backend/qcam.c
@@ -191,23 +191,13 @@ static const SANE_Range odd_bw_x_range = { 1, 335, 2 };
static const SANE_Range bw_y_range = { 0, 241, 1 };
static const SANE_Range odd_bw_y_range = { 1, 242, 1 };
-#if defined(HAVE_SYS_IO_H) || defined(HAVE_ASM_IO_H) || defined (HAVE_SYS_HW_H)
-
-#ifdef HAVE_SYS_IO_H
-# include <sys/io.h> /* GNU libc based OS */
-#elif HAVE_ASM_IO_H
-# include <asm/io.h> /* older Linux */
-#elif HAVE_SYS_HW_H
-# include <sys/hw.h> /* OS/2 */
-#endif
-
-#endif /* <sys/io.h> || <asm/io.h> || <sys/hw.h> */
+#include "../include/sane/sanei_directio.h"
-#define read_lpdata(d) inb ((d)->port)
-#define read_lpstatus(d) inb ((d)->port + 1)
-#define read_lpcontrol(d) inb ((d)->port + 2)
-#define write_lpdata(d,v) outb ((v), (d)->port)
-#define write_lpcontrol(d,v) outb ((v), (d)->port + 2)
+#define read_lpdata(d) sanei_inb ((d)->port)
+#define read_lpstatus(d) sanei_inb ((d)->port + 1)
+#define read_lpcontrol(d) sanei_inb ((d)->port + 2)
+#define write_lpdata(d,v) sanei_outb ((d)->port, (v))
+#define write_lpcontrol(d,v) sanei_outb ((d)->port + 2, (v))
static SANE_Status
@@ -217,7 +207,7 @@ enable_ports (QC_Device * q)
if (q->port < 0x278 || q->port > 0x3bc)
return SANE_STATUS_INVAL;
- if (ioperm (q->port, 3, 1) < 0)
+ if (sanei_ioperm (q->port, 3, 1) < 0)
return SANE_STATUS_INVAL;
return SANE_STATUS_GOOD;
@@ -226,7 +216,7 @@ enable_ports (QC_Device * q)
static SANE_Status
disable_ports (QC_Device * q)
{
- if (ioperm (q->port, 3, 0) < 0)
+ if (sanei_ioperm (q->port, 3, 0) < 0)
return SANE_STATUS_INVAL;
return SANE_STATUS_GOOD;
@@ -1454,7 +1444,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
char dev_name[PATH_MAX], *str;
size_t len;
FILE *fp;
- authorize = authorize; /* silence compilation warnings */
+ (void) authorize; /* silence compilation warnings */
DBG_INIT ();
@@ -1521,7 +1511,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
DBG (5, "sane_get_devices: enter\n");
- local_only = local_only; /* silence compilation warnings */
+ (void) local_only; /* silence compilation warnings */
if (devlist)
free (devlist);
@@ -2129,7 +2119,7 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
len = s->bytes_per_frame - s->num_bytes;
DBG (8, "read(buf=%p,num_bytes=%ld,max_len=%d,len=%ld)\n",
- buf, (long) s->num_bytes, max_len, (long) len);
+ (void *) buf, (long) s->num_bytes, max_len, (long) len);
nread = read (s->read_fd, buf, len);
if (nread <= 0)
diff --git a/backend/ricoh.c b/backend/ricoh.c
index d1f20c0..c4dd641 100644
--- a/backend/ricoh.c
+++ b/backend/ricoh.c
@@ -485,7 +485,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
char devnam[PATH_MAX] = "/dev/scanner";
FILE *fp;
- authorize = authorize; /* silence gcc */
+ (void) authorize; /* silence gcc */
DBG_INIT ();
DBG (11, ">> sane_init\n");
@@ -514,7 +514,8 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
continue; /* ignore empty lines */
/* skip white space: */
- for (lp = line; isspace(*lp); ++lp);
+ for (lp = line; isspace(*lp); ++lp)
+ ;
strcpy (devnam, lp);
}
fclose (fp);
@@ -550,7 +551,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
Ricoh_Device *dev;
int i;
- local_only = local_only; /* silence gcc */
+ (void) local_only; /* silence gcc */
DBG (11, ">> sane_get_devices\n");
@@ -1007,8 +1008,8 @@ sane_cancel (SANE_Handle handle)
SANE_Status
sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
- handle = handle; /* silence gcc */
- non_blocking = non_blocking; /* silence gcc */
+ (void) handle; /* silence gcc */
+ (void) non_blocking; /* silence gcc */
DBG (5, ">> sane_set_io_mode\n");
DBG (5, "<< sane_set_io_mode\n");
@@ -1019,8 +1020,8 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
- handle = handle; /* silence gcc */
- fd = fd; /* silence gcc */
+ (void) handle; /* silence gcc */
+ (void) fd; /* silence gcc */
DBG (5, ">> sane_get_select_fd\n");
DBG (5, "<< sane_get_select_fd\n");
diff --git a/backend/rts8891.c b/backend/rts8891.c
index fa5d17a..2732871 100644
--- a/backend/rts8891.c
+++ b/backend/rts8891.c
@@ -76,6 +76,7 @@
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
+#include <math.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
@@ -306,7 +307,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
{
SANE_Status status;
- authorize = authorize; /* get rid of compiler warning */
+ (void) authorize; /* get rid of compiler warning */
/* init ASIC libraries */
sanei_rts88xx_lib_init ();
@@ -4778,7 +4779,7 @@ dark_calibration (struct Rts8891_Device *dev, int mode, int light)
global, ra, ga, ba);
/* dichotomie ... */
- if (abs (ra - DARK_TARGET) < DARK_MARGIN)
+ if (fabs (ra - DARK_TARGET) < DARK_MARGIN)
{
/* offset is OK */
tro = ro;
@@ -4800,7 +4801,7 @@ dark_calibration (struct Rts8891_Device *dev, int mode, int light)
}
/* same for blue channel */
- if (abs (ba - DARK_TARGET) < DARK_MARGIN)
+ if (fabs (ba - DARK_TARGET) < DARK_MARGIN)
{
bbo = bo;
tbo = bo;
@@ -4821,7 +4822,7 @@ dark_calibration (struct Rts8891_Device *dev, int mode, int light)
}
/* and for green channel */
- if (abs (ga - DARK_TARGET) < DARK_MARGIN)
+ if (fabs (ga - DARK_TARGET) < DARK_MARGIN)
{
tgo = go;
bgo = go;
@@ -5084,7 +5085,7 @@ gain_calibration (struct Rts8891_Device *dev, int mode, int light)
global, ra, ga, ba);
/* dichotomy again ... */
- if (abs (ra - RED_GAIN_TARGET) < GAIN_MARGIN)
+ if (fabs (ra - RED_GAIN_TARGET) < GAIN_MARGIN)
{
/* gain is OK, it is whitin the tolerance margin */
trg = rg;
@@ -5125,7 +5126,7 @@ gain_calibration (struct Rts8891_Device *dev, int mode, int light)
}
/* same for blue channel */
- if (abs (ba - BLUE_GAIN_TARGET) < GAIN_MARGIN)
+ if (fabs (ba - BLUE_GAIN_TARGET) < GAIN_MARGIN)
{
bbg = bg;
tbg = bg;
@@ -5161,7 +5162,7 @@ gain_calibration (struct Rts8891_Device *dev, int mode, int light)
}
/* and for green channel */
- if (abs (ga - GREEN_GAIN_TARGET) < GAIN_MARGIN)
+ if (fabs (ga - GREEN_GAIN_TARGET) < GAIN_MARGIN)
{
tgg = gg;
bgg = gg;
@@ -5367,7 +5368,7 @@ offset_calibration (struct Rts8891_Device *dev, int mode, int light)
global, ra, ga, ba);
/* dichotomie ... */
- if (abs (ra - OFFSET_TARGET) < OFFSET_MARGIN)
+ if (fabs (ra - OFFSET_TARGET) < OFFSET_MARGIN)
{
/* offset is OK */
tro = ro;
@@ -5389,7 +5390,7 @@ offset_calibration (struct Rts8891_Device *dev, int mode, int light)
}
/* same for blue channel */
- if (abs (ba - OFFSET_TARGET) < OFFSET_MARGIN)
+ if (fabs (ba - OFFSET_TARGET) < OFFSET_MARGIN)
{
bbo = bo;
tbo = bo;
@@ -5410,7 +5411,7 @@ offset_calibration (struct Rts8891_Device *dev, int mode, int light)
}
/* and for green channel */
- if (abs (ga - OFFSET_TARGET) < OFFSET_MARGIN)
+ if (fabs (ga - OFFSET_TARGET) < OFFSET_MARGIN)
{
tgo = go;
bgo = go;
diff --git a/backend/s9036.c b/backend/s9036.c
index 8f84ecf..cc8a205 100644
--- a/backend/s9036.c
+++ b/backend/s9036.c
@@ -124,8 +124,8 @@ test_ready (int fd)
static SANE_Status
sense_handler (int scsi_fd, u_char *result, void *arg)
{
- scsi_fd = scsi_fd;
- arg = arg; /* silence compilation warnings */
+ (void) scsi_fd;
+ (void) arg; /* silence compilation warnings */
if (result[0])
{
@@ -141,7 +141,7 @@ sense_handler (int scsi_fd, u_char *result, void *arg)
static SANE_Status
stop_scan (int fd)
{
- fd = fd; /* silence compilation warnings */
+ (void) fd; /* silence compilation warnings */
/* XXX don't know how to stop the scanner. To be tested ! */
#if 0
@@ -829,7 +829,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize; /* silence compilation warnings */
+ (void) authorize; /* silence compilation warnings */
DBG_INIT ();
@@ -882,7 +882,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
S9036_Device *dev;
int i;
- local_only = local_only; /* silence compilation warnings */
+ (void) local_only; /* silence compilation warnings */
if (devlist)
free (devlist);
@@ -1327,7 +1327,7 @@ sane_cancel (SANE_Handle handle)
SANE_Status
sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
{
- handle = handle; /* silence compilation warnings */
+ (void) handle; /* silence compilation warnings */
DBG (1, "sane_set_io_mode(%d)\n", non_blocking);
@@ -1338,8 +1338,8 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
SANE_Status
sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
- handle = handle;
- fd = fd; /* silence compilation warnings */
+ (void) handle;
+ (void) fd; /* silence compilation warnings */
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/sm3600-scanusb.c b/backend/sm3600-scanusb.c
index dc9b8d5..997b8ee 100644
--- a/backend/sm3600-scanusb.c
+++ b/backend/sm3600-scanusb.c
@@ -66,7 +66,7 @@ static int TransferControlMsg(TInstance *this,
{
SANE_Status err;
- cJiffiesTimeout = cJiffiesTimeout;
+ (void) cJiffiesTimeout;
err = sanei_usb_control_msg (this->hScanner,
nReqType,
@@ -95,8 +95,8 @@ static int TransferBulkRead(TInstance *this,
int err;
size_t sz = cchMax;
- nEndPoint = nEndPoint;
- cJiffiesTimeout = cJiffiesTimeout;
+ (void) nEndPoint;
+ (void) cJiffiesTimeout;
err = sanei_usb_read_bulk(this->hScanner,
pBuffer,
diff --git a/backend/sm3600.c b/backend/sm3600.c
index e1df6b0..0644b5d 100644
--- a/backend/sm3600.c
+++ b/backend/sm3600.c
@@ -385,7 +385,7 @@ sane_init (SANE_Int *version_code, SANE_Auth_Callback authCB)
DBG_INIT();
- authCB=authCB; /* compiler */
+ (void) authCB; /* compiler */
DBG(DEBUG_VERBOSE,"SM3600 init\n");
if (version_code)
@@ -783,7 +783,7 @@ sane_cancel (SANE_Handle handle)
SANE_Status
sane_set_io_mode(SANE_Handle h, SANE_Bool m)
{
- h=h;
+ (void) h;
if (m==SANE_TRUE) /* no non-blocking-mode */
return SANE_STATUS_UNSUPPORTED;
return SANE_STATUS_GOOD;
@@ -792,6 +792,6 @@ sane_set_io_mode(SANE_Handle h, SANE_Bool m)
SANE_Status
sane_get_select_fd(SANE_Handle handle, SANE_Int *fd)
{
- handle=handle; fd=fd;
+ (void) handle; (void) fd;
return SANE_STATUS_UNSUPPORTED; /* we have no file IO */
}
diff --git a/backend/sm3840.c b/backend/sm3840.c
index 159f600..672fb92 100644
--- a/backend/sm3840.c
+++ b/backend/sm3840.c
@@ -145,11 +145,12 @@ sane_read (SANE_Handle handle, SANE_Byte * buf, SANE_Int max_len,
unsigned char c, d;
int i;
- DBG (2, "+sane-read:%p %p %d %p\n", (unsigned char *) s, buf, max_len,
- (unsigned char *) len);
+ DBG (2, "+sane-read:%p %p %d %p\n", (void *) s, (void *) buf, max_len,
+ (void *) len);
DBG (2,
"+sane-read:remain:%lu offset:%lu linesleft:%d linebuff:%p linesread:%d\n",
- (u_long)s->remaining, (u_long)s->offset, s->linesleft, s->line_buffer, s->linesread);
+ (u_long) s->remaining, (u_long) s->offset, s->linesleft,
+ (void *) s->line_buffer, s->linesread);
if (!s->scanning)
return SANE_STATUS_INVAL;
@@ -798,7 +799,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
/* empty devicename -> use first device */
dev = first_dev;
}
- DBG (2, "using device: %s %p\n", dev->sane.name, (unsigned char *) dev);
+ DBG (2, "using device: %s %p\n", dev->sane.name, (void *) dev);
if (!dev)
return SANE_STATUS_INVAL;
s = calloc (sizeof (*s), 1);
diff --git a/backend/sm3840_lib.c b/backend/sm3840_lib.c
index 46d9910..80fcec7 100644
--- a/backend/sm3840_lib.c
+++ b/backend/sm3840_lib.c
@@ -64,8 +64,8 @@ my_usb_bulk_write (p_usb_dev_handle dev, int ep,
SANE_Status status;
size_t my_size;
- timeout = timeout;
- ep = ep;
+ (void) timeout;
+ (void) ep;
my_size = size;
status =
sanei_usb_write_bulk ((SANE_Int) dev, (SANE_Byte *) bytes, &my_size);
@@ -81,8 +81,8 @@ my_usb_bulk_read (p_usb_dev_handle dev, int ep,
SANE_Status status;
size_t my_size;
- timeout = timeout;
- ep = ep;
+ (void) timeout;
+ (void) ep;
my_size = size;
status =
sanei_usb_read_bulk ((SANE_Int) dev, (SANE_Byte *) bytes, &my_size);
@@ -98,7 +98,7 @@ my_usb_control_msg (p_usb_dev_handle dev, int requesttype,
{
SANE_Status status;
- timeout = timeout;
+ (void) timeout;
status = sanei_usb_control_msg ((SANE_Int) dev, (SANE_Int) requesttype,
(SANE_Int) request, (SANE_Int) value,
(SANE_Int) index, (SANE_Int) size,
@@ -200,9 +200,8 @@ idle_ab (p_usb_dev_handle udev)
/* CW: 40 04 00b0 0000 <len> : <reg1> <value1> <reg2> <value2> ... */
static void
-write_regs (p_usb_dev_handle udev, int regs, unsigned char reg1,
- unsigned char val1,
- ... /*unsigned char reg, unsigned char val, ... */ )
+write_regs (p_usb_dev_handle udev, int regs, int reg1, int val1,
+ ... /* int reg, int val, ... */ )
{
unsigned char buff[512];
va_list marker;
diff --git a/backend/sm3840_lib.h b/backend/sm3840_lib.h
index cbbc6d3..5630066 100644
--- a/backend/sm3840_lib.h
+++ b/backend/sm3840_lib.h
@@ -81,9 +81,8 @@ static int my_usb_control_msg (p_usb_dev_handle dev, int requesttype,
#include "sm3840_params.h"
static void idle_ab (p_usb_dev_handle udev);
-static void write_regs (p_usb_dev_handle udev, int regs, unsigned char reg1,
- unsigned char val1,
- ... /*unsigned char reg, unsigned char val, ... */ );
+static void write_regs (p_usb_dev_handle udev, int regs, int reg1, int val1,
+ ... /* int reg, int val, ... */ );
static int write_vctl (p_usb_dev_handle udev, int request, int value,
int index, unsigned char byte);
static int read_vctl (p_usb_dev_handle udev, int request, int value,
@@ -122,9 +121,8 @@ static void set_gain_black (p_usb_dev_handle udev,
int r_black, int g_black, int b_black);
static void idle_ab (p_usb_dev_handle udev);
-static void write_regs (p_usb_dev_handle udev, int regs, unsigned char reg1,
- unsigned char val1,
- ... /*unsigned char reg, unsigned char val, ... */ );
+static void write_regs (p_usb_dev_handle udev, int regs, int reg1, int val1,
+ ... /* int reg, int val, ... */ );
static int write_vctl (p_usb_dev_handle udev, int request, int value,
int index, unsigned char byte);
static int read_vctl (p_usb_dev_handle udev, int request, int value,
diff --git a/backend/snapscan-options.c b/backend/snapscan-options.c
index 6bccf38..719c1e4 100644
--- a/backend/snapscan-options.c
+++ b/backend/snapscan-options.c
@@ -1107,7 +1107,7 @@ SANE_Status sane_control_option (SANE_Handle h,
"%s: writing \"%s\" to location %p\n",
me,
pss->mode_s,
- (SANE_String) v);
+ (void *) v);
strcpy ((SANE_String) v, pss->mode_s);
break;
case OPT_PREVIEW_MODE:
@@ -1115,7 +1115,7 @@ SANE_Status sane_control_option (SANE_Handle h,
"%s: writing \"%s\" to location %p\n",
me,
pss->preview_mode_s,
- (SANE_String) v);
+ (void *) v);
strcpy ((SANE_String) v, pss->preview_mode_s);
break;
case OPT_SOURCE:
@@ -1144,7 +1144,7 @@ SANE_Status sane_control_option (SANE_Handle h,
"%s: writing \"%s\" to location %p\n",
me,
pss->predef_window,
- (SANE_String) v);
+ (void *) v);
strcpy ((SANE_String) v, pss->predef_window);
break;
case OPT_GAMMA_GS:
@@ -1179,7 +1179,7 @@ SANE_Status sane_control_option (SANE_Handle h,
"%s: writing \"%s\" to location %p\n",
me,
pss->dither_matrix,
- (SANE_String) v);
+ (void *) v);
strcpy ((SANE_String) v, pss->dither_matrix);
break;
case OPT_NEGATIVE:
diff --git a/backend/snapscan-scsi.c b/backend/snapscan-scsi.c
index d223f6a..a3fd4d0 100644
--- a/backend/snapscan-scsi.c
+++ b/backend/snapscan-scsi.c
@@ -144,7 +144,6 @@ static SANE_Status sense_handler (int scsi_fd, u_char * result, void *arg)
as_str = "Logical unit is in process of becoming ready.";
DBG (DL_MINOR_INFO, "%s: %s (%d seconds)\n", me, as_str, result[18]);
status = SANE_STATUS_DEVICE_BUSY;
- DBG (DL_MINOR_INFO, "%s: %s\n", me, sense_str);
}
break;
case 0x04:
@@ -160,8 +159,10 @@ static SANE_Status sense_handler (int scsi_fd, u_char * result, void *arg)
sense_str = "Illegal request.";
DBG (DL_MINOR_INFO, "%s: %s\n", me, sense_str);
if (asc == 0x25 && ascq == 0x00)
+ {
as_str = "Logical unit not supported.";
DBG (DL_MINOR_INFO, "%s: %s\n", me, as_str);
+ }
status = SANE_STATUS_IO_ERROR;
break;
case 0x09:
diff --git a/backend/sp15c-scsi.h b/backend/sp15c-scsi.h
index 1d3e0a1..03fee55 100644
--- a/backend/sp15c-scsi.h
+++ b/backend/sp15c-scsi.h
@@ -209,9 +209,12 @@ static scsiblk inquiryB =
#define get_IN_response_format(in) getbitfield(in + 0x03, 0x0f, 0)
#define IN_recognized 0x02
#define get_IN_additional_length(in) in[0x04]
-#define get_IN_vendor(in, buf) strncpy(buf, in + 0x08, 0x08)
-#define get_IN_product(in, buf) strncpy(buf, in + 0x10, 0x010)
-#define get_IN_version(in, buf) strncpy(buf, in + 0x20, 0x04)
+#define get_IN_vendor(in, buf) snprintf(buf, 0x08 + 1, "%.*s", \
+ 0x08, in + 0x08)
+#define get_IN_product(in, buf) snprintf(buf, 0x10 + 1, "%.*s", \
+ 0x10, in + 0x10)
+#define get_IN_version(in, buf) snprintf(buf, 0x04 + 1, "%.*s", \
+ 0x04, in + 0x20)
#define get_IN_color_mode(in) getbitfield(in + 0x24, 0xf, 0)
#define get_IN_color_seq(in) getbitfield(in + 0x24, 0x7, 4)
#define get_IN_adf(in) getbitfield(in + 0x24, 0x1, 7)
diff --git a/backend/sp15c.c b/backend/sp15c.c
index a3ad5c2..bf3ce29 100644
--- a/backend/sp15c.c
+++ b/backend/sp15c.c
@@ -273,7 +273,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
char dev_name[PATH_MAX];
size_t len;
FILE *fp;
- authorize = authorize; /* silence compilation warnings */
+ (void) authorize; /* silence compilation warnings */
DBG_INIT ();
DBG (10, "sane_init\n");
@@ -310,7 +310,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
struct sp15c *dev;
int i;
- local_only = local_only; /* silence compilation warnings */
+ (void) local_only; /* silence compilation warnings */
DBG (10, "sane_get_devices\n");
@@ -335,7 +335,7 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
{
struct sp15c *dev = first_dev;
- name = name; /* silence compilation warnings */
+ (void) name; /* silence compilation warnings */
/* Strange, name is not used? */
DBG (10, "sane_open\n");
@@ -388,8 +388,8 @@ sane_open (SANE_String_Const name, SANE_Handle * handle)
SANE_Status
sane_set_io_mode (SANE_Handle h, SANE_Bool non_blocking)
{
- h = h;
- non_blocking = non_blocking; /* silence compilation warnings */
+ (void) h;
+ (void) non_blocking; /* silence compilation warnings */
DBG (10, "sane_set_io_mode\n");
return SANE_STATUS_UNSUPPORTED;
@@ -399,8 +399,8 @@ sane_set_io_mode (SANE_Handle h, SANE_Bool non_blocking)
SANE_Status
sane_get_select_fd (SANE_Handle h, SANE_Int * fdp)
{
- h = h;
- fdp = fdp; /* silence compilation warnings */
+ (void) h;
+ (void) fdp; /* silence compilation warnings */
DBG (10, "sane_get_select_fd\n");
return SANE_STATUS_UNSUPPORTED;
@@ -1080,8 +1080,8 @@ attach_one (const char *name)
static SANE_Status
sense_handler (int scsi_fd, u_char * result, void *arg)
{
- scsi_fd = scsi_fd;
- arg = arg; /* silence compilation warnings */
+ (void) scsi_fd;
+ (void) arg; /* silence compilation warnings */
return request_sense_parse (result);
} /* sense_handler */
@@ -1783,7 +1783,7 @@ do_cancel (struct sp15c *scanner)
static void
swap_res (struct sp15c *s)
{
- s = s; /* silence compilation warnings */
+ (void) s; /* silence compilation warnings */
/* for the time being, do nothing */
} /* swap_res */
@@ -1815,7 +1815,7 @@ sp15c_set_window_param (struct sp15c *s, int prescan)
int ret;
int active_buffer_size;
- prescan = prescan; /* silence compilation warnings */
+ (void) prescan; /* silence compilation warnings */
wait_scanner (s);
DBG (10, "set_window_param\n");
@@ -1950,7 +1950,7 @@ sp15c_start_scan (struct sp15c *s)
static void
sigterm_handler (int signal)
{
- signal = signal; /* silence compilation warnings */
+ (void) signal; /* silence compilation warnings */
sanei_scsi_req_flush_all (); /* flush SCSI queue */
_exit (SANE_STATUS_GOOD);
diff --git a/backend/st400.c b/backend/st400.c
index a75807f..a568e5d 100644
--- a/backend/st400.c
+++ b/backend/st400.c
@@ -439,8 +439,8 @@ st400_sense_handler( int fd, SANE_Byte *result, void *arg )
/* ST400_Device *dev = arg; */
SANE_Status status;
- fd = fd;
- arg = arg; /* silence compilation warnings */
+ (void) fd;
+ (void) arg; /* silence compilation warnings */
switch( result[0] & 0x0f ) {
case 0x0:
@@ -563,7 +563,7 @@ st400_config_get_arg(char **optP, unsigned long *argP, size_t linenum)
{
int n;
- linenum = linenum; /* silence compilation warnings */
+ (void) linenum; /* silence compilation warnings */
if( sscanf(*optP, "%lu%n", argP, &n) == 1 ) {
*optP += n;
@@ -1221,7 +1221,7 @@ sane_read( SANE_Handle handle, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenP )
size_t r, i;
SANE_Byte val;
- DBG(DCODE, "sane_read(%p, %p, %d, %p)\n", handle, buf, (int)maxlen, (void *) lenP);
+ DBG(DCODE, "sane_read(%p, %p, %d, %p)\n", handle, (void *) buf, (int) maxlen, (void *) lenP);
*lenP = 0;
if( !dev->status.scanning )
diff --git a/backend/stv680.c b/backend/stv680.c
index eb9add5..02ff39d 100644
--- a/backend/stv680.c
+++ b/backend/stv680.c
@@ -1439,7 +1439,7 @@ stv680_bayer_unshuffle (Stv680_Vidcam * dev, SANE_Byte * buf, size_t * size)
"stv680_bayer_unshuffle: if needed, trim to size 160 done\n");
}
/* reset to proper width */
- if ((dev->subsample == 160))
+ if (dev->subsample == 160)
{
vw = 160;
vh = 120;
@@ -1520,7 +1520,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
DBG (DBG_sane_init, "sane_init\n");
- authorize = authorize; /* silence gcc */
+ (void) authorize; /* silence gcc */
DBG (DBG_error, "This is sane-stv680 version %d.%d-%d\n", SANE_CURRENT_MAJOR,
SANE_CURRENT_MINOR, BUILD);
@@ -1584,7 +1584,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
DBG (DBG_proc, "sane_get_devices: enter\n");
- local_only = local_only; /* silence gcc */
+ (void) local_only; /* silence gcc */
if (devlist)
free (devlist);
@@ -2073,8 +2073,8 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
DBG (DBG_proc, "sane_set_io_mode: enter\n");
- handle = handle; /* silence gcc */
- non_blocking = non_blocking; /* silence gcc */
+ (void) handle; /* silence gcc */
+ (void) non_blocking; /* silence gcc */
DBG (DBG_proc, "sane_set_io_mode: exit\n");
@@ -2087,8 +2087,8 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
{
DBG (DBG_proc, "sane_get_select_fd: enter\n");
- handle = handle; /* silence gcc */
- fd = fd; /* silence gcc */
+ (void) handle; /* silence gcc */
+ (void) fd; /* silence gcc */
DBG (DBG_proc, "sane_get_select_fd: exit\n");
diff --git a/backend/tamarack.c b/backend/tamarack.c
index 38cc7ea..916c9ea 100644
--- a/backend/tamarack.c
+++ b/backend/tamarack.c
@@ -182,8 +182,8 @@ wait_ready (int fd)
static SANE_Status
sense_handler (int scsi_fd, u_char *result, void *arg)
{
- scsi_fd = scsi_fd;
- arg = arg; /* silence compilation warnings */
+ (void) scsi_fd;
+ (void) arg; /* silence compilation warnings */
switch (result[0])
{
@@ -909,7 +909,7 @@ sane_init (SANE_Int *version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize; /* silence compilation warnings */
+ (void) authorize; /* silence compilation warnings */
DBG_INIT();
@@ -962,7 +962,7 @@ sane_get_devices (const SANE_Device ***device_list, SANE_Bool local_only)
Tamarack_Device *dev;
int i;
- local_only = local_only; /* silence compilation warnings */
+ (void) local_only; /* silence compilation warnings */
if (devlist)
free (devlist);
diff --git a/backend/test-picture.c b/backend/test-picture.c
index d9549ec..49445ac 100644
--- a/backend/test-picture.c
+++ b/backend/test-picture.c
@@ -48,7 +48,8 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
size_t * buffer_size)
{
SANE_Word pattern_size = 0, pattern_distance = 0;
- SANE_Word line_count, b_size;
+ SANE_Word line_count;
+ size_t b_size;
SANE_Word lines = 0;
SANE_Word bpl = test_device->bytes_per_line;
SANE_Word ppl = test_device->pixels_per_line;
@@ -83,7 +84,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (strcmp (test_device->val[opt_test_picture].s, "Solid black") == 0)
{
DBG (3, "(child) init_picture_buffer: drawing solid black test "
- "picture %d bytes\n", b_size);
+ "picture %zu bytes\n", b_size);
if (test_device->params.format == SANE_FRAME_GRAY
&& test_device->params.depth == 1)
pattern = 0xff;
@@ -93,7 +94,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
else
{
DBG (3, "(child) init_picture_buffer: drawing solid white test "
- "picture %d bytes\n", b_size);
+ "picture %zu bytes\n", b_size);
if (test_device->params.format == SANE_FRAME_GRAY
&& test_device->params.depth == 1)
pattern = 0x00;
@@ -115,8 +116,8 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (test_device->params.depth == 16)
increment *= 2;
- lines = 2 * p_size + 0.5;
- b_size = lines * bpl;
+ lines = (SANE_Word) (2 * p_size + 0.5);
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
b = malloc (b_size);
@@ -128,7 +129,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (buffer)
*buffer = b;
DBG (3, "(child) init_picture_buffer: drawing grid test picture "
- "%d bytes, %d bpl, %d ppl, %d lines\n", b_size, bpl, ppl, lines);
+ "%zu bytes, %d bpl, %d ppl, %d lines\n", b_size, bpl, ppl, lines);
for (line_count = 0; line_count < lines; line_count++)
{
@@ -161,7 +162,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
}
else
color = (rand ()) & 0x01;
- value |= (color << x1);
+ value |= (SANE_Byte) (color << x1);
}
b[line_count * bpl + x] = value;
}
@@ -182,7 +183,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
}
else
color = (rand ()) & 0x01;
- value |= (color << x1);
+ value |= (SANE_Byte) (color << x1);
}
for (x1 = 0; x1 < increment; x1++)
b[line_count * bpl + x + x1] = value;
@@ -197,7 +198,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
else
color = 0xff;
else
- color = (rand ()) & 0xff;
+ color = (SANE_Byte) ((rand ()) & 0xff);
for (x1 = 0; x1 < increment; x1++)
b[line_count * bpl + x + x1] = color;
@@ -215,7 +216,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
pattern_size = 16;
pattern_distance = 0;
lines = 2 * (pattern_size + pattern_distance);
- b_size = lines * bpl;
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
@@ -228,7 +229,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (buffer)
*buffer = b;
DBG (3, "(child) init_picture_buffer: drawing b/w test picture "
- "%d bytes, %d bpl, %d lines\n", b_size, bpl, lines);
+ "%zu bytes, %d bpl, %d lines\n", b_size, bpl, lines);
memset (b, 255, b_size);
for (line_count = 0; line_count < lines; line_count++)
{
@@ -244,7 +245,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
width = pattern_size / 8;
if (x + width >= bpl)
width = bpl - x;
- memset (b + line_count * bpl + x, 0x00, width);
+ memset (b + line_count * bpl + x, 0x00, (size_t) width);
x += (pattern_size + pattern_distance) * 2 / 8;
}
}
@@ -256,7 +257,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
pattern_size = 4;
pattern_distance = 1;
lines = 2 * (pattern_size + pattern_distance);
- b_size = lines * bpl;
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
@@ -269,7 +270,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (buffer)
*buffer = b;
DBG (3, "(child) init_picture_buffer: drawing 8 bit gray test picture "
- "%d bytes, %d bpl, %d lines\n", b_size, bpl, lines);
+ "%zu bytes, %d bpl, %d lines\n", b_size, bpl, lines);
memset (b, 0x55, b_size);
for (line_count = 0; line_count < lines; line_count++)
{
@@ -289,10 +290,10 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
width = bpl - x;
if (line_count > (pattern_size + pattern_distance))
color =
- 0xff - ((x / (pattern_size + pattern_distance)) & 0xff);
+ (SANE_Byte) (0xff - ((x / (pattern_size + pattern_distance)) & 0xff));
else
- color = (x / (pattern_size + pattern_distance)) & 0xff;
- memset (b + line_count * bpl + x, color, width);
+ color = (SANE_Byte) ((x / (pattern_size + pattern_distance)) & 0xff);
+ memset (b + line_count * bpl + x, color, (size_t) width);
x += (pattern_size + pattern_distance);
}
}
@@ -305,7 +306,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
pattern_size = 256;
pattern_distance = 4;
lines = 1 * (pattern_size + pattern_distance);
- b_size = lines * bpl;
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
@@ -318,7 +319,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (buffer)
*buffer = b;
DBG (3, "(child) init_picture_buffer: drawing 16 bit gray test picture "
- "%d bytes, %d bpl, %d lines\n", b_size, bpl, lines);
+ "%zu bytes, %d bpl, %d lines\n", b_size, bpl, lines);
memset (b, 0x55, b_size);
for (line_count = 0; line_count < lines; line_count++)
{
@@ -338,11 +339,11 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (x + width >= bpl)
width = bpl - x;
pattern_lo =
- ((line_count - pattern_distance)
- % (pattern_size + pattern_distance)) & 0xff;
+ (SANE_Byte) (((line_count - pattern_distance)
+ % (pattern_size + pattern_distance)) & 0xff);
for (x1 = 0; x1 < width; x1 += 2)
{
- pattern_hi = (x1 / 2) & 0xff;
+ pattern_hi = (SANE_Byte) ((x1 / 2) & 0xff);
if (is_little_endian)
{
b[line_count * bpl + x + x1 + 0] = pattern_lo;
@@ -366,7 +367,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
pattern_size = 16;
pattern_distance = 0;
lines = 2 * (pattern_size + pattern_distance);
- b_size = lines * bpl;
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
@@ -379,7 +380,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (buffer)
*buffer = b;
DBG (3, "(child) init_picture_buffer: drawing color lineart test "
- "picture %d bytes, %d bpl, %d lines\n", b_size, bpl, lines);
+ "picture %zu bytes, %d bpl, %d lines\n", b_size, bpl, lines);
memset (b, 0x55, b_size);
for (line_count = 0; line_count < lines; line_count++)
@@ -433,7 +434,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
pattern_size = 16;
pattern_distance = 0;
lines = 2 * (pattern_size + pattern_distance);
- b_size = lines * bpl;
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
@@ -446,7 +447,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (buffer)
*buffer = b;
DBG (3, "(child) init_picture_buffer: drawing color lineart three-pass "
- "test picture %d bytes, %d bpl, %d lines\n", b_size, bpl, lines);
+ "test picture %zu bytes, %d bpl, %d lines\n", b_size, bpl, lines);
memset (b, 0x55, b_size);
for (line_count = 0; line_count < lines; line_count++)
@@ -501,7 +502,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
pattern_size = 4;
pattern_distance = 1;
lines = 6 * (pattern_size + pattern_distance);
- b_size = lines * bpl;
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
@@ -514,7 +515,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (buffer)
*buffer = b;
DBG (3, "(child) init_picture_buffer: drawing 8 bit color test picture "
- "%d bytes, %d bpl, %d lines\n", b_size, bpl, lines);
+ "%zu bytes, %d bpl, %d lines\n", b_size, bpl, lines);
memset (b, 0x55, b_size);
for (line_count = 0; line_count < lines; line_count++)
{
@@ -536,10 +537,10 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if ((line_count / (pattern_size + pattern_distance)) & 1)
color =
- 0xff - ((x / ((pattern_size + pattern_distance) * 3))
- & 0xff);
+ (SANE_Byte) (0xff - ((x / ((pattern_size + pattern_distance) * 3))
+ & 0xff));
else
- color = (x / ((pattern_size + pattern_distance) * 3)) & 0xff;
+ color = (SANE_Byte) ((x / ((pattern_size + pattern_distance) * 3)) & 0xff);
if (line_count / (pattern_size + pattern_distance) < 2)
{
@@ -581,7 +582,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
pattern_size = 4;
pattern_distance = 1;
lines = 6 * (pattern_size + pattern_distance);
- b_size = lines * bpl;
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
@@ -594,7 +595,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (buffer)
*buffer = b;
DBG (3, "(child) init_picture_buffer: drawing 8 bit color three-pass "
- "test picture %d bytes, %d bpl, %d lines\n", b_size, bpl, lines);
+ "test picture %zu bytes, %d bpl, %d lines\n", b_size, bpl, lines);
memset (b, 0x55, b_size);
for (line_count = 0; line_count < lines; line_count++)
{
@@ -614,10 +615,10 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
width = bpl - x;
if ((line_count / (pattern_size + pattern_distance)) & 1)
- color =
- 0xff - (x / ((pattern_size + pattern_distance)) & 0xff);
+ color = (SANE_Byte)
+ (0xff - (x / ((pattern_size + pattern_distance)) & 0xff));
else
- color = (x / (pattern_size + pattern_distance)) & 0xff;
+ color = (SANE_Byte) ((x / (pattern_size + pattern_distance)) & 0xff);
if (line_count / (pattern_size + pattern_distance) < 2)
{
@@ -634,7 +635,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (test_device->params.format != SANE_FRAME_BLUE)
color = 0x00;
}
- memset (b + line_count * bpl + x, color, width);
+ memset (b + line_count * bpl + x, color, (size_t) width);
x += (pattern_size + pattern_distance);
}
@@ -647,7 +648,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
pattern_size = 256;
pattern_distance = 4;
lines = pattern_size + pattern_distance;
- b_size = lines * bpl;
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
@@ -661,7 +662,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
*buffer = b;
DBG (3,
"(child) init_picture_buffer: drawing 16 bit color test picture "
- "%d bytes, %d bpl, %d lines\n", b_size, bpl, lines);
+ "%zu bytes, %d bpl, %d lines\n", b_size, bpl, lines);
memset (b, 0x55, b_size);
for (line_count = 0; line_count < lines; line_count++)
{
@@ -687,10 +688,10 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
for (x1 = 0; x1 < width; x1 += 6)
{
- color_lo =
- ((line_count + pattern_size)
- % (pattern_size + pattern_distance)) & 0xff;
- color_hi = (x1 / 6) & 0xff;
+ color_lo = (SANE_Byte)
+ (((line_count + pattern_size)
+ % (pattern_size + pattern_distance)) & 0xff);
+ color_hi = (SANE_Byte) ((x1 / 6) & 0xff);
if (((x / ((pattern_size + pattern_distance) * 6)) % 3) ==
0)
{
@@ -753,7 +754,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
pattern_size = 256;
pattern_distance = 4;
lines = pattern_size + pattern_distance;
- b_size = lines * bpl;
+ b_size = (size_t) lines * (size_t) bpl;
if (buffer_size)
*buffer_size = b_size;
@@ -766,7 +767,7 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
if (buffer)
*buffer = b;
DBG (3, "(child) init_picture_buffer: drawing 16 bit color three-pass "
- "test picture %d bytes, %d bpl, %d lines\n", b_size, bpl, lines);
+ "test picture %zu bytes, %d bpl, %d lines\n", b_size, bpl, lines);
memset (b, 0x55, b_size);
for (line_count = 0; line_count < lines; line_count++)
{
@@ -789,10 +790,10 @@ init_picture_buffer (Test_Device * test_device, SANE_Byte ** buffer,
for (x1 = 0; x1 < width; x1 += 2)
{
- color_lo =
- ((line_count + pattern_size)
- % (pattern_size + pattern_distance)) & 0xff;
- color_hi = (x1 / 2) & 0xff;
+ color_lo = (SANE_Byte)
+ (((line_count + pattern_size)
+ % (pattern_size + pattern_distance)) & 0xff);
+ color_hi = (SANE_Byte) ((x1 / 2) & 0xff);
if (((x / ((pattern_size + pattern_distance) * 2)) % 3) ==
0)
{
diff --git a/backend/test.c b/backend/test.c
index 3c7a949..ea73290 100644
--- a/backend/test.c
+++ b/backend/test.c
@@ -391,11 +391,11 @@ init_options (Test_Device * test_device)
od->desc = SANE_DESC_SCAN_MODE;
od->type = SANE_TYPE_STRING;
od->unit = SANE_UNIT_NONE;
- od->size = max_string_size (mode_list);
+ od->size = (SANE_Int) max_string_size (mode_list);
od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
od->constraint_type = SANE_CONSTRAINT_STRING_LIST;
od->constraint.string_list = mode_list;
- test_device->val[opt_mode].s = malloc (od->size);
+ test_device->val[opt_mode].s = malloc ((size_t) od->size);
if (!test_device->val[opt_mode].s)
goto fail;
strcpy (test_device->val[opt_mode].s, init_mode);
@@ -454,7 +454,7 @@ init_options (Test_Device * test_device)
od->desc = SANE_I18N ("Set the order of frames in three-pass color mode.");
od->type = SANE_TYPE_STRING;
od->unit = SANE_UNIT_NONE;
- od->size = max_string_size (order_list);
+ od->size = (SANE_Int) max_string_size (order_list);
od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
if (strcmp (init_mode, SANE_VALUE_SCAN_MODE_COLOR) != 0)
od->cap |= SANE_CAP_INACTIVE;
@@ -462,7 +462,7 @@ init_options (Test_Device * test_device)
od->cap |= SANE_CAP_INACTIVE;
od->constraint_type = SANE_CONSTRAINT_STRING_LIST;
od->constraint.string_list = order_list;
- test_device->val[opt_three_pass_order].s = malloc (od->size);
+ test_device->val[opt_three_pass_order].s = malloc ((size_t) od->size);
if (!test_device->val[opt_three_pass_order].s)
goto fail;
strcpy (test_device->val[opt_three_pass_order].s, init_three_pass_order);
@@ -487,11 +487,11 @@ init_options (Test_Device * test_device)
od->desc = SANE_I18N("If Automatic Document Feeder is selected, the feeder will be 'empty' after 10 scans.");
od->type = SANE_TYPE_STRING;
od->unit = SANE_UNIT_NONE;
- od->size = max_string_size (source_list);
+ od->size = (SANE_Int) max_string_size (source_list);
od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
od->constraint_type = SANE_CONSTRAINT_STRING_LIST;
od->constraint.string_list = source_list;
- test_device->val[opt_scan_source].s = malloc (od->size);
+ test_device->val[opt_scan_source].s = malloc ((size_t) od->size);
if (!test_device->val[opt_scan_source].s)
goto fail;
strcpy (test_device->val[opt_scan_source].s, init_scan_source);
@@ -523,11 +523,11 @@ init_options (Test_Device * test_device)
"height of 10 mm per square.");
od->type = SANE_TYPE_STRING;
od->unit = SANE_UNIT_NONE;
- od->size = max_string_size (test_picture_list);
+ od->size = (SANE_Int) max_string_size (test_picture_list);
od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
od->constraint_type = SANE_CONSTRAINT_STRING_LIST;
od->constraint.string_list = test_picture_list;
- test_device->val[opt_test_picture].s = malloc (od->size);
+ test_device->val[opt_test_picture].s = malloc ((size_t) od->size);
if (!test_device->val[opt_test_picture].s)
goto fail;
strcpy (test_device->val[opt_test_picture].s, init_test_picture);
@@ -618,11 +618,11 @@ init_options (Test_Device * test_device)
"codes are for testing how the frontend handles them.");
od->type = SANE_TYPE_STRING;
od->unit = SANE_UNIT_NONE;
- od->size = max_string_size (read_status_code_list);
+ od->size = (SANE_Int) max_string_size (read_status_code_list);
od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
od->constraint_type = SANE_CONSTRAINT_STRING_LIST;
od->constraint.string_list = read_status_code_list;
- test_device->val[opt_read_status_code].s = malloc (od->size);
+ test_device->val[opt_read_status_code].s = malloc ((size_t) od->size);
if (!test_device->val[opt_read_status_code].s)
goto fail;
strcpy (test_device->val[opt_read_status_code].s, init_read_status_code);
@@ -914,8 +914,8 @@ init_options (Test_Device * test_device)
/* opt_int */
od = &test_device->opt[opt_int];
od->name = "int";
- od->title = SANE_I18N ("(1/6) Int");
- od->desc = SANE_I18N ("(1/6) Int test option with no unit and no "
+ od->title = SANE_I18N ("(1/7) Int");
+ od->desc = SANE_I18N ("(1/7) Int test option with no unit and no "
"constraint set.");
od->type = SANE_TYPE_INT;
od->unit = SANE_UNIT_NONE;
@@ -930,8 +930,8 @@ init_options (Test_Device * test_device)
/* opt_int_constraint_range */
od = &test_device->opt[opt_int_constraint_range];
od->name = "int-constraint-range";
- od->title = SANE_I18N ("(2/6) Int constraint range");
- od->desc = SANE_I18N ("(2/6) Int test option with unit pixel and "
+ od->title = SANE_I18N ("(2/7) Int constraint range");
+ od->desc = SANE_I18N ("(2/7) Int test option with unit pixel and "
"constraint range set. Minimum is 4, maximum 192, and "
"quant is 2.");
od->type = SANE_TYPE_INT;
@@ -947,8 +947,8 @@ init_options (Test_Device * test_device)
/* opt_int_constraint_word_list */
od = &test_device->opt[opt_int_constraint_word_list];
od->name = "int-constraint-word-list";
- od->title = SANE_I18N ("(3/6) Int constraint word list");
- od->desc = SANE_I18N ("(3/6) Int test option with unit bits and "
+ od->title = SANE_I18N ("(3/7) Int constraint word list");
+ od->desc = SANE_I18N ("(3/7) Int test option with unit bits and "
"constraint word list set.");
od->type = SANE_TYPE_INT;
od->unit = SANE_UNIT_BIT;
@@ -963,8 +963,8 @@ init_options (Test_Device * test_device)
/* opt_int_array */
od = &test_device->opt[opt_int_array];
od->name = "int-constraint-array";
- od->title = SANE_I18N ("(4/6) Int array");
- od->desc = SANE_I18N ("(4/6) Int test option with unit mm and using "
+ od->title = SANE_I18N ("(4/7) Int array");
+ od->desc = SANE_I18N ("(4/7) Int test option with unit mm and using "
"an array without constraints.");
od->type = SANE_TYPE_INT;
od->unit = SANE_UNIT_MM;
@@ -979,8 +979,8 @@ init_options (Test_Device * test_device)
/* opt_int_array_constraint_range */
od = &test_device->opt[opt_int_array_constraint_range];
od->name = "int-constraint-array-constraint-range";
- od->title = SANE_I18N ("(5/6) Int array constraint range");
- od->desc = SANE_I18N ("(5/6) Int test option with unit dpi and using "
+ od->title = SANE_I18N ("(5/7) Int array constraint range");
+ od->desc = SANE_I18N ("(5/7) Int test option with unit dpi and using "
"an array with a range constraint. Minimum is 4, "
"maximum 192, and quant is 2.");
od->type = SANE_TYPE_INT;
@@ -994,6 +994,40 @@ init_options (Test_Device * test_device)
test_device->val[opt_int_array_constraint_range].wa =
&int_array_constraint_range[0];
+ /* opt_int_array_constraint_word_list */
+ od = &test_device->opt[opt_int_array_constraint_word_list];
+ od->name = "int-constraint-array-constraint-word-list";
+ od->title = SANE_I18N ("(6/7) Int array constraint word list");
+ od->desc = SANE_I18N ("(6/7) Int test option with unit percent and using "
+ "an array with a word list constraint.");
+ od->type = SANE_TYPE_INT;
+ od->unit = SANE_UNIT_PERCENT;
+ od->size = 6 * sizeof (SANE_Word);
+ od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED;
+ if (init_enable_test_options == SANE_FALSE)
+ od->cap |= SANE_CAP_INACTIVE;
+ od->constraint_type = SANE_CONSTRAINT_WORD_LIST;
+ od->constraint.word_list = int_constraint_word_list;
+ test_device->val[opt_int_array_constraint_word_list].wa =
+ &int_array_constraint_word_list[0];
+
+ /* opt_int_inexact */
+ od = &test_device->opt[opt_int_inexact];
+ od->name = "int-inexact";
+ od->title = SANE_I18N ("(7/7) Int inexact");
+ od->desc = SANE_I18N ("(7/7) Int test option that modifies the value "
+ "and returns SANE_INFO_INEXACT.");
+ od->type = SANE_TYPE_INT;
+ od->unit = SANE_UNIT_NONE;
+ od->size = sizeof (SANE_Word);
+ od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED;
+ if (init_enable_test_options == SANE_FALSE)
+ od->cap |= SANE_CAP_INACTIVE;
+ od->constraint_type = SANE_CONSTRAINT_NONE;
+ od->constraint.range = 0;
+ test_device->val[opt_int_inexact].w = 67;
+
+
/* opt_gamma_red */
init_gamma_table(gamma_red, GAMMA_RED_SIZE, gamma_range.max);
od = &test_device->opt[opt_gamma_red];
@@ -1051,23 +1085,6 @@ init_options (Test_Device * test_device)
od->constraint.range = &gamma_range;
test_device->val[opt_gamma_all].wa = &gamma_all[0];
- /* opt_int_array_constraint_word_list */
- od = &test_device->opt[opt_int_array_constraint_word_list];
- od->name = "int-constraint-array-constraint-word-list";
- od->title = SANE_I18N ("(6/6) Int array constraint word list");
- od->desc = SANE_I18N ("(6/6) Int test option with unit percent and using "
- "an array with a word list constraint.");
- od->type = SANE_TYPE_INT;
- od->unit = SANE_UNIT_PERCENT;
- od->size = 6 * sizeof (SANE_Word);
- od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED;
- if (init_enable_test_options == SANE_FALSE)
- od->cap |= SANE_CAP_INACTIVE;
- od->constraint_type = SANE_CONSTRAINT_WORD_LIST;
- od->constraint.word_list = int_constraint_word_list;
- test_device->val[opt_int_array_constraint_word_list].wa =
- &int_array_constraint_word_list[0];
-
/* opt_fixed_group */
od = &test_device->opt[opt_fixed_group];
od->name = "";
@@ -1150,13 +1167,13 @@ init_options (Test_Device * test_device)
od->desc = SANE_I18N ("(1/3) String test option without constraint.");
od->type = SANE_TYPE_STRING;
od->unit = SANE_UNIT_NONE;
- od->size = strlen (init_string) + 1;
+ od->size = (SANE_Int) strlen (init_string) + 1;
od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
if (init_enable_test_options == SANE_FALSE)
od->cap |= SANE_CAP_INACTIVE;
od->constraint_type = SANE_CONSTRAINT_NONE;
od->constraint.string_list = 0;
- test_device->val[opt_string].s = malloc (od->size);
+ test_device->val[opt_string].s = malloc ((size_t) od->size);
if (!test_device->val[opt_string].s)
goto fail;
strcpy (test_device->val[opt_string].s, init_string);
@@ -1169,13 +1186,13 @@ init_options (Test_Device * test_device)
"constraint.");
od->type = SANE_TYPE_STRING;
od->unit = SANE_UNIT_NONE;
- od->size = max_string_size (string_constraint_string_list);
+ od->size = (SANE_Int) max_string_size (string_constraint_string_list);
od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
if (init_enable_test_options == SANE_FALSE)
od->cap |= SANE_CAP_INACTIVE;
od->constraint_type = SANE_CONSTRAINT_STRING_LIST;
od->constraint.string_list = string_constraint_string_list;
- test_device->val[opt_string_constraint_string_list].s = malloc (od->size);
+ test_device->val[opt_string_constraint_string_list].s = malloc ((size_t) od->size);
if (!test_device->val[opt_string_constraint_string_list].s)
goto fail;
strcpy (test_device->val[opt_string_constraint_string_list].s,
@@ -1189,14 +1206,14 @@ init_options (Test_Device * test_device)
"constraint. Contains some more entries...");
od->type = SANE_TYPE_STRING;
od->unit = SANE_UNIT_NONE;
- od->size = max_string_size (string_constraint_long_string_list);
+ od->size = (SANE_Int) max_string_size (string_constraint_long_string_list);
od->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
if (init_enable_test_options == SANE_FALSE)
od->cap |= SANE_CAP_INACTIVE;
od->constraint_type = SANE_CONSTRAINT_STRING_LIST;
od->constraint.string_list = string_constraint_long_string_list;
test_device->val[opt_string_constraint_long_string_list].s =
- malloc (od->size);
+ malloc ((size_t) od->size);
if (!test_device->val[opt_string_constraint_long_string_list].s)
goto fail;
strcpy (test_device->val[opt_string_constraint_long_string_list].s,
@@ -1419,7 +1436,8 @@ static SANE_Status
reader_process (Test_Device * test_device, SANE_Int fd)
{
SANE_Status status;
- SANE_Word byte_count = 0, bytes_total;
+ size_t byte_count = 0;
+ size_t bytes_total;
SANE_Byte *buffer = 0;
ssize_t bytes_written = 0;
size_t buffer_size = 0, write_count = 0;
@@ -1427,24 +1445,24 @@ reader_process (Test_Device * test_device, SANE_Int fd)
DBG (2, "(child) reader_process: test_device=%p, fd=%d\n",
(void *) test_device, fd);
- bytes_total = test_device->lines * test_device->bytes_per_line;
+ bytes_total = (size_t) test_device->lines * (size_t) test_device->bytes_per_line;
status = init_picture_buffer (test_device, &buffer, &buffer_size);
if (status != SANE_STATUS_GOOD)
return status;
DBG (2, "(child) reader_process: buffer=%p, buffersize=%lu\n",
- buffer, (u_long) buffer_size);
+ (void *) buffer, (u_long) buffer_size);
while (byte_count < bytes_total)
{
if (write_count == 0)
{
write_count = buffer_size;
- if (byte_count + (SANE_Word) write_count > bytes_total)
- write_count = bytes_total - byte_count;
+ if (byte_count + (size_t) write_count > bytes_total)
+ write_count = (size_t) bytes_total - (size_t) byte_count;
if (test_device->val[opt_read_delay].w == SANE_TRUE)
- usleep (test_device->val[opt_read_delay_duration].w);
+ usleep ((useconds_t) test_device->val[opt_read_delay_duration].w);
}
bytes_written = write (fd, buffer, write_count);
if (bytes_written < 0)
@@ -1453,17 +1471,17 @@ reader_process (Test_Device * test_device, SANE_Int fd)
strerror (errno));
return SANE_STATUS_IO_ERROR;
}
- byte_count += bytes_written;
- DBG (4, "(child) reader_process: wrote %ld bytes of %lu (%d total)\n",
- (long) bytes_written, (u_long) write_count, byte_count);
- write_count -= bytes_written;
+ byte_count += (size_t) bytes_written;
+ DBG (4, "(child) reader_process: wrote %ld bytes of %lu (%zu total)\n",
+ bytes_written, write_count, byte_count);
+ write_count -= (size_t) bytes_written;
}
free (buffer);
if (sanei_thread_is_forked ())
{
- DBG (4, "(child) reader_process: finished, wrote %d bytes, expected %d "
+ DBG (4, "(child) reader_process: finished, wrote %zu bytes, expected %zu "
"bytes, now waiting\n", byte_count, bytes_total);
while (SANE_TRUE)
sleep (10);
@@ -1472,7 +1490,7 @@ reader_process (Test_Device * test_device, SANE_Int fd)
}
else
{
- DBG (4, "(child) reader_process: finished, wrote %d bytes, expected %d "
+ DBG (4, "(child) reader_process: finished, wrote %zu bytes, expected %zu "
"bytes\n", byte_count, bytes_total);
}
return SANE_STATUS_GOOD;
@@ -1824,7 +1842,7 @@ sane_init (SANE_Int * __sane_unused__ version_code, SANE_Auth_Callback __sane_un
/* create devices */
sane_device_list =
- malloc ((init_number_of_devices + 1) * sizeof (sane_device));
+ malloc ((size_t) (init_number_of_devices + 1) * sizeof (sane_device));
if (!sane_device_list)
goto fail;
for (num = 0; num < init_number_of_devices; num++)
@@ -1862,7 +1880,7 @@ sane_init (SANE_Int * __sane_unused__ version_code, SANE_Auth_Callback __sane_un
}
test_device->next = 0;
sane_device_list[num] = 0;
- srand (time (NULL));
+ srand ((unsigned int) time (NULL));
random_factor = ((double) rand ()) / RAND_MAX + 0.5;
inited = SANE_TRUE;
return SANE_STATUS_GOOD;
@@ -2216,6 +2234,19 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
DBG (4, "sane_control_option: set option %d (%s) to %d\n",
option, test_device->opt[option].name, *(SANE_Int *) value);
break;
+ case opt_int_inexact:
+ if (test_device->val[option].w == *(SANE_Int *) value)
+ {
+ DBG (4, "sane_control_option: option %d (%s) not changed\n",
+ option, test_device->opt[option].name);
+ break;
+ }
+ *(SANE_Int *) value += 1;
+ test_device->val[option].w = *(SANE_Int *) value;
+ myinfo |= SANE_INFO_INEXACT;
+ DBG (4, "sane_control_option: set option %d (%s) to %d\n",
+ option, test_device->opt[option].name, *(SANE_Int *) value);
+ break;
case opt_fuzzy_parameters: /* Bool with parameter reloading */
if (test_device->val[option].w == *(SANE_Bool *) value)
{
@@ -2312,7 +2343,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
case opt_gamma_all:
case opt_int_array_constraint_word_list:
memcpy (test_device->val[option].wa, value,
- test_device->opt[option].size);
+ (size_t) test_device->opt[option].size);
DBG (4, "sane_control_option: set option %d (%s) to %p\n",
option, test_device->opt[option].name, (void *) value);
if (option == opt_gamma_all) {
@@ -2535,6 +2566,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
case opt_ppl_loss:
case opt_read_delay_duration:
case opt_int:
+ case opt_int_inexact:
case opt_int_constraint_range:
case opt_int_constraint_word_list:
*(SANE_Int *) value = test_device->val[option].w;
@@ -2549,7 +2581,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option, SANE_Action action,
case opt_gamma_all:
case opt_int_array_constraint_word_list:
memcpy (value, test_device->val[option].wa,
- test_device->opt[option].size);
+ (size_t) test_device->opt[option].size);
DBG (4, "sane_control_option: get option %d (%s), value=%p\n",
option, test_device->opt[option].name, (void *) value);
break;
@@ -2639,7 +2671,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
p->lines = test_device->lines;
if (test_device->val[opt_fuzzy_parameters].w == SANE_TRUE
&& test_device->scanning == SANE_FALSE)
- p->lines *= random_factor;
+ p->lines *= (SANE_Int) random_factor;
}
if (strcmp (mode, SANE_VALUE_SCAN_MODE_GRAY) == 0)
@@ -2674,7 +2706,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
p->pixels_per_line = (SANE_Int) (res * (br_x - tl_x) / MM_PER_INCH);
if (test_device->val[opt_fuzzy_parameters].w == SANE_TRUE
&& test_device->scanning == SANE_FALSE)
- p->pixels_per_line *= random_factor;
+ p->pixels_per_line *= (SANE_Int) random_factor;
if (p->pixels_per_line < 1)
p->pixels_per_line = 1;
@@ -2842,11 +2874,11 @@ sane_read (SANE_Handle handle, SANE_Byte * data,
SANE_Int max_scan_length;
ssize_t bytes_read;
size_t read_count;
- SANE_Int bytes_total = test_device->lines * test_device->bytes_per_line;
+ size_t bytes_total = (size_t) test_device->lines * (size_t) test_device->bytes_per_line;
DBG (4, "sane_read: handle=%p, data=%p, max_length = %d, length=%p\n",
- handle, data, max_length, (void *) length);
+ handle, (void *) data, max_length, (void *) length);
if (!inited)
{
DBG (1, "sane_read: not inited, call sane_init() first\n");
@@ -2927,11 +2959,11 @@ sane_read (SANE_Handle handle, SANE_Byte * data,
DBG (1, "sane_read: not scanning (call sane_start first)\n");
return SANE_STATUS_INVAL;
}
- read_count = max_scan_length;
+ read_count = (size_t) max_scan_length;
bytes_read = read (test_device->pipe, data, read_count);
if (bytes_read == 0
- || (bytes_read + test_device->bytes_total >= bytes_total))
+ || ((size_t) bytes_read + (size_t) test_device->bytes_total >= bytes_total))
{
SANE_Status status;
DBG (2, "sane_read: EOF reached\n");
@@ -2966,11 +2998,11 @@ sane_read (SANE_Handle handle, SANE_Byte * data,
return SANE_STATUS_IO_ERROR;
}
}
- *length = bytes_read;
- test_device->bytes_total += bytes_read;
+ *length = (SANE_Int) bytes_read;
+ test_device->bytes_total += (size_t) bytes_read;
- DBG (2, "sane_read: read %ld bytes of %d, total %d\n", (long) bytes_read,
- max_scan_length, test_device->bytes_total);
+ DBG (2, "sane_read: read %zu bytes of %zu, total %zu\n", (size_t) bytes_read,
+ (size_t) max_scan_length, (size_t) test_device->bytes_total);
return SANE_STATUS_GOOD;
}
@@ -3051,6 +3083,7 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
}
else
{
+ DBG (1, "sane_set_io_mode: unsupported\n");
if (non_blocking)
return SANE_STATUS_UNSUPPORTED;
}
@@ -3089,5 +3122,6 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
*fd = test_device->pipe;
return SANE_STATUS_GOOD;
}
+ DBG(1,"sane_get_select_fd: unsupported\n");
return SANE_STATUS_UNSUPPORTED;
}
diff --git a/backend/test.h b/backend/test.h
index 3e7a6aa..61f23de 100644
--- a/backend/test.h
+++ b/backend/test.h
@@ -98,11 +98,12 @@ typedef enum
opt_int_constraint_word_list,
opt_int_array,
opt_int_array_constraint_range,
+ opt_int_array_constraint_word_list,
+ opt_int_inexact,
opt_gamma_red,
opt_gamma_green,
opt_gamma_blue,
opt_gamma_all,
- opt_int_array_constraint_word_list,
opt_fixed_group,
opt_fixed,
opt_fixed_constraint_range,
@@ -136,7 +137,7 @@ typedef struct Test_Device
SANE_Word bytes_per_line;
SANE_Word pixels_per_line;
SANE_Word lines;
- SANE_Int bytes_total;
+ size_t bytes_total;
SANE_Bool open;
SANE_Bool scanning;
SANE_Bool cancelled;
diff --git a/backend/umax-scsidef.h b/backend/umax-scsidef.h
index 476bac5..db355a0 100644
--- a/backend/umax-scsidef.h
+++ b/backend/umax-scsidef.h
@@ -1053,7 +1053,7 @@ static char *scanner_error_str[] =
"fb sensor error", /* 70 */
"fb home or motor sensor error",
"fb filter or motor sensor error",
- "fb lens or motor sensor error"
+ "fb lens or motor sensor error",
"first line position error (LER error, vertical)",
"first pixel position error (SER error, horizontal)",
"first pixel position error for lens 2 (SER2 error, horizontal)",
diff --git a/backend/umax-usb.c b/backend/umax-usb.c
index 05019c7..ab772fe 100644
--- a/backend/umax-usb.c
+++ b/backend/umax-usb.c
@@ -261,8 +261,8 @@ sanei_umaxusb_open (const char *dev, int *fdp,
{
SANE_Status status;
- handler = handler; /* silence gcc */
- handler_arg = handler_arg; /* silence gcc */
+ (void) handler; /* silence gcc */
+ (void) handler_arg; /* silence gcc */
status = sanei_usb_open (dev, fdp);
if (status != SANE_STATUS_GOOD) {
@@ -306,7 +306,7 @@ static SANE_Status
sanei_umaxusb_open_extended (const char *dev, int *fdp,
SANEI_SCSI_Sense_Handler handler, void *handler_arg, int *buffersize)
{
- buffersize = buffersize;
+ (void) buffersize;
return(sanei_umaxusb_open(dev, fdp, handler, handler_arg));
}
diff --git a/backend/umax1220u.c b/backend/umax1220u.c
index 8c6098c..e5ecbef 100644
--- a/backend/umax1220u.c
+++ b/backend/umax1220u.c
@@ -131,9 +131,9 @@ static SANE_Status
optionNumOptionsCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
- option = option;
- handle = handle;
- info = info; /* Eliminate warning about unused parameters */
+ (void) option;
+ (void) handle;
+ (void) info; /* Eliminate warning about unused parameters */
if (action != SANE_ACTION_GET_VALUE)
return SANE_STATUS_INVAL;
@@ -173,7 +173,7 @@ optionResolutionCallback (SANE_Option * option, SANE_Handle handle,
SANE_Status status;
SANE_Word autoValue = 75;
- handle = handle; /* Eliminate warning about unused parameters */
+ (void) handle; /* Eliminate warning about unused parameters */
switch (action)
{
@@ -217,8 +217,8 @@ static SANE_Status
optionGrayscaleCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
- handle = handle;
- option = option; /* Eliminate warning about unused parameters */
+ (void) handle;
+ (void) option; /* Eliminate warning about unused parameters */
switch (action)
{
@@ -261,10 +261,10 @@ optionLampOffCallback (SANE_Option * option, SANE_Handle handle,
SANE_Status res = SANE_STATUS_GOOD;
/* Eliminate warnings about unused parameters */
- option = option;
- handle = handle;
- info = info;
- value = value;
+ (void) option;
+ (void) handle;
+ (void) info;
+ (void) value;
if (action != SANE_ACTION_SET_VALUE)
return SANE_STATUS_INVAL;
@@ -308,9 +308,9 @@ static SANE_Status
optionTopLeftXCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
- option = option;
- handle = handle;
- value = value; /* Eliminate warning about unused parameters */
+ (void) option;
+ (void) handle;
+ (void) value; /* Eliminate warning about unused parameters */
switch (action)
{
@@ -351,8 +351,8 @@ optionTopLeftYCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
/* Eliminate warnings about unused parameters */
- option = option;
- handle = handle;
+ (void) option;
+ (void) handle;
switch (action)
{
@@ -394,8 +394,8 @@ optionBotRightXCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
/* Eliminate warnings about unused parameters */
- option = option;
- handle = handle;
+ (void) option;
+ (void) handle;
switch (action)
{
@@ -437,8 +437,8 @@ optionBotRightYCallback (SANE_Option * option, SANE_Handle handle,
SANE_Action action, void *value, SANE_Int * info)
{
/* Eliminate warnings about unused parameters */
- option = option;
- handle = handle;
+ (void) option;
+ (void) handle;
switch (action)
{
@@ -780,7 +780,7 @@ sane_close (SANE_Handle handle)
const SANE_Option_Descriptor *
sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
{
- handle = handle; /* Eliminate compiler warning */
+ (void) handle; /* Eliminate compiler warning */
DBG (3, "sane_get_option_descriptor: option = %d\n", option);
if (option < 0 || option >= NELEMS (so))
@@ -792,7 +792,7 @@ SANE_Status
sane_control_option (SANE_Handle handle, SANE_Int option,
SANE_Action action, void *value, SANE_Int * info)
{
- handle = handle; /* Eliminate compiler warning */
+ (void) handle; /* Eliminate compiler warning */
DBG (3,
"sane_control_option: handle=%p, opt=%d, act=%d, val=%p, info=%p\n",
@@ -812,7 +812,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
SANE_UNFIX (optionBotRightYValue -
optionTopLeftYValue) / MM_IN_INCH * optionResolutionValue;
- handle = handle; /* Eliminate compiler warning */
+ (void) handle; /* Eliminate compiler warning */
DBG (3, "sane_get_parameters\n");
parms.depth = 8;
diff --git a/backend/umax_pp_low.c b/backend/umax_pp_low.c
index 35cefa9..d1f3c16 100644
--- a/backend/umax_pp_low.c
+++ b/backend/umax_pp_low.c
@@ -53,9 +53,7 @@
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef HAVE_SYS_IO_H
-#include <sys/io.h>
-#endif
+#include "../include/sane/sanei_directio.h"
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@@ -85,380 +83,6 @@
#include <linux/ppdev.h>
#endif
-/*************************************************/
-/* here we define sanei_inb/sanei_outb based on */
-/* OS dependent inb/outb definitions */
-/* SANE_INB is defined whenever a valid inb/outb */
-/* definition has been found */
-/* once all these work, it might be moved to */
-/* sanei_pio.c */
-/*************************************************/
-
-#ifdef ENABLE_PARPORT_DIRECTIO
-
-#if (! defined SANE_INB ) && ( defined HAVE_SYS_HW_H ) /* OS/2 EMX case */
-#define SANE_INB 1
-static int
-sanei_ioperm (int start, int length, int enable)
-{
- if (enable)
- return _portaccess (port, port + length - 1);
- return 0;
-}
-
-static unsigned char
-sanei_inb (unsigned int port)
-{
- return _inp8 (port) & 0xFF;
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- _outp8 (port, value);
-}
-
-static void
-sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
-{
- _inps8 (port, (unsigned char *) addr, count);
-}
-
-static void
-sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
-{
- _inps32 (port, (unsigned long *) addr, count);
-}
-
-static void
-sanei_outsb (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- _outps8 (port, (unsigned char *) addr, count);
-}
-
-static void
-sanei_outsl (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- _outps32 (port, (unsigned long *) addr, count);
-}
-#endif /* OS/2 EMX case */
-
-
-
-#if (! defined SANE_INB ) && ( defined HAVE_MACHINE_CPUFUNC_H ) /* FreeBSD case */
-#define SANE_INB 2
-static int
-sanei_ioperm (int start, int length, int enable)
-{
-#ifdef HAVE_I386_SET_IOPERM
- return i386_set_ioperm (start, length, enable);
-#else
- int fd = 0;
-
- /* makes compilers happy */
- start = length + enable;
- fd = open ("/dev/io", O_RDONLY);
- if (fd > 0)
- return 0;
- return -1;
-#endif
-}
-
-static unsigned char
-sanei_inb (unsigned int port)
-{
- return inb (port);
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- outb (port, value);
-}
-
-static void
-sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
-{
- insb (port, addr, count);
-}
-
-static void
-sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
-{
- insl (port, addr, count);
-}
-
-static void
-sanei_outsb (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- outsb (port, addr, count);
-}
-
-static void
-sanei_outsl (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- outsl (port, addr, count);
-}
-#endif /* FreeBSD case */
-
-
-/* linux GCC on i386 */
-#if ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( defined __i386__ )
-#define SANE_INB 3
-
-static int
-sanei_ioperm (int start, int length, int enable)
-{
-#ifdef HAVE_IOPERM
- return ioperm (start, length, enable);
-#else
- /* linux without ioperm ? hum ... */
- /* makes compilers happy */
- start = length + enable;
- return 0;
-#endif
-}
-
-static unsigned char
-sanei_inb (unsigned int port)
-{
- return inb (port);
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- outb (value, port);
-}
-
-static void
-sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
-{
- insb (port, addr, count);
-}
-
-static void
-sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
-{
- insl (port, addr, count);
-}
-
-static void
-sanei_outsb (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- outsb (port, addr, count);
-}
-
-static void
-sanei_outsl (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- /* oddly, 32 bit I/O are done with outsw instead of the expected outsl */
- outsw (port, addr, count);
-}
-#endif /* linux GCC on i386 */
-
-
-/* linux GCC non i386 */
-#if ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( ! defined __i386__ )
-#define SANE_INB 4
-static int
-sanei_ioperm (int start, int length, int enable)
-{
-#ifdef HAVE_IOPERM
- return ioperm (start, length, enable);
-#else
- /* linux without ioperm ? hum ... */
- /* makes compilers happy */
- start = length + enable;
- return 0;
-#endif
-}
-
-static unsigned char
-sanei_inb (unsigned int port)
-{
- return inb (port);
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- outb (value, port);
-}
-
-static void
-sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
-{
- unsigned int i;
-
- for (i = 0; i < count; i++)
- addr[i] = sanei_inb (port);
-}
-
-static void
-sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
-{
- unsigned int i;
-
- for (i = 0; i < count * 4; i++)
- addr[i] = sanei_inb (port);
-}
-
-static void
-sanei_outsb (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- unsigned int i;
-
- for (i = 0; i < count; i++)
- sanei_outb (port, addr[i]);
-}
-
-static void
-sanei_outsl (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- unsigned int i;
-
- for (i = 0; i < count * 4; i++)
- sanei_outb (port, addr[i]);
-}
-#endif /* linux GCC non i386 */
-
-
-/* ICC on i386 */
-#if ( ! defined SANE_INB ) && ( defined __INTEL_COMPILER ) && ( defined __i386__ )
-#define SANE_INB 5
-static int
-sanei_ioperm (int start, int length, int enable)
-{
-#ifdef HAVE_IOPERM
- return ioperm (start, length, enable);
-#else
- /* ICC without ioperm() ... */
- /* makes compilers happy */
- start = length + enable;
- return 0;
-#endif
-}
-static unsigned char
-sanei_inb (unsigned int port)
-{
- unsigned char ret;
-
- __asm__ __volatile__ ("inb %%dx,%%al":"=a" (ret):"d" ((u_int) port));
- return ret;
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- __asm__ __volatile__ ("outb %%al,%%dx"::"a" (value), "d" ((u_int) port));
-}
-
-static void
-sanei_insb (unsigned int port, void *addr, unsigned long count)
-{
- __asm__ __volatile__ ("rep ; insb":"=D" (addr), "=c" (count):"d" (port),
- "0" (addr), "1" (count));
-}
-
-static void
-sanei_insl (unsigned int port, void *addr, unsigned long count)
-{
- __asm__ __volatile__ ("rep ; insl":"=D" (addr), "=c" (count):"d" (port),
- "0" (addr), "1" (count));
-}
-
-static void
-sanei_outsb (unsigned int port, const void *addr, unsigned long count)
-{
- __asm__ __volatile__ ("rep ; outsb":"=S" (addr), "=c" (count):"d" (port),
- "0" (addr), "1" (count));
-}
-
-static void
-sanei_outsl (unsigned int port, const void *addr, unsigned long count)
-{
- __asm__ __volatile__ ("rep ; outsl":"=S" (addr), "=c" (count):"d" (port),
- "0" (addr), "1" (count));
-}
-
-#endif /* ICC on i386 */
-
-/* direct io requested, but no valid inb/oub */
-#if ( ! defined SANE_INB) && ( defined ENABLE_PARPORT_DIRECTIO )
-#warning "ENABLE_PARPORT_DIRECTIO cannot be used du to lack of inb/out definition"
-#undef ENABLE_PARPORT_DIRECTIO
-#endif
-
-#endif /* ENABLE_PARPORT_DIRECTIO */
-/*
- * no inb/outb without --enable-parport-directio *
- */
-#ifndef ENABLE_PARPORT_DIRECTIO
-#define SANE_INB 0
-static int
-sanei_ioperm (__sane_unused__ int start, __sane_unused__ int length,
- __sane_unused__ int enable)
-{
- /* returns failure */
- return -1;
-}
-
-static unsigned char
-sanei_inb (__sane_unused__ unsigned int port)
-{
- return 255;
-}
-
-static void
-sanei_outb (__sane_unused__ unsigned int port,
- __sane_unused__ unsigned char value)
-{
-}
-
-static void
-sanei_insb (__sane_unused__ unsigned int port,
- __sane_unused__ unsigned char *addr,
- __sane_unused__ unsigned long count)
-{
-}
-
-static void
-sanei_insl (__sane_unused__ unsigned int port,
- __sane_unused__ unsigned char *addr,
- __sane_unused__ unsigned long count)
-{
-}
-
-static void
-sanei_outsb (__sane_unused__ unsigned int port,
- __sane_unused__ const unsigned char *addr,
- __sane_unused__ unsigned long count)
-{
-}
-
-static void
-sanei_outsl (__sane_unused__ unsigned int port,
- __sane_unused__ const unsigned char *addr,
- __sane_unused__ unsigned long count)
-{
-}
-#endif /* ENABLE_PARPORT_DIRECTIO is not defined */
-
-/* we need either direct io or ppdev */
-#if ! defined ENABLE_PARPORT_DIRECTIO && ! defined HAVE_LINUX_PPDEV_H && ! defined HAVE_DEV_PPBUS_PPI_H
-#define IO_SUPPORT_MISSING
-#endif
-
-
#include "umax_pp_low.h"
#ifdef DMALLOC
diff --git a/backend/v4l.c b/backend/v4l.c
index bce3c3a..d7ab8e7 100644
--- a/backend/v4l.c
+++ b/backend/v4l.c
@@ -434,7 +434,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
size_t len;
FILE *fp;
- authorize = authorize; /* stop gcc from complaining */
+ (void) authorize; /* stop gcc from complaining */
DBG_INIT ();
DBG (2, "SANE v4l backend version %d.%d build %d from %s\n", SANE_CURRENT_MAJOR,
@@ -1007,7 +1007,7 @@ sane_start (SANE_Handle handle)
buffer = NULL;
return SANE_STATUS_IO_ERROR;
}
- DBG (3, "sane_start: mmapped frame, capture 1 pict into %p\n", buffer);
+ DBG (3, "sane_start: mmapped frame, capture 1 pict into %p\n", (void *) buffer);
s->mmap.frame = 0;
s->mmap.width = s->window.width;
/* s->mmap.width = parms.pixels_per_line; ??? huh? */
diff --git a/backend/xerox_mfp.c b/backend/xerox_mfp.c
index 310dc53..fc3d94f 100644
--- a/backend/xerox_mfp.c
+++ b/backend/xerox_mfp.c
@@ -213,6 +213,8 @@ static int isSupportedDevice(struct device __sane_unused__ *dev)
if (!strncmp(dev->sane.model, "SCX-4500W", 9) ||
!strncmp(dev->sane.model, "C460", 4) ||
!!strstr(dev->sane.model, "CLX-3170") ||
+ !!strstr(dev->sane.model, "4x24") ||
+ !!strstr(dev->sane.model, "4x28") ||
!strncmp(dev->sane.model, "M288x", 5))
return 0;
return 1;
@@ -223,6 +225,11 @@ static int isSupportedDevice(struct device __sane_unused__ *dev)
#endif
}
+static int isJPEGEnabled(struct device __sane_unused__ *dev)
+{
+ return isSupportedDevice(dev) && dev->compressionEnabled;
+}
+
static void dbg_dump(struct device *dev)
{
int i;
@@ -595,6 +602,22 @@ static void init_options(struct device *dev)
dev->opt[OPT_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST;
dev->opt[OPT_SOURCE].constraint.string_list = doc_sources;
+ dev->opt[OPT_JPEG].name = "jpeg";
+ dev->opt[OPT_JPEG].title = SANE_I18N("jpeg compression");
+ dev->opt[OPT_JPEG].desc = SANE_I18N("JPEG Image Compression");
+ dev->opt[OPT_JPEG].unit = SANE_UNIT_NONE;
+ dev->opt[OPT_JPEG].type = SANE_TYPE_BOOL;
+ dev->opt[OPT_JPEG].cap |= SANE_CAP_ADVANCED;
+#ifdef HAVE_LIBJPEG
+ dev->compressionEnabled = SANE_TRUE;
+ if (!isSupportedDevice(dev))
+ dev->opt[OPT_JPEG].cap |= SANE_CAP_INACTIVE;
+ dev->val[OPT_JPEG].b = SANE_TRUE;
+#else
+ dev->opt[OPT_JPEG].cap |= SANE_CAP_INACTIVE;
+ dev->val[OPT_JPEG].b = SANE_FALSE;
+#endif
+
dev->opt[OPT_GROUP_GEO].name = SANE_NAME_GEOMETRY;
dev->opt[OPT_GROUP_GEO].title = SANE_TITLE_GEOMETRY;
dev->opt[OPT_GROUP_GEO].desc = SANE_DESC_GEOMETRY;
@@ -647,7 +670,10 @@ static void set_parameters(struct device *dev)
dev->para.pixels_per_line = dev->win_width / px_to_len;
dev->para.bytes_per_line = dev->para.pixels_per_line;
- if (!isSupportedDevice(dev)) {
+ DBG(5, dev->val[OPT_JPEG].b ? "JPEG compression enabled\n" : "JPEG compression disabled\n" );
+ dev->compressionEnabled = dev->val[OPT_JPEG].b;
+
+ if (!isJPEGEnabled(dev)) {
#if BETTER_BASEDPI
px_to_len = 1213.9 / dev->val[OPT_RESOLUTION].w;
#endif
@@ -776,7 +802,7 @@ static int dev_set_window(struct device *dev)
/* Set to JPEG Lossy Compression, if mode is color (only for supported model)...
* else go with Uncompressed (For backard compatibility with old models )*/
if (dev->composition == MODE_RGB24) {
- if (isSupportedDevice(dev)) {
+ if (isJPEGEnabled(dev)) {
cmd[0x14] = 0x6;
}
}
@@ -1161,7 +1187,7 @@ sane_get_parameters(SANE_Handle h, SANE_Parameters *para)
static int dev_acquire(struct device *dev)
{
if (!dev_cmd_wait(dev, CMD_READ))
- return dev->state;
+ return 0;
dev->state = SANE_STATUS_GOOD;
dev->vertical = dev->res[0x08] << 8 | dev->res[0x09];
@@ -1188,7 +1214,8 @@ static int dev_acquire(struct device *dev)
if (dev->bytes_per_line > DATASIZE) {
DBG(1, "%s: unsupported line size: %d bytes > %d\n",
__func__, dev->bytes_per_line, DATASIZE);
- return ret_cancel(dev, SANE_STATUS_NO_MEM);
+ ret_cancel(dev, SANE_STATUS_NO_MEM);
+ return 0;
}
dev->reading = 0; /* need to issue READ_IMAGE */
@@ -1279,7 +1306,7 @@ sane_read(SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
SANE_Status status;
struct device *dev = h;
- DBG(3, "%s: %p, %p, %d, %p\n", __func__, h, buf, maxlen, (void *)lenp);
+ DBG(3, "%s: %p, %p, %d, %p\n", __func__, h, (void *) buf, maxlen, (void *) lenp);
if (lenp)
*lenp = 0;
@@ -1294,7 +1321,7 @@ sane_read(SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
/* copying uncompressed data */
if (dev->composition == MODE_RGB24 &&
- isSupportedDevice(dev) &&
+ isJPEGEnabled(dev) &&
dev->decDataSize > 0) {
int diff = dev->total_img_size - dev->total_out_size;
int bufLen = (diff < maxlen) ? diff : maxlen;
@@ -1321,7 +1348,7 @@ sane_read(SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
/* this will never happen */
DBG(1, "image overflow %d bytes\n", dev->total_img_size - dev->total_out_size);
}
- if (isSupportedDevice(dev) &&
+ if (isJPEGEnabled(dev) &&
dev->composition == MODE_RGB24) {
remove(encTmpFileName);
}
@@ -1376,7 +1403,7 @@ sane_read(SANE_Handle h, SANE_Byte *buf, SANE_Int maxlen, SANE_Int *lenp)
if (buf && lenp) { /* read mode */
/* copy will do minimal of valid data */
if (dev->para.format == SANE_FRAME_RGB && dev->line_order) {
- if (isSupportedDevice(dev)) {
+ if (isJPEGEnabled(dev)) {
clrlen = dump_to_tmp_file(dev);
/* decompress after reading entire block data*/
if (0 == dev->blocklen) {
@@ -1490,7 +1517,7 @@ sane_start(SANE_Handle h)
dev->total_img_size = dev->para.bytes_per_line * dev->para.lines;
- if (isSupportedDevice(dev) &&
+ if (isJPEGEnabled(dev) &&
dev->composition == MODE_RGB24) {
int fd;
remove(encTmpFileName);
diff --git a/backend/xerox_mfp.conf.in b/backend/xerox_mfp.conf.in
index 4fcbeb6..33e4b38 100644
--- a/backend/xerox_mfp.conf.in
+++ b/backend/xerox_mfp.conf.in
@@ -245,6 +245,9 @@ usb 0x0924 0x4293
#Xerox WorkCentre 3220
usb 0x0924 0x4294
+#Xerox WorkCentre 3025
+usb 0x0924 0x42da
+
#Xerox WorkCentre 3225
usb 0x0924 0x42dc
diff --git a/backend/xerox_mfp.h b/backend/xerox_mfp.h
index d85fe14..6aa83a4 100644
--- a/backend/xerox_mfp.h
+++ b/backend/xerox_mfp.h
@@ -38,6 +38,7 @@ enum options {
OPT_MODE, /* color */
OPT_THRESHOLD, /* brightness */
OPT_SOURCE, /* affects max window size */
+ OPT_JPEG,
OPT_GROUP_GEO,
OPT_SCAN_TL_X, /* for (OPT_SCAN_TL_X to OPT_SCAN_BR_Y) */
OPT_SCAN_TL_Y,
@@ -103,6 +104,7 @@ struct device {
int doc_source; /* document source */
int threshold; /* brightness */
int compressionTypes;
+ SANE_Bool compressionEnabled;
/* CMD_READ data. It is per block only, image could be in many blocks */
int blocklen; /* image data block len (padding incl.) */
diff --git a/configure.ac b/configure.ac
index 6c8682a..a763be5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -152,48 +152,27 @@ AC_CHECK_LIB(sane, sane_init, LIBSANE_EXISTS="yes")
dnl **************************************************************
-dnl SNMP CHECKS
+dnl Check for libsnmp availability
dnl **************************************************************
AC_ARG_WITH(snmp,
- AS_HELP_STRING([--with-snmp], [enable SNMP support @<:@default=yes@:>@]))
-
-if test "$with_snmp" = "no"; then
- echo "Not including SNMP support"
-else
- AC_PATH_PROG(SNMP_CONFIG_PATH, net-snmp-config, "no")
- AC_CHECK_LIB([netsnmp], [snmp_timeout], LIBSNMP_EXISTS="yes")
- AC_MSG_CHECKING(for proper SNMP version)
- if test "$SNMP_CONFIG_PATH" != "no" ; then
- snmp_version=`$SNMP_CONFIG_PATH --version 2>/dev/null`
- vers=`echo $snmp_version | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2);}'`
- if test -n "$vers" && test "$vers" -ge 5006; then
- SNMP_LIBS=`$SNMP_CONFIG_PATH --libs`
- SNMP_CFLAGS=`$SNMP_CONFIG_PATH --cflags`
- AC_MSG_RESULT(yes)
- with_snmp="yes"
- else
- AC_MSG_RESULT(no)
- AC_MSG_WARN([You need at least net-snmp 5.6, your version is $snmp_version])
- with_snmp="no"
- fi
- else
- with_snmp="no"
- AC_MSG_RESULT(no)
- fi
-fi
-
-if test "$with_snmp" = "yes" && test "${LIBSNMP_EXISTS}x" = "yesx"; then
- AC_SUBST(SNMP_LIBS)
- AC_SUBST(SNMP_CFLAGS)
- AC_DEFINE(HAVE_LIBSNMP, 1, [Define to 1 if you have the net-snmp library.])
-else
- AC_MSG_WARN([net-snmp library disabled, autodetecting network scanners will not be supported.])
-fi
-
-
-
-
+ AS_HELP_STRING([--with-snmp],
+ [enable SNMP support @<:@default=check@:>@]),
+ [],
+ [with_snmp=check])
+AC_DEFINE(HAVE_LIBSNMP,
+ [0], [Define to 1 if libsnmp is available])
+AS_IF([test xno != "x$with_snmp"],
+ [PKG_CHECK_MODULES(SNMP, [netsnmp >= 5.6],
+ [AC_DEFINE([HAVE_LIBSNMP], [1])
+ with_snmp=yes
+ ],
+ [AS_IF([test xcheck != "x$with_snmp"],
+ [AC_MSG_ERROR([libsnmp requested but not found])])
+ with_snmp=no
+ ])
+ ])
+AM_CONDITIONAL([have_snmp], [test x != "x$SNMP_LIBS"])
dnl ***********************************************************************
dnl Checks for header files.
@@ -202,7 +181,7 @@ AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h unistd.h libc.h sys/dsreq.h sys/select.h \
sys/time.h sys/shm.h sys/ipc.h sys/scanio.h os2.h \
sys/socket.h sys/io.h sys/hw.h sys/types.h linux/ppdev.h \
- dev/ppbus/ppi.h machine/cpufunc.h sys/sem.h sys/poll.h \
+ dev/ppbus/ppi.h machine/cpufunc.h sys/sem.h poll.h \
windows.h be/kernel/OS.h limits.h sys/ioctl.h asm/types.h\
netinet/in.h tiffio.h ifaddrs.h pwd.h getopt.h)
AC_CHECK_HEADERS([asm/io.h],,,[#include <sys/types.h>])
@@ -671,7 +650,7 @@ ALL_BACKENDS="abaton agfafocus apple artec artec_eplus48u as6e \
mustek_usb mustek_usb2 nec net niash pie pieusb pint \
pixma plustek plustek_pp qcam ricoh ricoh2 rts8891 s9036 \
sceptre sharp sm3600 sm3840 snapscan sp15c st400 \
- stv680 tamarack teco1 teco2 teco3 test u12 umax
+ stv680 tamarack teco1 teco2 teco3 test u12 umax \
umax_pp umax1220u v4l xerox_mfp p5"
# If user specifies backends manually then cause configure
diff --git a/debian/NEWS b/debian/NEWS
deleted file mode 100644
index 12d594c..0000000
--- a/debian/NEWS
+++ /dev/null
@@ -1,14 +0,0 @@
-sane-backends (1.0.25-3) unstable; urgency=medium
-
- With release 1.0.24-14 sane-config must move from the Multi-Arch same
- packages libsane-dev to the new Multi-Arch foreign package libsane-bin.
- .
- Now I get the lintian error "old-style-config-script-multiarch-path". After
- the diskussion at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=820964
- I think it is the best to remove sane-config from Debian.
- .
- All other options are still not Multi-Arch conform.
- .
- Please use pkg-config instead of sane-config from the package pkg-config.
-
- -- Jörg Frings-Fürst <debian@jff.email> Sat, 10 Dec 2016 13:45:15 +0100
diff --git a/debian/changelog b/debian/changelog
index 67966a1..703a316 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,31 @@
+sane-backends (1.2.1-1) unstable; urgency=medium
+
+ * New upstream release:
+ - Remove not longer needed patches:
+ + 0195-genesys_fix_total_file_size_exceeding.patch
+ + 0035-trim-libraries-in-sane-backends.pc.in.patch
+ + 0045-disable_lock_test_at_build_time.patch
+ + 0185-Change_output_from_sane-find-scanner.patch
+ - Refresh patches:
+ + 0705-kfreebsd.patch
+ + 0060-cross.patch
+ + 0100-source_spelling.patch
+ * debian/control:
+ - Remove obsolete package Depends lsb-base.
+ - Add libpng-dev to Build-Depends.
+ * Declare compliance with Debian Policy 4.6.2.0 (No changes needed).
+ * debian/copyright:
+ - Refresh to the new upstream release.
+ - Add 2023 to myself.
+ * debian/changelog:
+ - Remove trailing whitespace.
+ * Remove obsolete files:
+ - debian/libsane-common.maintscript
+ - debian/NEWS
+ - debian/libsane1.NEWS
+
+ -- Jörg Frings-Fürst <debian@jff.email> Mon, 13 Feb 2023 19:25:08 +0100
+
sane-backends (1.1.1-6) unstable; urgency=medium
* debian/rules:
@@ -15,7 +43,7 @@ sane-backends (1.1.1-6) unstable; urgency=medium
sane-backends (1.1.1-5) unstable; urgency=medium
* debian/rules:
- - Change configure parameter --enable-parport-directio to use only on
+ - Change configure parameter --enable-parport-directio to use only on
hurd-i386 (Closes: #1008488).
* debian/control:
- Change Build-Depend from virtual package libltdl3-dev to libltdl-dev.
diff --git a/debian/control b/debian/control
index 87c1306..7dcc113 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: sane-backends
Section: graphics
Priority: optional
Maintainer: Jörg Frings-Fürst <debian@jff.email>
-Standards-Version: 4.6.0
+Standards-Version: 4.6.2.0
Build-Depends:
autoconf,
autoconf-archive,
@@ -17,6 +17,7 @@ Build-Depends:
libieee1284-3-dev [!hurd-i386],
libjpeg-dev,
libltdl-dev,
+ libpng-dev,
libpoppler-glib-dev,
libsnmp-dev [!kfreebsd-any],
libsystemd-dev [linux-any],
@@ -37,7 +38,6 @@ Architecture: any
Multi-Arch: foreign
Depends:
adduser,
- lsb-base (>= 3.0-6),
update-inetd,
${misc:Depends},
${shlibs:Depends}
diff --git a/debian/copyright b/debian/copyright
index 6671360..f60eae6 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -15,7 +15,7 @@ Copyright: 1997-2002 Kevin Dalley <kevind@rahul.net>
2013 Mark Buda <hermit@acm.org>
2018 Laurent Bigonville <bigon@debian.org>
2019 John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
- 2014-2022 Jörg Frings-Fürst <debian@jff.email>
+ 2014-2023 Jörg Frings-Fürst <debian@jff.email>
License: GPL-2+ with sane exception
Files: backend/abaton.*
@@ -85,7 +85,7 @@ Files: backend/canon_dr.*
backend/cardscan.*
include/sane/sanei_magic.h
sanei/sanei_magic.c
-Copyright: 2007-2021 m. allan noah
+Copyright: 2007-2022 m. allan noah
License: GPL-2+ with sane exception
Files: backend/canon_pp-*.*
@@ -129,7 +129,7 @@ Copyright: 2019 Touboul Nathane
License: GPL-2+ with sane exception
Files: backend/epjitsu*.*
-Copyright: 2007-2015 m. allan noah <kitno455@gmail.com>
+Copyright: 2007-2022 m. allan noah <kitno455@gmail.com>
2009 Richard Goedeken <richard@fascinationsoftware.com>
License: GPL-2+ with sane exception
@@ -162,7 +162,7 @@ Files: backend/fujitsu.*
Copyright: 2000 Randolph Bentson
2001 Frederik Ramm
2001-2004 Oliver Schirrmeister
- 2003-2021 m. allan noah
+ 2003-2022 m. allan noah
License: GPL-2+ with sane exception
Files: backend/genesys/genesys.h
diff --git a/debian/libsane-common.maintscript b/debian/libsane-common.maintscript
deleted file mode 100644
index 1438dbe..0000000
--- a/debian/libsane-common.maintscript
+++ /dev/null
@@ -1 +0,0 @@
-rm_conffile /etc/sane.d/v4l.conf 1.0.24-10~
diff --git a/debian/libsane1.NEWS b/debian/libsane1.NEWS
deleted file mode 100644
index e9a90b1..0000000
--- a/debian/libsane1.NEWS
+++ /dev/null
@@ -1,19 +0,0 @@
-sane-backends (1.0.24-10) unstable; urgency=high
-
- The v4l backend is disabled since this version.
-
- -- Jörg Frings-Fürst <debian@jff-webhosting.net> Sun, 18 Jan 2015 11:46:18 +0100
-
-sane-backends (1.0.22-1) unstable; urgency=low
-
- Starting with this version, sane-backends requires the /dev filesystem to
- support ACLs in order to manage the permissions on scanner devices.
-
- This change was made to provide better support for multi-function (MFP)
- devices.
-
- No action is required on standard Debian systems for this to work; however,
- if you have an unusual setup or use a custom kernel, make sure ACLs are
- available on /dev on your system.
-
- -- Julien BLACHE <jblache@debian.org> Thu, 02 Jun 2011 14:57:53 +0200
diff --git a/debian/patches/0011-test.patch b/debian/patches/0011-test.patch
deleted file mode 100644
index d4d4590..0000000
--- a/debian/patches/0011-test.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Index: trunk/frontend/jpegtopdf.c
-===================================================================
---- trunk.orig/frontend/jpegtopdf.c
-+++ trunk/frontend/jpegtopdf.c
-@@ -184,6 +184,7 @@ static SANE_Int _get_current_time( struc
- SANE_Int ret = SANE_ERR;
- time_t t;
- long tz;
-+ long timezone = 0;
-
- if ( pt == NULL || sign_c == NULL || ptz_h == NULL || ptz_m == NULL ) {
- goto EXIT;
-@@ -201,7 +202,7 @@ static SANE_Int _get_current_time( struc
- goto EXIT;
- }
- /* get time difference ( OHH'mm' ) */
-- tz = timezone;
-+ tz = timezone;
- if ( tz > 0 ) {
- *sign_c = '-';
- }
-Index: trunk/configure.ac
-===================================================================
---- trunk.orig/configure.ac
-+++ trunk/configure.ac
-@@ -671,7 +671,7 @@ ALL_BACKENDS="abaton agfafocus apple art
- mustek_usb mustek_usb2 nec net niash pie pieusb pint \
- pixma plustek plustek_pp qcam ricoh ricoh2 rts8891 s9036 \
- sceptre sharp sm3600 sm3840 snapscan sp15c st400 \
-- stv680 tamarack teco1 teco2 teco3 test u12 umax
-+ stv680 tamarack teco1 teco2 teco3 test u12 umax \
- umax_pp umax1220u v4l xerox_mfp p5"
-
- # If user specifies backends manually then cause configure
diff --git a/debian/patches/0035-trim-libraries-in-sane-backends.pc.in.patch b/debian/patches/0035-trim-libraries-in-sane-backends.pc.in.patch
deleted file mode 100644
index 7452b33..0000000
--- a/debian/patches/0035-trim-libraries-in-sane-backends.pc.in.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From: Markus Koschany <apo@gambaru.de>
-Date: Sun, 30 Jun 2013 19:13:54 +0200
-Subject: trim libraries in sane-backends.pc.in
-
-Update the original sane-config_and_pkg-config_fixes.patch from Julien BLACHE.
-Patching RPATH related flags is no longer necessary. Still trim the libraries
-in sane-backends.pc.in to the bare minimum for what is needed for libsane.
----
- tools/sane-backends.pc.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/tools/sane-backends.pc.in
-+++ b/tools/sane-backends.pc.in
-@@ -2,8 +2,8 @@
- exec_prefix=@exec_prefix@
- libdir=@libdir@
- includedir=@includedir@
--ldflags=@LDFLAGS@ @GPHOTO2_LDFLAGS@
--libs=@LIBS@ @DL_LIBS@ @LIBV4L_LIBS@ @MATH_LIB@ @TIFF_LIBS@ @JPEG_LIBS@ @GPHOTO2_LIBS@ @SOCKET_LIBS@ @AVAHI_LIBS@ @USB_LIBS@ @SCSI_LIBS@ @RESMGR_LIBS@
-+ldflags=@LDFLAGS@
-+libs=@LIBS@
-
- Name: SANE Backends
- Description: Backends for SANE, the universal scanner interface
diff --git a/debian/patches/0045-disable_lock_test_at_build_time.patch b/debian/patches/0045-disable_lock_test_at_build_time.patch
deleted file mode 100644
index 8aeccf8..0000000
--- a/debian/patches/0045-disable_lock_test_at_build_time.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Description: Disable lock test at buildtime
-Author: Jörg Frings-Fürst <debian@jff.emaill>
-Forwarded: not-needed
-Last-Update: 2020-08-28
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: trunk/acinclude.m4
-===================================================================
---- trunk.orig/acinclude.m4
-+++ trunk/acinclude.m4
-@@ -356,11 +356,11 @@ AC_DEFUN([SANE_CHECK_LOCKING],
- touch sanetest.file
- chgrp $LOCKPATH_GROUP sanetest.file 2>/dev/null || lasterror=$?
- rm -f sanetest.file
-- if test ! -z "$lasterror"; then
-- AC_MSG_WARN([Group $LOCKPATH_GROUP does not exist on this system.])
-- AC_MSG_WARN([Locking feature will be disabled.])
-- use_locking=no
-- fi
-+# if test ! -z "$lasterror"; then
-+# AC_MSG_WARN([Group $LOCKPATH_GROUP does not exist on this system.])
-+# AC_MSG_WARN([Locking feature will be disabled.])
-+# use_locking=no
-+# fi
- fi
- if test $use_locking = yes ; then
- INSTALL_LOCKPATH=install-lockpath
diff --git a/debian/patches/0055-Fix_build_error.patch b/debian/patches/0055-Fix_build_error.patch
deleted file mode 100644
index b1b09b1..0000000
--- a/debian/patches/0055-Fix_build_error.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Description: Fix build error
-Author: Jörg Frings-Fürst <debian@jff.email>
-Forwarded: not-needed
-Last-Update: 2020-08-28
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: trunk/po/POTFILES.in
-===================================================================
---- trunk.orig/po/POTFILES.in
-+++ trunk/po/POTFILES.in
-@@ -65,7 +65,7 @@ backend/p5.c
- backend/p5.h
- backend/p5_device.c
- backend/pixma/pixma.c
--backend/pixma/pixma_sane_options.c
-+backend/pixma/pixma_sane_options.c
- backend/plustek.c
- backend/plustek_pp.c
- backend/pnm.c
-Index: trunk/backend/Makefile.am
-===================================================================
---- trunk.orig/backend/Makefile.am
-+++ trunk/backend/Makefile.am
-@@ -947,10 +947,10 @@ $(srcdir)/pixma/pixma.c: \
-
- $(srcdir)/pixma/pixma_sane_options.h:
- @echo Generating $@ from $(@D)/pixma.c
-- @(cd $(@D); python scripts/pixma_gen_options.py h < pixma.c > $(@F))
-+ @(cd $(@D); python3 scripts/pixma_gen_options.py h < pixma.c > $(@F))
- $(srcdir)/pixma/pixma_sane_options.c:
- @echo Generating $@ from $(@D)/pixma.c
-- @(cd $(@D); python scripts/pixma_gen_options.py < pixma.c > $(@F))
-+ @(cd $(@D); python3 scripts/pixma_gen_options.py < pixma.c > $(@F))
-
- EXTRA_DIST += pixma/pixma_sane_options.c
- EXTRA_DIST += pixma/pixma_sane_options.h
diff --git a/debian/patches/0060-cross.patch b/debian/patches/0060-cross.patch
index a810929..1c32cac 100644
--- a/debian/patches/0060-cross.patch
+++ b/debian/patches/0060-cross.patch
@@ -9,7 +9,7 @@ Index: trunk/acinclude.m4
===================================================================
--- trunk.orig/acinclude.m4
+++ trunk/acinclude.m4
-@@ -436,15 +436,19 @@ AC_DEFUN([SANE_CHECK_GPHOTO2],
+@@ -414,15 +414,19 @@ AC_DEFUN([SANE_CHECK_GPHOTO2],
# a program. And, if that works, then add the -l flags to
# GPHOTO2_LIBS and any other flags to GPHOTO2_LDFLAGS to pass to
# sane-config.
@@ -36,7 +36,7 @@ Index: trunk/acinclude.m4
saved_CPPFLAGS="${CPPFLAGS}"
CPPFLAGS="${GPHOTO2_CPPFLAGS}"
saved_LIBS="${LIBS}"
-@@ -464,13 +468,13 @@ AC_DEFUN([SANE_CHECK_GPHOTO2],
+@@ -442,13 +446,13 @@ AC_DEFUN([SANE_CHECK_GPHOTO2],
GPHOTO2_LIBS=""
else
SANE_EXTRACT_LDFLAGS(GPHOTO2_LIBS, GPHOTO2_LDFLAGS)
diff --git a/debian/patches/0100-source_spelling.patch b/debian/patches/0100-source_spelling.patch
index 6bf41f1..b91aa72 100644
--- a/debian/patches/0100-source_spelling.patch
+++ b/debian/patches/0100-source_spelling.patch
@@ -21,7 +21,7 @@ Index: trunk/frontend/jpegtopdf.c
===================================================================
--- trunk.orig/frontend/jpegtopdf.c
+++ trunk/frontend/jpegtopdf.c
-@@ -285,7 +285,7 @@ SANE_Int sane_pdf_start_doc( void *pw )
+@@ -289,7 +289,7 @@ SANE_Int sane_pdf_start_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -30,7 +30,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -326,7 +326,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -330,7 +330,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -39,7 +39,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -346,7 +346,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -350,7 +350,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -48,7 +48,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -360,7 +360,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -364,7 +364,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -57,7 +57,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -376,7 +376,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -380,7 +380,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -66,7 +66,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -386,7 +386,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -390,7 +390,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( _get_current_time( &tm, &sign_c, &tz_h, &tz_m ) == SANE_ERR ) {
@@ -75,7 +75,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
/* Dates format */
-@@ -404,7 +404,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -408,7 +408,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -84,7 +84,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -420,7 +420,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -424,7 +424,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -93,7 +93,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -434,7 +434,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -438,7 +438,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -102,7 +102,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
w_count += SANE_PDF_FIRST_PAGE_ID - 1;
-@@ -450,7 +450,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -454,7 +454,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -111,7 +111,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
w_count ++;
-@@ -472,7 +472,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
+@@ -476,7 +476,7 @@ SANE_Int sane_pdf_end_doc( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -120,7 +120,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -568,7 +568,7 @@ SANE_Int sane_pdf_start_page(
+@@ -572,7 +572,7 @@ SANE_Int sane_pdf_start_page(
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -129,7 +129,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -586,7 +586,7 @@ SANE_Int sane_pdf_start_page(
+@@ -590,7 +590,7 @@ SANE_Int sane_pdf_start_page(
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -138,7 +138,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
/* write Contents(2) */
-@@ -598,7 +598,7 @@ SANE_Int sane_pdf_start_page(
+@@ -602,7 +602,7 @@ SANE_Int sane_pdf_start_page(
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -147,7 +147,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -609,7 +609,7 @@ SANE_Int sane_pdf_start_page(
+@@ -613,7 +613,7 @@ SANE_Int sane_pdf_start_page(
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -156,7 +156,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -627,7 +627,7 @@ SANE_Int sane_pdf_start_page(
+@@ -631,7 +631,7 @@ SANE_Int sane_pdf_start_page(
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -165,7 +165,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -648,7 +648,7 @@ SANE_Int sane_pdf_start_page(
+@@ -652,7 +652,7 @@ SANE_Int sane_pdf_start_page(
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -174,7 +174,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -680,7 +680,7 @@ SANE_Int sane_pdf_end_page( void *pw )
+@@ -684,7 +684,7 @@ SANE_Int sane_pdf_end_page( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
@@ -183,7 +183,7 @@ Index: trunk/frontend/jpegtopdf.c
goto EXIT;
}
-@@ -698,7 +698,7 @@ SANE_Int sane_pdf_end_page( void *pw )
+@@ -702,7 +702,7 @@ SANE_Int sane_pdf_end_page( void *pw )
goto EXIT;
}
if ( ( ldata = re_write_if_fail( pwork->fd, str, len ) ) < 0 ) {
diff --git a/debian/patches/0165-respect_local_only_parameter.patch b/debian/patches/0165-respect_local_only_parameter.patch
deleted file mode 100644
index f73a731..0000000
--- a/debian/patches/0165-respect_local_only_parameter.patch
+++ /dev/null
@@ -1,768 +0,0 @@
-Description: respect 'local_only' parameter of sane_get_devices()
-Author: Barnabás Pőcze <pobrn@protonmail.com>
-Origin: backport, https://gitlab.com/sane-project/backends/-/commit/245564dffe96ddf0fd1c703c48973cd35fddd268
-Bug: https://gitlab.com/sane-project/backends/-/merge_requests/502/
-Forwarded: no-needed
-Last-Update: 2020-09-05
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: trunk/backend/dell1600n_net.c
-===================================================================
---- trunk.orig/backend/dell1600n_net.c
-+++ trunk/backend/dell1600n_net.c
-@@ -288,8 +288,7 @@ sane_exit (void)
- /***********************************************************/
-
- SANE_Status
--sane_get_devices (const SANE_Device *** device_list,
-- SANE_Bool __sane_unused__ local_only)
-+sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
- {
-
- int ret;
-@@ -312,6 +311,10 @@ sane_get_devices (const SANE_Device ***
- sock = 0;
- pDevice = NULL;
- optYes = 1;
-+
-+ if (local_only)
-+ return ret;
-+
- InitComBuf (&queryPacket);
-
- /* clear previous results */
-Index: trunk/backend/epson2.c
-===================================================================
---- trunk.orig/backend/epson2.c
-+++ trunk/backend/epson2.c
-@@ -813,10 +813,11 @@ attach_one_pio(const char *dev)
- }
-
- static SANE_Status
--attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)
-+attach_one_config(SANEI_Config __sane_unused__ *config, const char *line,
-+ void *data)
- {
- int vendor, product;
--
-+ SANE_Bool local_only = *(SANE_Bool*) data;
- int len = strlen(line);
-
- DBG(7, "%s: len = %d, line = %s\n", __func__, len, line);
-@@ -847,13 +848,16 @@ attach_one_config(SANEI_Config __sane_un
-
- } else if (strncmp(line, "net", 3) == 0) {
-
-- /* remove the "net" sub string */
-- const char *name = sanei_config_skip_whitespace(line + 3);
--
-- if (strncmp(name, "autodiscovery", 13) == 0)
-- e2_network_discovery();
-- else
-- attach_one_net(name);
-+ if (!local_only) {
-+ /* remove the "net" sub string */
-+ const char *name =
-+ sanei_config_skip_whitespace(line + 3);
-+
-+ if (strncmp(name, "autodiscovery", 13) == 0)
-+ e2_network_discovery();
-+ else
-+ attach_one_net(name);
-+ }
-
- } else if (strncmp(line, "pio", 3) == 0) {
-
-@@ -889,14 +893,14 @@ free_devices(void)
- }
-
- static void
--probe_devices(void)
-+probe_devices(SANE_Bool local_only)
- {
- DBG(5, "%s\n", __func__);
-
- free_devices();
-
- sanei_configure_attach(EPSON2_CONFIG_FILE, NULL,
-- attach_one_config);
-+ attach_one_config, &local_only);
- }
-
- SANE_Status
-@@ -926,14 +930,14 @@ sane_exit(void)
- }
-
- SANE_Status
--sane_get_devices(const SANE_Device ***device_list, SANE_Bool __sane_unused__ local_only)
-+sane_get_devices(const SANE_Device ***device_list, SANE_Bool local_only)
- {
- Epson_Device *dev;
- int i;
-
- DBG(5, "%s\n", __func__);
-
-- probe_devices();
-+ probe_devices(local_only);
-
- devlist = malloc((num_devices + 1) * sizeof(devlist[0]));
- if (!devlist) {
-@@ -1470,7 +1474,7 @@ sane_open(SANE_String_Const name, SANE_H
- /* probe if empty device name provided */
- if (l == 0) {
-
-- probe_devices();
-+ probe_devices(SANE_FALSE);
-
- if (first_dev == NULL) {
- DBG(1, "no device detected\n");
-@@ -1507,7 +1511,7 @@ sane_open(SANE_String_Const name, SANE_H
- */
-
- if (first_dev == NULL)
-- probe_devices();
-+ probe_devices(SANE_FALSE);
-
- s = device_detect(name, SANE_EPSON_NODEV, 0, &status);
- if (s == NULL) {
-Index: trunk/backend/epsonds.c
-===================================================================
---- trunk.orig/backend/epsonds.c
-+++ trunk/backend/epsonds.c
-@@ -481,10 +481,11 @@ attach_one_net(const char *dev)
-
-
- static SANE_Status
--attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)
-+attach_one_config(SANEI_Config __sane_unused__ *config, const char *line,
-+ void *data)
- {
- int vendor, product;
--
-+ SANE_Bool local_only = *(SANE_Bool*) data;
- int len = strlen(line);
-
- DBG(7, "%s: len = %d, line = %s\n", __func__, len, line);
-@@ -513,13 +514,16 @@ attach_one_config(SANEI_Config __sane_un
-
- } else if (strncmp(line, "net", 3) == 0) {
-
-- /* remove the "net" sub string */
-- const char *name = sanei_config_skip_whitespace(line + 3);
--
-- if (strncmp(name, "autodiscovery", 13) == 0)
-- e2_network_discovery();
-- else
-- attach_one_net(name);
-+ if (!local_only) {
-+ /* remove the "net" sub string */
-+ const char *name =
-+ sanei_config_skip_whitespace(line + 3);
-+
-+ if (strncmp(name, "autodiscovery", 13) == 0)
-+ e2_network_discovery();
-+ else
-+ attach_one_net(name);
-+ }
-
- } else {
- DBG(0, "unable to parse config line: %s\n", line);
-@@ -545,12 +549,13 @@ free_devices(void)
- }
-
- static void
--probe_devices(void)
-+probe_devices(SANE_Bool local_only)
- {
- DBG(5, "%s\n", __func__);
-
- free_devices();
-- sanei_configure_attach(EPSONDS_CONFIG_FILE, NULL, attach_one_config);
-+ sanei_configure_attach(EPSONDS_CONFIG_FILE, NULL,
-+ attach_one_config, &local_only);
- }
-
- /**** SANE API ****/
-@@ -581,14 +586,14 @@ sane_exit(void)
- }
-
- SANE_Status
--sane_get_devices(const SANE_Device ***device_list, SANE_Bool __sane_unused__ local_only)
-+sane_get_devices(const SANE_Device ***device_list, SANE_Bool local_only)
- {
- int i;
- epsonds_device *dev;
-
- DBG(5, "** %s\n", __func__);
-
-- probe_devices();
-+ probe_devices(local_only);
-
- devlist = malloc((num_devices + 1) * sizeof(devlist[0]));
- if (!devlist) {
-@@ -793,7 +798,7 @@ sane_open(SANE_String_Const name, SANE_H
- /* probe if empty device name provided */
- if (name[0] == '\0') {
-
-- probe_devices();
-+ probe_devices(SANE_FALSE);
-
- if (first_dev == NULL) {
- DBG(1, "no devices detected\n");
-Index: trunk/backend/escl/escl.c
-===================================================================
---- trunk.orig/backend/escl/escl.c
-+++ trunk/backend/escl/escl.c
-@@ -383,7 +383,8 @@ sane_exit(void)
- * \return escl_add_in_list(escl_device) if the parsing worked, SANE_STATUS_GOOD otherwise.
- */
- static SANE_Status
--attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)
-+attach_one_config(SANEI_Config __sane_unused__ *config, const char *line,
-+ void __sane_unused__ *data)
- {
- int port = 0;
- SANE_Status status;
-@@ -487,7 +488,8 @@ sane_get_devices(const SANE_Device ***de
-
- if (device_list == NULL)
- return (SANE_STATUS_INVAL);
-- status = sanei_configure_attach(ESCL_CONFIG_FILE, NULL, attach_one_config);
-+ status = sanei_configure_attach(ESCL_CONFIG_FILE, NULL,
-+ attach_one_config, NULL);
- if (status != SANE_STATUS_GOOD)
- return (status);
- escl_devices(&status);
-Index: trunk/backend/genesys/genesys.cpp
-===================================================================
---- trunk.orig/backend/genesys/genesys.cpp
-+++ trunk/backend/genesys/genesys.cpp
-@@ -5186,7 +5186,8 @@ static SANE_Status attach_one_device(SAN
-
- // this function is passed to C API, it must not throw
- static SANE_Status
--config_attach_genesys(SANEI_Config __sane_unused__ *config, const char *devname) noexcept
-+config_attach_genesys(SANEI_Config __sane_unused__ *config, const char *devname,
-+ void __sane_unused__ *data) noexcept
- {
- /* the devname has been processed and is ready to be used
- * directly. Since the backend is an USB only one, we can
-@@ -5214,7 +5215,8 @@ static void probe_genesys_devices()
- config.values = nullptr;
- config.count = 0;
-
-- auto status = sanei_configure_attach(GENESYS_CONFIG_FILE, &config, config_attach_genesys);
-+ auto status = sanei_configure_attach(GENESYS_CONFIG_FILE, &config,
-+ config_attach_genesys, NULL);
- if (status == SANE_STATUS_ACCESS_DENIED) {
- dbg.vlog(DBG_error0, "Critical error: Couldn't access configuration file '%s'",
- GENESYS_CONFIG_FILE);
-Index: trunk/backend/kodakaio.c
-===================================================================
---- trunk.orig/backend/kodakaio.c
-+++ trunk/backend/kodakaio.c
-@@ -2513,10 +2513,11 @@ attach_one_net(const char *dev, unsigned
- }
-
- static SANE_Status
--attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)
-+attach_one_config(SANEI_Config __sane_unused__ *config, const char *line,
-+ void *data)
- {
- int vendor, product, timeout;
--
-+ SANE_Bool local_only = *(SANE_Bool*) data;
- int len = strlen(line);
-
- DBG(7, "%s: len = %d, line = %s\n", __func__, len, line);
-@@ -2550,27 +2551,30 @@ attach_one_config(SANEI_Config __sane_un
-
- } else if (strncmp(line, "net", 3) == 0) {
-
-- /* remove the "net" sub string */
-- const char *name = sanei_config_skip_whitespace(line + 3);
-- char IP[1024];
-- unsigned int model = 0;
--
-- if (strncmp(name, "autodiscovery", 13) == 0) {
--
--#if WITH_AVAHI
-- DBG (30, "%s: Initiating network autodiscovery via avahi\n", __func__);
-- kodak_network_discovery(NULL);
--#else
-- DBG (20, "%s: Network autodiscovery not done because not configured with avahi.\n", __func__);
--#endif
--
-- } else if (sscanf(name, "%s %x", IP, &model) == 2) {
-- DBG(30, "%s: Using network device on IP %s, forcing model 0x%x\n", __func__, IP, model);
-- attach_one_net(IP, model);
-- } else {
-+ if (!local_only) {
-+ /* remove the "net" sub string */
-+ const char *name =
-+ sanei_config_skip_whitespace(line + 3);
-+ char IP[1024];
-+ unsigned int model = 0;
-+
-+ if (strncmp(name, "autodiscovery", 13) == 0) {
-+
-+ #if WITH_AVAHI
-+ DBG (30, "%s: Initiating network autodiscovery via avahi\n", __func__);
-+ kodak_network_discovery(NULL);
-+ #else
-+ DBG (20, "%s: Network autodiscovery not done because not configured with avahi.\n", __func__);
-+ #endif
-+
-+ } else if (sscanf(name, "%s %x", IP, &model) == 2) {
-+ DBG(30, "%s: Using network device on IP %s, forcing model 0x%x\n", __func__, IP, model);
-+ attach_one_net(IP, model);
-+ } else {
- DBG(1, "%s: net entry %s may be a host name?\n", __func__, name);
- attach_one_net(name, 0);
- }
-+ }
-
- } else if (sscanf(line, "snmp-timeout %i\n", &timeout)) {
- /* Timeout for auto network discovery */
-@@ -2646,7 +2650,7 @@ sane_exit(void)
- }
-
- SANE_Status
--sane_get_devices(const SANE_Device ***device_list, SANE_Bool __sane_unused__ local_only)
-+sane_get_devices(const SANE_Device ***device_list, SANE_Bool local_only)
- {
- Kodak_Device *dev, *s, *prev=0;
- int i;
-@@ -2662,7 +2666,7 @@ sane_get_devices(const SANE_Device ***de
-
- /* Read the config, mark each device as found, possibly add new devs */
- sanei_configure_attach(KODAKAIO_CONFIG_FILE, NULL,
-- attach_one_config);
-+ attach_one_config, &local_only);
-
- /*delete missing scanners from list*/
- for (s = first_dev; s;) {
-Index: trunk/backend/magicolor.c
-===================================================================
---- trunk.orig/backend/magicolor.c
-+++ trunk/backend/magicolor.c
-@@ -2157,10 +2157,11 @@ attach_one_net(const char *dev, unsigned
- }
-
- static SANE_Status
--attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)
-+attach_one_config(SANEI_Config __sane_unused__ *config, const char *line,
-+ void *data)
- {
- int vendor, product, timeout;
--
-+ SANE_Bool local_only = *(SANE_Bool*) data;
- int len = strlen(line);
-
- DBG(7, "%s: len = %d, line = %s\n", __func__, len, line);
-@@ -2189,24 +2190,27 @@ attach_one_config(SANEI_Config __sane_un
-
- } else if (strncmp(line, "net", 3) == 0) {
-
-- /* remove the "net" sub string */
-- const char *name = sanei_config_skip_whitespace(line + 3);
-- char IP[1024];
-- unsigned int model = 0;
--
-- if (strncmp(name, "autodiscovery", 13) == 0) {
-- DBG (50, "%s: Initiating network autodiscovervy via SNMP\n", __func__);
-- mc_network_discovery(NULL);
-- } else if (sscanf(name, "%s %x", IP, &model) == 2) {
-- DBG(50, "%s: Using network device on IP %s, forcing model 0x%x\n", __func__, IP, model);
-- attach_one_net(IP, model);
-- } else {
-- /* use SNMP to detect the type. If not successful,
-- * add the host with model type 0 */
-- DBG(50, "%s: Using network device on IP %s, trying to autodetect model\n", __func__, IP);
-- if (mc_network_discovery(name)==0) {
-- DBG(1, "%s: Autodetecting device model failed, using default model\n", __func__);
-- attach_one_net(name, 0);
-+ if (!local_only) {
-+ /* remove the "net" sub string */
-+ const char *name =
-+ sanei_config_skip_whitespace(line + 3);
-+ char IP[1024];
-+ unsigned int model = 0;
-+
-+ if (strncmp(name, "autodiscovery", 13) == 0) {
-+ DBG (50, "%s: Initiating network autodiscovervy via SNMP\n", __func__);
-+ mc_network_discovery(NULL);
-+ } else if (sscanf(name, "%s %x", IP, &model) == 2) {
-+ DBG(50, "%s: Using network device on IP %s, forcing model 0x%x\n", __func__, IP, model);
-+ attach_one_net(IP, model);
-+ } else {
-+ /* use SNMP to detect the type. If not successful,
-+ * add the host with model type 0 */
-+ DBG(50, "%s: Using network device on IP %s, trying to autodetect model\n", __func__, IP);
-+ if (mc_network_discovery(name)==0) {
-+ DBG(1, "%s: Autodetecting device model failed, using default model\n", __func__);
-+ attach_one_net(name, 0);
-+ }
- }
- }
-
-@@ -2279,7 +2283,7 @@ sane_exit(void)
- }
-
- SANE_Status
--sane_get_devices(const SANE_Device ***device_list, SANE_Bool __sane_unused__ local_only)
-+sane_get_devices(const SANE_Device ***device_list, SANE_Bool local_only)
- {
- Magicolor_Device *dev, *s, *prev=0;
- int i;
-@@ -2295,7 +2299,7 @@ sane_get_devices(const SANE_Device ***de
-
- /* Read the config, mark each device as found, possibly add new devs */
- sanei_configure_attach(MAGICOLOR_CONFIG_FILE, NULL,
-- attach_one_config);
-+ attach_one_config, &local_only);
-
- /*delete missing scanners from list*/
- for (s = first_dev; s;) {
-Index: trunk/backend/p5.c
-===================================================================
---- trunk.orig/backend/p5.c
-+++ trunk/backend/p5.c
-@@ -1566,7 +1566,8 @@ probe_p5_devices (void)
- config.count = NUM_CFG_OPTIONS;
-
- /* generic configure and attach function */
-- status = sanei_configure_attach (P5_CONFIG_FILE, &config, config_attach);
-+ status = sanei_configure_attach (P5_CONFIG_FILE, &config,
-+ config_attach, NULL);
- /* free allocated options */
- for (i = 0; i < NUM_CFG_OPTIONS; i++)
- {
-@@ -1590,7 +1591,8 @@ probe_p5_devices (void)
- * SANE_STATUS_INVAL in case of error
- */
- static SANE_Status
--config_attach (SANEI_Config * config, const char *devname)
-+config_attach (SANEI_Config __sane_unused__ * config, const char *devname,
-+ void __sane_unused__ *data)
- {
- /* currently, the config is a global variable so config is useless here */
- /* the correct thing would be to have a generic sanei_attach_matching_devices
-Index: trunk/backend/p5.h
-===================================================================
---- trunk.orig/backend/p5.h
-+++ trunk/backend/p5.h
-@@ -195,7 +195,8 @@ typedef struct P5_Session
-
- static SANE_Status probe_p5_devices (void);
- static P5_Model *probe (const char *devicename);
--static SANE_Status config_attach (SANEI_Config * config, const char *devname);
-+static SANE_Status config_attach (SANEI_Config * config, const char *devname,
-+ void *data);
- static SANE_Status attach_p5 (const char *name, SANEI_Config * config);
- static SANE_Status init_options (struct P5_Session *session);
- static SANE_Status compute_parameters (struct P5_Session *session);
-Index: trunk/backend/pixma/pixma.c
-===================================================================
---- trunk.orig/backend/pixma/pixma.c
-+++ trunk/backend/pixma/pixma.c
-@@ -159,10 +159,11 @@ static void mark_all_button_options_cach
- ss -> button_option_is_cached[i] = 1;
- }
-
--static SANE_Status config_attach_pixma(SANEI_Config * config, const char *devname)
-+static SANE_Status config_attach_pixma(SANEI_Config __sane_unused__ * config,
-+ const char *devname,
-+ void __sane_unused__ *data)
- {
- int i;
-- UNUSED(config);
- for (i=0; i < (MAX_CONF_DEVICES -1); i++)
- {
- if(conf_devices[i] == NULL)
-@@ -1656,8 +1657,8 @@ sane_init (SANE_Int * version_code, SANE
- config.descriptors = NULL;
- config.values = NULL;
-
-- if (sanei_configure_attach(PIXMA_CONFIG_FILE, &config, config_attach_pixma) !=
-- SANE_STATUS_GOOD)
-+ if (sanei_configure_attach(PIXMA_CONFIG_FILE, &config,
-+ config_attach_pixma, NULL) != SANE_STATUS_GOOD)
- PDBG(pixma_dbg(2, "Could not read pixma configuration file: %s\n",
- PIXMA_CONFIG_FILE));
-
-Index: trunk/backend/rts8891.c
-===================================================================
---- trunk.orig/backend/rts8891.c
-+++ trunk/backend/rts8891.c
-@@ -217,7 +217,7 @@ static Rts8891_Config rtscfg;
- /* ------------------------------------------------------------------------- */
- static SANE_Status probe_rts8891_devices (void);
- static SANE_Status config_attach_rts8891 (SANEI_Config * config,
-- const char *devname);
-+ const char *devname, void *data);
- static SANE_Status attach_rts8891 (const char *name);
- static SANE_Status set_lamp_brightness (struct Rts8891_Device *dev,
- int level);
-@@ -2374,7 +2374,7 @@ probe_rts8891_devices (void)
-
- /* generic configure and attach function */
- status = sanei_configure_attach (RTS8891_CONFIG_FILE, &config,
-- config_attach_rts8891);
-+ config_attach_rts8891, NULL);
- /* free allocated options */
- for (i = 0; i < NUM_CFG_OPTIONS; i++)
- {
-@@ -2398,7 +2398,8 @@ probe_rts8891_devices (void)
- * SANE_STATUS_INVAL in case of error
- */
- static SANE_Status
--config_attach_rts8891 (SANEI_Config * config, const char *devname)
-+config_attach_rts8891 (SANEI_Config * config, const char *devname,
-+ void __sane_unused__ *data)
- {
- /* currently, the config is a global variable so config is useless here */
- /* the correct thing would be to have a generic sanei_attach_matching_devices
-Index: trunk/backend/umax_pp.c
-===================================================================
---- trunk.orig/backend/umax_pp.c
-+++ trunk/backend/umax_pp.c
-@@ -419,7 +419,8 @@ umax_pp_auto_attach (SANEI_Config * conf
- * device name to use for attach try.
- */
- static SANE_Status
--umax_pp_configure_attach (SANEI_Config * config, const char *devname)
-+umax_pp_configure_attach (SANEI_Config * config, const char *devname,
-+ void __sane_unused__ *data)
- {
- const char *lp;
- SANE_Char *token;
-@@ -961,7 +962,7 @@ sane_init (SANE_Int * version_code, SANE
-
- /* generic configure and attach function */
- status = sanei_configure_attach (UMAX_PP_CONFIG_FILE, &config,
-- umax_pp_configure_attach);
-+ umax_pp_configure_attach, NULL);
-
- /* free option descriptors */
- for (i = 0; i < NUM_CFG_OPTIONS; i++)
-Index: trunk/backend/xerox_mfp.c
-===================================================================
---- trunk.orig/backend/xerox_mfp.c
-+++ trunk/backend/xerox_mfp.c
-@@ -1028,7 +1028,8 @@ list_one_device(SANE_String_Const devnam
-
- /* SANE API ignores return code of this callback */
- static SANE_Status
--list_conf_devices(UNUSED(SANEI_Config *config), const char *devname)
-+list_conf_devices(SANEI_Config __sane_unused__ *config, const char *devname,
-+ void __sane_unused__ *data)
- {
- return tr_from_devname(devname)->configure_device(devname, list_one_device);
- }
-@@ -1080,7 +1081,7 @@ sane_get_devices(const SANE_Device *** d
- config.count = 0;
- config.descriptors = NULL;
- config.values = NULL;
-- sanei_configure_attach(XEROX_CONFIG_FILE, &config, list_conf_devices);
-+ sanei_configure_attach(XEROX_CONFIG_FILE, &config, list_conf_devices, NULL);
-
- for (dev_count = 0, dev = devices_head; dev; dev = dev->next)
- dev_count++;
-Index: trunk/include/sane/sanei_config.h
-===================================================================
---- trunk.orig/include/sane/sanei_config.h
-+++ trunk/include/sane/sanei_config.h
-@@ -166,7 +166,9 @@ typedef struct
- extern SANE_Status sanei_configure_attach (
- const char *config_file,
- SANEI_Config *config,
-- SANE_Status (*config_attach)(SANEI_Config *config, const char *devname)
-+ SANE_Status (*config_attach)(SANEI_Config *config, const char *devname,
-+ void *data),
-+ void *data
- );
-
- /** Return the list of config directories, extracted from the SANE_CONFIG_DIR
-Index: trunk/sanei/sanei_config.c
-===================================================================
---- trunk.orig/sanei/sanei_config.c
-+++ trunk/sanei/sanei_config.c
-@@ -239,7 +239,8 @@ sanei_config_read (char *str, int n, FIL
- SANE_Status
- sanei_configure_attach (const char *config_file, SANEI_Config * config,
- SANE_Status (*attach) (SANEI_Config * config,
-- const char *devname))
-+ const char *devname, void *data),
-+ void *data)
- {
- SANE_Char line[PATH_MAX];
- SANE_Char *token, *string;
-@@ -443,7 +444,7 @@ sanei_configure_attach (const char *conf
- DBG (3, "sanei_configure_attach: trying to attach with '%s'\n",
- lp2);
- if(attach!=NULL)
-- attach (config, lp2);
-+ attach (config, lp2, data);
- }
- }
-
-Index: trunk/testsuite/sanei/sanei_config_test.c
-===================================================================
---- trunk.orig/testsuite/sanei/sanei_config_test.c
-+++ trunk/testsuite/sanei/sanei_config_test.c
-@@ -63,7 +63,8 @@ static const SANE_String_Const string_li
- static char *lastdevname = NULL;
-
- static SANE_Status
--check_config_attach (SANEI_Config * config, const char *devname)
-+check_config_attach (SANEI_Config * config, const char *devname,
-+ void __sane_unused__ *data)
- {
- /* silence compiler warning for now */
- if (config == NULL)
-@@ -97,7 +98,8 @@ inexistent_config (void)
- config.descriptors = NULL;
- config.values = NULL;
- status = sanei_configure_attach (CONFIG_PATH
-- "/data/inexistent.conf", &config, NULL);
-+ "/data/inexistent.conf", &config,
-+ NULL, NULL);
-
- /* check results */
- assert (status != SANE_STATUS_GOOD);
-@@ -114,7 +116,7 @@ null_config (void)
-
- status =
- sanei_configure_attach (CONFIG_PATH "/data/umax_pp.conf", NULL,
-- check_config_attach);
-+ check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -130,7 +132,7 @@ null_attach (void)
- SANE_Status status;
-
- status = sanei_configure_attach (CONFIG_PATH
-- "/data/umax_pp.conf", NULL, NULL);
-+ "/data/umax_pp.conf", NULL, NULL, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -151,7 +153,7 @@ empty_config (void)
- config.values = NULL;
- status =
- sanei_configure_attach (CONFIG_PATH "/data/empty.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -206,7 +208,7 @@ string_option (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/string.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -250,7 +252,7 @@ int_option (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/int.conf", &config,
-- check_config_attach);
-+ check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -293,7 +295,7 @@ wrong_range_int_option (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/wrong-range.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_INVAL);
-@@ -336,7 +338,7 @@ word_array_option (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/word-array.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -382,7 +384,7 @@ string_list_option (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/string-list.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -428,7 +430,7 @@ wrong_string_list_option (void)
- status =
- sanei_configure_attach (CONFIG_PATH
- "/data/wrong-string-list.conf", &config,
-- check_config_attach);
-+ check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_INVAL);
-@@ -563,7 +565,7 @@ umax_pp (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/umax_pp.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -631,7 +633,7 @@ wrong_bool_option (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/wrong-boolean.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_INVAL);
-@@ -696,7 +698,7 @@ bool_option (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/boolean.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -767,7 +769,7 @@ fixed_option (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/fixed.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
-@@ -814,7 +816,7 @@ wrong_fixed_option (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/wrong-fixed.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_INVAL);
-@@ -852,7 +854,7 @@ snapscan (void)
- /* configure and attach */
- status =
- sanei_configure_attach (CONFIG_PATH "/data/snapscan.conf",
-- &config, check_config_attach);
-+ &config, check_config_attach, NULL);
-
- /* check results */
- assert (status == SANE_STATUS_GOOD);
diff --git a/debian/patches/0170-return_empty_list_when_local_devices_requested.patch b/debian/patches/0170-return_empty_list_when_local_devices_requested.patch
deleted file mode 100644
index 5d0ba04..0000000
--- a/debian/patches/0170-return_empty_list_when_local_devices_requested.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-Description: eturn_empty_list_when_local_devices_requested
-Author: Barnabás Pőcze <pobrn@protonmail.com>
-Origin: backport, https://gitlab.com/sane-project/backends/-/commit/c946aa5a84297f33b30cddb0c89fcf375ed65d10
-Bug: https://gitlab.com/sane-project/backends/-/merge_requests/506
-Forwarded: not-needed
-Last-Update: 2020-09-19
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: trunk/backend/dell1600n_net.c
-===================================================================
---- trunk.orig/backend/dell1600n_net.c
-+++ trunk/backend/dell1600n_net.c
-@@ -233,6 +233,9 @@ static void JpegDecompTermSource (j_deco
- /* Results of last call to sane_get_devices */
- static struct DeviceRecord *gKnownDevices[MAX_SCANNERS];
-
-+/* Empty list for when network devices are not wanted */
-+static const SANE_Device *gEmptyDeviceList[1];
-+
- /* Array of open scanner device states.
- :NOTE: (int)SANE_Handle is an offset into this array */
- static struct ScannerState *gOpenScanners[MAX_SCANNERS];
-@@ -306,15 +309,17 @@ sane_get_devices (const SANE_Device ***
- const char *pVal;
- int valLen;
-
-+ if (local_only) {
-+ *device_list = gEmptyDeviceList;
-+ return SANE_STATUS_GOOD;
-+ }
-+
- /* init variables */
- ret = SANE_STATUS_GOOD;
- sock = 0;
- pDevice = NULL;
- optYes = 1;
-
-- if (local_only)
-- return ret;
--
- InitComBuf (&queryPacket);
-
- /* clear previous results */
diff --git a/debian/patches/0180-gt68xx_fix_use-after-free_two_memleaks.patch b/debian/patches/0180-gt68xx_fix_use-after-free_two_memleaks.patch
deleted file mode 100644
index 167a9e5..0000000
--- a/debian/patches/0180-gt68xx_fix_use-after-free_two_memleaks.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-Description: gt68xx: fix use-after-free and two mem leaks
-Author: <name and email of author, optional>
-Origin: https://gitlab.com/sane-project/backends/-/commit/63942f7a7473496d1160f02f5c1da3620525690d
-Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=980311
-Forwarded: not-needed
-Last-Update: 2021-06-24
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: trunk/backend/gt68xx.c
-===================================================================
---- trunk.orig/backend/gt68xx.c
-+++ trunk/backend/gt68xx.c
-@@ -1174,8 +1174,11 @@ static SANE_Status probe_gt68xx_devices(
- new_dev[i]->model->firmware_name);
- }
- if (i == 0)
-- DBG (5, "sane_init: firmware %s can't be loaded, set device "
-- "first\n", word);
-+ {
-+ DBG (5, "sane_init: firmware %s can't be loaded, set device "
-+ "first\n", word);
-+ free (word);
-+ }
- }
- else
- {
-@@ -1198,8 +1201,11 @@ static SANE_Status probe_gt68xx_devices(
- new_dev[i]->model->name, new_dev[i]->model->vendor);
- }
- if (i == 0)
-- DBG (5, "sane_init: can't set vendor name %s, set device "
-- "first\n", word);
-+ {
-+ DBG (5, "sane_init: can't set vendor name %s, set device "
-+ "first\n", word);
-+ free (word);
-+ }
- }
- else
- {
-@@ -1221,9 +1227,11 @@ static SANE_Status probe_gt68xx_devices(
- new_dev[i]->model->name, new_dev[i]->model->model);
- }
- if (i == 0)
-- DBG (5, "sane_init: can't set model name %s, set device "
-- "first\n", word);
-- free (word);
-+ {
-+ DBG (5, "sane_init: can't set model name %s, set device "
-+ "first\n", word);
-+ free (word);
-+ }
- }
- else
- {
diff --git a/debian/patches/0185-Change_output_from_sane-find-scanner.patch b/debian/patches/0185-Change_output_from_sane-find-scanner.patch
deleted file mode 100644
index ee4bc1a..0000000
--- a/debian/patches/0185-Change_output_from_sane-find-scanner.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-Description: Improve output for possible USB scanners
-Author: Ralph Little
-Origin: upstream, https://gitlab.com/sane-project/backends/-/commit/b701c499c9ce56c6bbea14b2fac2feea37f2410f
-Bug: https://gitlab.com/sane-project/backends/-/issues/575
-Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=983332
-Forwarded: not-needed
-Applied-Upstream: commit b701c499c9ce56c6bbea14b2fac2feea37f2410f
-Last-Update: 2022-02-21
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: trunk/tools/sane-find-scanner.c
-===================================================================
---- trunk.orig/tools/sane-find-scanner.c
-+++ trunk/tools/sane-find-scanner.c
-@@ -384,7 +384,7 @@ check_usb_file (char *file_name)
- {
- if (verbose > 1)
- printf (" open ok, vendor and product ids were identified\n");
-- printf ("found USB scanner (vendor=0x%04x, "
-+ printf ("found possible USB scanner (vendor=0x%04x, "
- "product=0x%04x) at %s\n", vendor, product, file_name);
- }
- else
-@@ -392,7 +392,7 @@ check_usb_file (char *file_name)
- if (verbose > 1)
- printf (" open ok, but vendor and product could NOT be "
- "identified\n");
-- printf ("found USB scanner (UNKNOWN vendor and product) "
-+ printf ("found possible USB scanner (UNKNOWN vendor and product) "
- "at device %s\n", file_name);
- unknown_found = SANE_TRUE;
- }
-@@ -676,7 +676,8 @@ check_libusb_device (struct usb_device *
- {
- char * chipset = check_usb_chip (dev, verbose, from_file);
-
-- printf ("found USB scanner (vendor=0x%04x", dev->descriptor.idVendor);
-+ printf ("found possible USB scanner (vendor=0x%04x",
-+ dev->descriptor.idVendor);
- if (vendor)
- printf (" [%s]", vendor);
- printf (", product=0x%04x", dev->descriptor.idProduct);
-@@ -1066,7 +1067,7 @@ check_libusb_device (libusb_device *dev,
- if(!from_file)
- chipset = check_usb_chip (verbose, desc, hdl, config0);
-
-- printf ("found USB scanner (vendor=0x%04x", vid);
-+ printf ("found possible USB scanner (vendor=0x%04x", vid);
- if (vendor)
- printf (" [%s]", vendor);
- printf (", product=0x%04x", pid);
diff --git a/debian/patches/0190-remove-kernel-driver-for-plustek_pp.patch b/debian/patches/0190-remove-kernel-driver-for-plustek_pp.patch
deleted file mode 100644
index 45377dc..0000000
--- a/debian/patches/0190-remove-kernel-driver-for-plustek_pp.patch
+++ /dev/null
@@ -1,2949 +0,0 @@
-Description: Remove kernel driver for plustek_pp
- Cherry-Picked from upstream.
-Origin: upstream
-Bug:https://gitlab.com/sane-project/backends/-/issues/578
-Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008275
-Forwarded: not-needed
-Last-Update: 2022-03-26 <YYYY-MM-DD, last update of the meta-information, optional>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: trunk/backend/plustek-pp.h
-===================================================================
---- trunk.orig/backend/plustek-pp.h
-+++ trunk/backend/plustek-pp.h
-@@ -235,11 +235,7 @@ typedef const struct mode_param
- #define _E_SEQUENCE (_FIRST_ERR-30) /* caller sequence does not match */
- #define _E_NO_ASIC (_FIRST_ERR-31) /* can't detect ASIC */
-
--#ifdef __KERNEL__
--# define _E_FAULT (-EFAULT)
--#else
- # define _E_FAULT (_E_INTERNAL) /* should never happen in userspace */
--#endif
-
- #define _E_LAMP_NOT_IN_POS (_FIRST_ERR-40)
- #define _E_LAMP_NOT_STABLE (_FIRST_ERR-41)
-@@ -471,10 +467,6 @@ typedef struct {
- #define _ScanMode_AverageOut 1 /* CCD averaged 2 pixels value for output*/
- #define _ScanMode_Mono 2 /* not color mode */
-
--
--#ifndef __KERNEL__
--
--
- #define PLUSTEK_CONFIG_FILE "plustek_pp.conf"
-
- #ifndef PATH_MAX
-@@ -631,7 +623,6 @@ typedef struct {
- AdjDef adj;
-
- } CnfDef, *pCnfDef;
--#endif /* guard __KERNEL__ */
-
- #endif /* guard __PLUSTEKPP_H__ */
-
-Index: trunk/backend/plustek-pp_dbg.h
-===================================================================
---- trunk.orig/backend/plustek-pp_dbg.h
-+++ trunk/backend/plustek-pp_dbg.h
-@@ -47,22 +47,11 @@
- /* #define _ASIC_98001_SIM */
-
- /*
-- * the print macros
-- */
--#ifdef __KERNEL__
--# define _PRINT printk
--#endif
--
--/*
- * some debug definitions
- */
- #ifdef DEBUG
--# ifndef __KERNEL__
- # include <assert.h>
- # define _ASSERT(x) assert(x)
--# else
--# define _ASSERT(x)
--# endif
-
- # ifndef DBG
- # define DBG(level, msg, args...) if ((dbg_level) & (level)) { \
-Index: trunk/backend/plustek-pp_detect.c
-===================================================================
---- trunk.orig/backend/plustek-pp_detect.c
-+++ trunk/backend/plustek-pp_detect.c
-@@ -97,11 +97,6 @@ static int detectScannerConnection( pSca
- UChar data, control, status;
- int retval = _E_NO_CONN;
-
--#ifdef __KERNEL__
-- DBG( DBG_LOW, "Dataport = 0x%04x\n", ps->IO.pbSppDataPort );
-- DBG( DBG_LOW, "Ctrlport = 0x%04x\n", ps->IO.pbControlPort );
--#endif
--
- detectResetPort( ps );
-
- /*
-@@ -177,11 +172,7 @@ static int detectScannerConnection( pSca
-
- /* work on the result */
- if ( _OK == retval ) {
--#ifdef __KERNEL__
-- ps->sCaps.wIOBase = ps->IO.pbSppDataPort;
--#else
- ps->sCaps.wIOBase = ps->pardev;
--#endif
- ps->PutToIdleMode( ps );
-
- } else {
-@@ -209,11 +200,7 @@ static int detectSetupBuffers( pScanData
- */
- if ( 0 == ps->TotalBufferRequire ) {
-
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "pt_drv: asic 0x%x probably not supported\n", ps->sCaps.AsicID);
-
- return _E_ALLOC; /* Out of memory */
-@@ -228,11 +215,7 @@ static int detectSetupBuffers( pScanData
-
- if ( NULL == ps->driverbuf ) {
-
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "pt_drv: Not enough kernel memory %d\n",
- ps->TotalBufferRequire);
- return _E_ALLOC; /* Out of memory */
-@@ -380,11 +363,7 @@ static int detectAsic98001( pScanData ps
-
- return detectScannerConnection( ps );
- #else
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "!!!! WARNING, have a look at function detectAsic98001() !!!!\n" );
- ps->sCaps.AsicID = _ASIC_IS_98001;
- ps->sCaps.wIOBase = ps->IO.pbSppDataPort;
-@@ -434,11 +413,7 @@ _LOC int DetectScanner( pScanData ps, in
-
- /* read Register 0x18 (AsicID Register) of Asic9800x based devices */
- #ifdef _ASIC_98001_SIM
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "!!!! WARNING, SW-Emulation active !!!!\n" );
- asic = _ASIC_IS_98001;
- #else
-Index: trunk/backend/plustek-pp_hwdefs.h
-===================================================================
---- trunk.orig/backend/plustek-pp_hwdefs.h
-+++ trunk/backend/plustek-pp_hwdefs.h
-@@ -586,19 +586,6 @@ typedef struct
- * structure to hold IO port specific stuff
- */
- typedef struct {
--
--#ifdef __KERNEL__
-- pFnOut fnOut;
-- pFnIn fnIn;
--
-- UShort pbSppDataPort;
-- UShort pbEppDataPort;
--
-- UShort pbStatusPort;
-- UShort pbControlPort;
-- UShort pbAddrOffsetPort;
--#endif
--
- UShort portBase;
- UShort portMode;
- UShort lastPortMode;
-Index: trunk/backend/plustek-pp_image.c
-===================================================================
---- trunk.orig/backend/plustek-pp_image.c
-+++ trunk/backend/plustek-pp_image.c
-@@ -1288,11 +1288,7 @@ static Bool imageP98003ReadOneImageLine(
-
- } while( !MiscCheckTimer( &timer ));
-
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "Timeout - Scanner malfunction !!\n" );
- MotorToHomePosition(ps);
-
-Index: trunk/backend/plustek-pp_io.c
-===================================================================
---- trunk.orig/backend/plustek-pp_io.c
-+++ trunk/backend/plustek-pp_io.c
-@@ -257,21 +257,11 @@ static Bool fnEPPRead( pScanData ps, pUC
-
- if( _IS_ASIC98(ps->sCaps.AsicID)) {
-
--#ifndef __KERNEL__
- sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAIN );
--#else
-- _OUTB_CTRL( ps, (_CTRL_GENSIGNAL + _CTRL_DIRECTION));
-- _DO_UDELAY( 1 );
--#endif
- for( i = 0; i < ulSize; i++ )
- pBuffer[i] = _INB_EPPDATA( ps );
-
--#ifndef __KERNEL__
- sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAOUT );
--#else
-- _OUTB_CTRL( ps, _CTRL_GENSIGNAL );
-- _DO_UDELAY( 1 );
--#endif
- } else {
-
- for( i = 0; i < ulSize; i++ )
-@@ -290,18 +280,12 @@ static Bool fnBiDirRead( pScanData ps, p
- start = _CTRL_START_BIDIREAD;
- end = _CTRL_END_BIDIREAD;
-
--#ifndef __KERNEL__
- sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAIN );
-
- if( !sanei_pp_uses_directio()) {
- start &= ~_CTRL_DIRECTION;
- end &= ~_CTRL_DIRECTION;
- }
--#else
-- if( _IS_ASIC98(ps->sCaps.AsicID)) {
-- _OUTB_CTRL( ps, (_CTRL_GENSIGNAL + _CTRL_DIRECTION));
-- }
--#endif
-
- switch( ps->IO.delay ) {
-
-@@ -341,13 +325,7 @@ static Bool fnBiDirRead( pScanData ps, p
-
- }
-
--#ifndef __KERNEL__
- sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAOUT );
--#else
-- if( _IS_ASIC98(ps->sCaps.AsicID)) {
-- _OUTB_CTRL( ps, _CTRL_GENSIGNAL );
-- }
--#endif
- return _TRUE;
- }
-
-@@ -953,45 +931,4 @@ _LOC void IOReadScannerImageData( pScanD
- ps->OpenScanPath( ps );
- }
-
--#ifdef __KERNEL__
--
--/** the wrapper functions to support delayed and non-delayed I/O
-- */
--_LOC void IOOut( Byte data, UShort port )
--{
-- DBG( DBG_IOF, "outb(0x%04x, 0x%02x)\n", port, data );
-- outb( data, port );
--}
--
--_LOC void IOOutDelayed( Byte data, UShort port )
--{
-- DBG( DBG_IOF, "outb_p(0x%04x, 0x%02x)\n", port, data );
-- outb_p( data, port );
--}
--
--_LOC Byte IOIn( UShort port )
--{
--#ifdef DEBUG
-- Byte data = inb( port );
--
-- DBG( DBG_IOF, "inb(0x%04x) = 0x%02x\n", port, data );
-- return data;
--#else
-- return inb( port );
--#endif
--}
--
--_LOC Byte IOInDelayed( UShort port )
--{
--#ifdef DEBUG
-- Byte data = inb_p( port );
--
-- DBG( DBG_IOF, "inb_p(0x%04x) = 0x%02x\n", port, data );
-- return data;
--#else
-- return inb_p( port );
--#endif
--}
--#endif /* guard __KERNEL__ */
--
- /* END PLUSTEK-PP_IO.C ......................................................*/
-Index: trunk/backend/plustek-pp_misc.c
-===================================================================
---- trunk.orig/backend/plustek-pp_misc.c
-+++ trunk/backend/plustek-pp_misc.c
-@@ -77,27 +77,11 @@
-
- /*************************** some definitions ********************************/
-
--#ifndef __KERNEL__
- # define PPA_PROBE_SPP 0x0001
- # define PPA_PROBE_PS2 0x0002
- # define PPA_PROBE_ECR 0x0010
- # define PPA_PROBE_EPP17 0x0100
- # define PPA_PROBE_EPP19 0x0200
--#else
--
--/* the parport driver in Kernel 2.4 has changed. It does report the
-- * possible modes in a different, more general way. As long, as
-- * we do not use the parport-module change mode facility, I assume
-- * the following correlations
-- */
--#if defined LINUX_24 || defined LINUX_26
--# define PARPORT_MODE_PCPS2 PARPORT_MODE_TRISTATE
--# define PARPORT_MODE_PCEPP PARPORT_MODE_EPP
--# define PARPORT_MODE_PCECPPS2 PARPORT_MODE_TRISTATE
--# define PARPORT_MODE_PCECPEPP PARPORT_MODE_EPP
--# define PARPORT_MODE_PCECR PARPORT_MODE_ECP
--#endif
--#endif
-
- #define _PP_A 16807 /**< multiplier */
- #define _PP_M 2147483647L /**< 2**31 - 1 */
-@@ -107,298 +91,10 @@
- static int port_feature = 0;
- static long randomnum = 1;
-
--#ifdef __KERNEL__
--static int portIsClaimed[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
--
--MODELSTR; /**< a static char array (see plustek-pp.h) */
--
--#else
- static int portIsClaimed[_MAX_PTDEVS] = { 0, 0, 0, 0 };
--#endif
-
- /*************************** local functions *********************************/
-
--#ifdef __KERNEL__
--#ifdef LINUX_26
--
--static pScanData __ps = NULL;
--static int __pa = -1;
--
--/** callback from parport driver
-- */
--static void misc_attach(struct parport *port)
--{
-- DBG( DBG_LOW, "misc_attach\n" );
--
-- __ps->pp = NULL;
-- if( port->base == (unsigned long)__pa ) {
-- DBG( DBG_LOW, "Requested port (0x%02x) found\n", __pa );
-- DBG( DBG_LOW, "Port mode reported: (0x%04x)\n", port->modes );
-- __ps->pp = port;
-- }
--}
--
--static void misc_detach( struct parport *port )
--{
-- DBG( DBG_LOW, "misc_detach\n" );
--}
--
--static struct parport_driver pt_drv = {
-- .name = "pt_drv",
-- .attach = misc_attach,
-- .detach = misc_detach,
--};
--#endif
--
--/** display the available port-modes
-- */
--#ifdef DEBUG
--static void miscShowPortModes( int modes )
--{
-- DBG( DBG_LOW, "parport-modi:" );
--
-- if( modes & PARPORT_MODE_PCSPP )
-- DBG( DBG_LOW, " SPP" );
--
-- if( modes & PARPORT_MODE_PCPS2 )
-- DBG( DBG_LOW, " PS/2" );
--
-- if( modes & PARPORT_MODE_PCEPP )
-- DBG( DBG_LOW, " EPP" );
--
-- if( modes & PARPORT_MODE_PCECR )
-- DBG( DBG_LOW, " ECP" );
--
-- if( modes & PARPORT_MODE_PCECPEPP )
-- DBG( DBG_LOW, " EPP(ECP)" );
--
-- if( modes & PARPORT_MODE_PCECPPS2 )
-- DBG( DBG_LOW, " PS/2(ECP)" );
--
-- DBG( DBG_LOW, "\n" );
--}
--#endif
--
--/** probe the parallel port
-- */
--static int initPortProbe( pScanData ps )
--{
-- int retv = 0;
--
-- /* clear the controls */
-- ps->IO.lastPortMode = 0xFFFF;
--
-- if( NULL != ps->pardev )
-- retv = ps->pardev->port->modes;
-- return retv;
--}
--
--/** will be called by the parport module when we already have access, but
-- * another module wants access to the port...
-- */
--static int miscPreemptionCallback( pVoid data )
--{
-- pScanData ps = (pScanData)data;
--
-- if( NULL != ps ) {
--
-- /* never release during scanning */
-- if( ps->DataInf.dwScanFlag & _SCANNER_SCANNING ) {
-- DBG( DBG_LOW, "no way!!!\n" );
-- return 1;
-- }
-- }
--
-- /* let the port go...*/
-- return 0;
--}
--
--/** depending on the reported possible port modes, we try to set a faster mode
-- * than SPP
-- */
--static int miscSetFastMode( pScanData ps )
--{
-- UChar a, b;
--
-- /*
-- * when previously found the EPP mode, break right here
-- */
-- if (( _PORT_EPP == ps->IO.portMode ) && (!(port_feature & PARPORT_MODE_PCECR)))
-- return _OK;
--
-- /* CHECK REMOVE: from here we should have SPP (Paranoia Code !) */
-- if (( _PORT_SPP != ps->IO.portMode ) && (!(port_feature & PARPORT_MODE_PCECR)))
-- return _OK;
--
-- DBG(DBG_LOW, "Trying faster mode...\n" );
--
-- /*
-- * ECP mode usually has sub-modes of EPP and/or PS2.
-- * First we try to set EPP
-- */
-- if((port_feature & PARPORT_MODE_PCECR) &&
-- (port_feature & PARPORT_MODE_PCECPEPP)){
--
-- DBG(DBG_LOW, "Attempting to set EPP from ECP mode.\n" );
--
-- a = _INB_ECTL(ps); /* get current ECR */
-- ps->IO.lastPortMode = a; /* save it for restoring later */
-- a = (a & 0x1F) | 0x80; /* set to EPP */
-- _OUTB_ECTL(ps, a); /* write it back */
-- _DO_UDELAY(1);
--
-- /*
-- * It is probably unnecessary to
-- * do this check but it makes me feel better
-- */
-- b = _INB_ECTL(ps); /* check to see if port set */
-- if( a == b ) {
-- DBG( DBG_LOW, "Port is set to (ECP) EPP mode.\n" );
-- ps->IO.portMode = _PORT_EPP;
-- return _OK;
--
-- } else {
-- DBG( DBG_LOW, "Port could not be set to (ECP) EPP mode. "
-- "Using SPP mode.\n" );
-- _OUTB_ECTL(ps,(Byte)ps->IO.lastPortMode); /* restore */
-- _DO_UDELAY(1);
-- ps->IO.portMode = _PORT_SPP;
--
-- /* go ahead and try with other settings...*/
-- }
-- }
--
-- /* If port cannot be set to EPP, try PS2 */
-- if((port_feature & PARPORT_MODE_PCECR) &&
-- (port_feature & PARPORT_MODE_PCECPPS2)) {
--
-- DBG(DBG_LOW, "Attempting to set PS2 from ECPPS2 mode.\n" );
--
-- a = _INB_ECTL(ps); /* get current ECR */
-- ps->IO.lastPortMode = a; /* save it for restoring later */
--
-- /* set to Fast Centronics/bi-directional/PS2 */
-- a = (a & 0x1F) | 0x20;
-- _OUTB_ECTL(ps,a); /* write it back */
-- _DO_UDELAY(1);
--
-- /*
-- * It is probably unnecessary to do this check
-- * but it makes me feel better
-- */
-- b = _INB_ECTL(ps); /* check to see if port set */
-- if (a == b) {
-- DBG(DBG_LOW, "Port is set to (ECP) PS2 bidirectional mode.\n");
-- ps->IO.portMode = _PORT_BIDI;
-- return _OK;
-- } else {
-- DBG(DBG_LOW, "Port could not be set to (ECP) PS2 mode. "
-- "Using SPP mode.\n");
-- a = ps->IO.lastPortMode & 0x1F;
-- _OUTB_ECTL(ps, a); /* set ECP ctrl to SPP */
-- _DO_UDELAY(1);
-- ps->IO.portMode = _PORT_SPP;
--
-- /* next mode, last attempt... */
-- }
-- }
--
-- /*
-- * Some BIOS/cards have only a Bi-directional/PS2 mode (no EPP).
-- * Make one last attempt to set to PS2 mode.
-- */
-- if ( port_feature & PARPORT_MODE_PCPS2 ){
--
-- DBG(DBG_LOW, "Attempting to set PS2 mode.\n" );
--
-- a = _INB_CTRL(ps); /* get current setting of control register*/
-- ps->IO.lastPortMode = a; /* save it for restoring later */
-- a = a | 0x20; /* set bit 5 of control reg */
-- _OUTB_CTRL(ps,a); /* set to Fast Centronics/bi-directional/PS2 */
-- _DO_UDELAY(1);
-- a = 0;
--
-- _OUTB_DATA(ps,0x55);
-- _DO_UDELAY(1);
-- if ((inb(ps->IO.portBase)) != 0x55) /* read data */
-- a++;
--
-- _OUTB_DATA(ps,0xAA);
-- _DO_UDELAY(1);
--
-- if (_INB_DATA(ps) != 0xAA) /* read data */
-- a++;
--
-- if( 2 == a ) {
-- DBG(DBG_LOW, "Port is set to PS2 bidirectional mode.\n");
-- ps->IO.portMode = _PORT_BIDI;
-- return _OK;
--
-- } else {
-- DBG(DBG_LOW, "Port could not be set to PS2 mode. "
-- "Using SPP mode.\n");
-- _OUTB_CTRL(ps,(Byte)ps->IO.lastPortMode); /* restore */
-- _DO_UDELAY(1);
-- ps->IO.portMode = _PORT_SPP;
-- }
-- }
--
-- /* reaching this point, we're back in SPP mode and there's no need
-- * to restore at shutdown...
-- */
-- ps->IO.lastPortMode = 0xFFFF;
--
-- return _OK;
--}
--
--/** check the state of the par-port and switch to EPP-mode if possible
-- */
--static int miscSetPortMode( pScanData ps )
--{
-- /* try to detect the port settings, SPP seems to work in any case ! */
-- port_feature = initPortProbe( ps );
--
--#ifdef DEBUG
-- miscShowPortModes( port_feature );
--#endif
--
-- switch( ps->IO.forceMode ) {
--
-- case 1:
-- DBG( DBG_LOW, "Use of SPP-mode enforced\n" );
-- ps->IO.portMode = _PORT_SPP;
-- return _OK;
-- break;
--
-- case 2:
-- DBG( DBG_LOW, "Use of EPP-mode enforced\n" );
-- ps->IO.portMode = _PORT_EPP;
-- return _OK;
-- break;
--
-- default:
-- break;
-- }
--
-- if( !(port_feature & PARPORT_MODE_PCEPP)) {
--
-- if( !(port_feature & PARPORT_MODE_PCSPP )) {
-- _PRINT("\nThis Port supports not the SPP- or EPP-Mode\n" );
-- _PRINT("Please activate SPP-Mode, EPP-Mode or\nEPP + ECP-Mode!\n");
-- return _E_NOSUPP;
-- } else {
-- DBG(DBG_LOW, "Using SPP-mode\n" );
-- ps->IO.portMode = _PORT_SPP;
-- }
-- } else {
-- DBG(DBG_LOW, "Using EPP-mode\n" );
-- ps->IO.portMode = _PORT_EPP;
-- }
--
-- /* else try to set to a faster mode than SPP */
-- return miscSetFastMode( ps );
--}
--#endif
-
- /** miscNextLongRand() -- generate 2**31-2 random numbers
- **
-@@ -488,34 +184,6 @@ _LOC int MiscReinitStruct( pScanData ps
- */
- _LOC int MiscInitPorts( pScanData ps, int port )
- {
--#ifdef __KERNEL__
-- int status;
--
-- if( NULL == ps )
-- return _E_NULLPTR;
--
-- /*
-- * Get access to the ports
-- */
-- ps->IO.portBase = (UShort)port;
--
-- status = miscSetPortMode(ps);
--
-- if( _OK != status ) {
-- ps->sCaps.wIOBase = _NO_BASE;
-- ps->IO.portBase = _NO_BASE;
-- return status;
-- }
--
-- /*
-- * the port settings
-- */
-- ps->IO.pbSppDataPort = (UShort)port;
-- ps->IO.pbStatusPort = (UShort)port+1;
-- ps->IO.pbControlPort = (UShort)port+2;
-- ps->IO.pbEppDataPort = (UShort)port+4;
--
--#else
- int mode, mts;
-
- if( NULL == ps )
-@@ -560,7 +228,6 @@ _LOC int MiscInitPorts( pScanData ps, in
-
- sanei_pp_setmode( ps->pardev, mts );
- _VAR_NOT_USED( port );
--#endif
- return _OK;
- }
-
-@@ -568,11 +235,6 @@ _LOC int MiscInitPorts( pScanData ps, in
- */
- _LOC void MiscRestorePort( pScanData ps )
- {
--#ifdef __KERNEL__
-- if( 0 == ps->IO.pbSppDataPort )
-- return;
--#endif
--
- DBG(DBG_LOW,"MiscRestorePort()\n");
-
- /* don't restore if not necessary */
-@@ -582,19 +244,9 @@ _LOC void MiscRestorePort( pScanData ps
- }
-
- /*Restore Port-Mode*/
--#ifdef __KERNEL__
-- if( port_feature & PARPORT_MODE_PCECR ){
-- _OUTB_ECTL( ps, (Byte)ps->IO.lastPortMode );
-- _DO_UDELAY(1);
-- } else {
-- _OUTB_CTRL( ps, (Byte)ps->IO.lastPortMode );
-- _DO_UDELAY(1);
-- }
--#else
- if( port_feature & PPA_PROBE_ECR ){
- _OUTB_ECTL(ps,ps->IO.lastPortMode);
- }
--#endif
- }
-
- /** Initializes a timer.
-@@ -605,11 +257,7 @@ _LOC void MiscStartTimer( TimerDef *time
- {
- struct timeval start_time;
-
--#ifdef __KERNEL__
-- _GET_TIME( &start_time );
--#else
- gettimeofday(&start_time, NULL);
--#endif
-
- *timer = (TimerDef)start_time.tv_sec * 1000000 + (TimerDef)start_time.tv_usec + us;
- }
-@@ -624,21 +272,14 @@ _LOC int MiscCheckTimer( TimerDef *timer
- {
- struct timeval current_time;
-
--#ifdef __KERNEL__
-- _GET_TIME( &current_time );
--#else
- gettimeofday(&current_time, NULL);
--#endif
-
- if ((TimerDef)current_time.tv_sec * 1000000 + (TimerDef)current_time.tv_usec > *timer) {
- return _E_TIMEOUT;
- } else {
--#ifdef __KERNEL__
-- schedule();
- /*#else
- sched_yield();
- */
--#endif
- return _OK;
- }
- }
-@@ -673,65 +314,8 @@ _LOC Bool MiscAllPointersSet( pScanData
- */
- _LOC int MiscRegisterPort( pScanData ps, int portAddr )
- {
--#ifndef __KERNEL__
- DBG( DBG_LOW, "Assigning port handle %i\n", portAddr );
- ps->pardev = portAddr;
--#else
--
--#ifdef LINUX_26
-- __ps = ps;
-- __pa = portAddr;
--
-- DBG( DBG_LOW, "Requested port at 0x%02x\n", portAddr );
--
-- if( parport_register_driver(&pt_drv)) {
-- /* Failed; nothing we can do. */
-- return _E_REGISTER;
-- }
--
--#else
-- struct parport *pp = NULL;
--
-- DBG( DBG_LOW, "Requested port at 0x%02x\n", portAddr );
--
-- pp = parport_enumerate();
-- ps->pardev = NULL;
--
-- if( NULL == pp ) {
-- return _E_PORTSEARCH;
-- }
--
-- /* go through the list
-- */
-- for( ps->pp = NULL; NULL != pp; ) {
--
-- if( pp->base == (unsigned long)portAddr ) {
-- DBG( DBG_LOW, "Requested port (0x%02x) found\n", portAddr );
-- DBG( DBG_LOW, "Port mode reported: (0x%04x)\n", pp->modes );
-- ps->pp = pp;
-- break;
-- }
-- pp = pp->next;
-- }
--#endif
--
-- if( NULL == ps->pp ) {
-- printk("PORT not found!!!\n");
-- return _E_NO_PORT;
-- }
--
-- /*
-- * register this device
-- */
-- ps->pardev = parport_register_device( ps->pp, "Plustek Driver",
-- miscPreemptionCallback, NULL, NULL, 0, (pVoid)ps );
--
-- if( NULL == ps->pardev ) {
-- return _E_REGISTER;
-- }
--
-- DBG( DBG_LOW, "Port for device %u registered\n", ps->devno );
--#endif
-
- portIsClaimed[ps->devno] = 0;
- return _OK;
-@@ -741,17 +325,7 @@ _LOC int MiscRegisterPort( pScanData ps,
- */
- _LOC void MiscUnregisterPort( pScanData ps )
- {
--#ifdef __KERNEL__
-- if( NULL != ps->pardev ) {
-- DBG( DBG_LOW, "Port unregistered\n" );
-- parport_unregister_device( ps->pardev );
-- }
--#ifdef LINUX_26
-- parport_unregister_driver( &pt_drv );
--#endif
--#else
- sanei_pp_close( ps->pardev );
--#endif
- }
-
- /** Try to claim the port
-@@ -763,11 +337,7 @@ _LOC int MiscClaimPort( pScanData ps )
- if( 0 == portIsClaimed[ps->devno] ) {
-
- DBG( DBG_HIGH, "Try to claim the parport\n" );
--#ifdef __KERNEL__
-- if( 0 != parport_claim( ps->pardev )) {
--#else
- if( SANE_STATUS_GOOD != sanei_pp_claim( ps->pardev )) {
--#endif
- return _E_BUSY;
- }
- }
-@@ -785,11 +355,7 @@ _LOC void MiscReleasePort( pScanData ps
-
- if( 0 == portIsClaimed[ps->devno] ) {
- DBG( DBG_HIGH, "Releasing parport\n" );
--#ifdef __KERNEL__
-- parport_release( ps->pardev );
--#else
- sanei_pp_release( ps->pardev );
--#endif
- }
- }
- }
-Index: trunk/backend/plustek-pp_procs.h
-===================================================================
---- trunk.orig/backend/plustek-pp_procs.h
-+++ trunk/backend/plustek-pp_procs.h
-@@ -219,13 +219,6 @@ _LOC void IORegisterDirectToScanner( pSc
- _LOC void IOSoftwareReset ( pScanData ps );
- _LOC void IOReadScannerImageData ( pScanData ps, pUChar pBuf, ULong size );
-
--#ifdef __KERNEL__
--_LOC void IOOut ( Byte data, UShort port );
--_LOC void IOOutDelayed( Byte data, UShort port );
--_LOC Byte IOIn ( UShort port );
--_LOC Byte IOInDelayed ( UShort port );
--#endif
--
- /*
- * implementation in plustek-pp_tpa.c
- */
-@@ -238,16 +231,6 @@ _LOC void TPAP98003Reshading ( p
- */
- _LOC void ScaleX( pScanData ps, pUChar inBuf, pUChar outBuf );
-
--/*
-- * implementation in plustek-pp_procfs.c (Kernel-mode only)
-- */
--#ifdef __KERNEL__
--int ProcFsInitialize ( void );
--void ProcFsShutdown ( void );
--void ProcFsRegisterDevice ( pScanData ps );
--void ProcFsUnregisterDevice( pScanData ps );
--#endif
--
- #endif /* guard __PROCS_H__ */
-
- /* END PLUSTEK-PP_PROCS.H ...................................................*/
-Index: trunk/backend/plustek-pp_ptdrv.c
-===================================================================
---- trunk.orig/backend/plustek-pp_ptdrv.c
-+++ trunk/backend/plustek-pp_ptdrv.c
-@@ -94,52 +94,13 @@
- * If you do not wish that, delete this exception notice.
- * <hr>
- */
--#ifdef __KERNEL__
--# include <linux/module.h>
--# include <linux/version.h>
--
--# ifdef CONFIG_DEVFS_FS
--# include <linux/devfs_fs_kernel.h>
--# if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,69))
--# define DEVFS_26_STYLE
--# endif
--# endif
--#endif
--
- #include "plustek-pp_scan.h"
-
--#ifdef __KERNEL__
--# include <linux/param.h>
--#endif
--
- /****************************** static vars **********************************/
-
- /* default port is at 0x378 */
- static int port[_MAX_PTDEVS] = { 0x378, 0, 0, 0 };
-
--#ifdef __KERNEL__
--static pScanData PtDrvDevices[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = NULL};
--
--/* default is 180 secs for lamp switch off */
--static int lampoff[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 180 };
--
--/* warmup period for lamp (30 secs) */
--static int warmup[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 30 };
--
--/* switch lamp off on unload (default = no)*/
--static int lOffonEnd[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
--
--/* model override (0-->none) */
--static UShort mov[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
--
--/* forceMode (0--> auto, 1: SPP, 2:EPP, others: auto) */
--static UShort forceMode[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
--
--/* to use delayed I/O for each device */
--static Bool slowIO[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = _FALSE };
--
--#else
--
- static pScanData PtDrvDevices[_MAX_PTDEVS]= { NULL, NULL, NULL, NULL };
- static int lampoff[_MAX_PTDEVS] = { 180, 180, 180, 180 };
- static int warmup[_MAX_PTDEVS] = { 30, 30, 30, 30 };
-@@ -147,140 +108,14 @@ static int lOffonEnd[_MAX_PTDEVS]
- static UShort mov[_MAX_PTDEVS] = { 0, 0, 0, 0 };
- static UShort forceMode[_MAX_PTDEVS] = { 0, 0, 0, 0 };
-
--#endif
--
- /* timers for warmup checks */
- static TimerDef toTimer[_MAX_PTDEVS];
-
--#ifndef __KERNEL__
- static Bool PtDrvInitialized = _FALSE;
- #ifdef HAVE_SETITIMER
- static struct itimerval saveSettings;
- #endif
--#else
--static Bool deviceScanning = _FALSE;
--
--static struct timer_list tl[_MAX_PTDEVS];
--
--/* for calculation of the timer expiration */
--extern volatile unsigned long jiffies;
--
--/* the parameter interface
-- */
--#if ((LINUX_VERSION_CODE > 0x020111) && defined(MODULE))
--MODULE_AUTHOR("Gerhard Jaeger <gerhard@gjaeger.de>");
--MODULE_DESCRIPTION("Plustek parallelport-scanner driver");
--
--/* addresses this 'new' license feature... */
--#ifdef MODULE_LICENSE
--MODULE_LICENSE("GPL");
--#endif
--
--#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13))
--MODULE_PARM(port, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
--MODULE_PARM(lampoff, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
--MODULE_PARM(warmup,"1-" __MODULE_STRING(_MAX_PTDEVS) "i");
--MODULE_PARM(lOffonEnd, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
--MODULE_PARM(mov, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
--MODULE_PARM(slowIO,"1-" __MODULE_STRING(_MAX_PTDEVS) "i");
--MODULE_PARM(forceMode,"1-" __MODULE_STRING(_MAX_PTDEVS) "i");
--
--#else
--
--static int array_len = _MAX_PTDEVS;
--
--module_param_array(port, int, &array_len, 0);
--module_param_array(lampoff, int, &array_len, 0);
--module_param_array(warmup, int, &array_len, 0);
--module_param_array(lOffonEnd, int, &array_len, 0);
--module_param_array(mov, ushort, &array_len, 0);
--module_param_array(slowIO, int, &array_len, 0);
--module_param_array(forceMode, ushort, &array_len, 0);
--
--#endif
--
--
--MODULE_PARM_DESC(port, "I/O base address of parport");
--MODULE_PARM_DESC(lampoff, "Lamp-Off timer preset in seconds");
--MODULE_PARM_DESC(warmup, "Minimum warmup time in seconds");
--MODULE_PARM_DESC(lOffonEnd, "1 - switchoff lamp on unload");
--MODULE_PARM_DESC(mov, "Modell-override switch");
--MODULE_PARM_DESC(slowIO, "0 = Fast I/O, 1 = Delayed I/O");
--MODULE_PARM_DESC(forceMode, "0 = use auto detection, "
-- "1 = use SPP mode, 2 = use EPP mode");
--#endif
--
--#if defined (CONFIG_DEVFS_FS)
--# ifndef (DEVFS_26_STYLE)
-- static devfs_handle_t devfs_handle = NULL;
--# endif
--#else
--# ifdef LINUX_26
-- static class_t *ptdrv_class;
--# endif
--#endif
--
--/*
-- * the module interface
-- */
--static int pt_drv_open ( struct inode *, struct file *);
--static CLOSETYPE pt_drv_close( struct inode *, struct file *);
--
--#ifdef LINUX_20
-- static int pt_drv_read( struct inode*, struct file*, char*, int );
-- static int pt_drv_write( struct inode*, struct file*, const char*, int );
--#else
-- static ssize_t pt_drv_read ( struct file *file,
-- char *buffer, size_t count, loff_t *);
-- static ssize_t pt_drv_write( struct file *file,
-- const char *buffer, size_t tmp,loff_t *count);
--#endif
--
--#ifdef NOLOCK_IOCTL
-- static long pt_drv_ioctl( struct file *, UInt, unsigned long );
--#else
-- static int pt_drv_ioctl( struct inode *, struct file *, UInt, unsigned long );
--#endif
--
--
--/*
-- * the driver interface
-- */
--#ifdef LINUX_20
--
--static struct file_operations pt_drv_fops =
--{
-- NULL, /* seek */
-- pt_drv_read, /* read */
-- pt_drv_write, /* write */
-- NULL, /* readdir */
-- NULL, /* select */
-- pt_drv_ioctl, /* ioctl */
-- NULL, /* mmap */
-- pt_drv_open, /* open */
-- pt_drv_close, /* release */
-- NULL, /* fsync */
-- NULL, /* fasync */
-- NULL, /* check_media_change */
-- NULL /* revalidate */
--};
--
--#else /* 2.2.x and higher stuff */
--
--static struct file_operations pt_drv_fops = {
--#ifdef LINUX_24
-- owner: THIS_MODULE,
--#endif
-- read: pt_drv_read,
-- write: pt_drv_write,
-- IOCTL: pt_drv_ioctl,
-- open: pt_drv_open,
-- release: pt_drv_close,
--};
-
--#endif
--
--#endif /* guard __KERNEL */
-
- /****************************** some prototypes ******************************/
-
-@@ -288,23 +123,6 @@ static void ptdrvStartLampTimer( pScanDa
-
- /****************************** local functions ******************************/
-
--#ifdef __KERNEL__
--/** depending on the device, return the data structure
-- */
--static pScanData get_pt_from_inode(struct inode *ip)
--{
-- int minor = _MINOR(ip);
--
-- /*
-- * unit out of range
-- */
-- if (minor >= _MAX_PTDEVS )
-- return NULL;
--
-- return( PtDrvDevices[minor] );
--}
--#endif
--
- /** copy user-space data into kernel memory
- */
- static int getUserPtr(const pVoid useraddr, pVoid where, UInt size )
-@@ -315,32 +133,9 @@ static int getUserPtr(const pVoid userad
- if((NULL == useraddr) || ( 0 == size))
- return _E_INVALID;
-
--#ifdef __KERNEL__
-- if ((err = verify_area_20(VERIFY_READ, useraddr, size)))
-- return err;
--#endif
--
- switch (size) {
--#ifdef __KERNEL__
-- case sizeof(u_char):
-- GET_USER_RET(*(u_char *)where, (u_char *) useraddr, -EFAULT);
-- break;
--
-- case sizeof(u_short):
-- GET_USER_RET(*(u_short *)where, (u_short *) useraddr, -EFAULT);
-- break;
--
-- case sizeof(u_long):
-- GET_USER_RET(*(u_long *)where, (u_long *) useraddr, -EFAULT);
-- break;
--
-- default:
-- if (copy_from_user(where, useraddr, size))
-- return -EFAULT;
--#else
- default:
- memcpy( where, useraddr, size );
--#endif
- }
- return err;
- }
-@@ -354,20 +149,11 @@ static int putUserPtr( const pVoid ptr,
- if (NULL == useraddr)
- return _E_INVALID;
-
--#ifdef __KERNEL__
-- if ((err = verify_area_20(VERIFY_WRITE, useraddr, size)))
-- return err;
--
-- if (copy_to_user(useraddr, ptr, size ))
-- return -EFAULT;
--#else
- memcpy( useraddr, ptr, size );
--#endif
-
- return err;
- }
-
--#ifndef __KERNEL__
- static unsigned long copy_from_user( pVoid dest, pVoid src, unsigned long len )
- {
- memcpy( dest, src, len );
-@@ -379,37 +165,16 @@ static unsigned long copy_to_user( pVoid
- memcpy( dest, src, len );
- return 0;
- }
--#endif
-
- /**
- */
- static int putUserVal(const ULong value, pVoid useraddr, UInt size)
- {
--#ifdef __KERNEL__
-- int err;
--#endif
--
- if (NULL == useraddr)
- return _E_INVALID;
-
--#ifdef __KERNEL__
-- if ((err = verify_area_20(VERIFY_WRITE, useraddr, size)))
-- return err;
--#endif
--
- switch (size) {
-
--#ifdef __KERNEL__
-- case sizeof(u_char):
-- PUT_USER_RET((u_char)value, (u_char *) useraddr, -EFAULT);
-- break;
-- case sizeof(u_short):
-- PUT_USER_RET((u_short)value, (u_short *) useraddr, -EFAULT);
-- break;
-- case sizeof(u_long):
-- PUT_USER_RET((u_long)value, (u_long *) useraddr, -EFAULT);
-- break;
--#else
- case sizeof(UChar):
- *(pUChar)useraddr = (UChar)value;
- break;
-@@ -420,7 +185,6 @@ static int putUserVal(const ULong value,
- *(pULong)useraddr = (ULong)value;
- break;
-
--#endif
- default:
- return _E_INVALID;
- }
-@@ -506,22 +270,14 @@ static void ptdrvLampWarmup( pScanData p
-
- /**
- */
--#ifdef __KERNEL__
--static void ptdrvLampTimerIrq( unsigned long ptr )
--#else
- static void ptdrvLampTimerIrq( int sig_num )
--#endif
- {
- pScanData ps;
-
- DBG( DBG_HIGH, "!! IRQ !! Lamp-Timer stopped.\n" );
-
--#ifdef __KERNEL__
-- ps = (pScanData)ptr;
--#else
- _VAR_NOT_USED( sig_num );
- ps = PtDrvDevices[0];
--#endif
-
- /*
- * paranoia check!
-@@ -559,7 +315,6 @@ static void ptdrvLampTimerIrq( int sig_n
- */
- static void ptdrvStartLampTimer( pScanData ps )
- {
--#ifndef __KERNEL__
- sigset_t block, pause_mask;
- struct sigaction s;
- #ifdef HAVE_SETITIMER
-@@ -597,17 +352,6 @@ static void ptdrvStartLampTimer( pScanDa
- #else
- alarm( ps->lampoff );
- #endif
--#else
-- init_timer( &tl[ps->devno] );
--
-- /* timeout val in seconds */
-- tl[ps->devno].expires = jiffies + ps->lampoff * HZ;
-- tl[ps->devno].data = (unsigned long)ps;
-- tl[ps->devno].function = ptdrvLampTimerIrq;
--
-- if( 0 != ps->lampoff )
-- add_timer( &tl[ps->devno] );
--#endif
-
- DBG( DBG_HIGH, "Lamp-Timer started!\n" );
- }
-@@ -616,7 +360,6 @@ static void ptdrvStartLampTimer( pScanDa
- */
- static void ptdrvStopLampTimer( pScanData ps )
- {
--#ifndef __KERNEL__
- sigset_t block, pause_mask;
-
- /* block SIGALRM */
-@@ -630,10 +373,6 @@ static void ptdrvStopLampTimer( pScanDat
- _VAR_NOT_USED( ps );
- alarm(0);
- #endif
--#else
-- if( 0 != ps->lampoff )
-- del_timer( &tl[ps->devno] );
--#endif
-
- DBG( DBG_HIGH, "Lamp-Timer stopped!\n" );
- }
-@@ -701,23 +440,11 @@ static int ptdrvOpenDevice( pScanData ps
- UShort lastMode;
- ULong devno;
-
--#ifdef __KERNEL__
-- UShort flags;
-- struct pardevice *pd;
-- struct parport *pp;
-- ProcDirDef procDir;
--#else
- int pd;
--#endif
-
- /*
- * push some values from the struct
- */
--#ifdef __KERNEL__
-- flags = ps->flags;
-- pp = ps->pp;
-- procDir = ps->procDir;
--#endif
- pd = ps->pardev;
- iobase = ps->sCaps.wIOBase;
- asic = ps->sCaps.AsicID;
-@@ -734,29 +461,10 @@ static int ptdrvOpenDevice( pScanData ps
- /*
- * pop the val(s)
- */
--#ifdef __KERNEL__
-- ps->flags = flags;
-- ps->pp = pp;
-- ps->procDir = procDir;
--#endif
- ps->pardev = pd;
- ps->bLastLampStatus = lastStat;
- ps->IO.lastPortMode = lastMode;
- ps->devno = devno;
--
--#ifdef __KERNEL__
-- if( _TRUE == slowIO[devno] ) {
-- DBG( DBG_LOW, "Using slow I/O\n" );
-- ps->IO.slowIO = _TRUE;
-- ps->IO.fnOut = IOOutDelayed;
-- ps->IO.fnIn = IOInDelayed;
-- } else {
-- DBG( DBG_LOW, "Using fast I/O\n" );
-- ps->IO.slowIO = _FALSE;
-- ps->IO.fnOut = IOOut;
-- ps->IO.fnIn = IOIn;
-- }
--#endif
- ps->ModelOverride = mov[devno];
- ps->warmup = warmup[devno];
- ps->lampoff = lampoff[devno];
-@@ -798,19 +506,6 @@ static int ptdrvInit( int devno )
- return _E_ALLOC;
- }
-
--#ifdef __KERNEL__
-- if( _TRUE == slowIO[devno] ) {
-- DBG( DBG_LOW, "Using slow I/O\n" );
-- ps->IO.slowIO = _TRUE;
-- ps->IO.fnOut = IOOutDelayed;
-- ps->IO.fnIn = IOInDelayed;
-- } else {
-- DBG( DBG_LOW, "Using fast I/O\n" );
-- ps->IO.slowIO = _FALSE;
-- ps->IO.fnOut = IOOut;
-- ps->IO.fnIn = IOIn;
-- }
--#endif
- ps->ModelOverride = mov[devno];
- ps->warmup = warmup[devno];
- ps->lampoff = lampoff[devno];
-@@ -845,13 +540,8 @@ static int ptdrvInit( int devno )
-
- if( _OK == retval ) {
-
--#ifdef __KERNEL__
-- _PRINT( "pt_drv%u: %s found on port 0x%04x\n",
-- devno, MiscGetModelName(ps->sCaps.Model), ps->IO.pbSppDataPort );
--#else
- DBG( DBG_LOW, "pt_drv%u: %s found\n",
- devno, MiscGetModelName(ps->sCaps.Model));
--#endif
-
- /*
- * initialize the timespan timer
-@@ -859,43 +549,23 @@ static int ptdrvInit( int devno )
- MiscStartTimer( &toTimer[ps->devno], (_SECOND * ps->warmup));
-
- if( 0 == ps->lampoff )
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_LOW,
--#endif
- "pt_drv%u: Lamp-Timer switched off.\n", devno );
- else {
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_LOW,
--#endif
- "pt_drv%u: Lamp-Timer set to %u seconds.\n",
- devno, ps->lampoff );
- }
-
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_LOW,
--#endif
- "pt_drv%u: WarmUp period set to %u seconds.\n",
- devno, ps->warmup );
-
- if( 0 == ps->lOffonEnd ) {
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_LOW,
--#endif
- "pt_drv%u: Lamp untouched on driver unload.\n", devno );
- } else {
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_LOW,
--#endif
- "pt_drv%u: Lamp switch-off on driver unload.\n", devno );
- }
-
-@@ -1287,31 +957,19 @@ static int ptdrvRead( pScanData ps, pUCh
- int retval = _OK;
-
- #ifdef _ASIC_98001_SIM
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_LOW,
--#endif
- "pt_drv : Software-Emulation active, can't read!\n" );
- return _E_INVALID;
- #endif
-
- if((NULL == buffer) || (NULL == ps)) {
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "pt_drv : Internal NULL-pointer!\n" );
- return _E_NULLPTR;
- }
-
- if( 0 == count ) {
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "pt_drv%u: reading 0 bytes makes no sense!\n", ps->devno );
- return _E_INVALID;
- }
-@@ -1325,11 +983,7 @@ static int ptdrvRead( pScanData ps, pUCh
- * when using the cat /dev/pt_drv command!
- */
- if (!(ps->DataInf.dwVxdFlag & _VF_ENVIRONMENT_READY)) {
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "pt_drv%u: Cannot read, driver not initialized!\n",ps->devno);
- return _E_SEQUENCE;
- }
-@@ -1340,11 +994,7 @@ static int ptdrvRead( pScanData ps, pUCh
- ps->Scan.bp.pMonoBuf = _KALLOC( ps->DataInf.dwAppPhyBytesPerLine, GFP_KERNEL);
-
- if ( NULL == ps->Scan.bp.pMonoBuf ) {
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "pt_drv%u: Not enough memory available!\n", ps->devno );
- return _E_ALLOC;
- }
-@@ -1355,11 +1005,7 @@ static int ptdrvRead( pScanData ps, pUCh
- scaleBuf = _KALLOC( ps->DataInf.dwAppPhyBytesPerLine, GFP_KERNEL);
- if ( NULL == scaleBuf ) {
- _KFREE( ps->Scan.bp.pMonoBuf );
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "pt_drv%u: Not enough memory available!\n", ps->devno );
- return _E_ALLOC;
- }
-@@ -1406,11 +1052,7 @@ static int ptdrvRead( pScanData ps, pUCh
-
- retval = ps->Calibration( ps );
- if( _OK != retval ) {
--#ifdef __KERNEL__
-- _PRINT(
--#else
- DBG( DBG_HIGH,
--#endif
- "pt_drv%u: calibration failed, result = %i\n",
- ps->devno, retval );
- goto ReadFinished;
-@@ -1507,12 +1149,9 @@ static int ptdrvRead( pScanData ps, pUCh
- ps->Scan.dwLinesToRead--;
-
- /* needed, esp. to avoid freezing the system in SPP mode */
--#ifdef __KERNEL__
-- schedule();
- /*#else
- sched_yield();
- */
--#endif
- }
-
- if (ps->fScanningStatus) {
-@@ -1565,346 +1204,6 @@ ReadFinished:
- return retval;
- }
-
--/*************************** the module interface ****************************/
--
--#ifdef __KERNEL__ /* the kernel module interface */
--
--/* Designed to be used as a module */
--#ifdef MODULE
--
--/*.............................................................................
-- * gets called upon module initialization
-- */
--#ifdef LINUX_26
--static int __init ptdrv_init( void )
--#else
--int init_module( void )
--#endif
--{
-- UInt devCount;
-- UInt i;
-- int retval = _OK;
-- int result = _OK;
--#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-- char controlname[24];
--#endif
--# ifdef LINUX_26
-- char devname[20];
--#endif
--
-- DBG( DBG_HIGH, "*********************************************\n" );
-- DBG( DBG_HIGH, "pt_drv: init_module()\n" );
--
--#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-- devfs_handle = devfs_mk_dir(NULL, "scanner", NULL);
-- if( devfs_register_chrdev(_PTDRV_MAJOR, _DRV_NAME, &pt_drv_fops)) {
--#else
-- if( register_chrdev(_PTDRV_MAJOR, _DRV_NAME, &pt_drv_fops)) {
--#endif
--
-- _PRINT(KERN_INFO "pt_drv: unable to get major %d for pt_drv devices\n",
-- _PTDRV_MAJOR);
-- return -EIO;
-- }
-- printk( KERN_INFO "pt_drv : driver version "_PTDRV_VERSTR"\n" );
--
--#if !defined (CONFIG_DEVFS_FS) && defined (LINUX_26)
-- ptdrv_class = class_create(THIS_MODULE, "scanner");
-- if (IS_ERR(ptdrv_class))
-- goto out_devfs;
--#endif
--
-- /* register the proc_fs */
-- ProcFsInitialize();
--
-- /* go through the list of defined ports and try to find a device
-- */
-- devCount = 0;
-- for( i = 0; i < _MAX_PTDEVS; i++ ) {
--
-- if( 0 != port[i] ) {
-- result = ptdrvInit( i );
--
-- if ( _OK == result ) {
-- PtDrvDevices[i]->flags |= _PTDRV_INITALIZED;
--
--#ifdef CONFIG_DEVFS_FS
--# ifndef DEVFS_26_STYLE
-- sprintf( controlname, "scanner/pt_drv%d", devCount );
-- devfs_register( NULL, controlname,
-- DEVFS_FL_DEFAULT, _PTDRV_MAJOR, 0,
-- (S_IFCHR | S_IRUGO | S_IWUGO | S_IFCHR),
-- &pt_drv_fops, NULL );
--# else /* DEVFS_26_STYLE */
-- devfs_mk_cdev(MKDEV(_PTDRV_MAJOR, devCount),
-- (S_IFCHR | S_IRUGO | S_IWUGO | S_IFCHR),
-- "scanner/pt_drv%d", devCount);
--# endif
--#else
--# ifdef LINUX_26
-- sprintf(devname, "pt_drv%d", devCount);
-- CLASS_DEV_CREATE(ptdrv_class,
-- MKDEV(_PTDRV_MAJOR, devCount), NULL,
-- devname);
--
--# endif /* LINUX_26 */
--#endif /* CONFIG_DEVFS_FS */
-- ProcFsRegisterDevice( PtDrvDevices[i] );
-- devCount++;
-- } else {
-- retval = result;
-- ptdrvShutdown( PtDrvDevices[i] );
-- PtDrvDevices[i] = NULL;
-- }
-- }
-- }
--
-- /* * if something went wrong, shutdown all... */
-- if( devCount == 0 ) {
--
--#if !defined (CONFIG_DEVFS_FS) && defined (LINUX_26)
--out_devfs:
-- class_destroy(ptdrv_class);
--#endif
--
--#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-- devfs_unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
--#else
-- unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
--#endif
-- ProcFsShutdown();
--
--#ifdef __KERNEL__
-- _PRINT( KERN_INFO "pt_drv : no device(s) detected, (%i)\n", retval );
--#endif
--
-- } else {
--
-- DBG( DBG_HIGH, "pt_drv : init done, %u device(s) found\n", devCount );
-- retval = _OK;
-- }
-- DBG( DBG_HIGH, "---------------------------------------------\n" );
--
-- deviceScanning = _FALSE;
-- return retval;
--}
--
--/*.............................................................................
-- * cleanup the show
-- */
--#ifdef LINUX_26
--static void __exit ptdrv_exit( void )
--#else
--void cleanup_module( void )
--#endif
--{
-- UInt i;
-- pScanData ps;
--#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-- char controlname[24];
-- devfs_handle_t master;
--#endif
--
-- DBG( DBG_HIGH, "pt_drv: cleanup_module()\n" );
--
-- for ( i = 0; i < _MAX_PTDEVS; i++ ) {
--
-- ps = PtDrvDevices[i];
-- PtDrvDevices[i] = NULL;
--
-- if ( NULL != ps ) {
--#ifdef CONFIG_DEVFS_FS
--# ifndef DEVFS_26_STYLE
-- sprintf( controlname, "scanner/pt_drv%d", i );
-- master = devfs_find_handle( NULL,controlname, 0, 0,
-- DEVFS_SPECIAL_CHR, 0 );
-- devfs_unregister( master );
--# else
-- devfs_remove("scanner/pt_drv%d", i);
--# endif
--#else
--# ifdef LINUX_26
-- CLASS_DEV_DESTROY(ptdrv_class, MKDEV(_PTDRV_MAJOR, i));
--# endif /* LINUX_26 */
--#endif /* CONFIG_DEVFS_FS */
-- ptdrvShutdown( ps );
-- ProcFsUnregisterDevice( ps );
-- }
-- }
--
--#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-- devfs_unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
--#else
-- unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
--#endif
-- ProcFsShutdown();
--
--#if !defined (CONFIG_DEVFS_FS) && defined (LINUX_26)
-- class_destroy(ptdrv_class);
--#endif
--
-- DBG( DBG_HIGH, "pt_drv: cleanup done.\n" );
-- DBG( DBG_HIGH, "*********************************************\n" );
--}
--
--#ifdef LINUX_26
--module_init(ptdrv_init);
--module_exit(ptdrv_exit);
--#endif
--
--#endif /*MODULE*/
--
--
--/*.............................................................................
-- * device open...
-- */
--static int pt_drv_open(struct inode *inode, struct file *file)
--{
-- pScanData ps;
--
-- DBG( DBG_HIGH, "pt_drv_open()\n" );
--
-- ps = get_pt_from_inode(inode);
--
-- if ( NULL == ps ) {
-- return(-ENXIO);
-- }
--
-- /* device not found ? */
-- if (!(ps->flags & _PTDRV_INITALIZED)) {
-- return(-ENXIO);
-- }
--
-- /* device is busy ? */
-- if (ps->flags & _PTDRV_OPEN) {
-- return(-EBUSY);
-- }
--
--#ifdef LINUX_26
-- if (!try_module_get(THIS_MODULE))
-- return -EAGAIN;
--#else
-- MOD_INC_USE_COUNT;
--#endif
-- ps->flags |= _PTDRV_OPEN;
--
-- return _OK;
--}
--
--/*.............................................................................
-- * device close...
-- */
--static CLOSETYPE pt_drv_close(struct inode * inode, struct file * file)
--{
-- pScanData ps;
--
-- DBG( DBG_HIGH, "pt_drv_close()\n" );
--
-- if ((ps = get_pt_from_inode(inode)) ) {
--
-- ptdrvClose( ps );
--
-- ps->flags &= ~_PTDRV_OPEN;
--#ifdef LINUX_26
-- module_put(THIS_MODULE);
--#else
-- MOD_DEC_USE_COUNT;
--#endif
-- CLOSERETURN(0);
-- } else {
--
-- DBG( DBG_HIGH, "pt_drv: - close failed!\n" );
-- CLOSERETURN(-ENXIO);
-- }
--}
--
--/*.............................................................................
-- * read data from device
-- */
--#ifdef LINUX_20
--static int pt_drv_read(struct inode *inode, struct file *file,
-- char *buffer, int count)
--{
-- int result;
-- pScanData ps;
--
-- if ( !(ps = get_pt_from_inode(inode)))
-- return(-ENXIO);
--#else
--static ssize_t pt_drv_read( struct file *file,
-- char *buffer, size_t count, loff_t *tmp )
--{
-- int result;
-- pScanData ps;
--
-- if ( !(ps = get_pt_from_inode(file->f_dentry->d_inode)) )
-- return(-ENXIO);
--#endif
-- if ((result = verify_area_20(VERIFY_WRITE, buffer, count)))
-- return result;
--
-- /*
-- * as the driver contains some global vars, it is not
-- * possible to scan simultaenously with two or more devices
-- */
-- if( _TRUE == deviceScanning ) {
-- printk( KERN_INFO "pt_drv: device %u busy!!!\n", ps->devno );
-- return(-EBUSY);
-- }
--
-- deviceScanning = _TRUE;
--
-- result = ptdrvRead( ps, buffer, count );
--
-- deviceScanning = _FALSE;
-- return result;
--}
--
--/*.............................................................................
-- * writing makes no sense
-- */
--#ifdef LINUX_20
--static int pt_drv_write(struct inode * inode, struct file * file,
-- const char * buffer, int count)
--{
-- return -EPERM;
--}
--#else
-- static ssize_t pt_drv_write( struct file * file,const char * buffer,
-- size_t tmp,loff_t* count)
--{
-- return -EPERM;
--}
--#endif
--
--/*.............................................................................
-- * the ioctl interface
-- */
--#ifdef NOLOCK_IOCTL
--static long pt_drv_ioctl( struct file *file, UInt cmd, unsigned long arg )
--{
-- pScanData ps;
--
-- if ( !(ps = get_pt_from_inode(file->f_dentry->d_inode)) )
-- return(-ENXIO);
--
-- return ptdrvIoctl( ps, cmd, (pVoid)arg);
--}
--#else
--static int pt_drv_ioctl( struct inode *inode, struct file *file,
-- UInt cmd, unsigned long arg )
--{
-- pScanData ps;
--
-- if ( !(ps = get_pt_from_inode(inode)) )
-- return(-ENXIO);
--
-- return ptdrvIoctl( ps, cmd, (pVoid)arg);
--}
--#endif
--
--#else /* the user-mode interface */
--
- /*.............................................................................
- * here we only have wrapper functions
- */
-@@ -1980,6 +1279,4 @@ static int PtDrvRead ( pUChar buffer, in
- return ptdrvRead( PtDrvDevices[0], buffer, count );
- }
-
--#endif /* guard __KERNEL__ */
--
- /* END PLUSTEK-PP_PTDRV.C ...................................................*/
-Index: trunk/backend/plustek-pp_scan.h
-===================================================================
---- trunk.orig/backend/plustek-pp_scan.h
-+++ trunk/backend/plustek-pp_scan.h
-@@ -63,8 +63,6 @@
- #ifndef __PLUSTEK_SCAN_H__
- #define __PLUSTEK_SCAN_H__
-
--#ifndef __KERNEL__
--
- # include <stdlib.h>
- # include <stdarg.h>
- # include <string.h>
-@@ -76,19 +74,6 @@
- # ifdef HAVE_SYS_IO_H
- # include <sys/io.h>
- # endif
--#else
--# include <linux/kernel.h>
--# include <linux/init.h>
--# include <linux/version.h>
--# include "plustek-pp_sysdep.h"
--# include <linux/delay.h>
--# include <linux/parport.h>
--
--#ifdef LINUX_24
--# include <linux/parport_pc.h>
--#endif /* LINUX_24 */
--
--#endif /* __KERNEL__ */
-
- /*.............................................................................
- * driver properties
-@@ -104,20 +89,6 @@
- # define _OPF ps->IO.fnOut
- # define _IPF ps->IO.fnIn
-
--#ifdef __KERNEL__
--
--#define _OUTB_CTRL(pSD,port_value) _OPF(port_value,pSD->IO.pbControlPort)
--#define _OUTB_DATA(pSD,port_value) _OPF(port_value,pSD->IO.pbSppDataPort)
--#define _OUTB_ECTL(pSD,port_value) _OPF(port_value,(pSD->IO.portBase+0x402))
--
--#define _INB_CTRL(pSD) _IPF(pSD->IO.pbControlPort)
--#define _INB_DATA(pSD) _IPF(pSD->IO.pbSppDataPort)
--#define _INB_EPPDATA(pSD) _IPF(pSD->IO.pbEppDataPort)
--#define _INB_STATUS(pSD) _IPF(pSD->IO.pbStatusPort)
--#define _INB_ECTL(pSD) _IPF((pSD->IO.portBase+0x402))
--
--#else
--
- #define _OUTB_CTRL(pSD,port_value) sanei_pp_outb_ctrl(pSD->pardev, port_value)
- #define _OUTB_DATA(pSD,port_value) sanei_pp_outb_data(pSD->pardev, port_value)
- #define _OUTB_ECTL(pSD,port_value)
-@@ -127,32 +98,19 @@
- #define _INB_EPPDATA(pSD) sanei_pp_inb_epp(pSD->pardev)
- #define _INB_STATUS(pSD) sanei_pp_inb_stat(pSD->pardev)
-
--#endif
--
- /*.............................................................................
- * for memory allocation
- */
--#ifndef __KERNEL__
- # define _KALLOC(x,y) malloc(x)
- # define _KFREE(x) free(x)
- # define _VMALLOC(x) malloc(x)
- # define _VFREE(x) free(x)
--#else
--# define _KALLOC(x,y) kmalloc(x,y)
--# define _KFREE(x) kfree(x)
--# define _VMALLOC(x) vmalloc(x)
--# define _VFREE(x) vfree(x)
--#endif
-
- /*
- * WARNING - never use the _SECOND define with the _DODELAY macro !!
- * they are for use the MiscStartTimer function and the _DO_UDELAY macro
- */
--#ifndef __KERNEL__
- typedef double TimerDef, *pTimerDef;
--#else
--typedef long long TimerDef, *pTimerDef;
--#endif
-
- #define _MSECOND 1000 /* based on 1 us */
- #define _SECOND (1000*_MSECOND)
-@@ -160,13 +118,8 @@ typedef long long TimerDef, *pTimerDef;
- /*.............................................................................
- * timer topics
- */
--#ifndef __KERNEL__
- # define _DO_UDELAY(usecs) sanei_pp_udelay(usecs)
- # define _DODELAY(msecs) { int i; for( i = msecs; i--; ) _DO_UDELAY(1000); }
--#else
--# define _DO_UDELAY(usecs) udelay(usecs)
--# define _DODELAY(msecs) mdelay(msecs)
--#endif
-
- /*.............................................................................
- * include the shared stuff right here, this concerns the ioctl interface
-Index: trunk/backend/plustek-pp_scandata.h
-===================================================================
---- trunk.orig/backend/plustek-pp_scandata.h
-+++ trunk/backend/plustek-pp_scandata.h
-@@ -143,17 +143,7 @@ typedef struct {
- */
- typedef struct scandata
- {
--#ifdef __KERNEL__
-- UInt flags; /* as follows: */
--#define _PTDRV_INITALIZED 0x00000001
--#define _PTDRV_OPEN 0x00000002
--
-- struct pardevice *pardev; /* for accessing parport... */
-- struct parport *pp;
-- ProcDirDef procDir;
--#else
- int pardev; /* parport handle in user-space */
--#endif
-
- /*
- * device control
-Index: trunk/doc/Makefile.am
-===================================================================
---- trunk.orig/doc/Makefile.am
-+++ trunk/doc/Makefile.am
-@@ -124,8 +124,8 @@ BEDOCS += mustek/mustek.CHANGES
- BEDOCS += mustek_usb/mustek_usb.CHANGES mustek_usb/mustek_usb.TODO
- BEDOCS += mustek_usb2/mustek_usb2.CHANGES mustek_usb2/mustek_usb2.TODO
- BEDOCS += niash/niash.TODO
--BEDOCS += plustek/FAQ plustek/MakeModule.sh plustek/Makefile.kernel24 \
-- plustek/Makefile.kernel26 plustek/Plustek-PARPORT-TODO.txt \
-+BEDOCS += plustek/FAQ \
-+ plustek/Plustek-PARPORT-TODO.txt \
- plustek/Plustek-PARPORT.changes plustek/Plustek-PARPORT.txt \
- plustek/Plustek-USB-TODO.txt plustek/Plustek-USB.changes \
- plustek/Plustek-USB.txt
-Index: trunk/doc/plustek/FAQ
-===================================================================
---- trunk.orig/doc/plustek/FAQ
-+++ trunk/doc/plustek/FAQ
-@@ -12,111 +12,10 @@ If you have some more FAQ entries, let m
- THANKS to Jochen <jochen@puchalla-online.de>, who roamed through the
- mailing-list and gathered the different questions.
-
--
- *******************************************************************************
--* TROUBLE-SHOOTING *
--* *
--* DRIVER TOPICS *
-+* General *
- *******************************************************************************
-
--
--SYMPTOM: "kernel-module version mismatch"
----------
--"When I try to "make load" I get an error"
--
--/sbin/modprobe pt_drv || exit 1
--/lib/modules/2.2.14-6.0.6/misc/pt_drv.o: kernel-module version mismatch
--/lib/modules/2.2.14-6.0.1/misc/pt_drv.o was compiled
--for kernel version 2.2.14-5.0
--while this kernel is version 2.2.14-6.0.1.
--
--PROBLEM:
----------
--You're using the wrong Kernel-header files.
--
--The path
--/usr/include/linux is a link to
--/usr/src/linux/include/linux and
--/usr/src/linux is normally a link to your current
--kernel, i.e:
--/usr/src/linux-2.2.14
--
--If you now upgrade your kernel and you have
--forgotten to correct the link /usr/src/linux, then
--every kernel-module you build outside the
--kernelsource structure will include the wrong
--version information.
--
--SOLUTION:
-----------
--Set the link /usr/src/linux
--to your current kernel-source tree before recompiling
--kernel-modules like pt_drv, then your version mismatch
--problem should be solved.
--
--
--
--SYMPTOM: "Device or resource busy"
----------
--Any attempt to "modprobe" or "make load" the driver leads
--to this message.
--
--PROBLEM:
----------
--The driver refuses to load. During startup, the driver performs
--some tests according to the parallel port and the connected
--scanners.
--If the parallel port is not supported or the scanner cannot be
--found, the driver returns an error and the system will report
--"device or resource busy"
--
--SOLUTION:
-----------
--There's no way to provide a general solution. First of all
--you should check your connections and the parallel port.
--Also check power for your scanner.
--If the problem still exists, enable the debug-messages of the
--pt_drv module (see INSTALL).
--Then check the messages after loading or send the output to
--the mailing list.
--Most of these problems are related to HW-problems. Before
--giving up, check the scanner under Windows (not really a
--good advice I know, but it helps to find HW-damage).
--There was also one case were the internal plugs of the parport
--connection were wrong...
--
--
--
--SYMPTOM: "Unresolved symbols"
----------
--"make load" or "modprobe pt_drv" produces this message:
--
--/sbin/modprobe pt_drv || exit 1
--/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_unregister_device
--/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_enumerate
--/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_register_device
--/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_claim
--/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_release
--/lib/modules/2.2.14-5.0/misc/pt_drv.o: insmod
--/lib/modules/2.2.14-5.0/misc/pt_drv.o failed
--
--
--PROBLEM:
----------
--The driver needs at least the parport_pc and the parport modules
--to work. They MUST be loaded prior to pt_drv. If these modules
--are not loaded you get this message.
--
--SOLUTION:
-----------
--Simply load the parport module. You can add this dependency to
--your /etc/modules.conf (or /etc/conf.modules) file (see INSTALL).
--Then every time you load pt_drv with modprobe, parport will be loaded
--automatically. After modifying this file, call
--depmod -va
--
--
--
- SYMPTOM: Scanner makes awful noise
- --------
-
-@@ -138,7 +37,6 @@ The second case is often reported when t
- already loaded. So remove lp.o before loading pt_drv.
-
-
--
- SYMPTOM: Printer starts to print while scanning
- --------
-
-@@ -294,23 +192,6 @@ A: You should be able to use xscanimage
- now the Acquire Image menu entry. That's all.
- If not, start gimp from an xterm and have a look at the output.
-
--
--Q: Is there any way to load the plustek_driver at bootup-time?
--
--A: Normally, there is no need to do so, because once you
-- altered your /etc/conf.modules file (or /etc/modules.conf)
-- and added the suggested stuff (see INSTALL file), you won't
-- have to worry about loading the driver. It happens automagically. ;-)
-- The driver will be loaded when needed (and eventually
-- removed after a specific time of not using it).
--
-- Nevertheless, another possibility is to do a modprobe pt_drv in the
-- /etc/rc.d/boot.local (using SuSE) or
-- /etc/rc.d/rc.local (using RedHat or Mandrake) file
-- So the driver will be loaded at bootup-time...
-- !!! YOUR SCANNER MUST BE ONLINE during power-up then !!!
--
--
- Q: I wonder if Mandrake 7.1's sane rpm file has this support already built in.
- My scanner light is coming on yet Xscanimage seems to report that there
- is no scanner present.
-Index: trunk/doc/plustek/MakeModule.sh
-===================================================================
---- trunk.orig/doc/plustek/MakeModule.sh
-+++ /dev/null
-@@ -1,116 +0,0 @@
--#!/bin/bash
--#******************************************************************************
--#
--# Bash-Script to create Plustek-Scannerdriver modules for Kernel 2.4, 2.6 and 3.x
--# out of the backend sources...
--#
--
--BUILD_DIR=$PWD/build
--SRC_DIR=$PWD/../../backend
--MAKEFILE=$PWD/Makefile.kernel26
--KERNEL_V=`uname -r`
--OSMINOR=`uname -r | cut -b 3`
--OSMAJOR=`uname -r | cut -b 1`
--
--#
--# some intro ;-)
--#
--echo "This script will try and build a suitable kernel-module for your system."
--echo "If you'd like to make the module WITH debug output, restart this script"
--echo "with as follows:"
--echo "./MakeModule.sh DEBUG=y"
--echo "Press <ENTER> to continue or <CTRL><C> to cancel."
--read
--
--#
--# we need to be root user...
--#
--echo -n "Check for root..."
--if [ $EUID -ne 0 ]; then
-- echo -e "\b\b\b - failed"
-- echo "Please retry as root user."
-- exit -1
--fi
--echo -e "\b\b\b - done."
--
--#
--# Version checks...
--#
--echo -e "\nCheck for kernelversion:"
--if [ "$OSMAJOR" == "3" ];then
-- echo "Using makefile for kernel 2.6.x - okay for kernel 3 as well..."
-- MAKEFILE=$PWD/Makefile.kernel26
--elif [ "$OSMINOR" == "6" ]; then
-- echo "Using makefile for kernel 2.6.x"
-- MAKEFILE=$PWD/Makefile.kernel26
--elif [ "$OSMINOR" == "4" ]; then
-- echo "Using makefile for kernel 2.4.x"
-- MAKEFILE=$PWD/Makefile.kernel24
--else
-- echo "Your kernelversion >"$OSMAJOR"."$OSMINOR"< is probably not supported"
-- exit -2
--fi
--
--#
--# Setup...
--#
--echo -e "Build-directory: \n"$BUILD_DIR
--echo -n "Removing build-directory..."
--rm -rf $BUILD_DIR
--echo -e "\b\b\b - done."
--
--echo -n "Creating build-directory..."
--mkdir $BUILD_DIR
--cd $BUILD_DIR
--echo -e "\b\b\b - done.\n"
--
--echo -n "Linking source files..."
--C_FILES=`ls $SRC_DIR/plustek-pp_*.c`
--H_FILES=`ls $SRC_DIR/plustek-pp_*.h`
--
--for F in $C_FILES $H_FILES $SRC_DIR/plustek-pp.h $SRC_DIR/plustek_pp.c; do
-- ln -s $F .
--done
--echo -e "\b\b\b - done."
--
--echo -n "Copying Makefile to build-directory..."
--cp $MAKEFILE Makefile
--echo -e "\b\b\b - done."
--
--#
--# Building the module...
--#
--echo "Making the module..."
--if [ "$OSMAJOR" == "2" -a "$OSMINOR" == "4" ]; then
-- make all $1
--else
-- make -C /lib/modules/$KERNEL_V/build/ SUBDIRS=$BUILD_DIR modules $1
--fi
--RES=$?
--cd ..
--if [ $RES != 0 ]; then
-- echo "There were some build errors..."
-- exit -1
--fi
--echo "done."
--
--echo "Should I install the module?"
--echo "Press <ENTER> to continue or <CTRL><C> to cancel."
--read
--
--make -C $BUILD_DIR install
--
--echo "Should I try and load the module?"
--echo "If this step fails, check the kernel-log."
--echo "Press <ENTER> to continue or <CTRL><C> to cancel."
--read
--
--make -C $BUILD_DIR load
--echo "done."
--
--echo "Should I remove the build directory?"
--echo "Press <ENTER> to continue or <CTRL><C> to cancel."
--read
--
--rm -rf $BUILD_DIR
--echo "done."
-Index: trunk/doc/plustek/Makefile.kernel24
-===================================================================
---- trunk.orig/doc/plustek/Makefile.kernel24
-+++ /dev/null
-@@ -1,250 +0,0 @@
--# Makefile for the plustek scanner driver (kernel-module)
--#
--###############################################################################
--#
--# define the directories
--#
--HOME_DIR := .
--SRC_DIR := $(HOME_DIR)
--INC_DIR := $(SRC_DIR)
--OBJ_DIR := $(HOME_DIR)/obj
--DOC_DIR := $(HOME_DIR)/doc
--BACKEND := $(SRC_DIR)
--
--#
--# define the used tools
--#
--MD = mkdir -p
--CC = gcc
--TAR = tar
--REF = cxref
--
--#
--# Comment/uncomment the following line to disable/enable debugging
--# can also be set by commandline parameter: make all DEBUG=y
--#
--#DEBUG = y
--
--#
--# common compiler options
--#
--OPT = -fomit-frame-pointer -D_PTDRV_VERSTR=\"$(VERSIONSTR)\"
--
--#
--# cxref options
--#
--REFOPT = -xref-all -index-all -html32
--
--#
--# Comment out if you are not running SMP. Someone take this out of here
--# when the SMP stuff gets moved out of the kernel Makefile.
--# SMP = 1
--# SMP_PROF = 1
--
--#
--# add the following to get assembly listing
--# -Wa,-alh,-L -g
--
--#
--# get some version numbers
--#
--ifeq ($(LINUXVERSION),)
-- LINUXVERSION = $(shell uname -r)
--endif
--
--VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(SRC_DIR)/plustek_pp.c | cut -b25-50 )
--
--# Change it here or specify it on the "make" commandline
--ifeq ($(HEADER_PATH),)
--MACHTYPE = $(shell env | grep debian-linux | wc -l | sed 's/ //g')
--ifeq ($(MACHTYPE),1)
--# debian
-- HEADER_PATH = /usr/src/kernel-headers-$(LINUXVERSION)/include
--else
--# redhat, slackware
-- HEADER_PATH = /usr/src/linux/include
--endif
--# HEADER_PATH = /usr/include
--endif
--
--ifeq ($(DEBUG),y)
-- DEBFLAGS = -O -g -DDEBUG # "-O" is needed to expand inlines
--else
-- DEBFLAGS = -O2
--endif
--
--#
--# the new style reference
--#
--K24_HEADER_PATH = /lib/modules/$(LINUXVERSION)/build/include
--
--#
--# try to autodetect if we can use the new style header include references
--#
--KERNEL_HEADERS = $(shell if test -d $(K24_HEADER_PATH); then \
-- echo $(K24_HEADER_PATH); \
-- else \
-- echo $(HEADER_PATH); \
-- fi; )
--
--#
--# seems to be necessary for kernels 2.4.x
--#
--MODVERFILE = $(shell if [ -e $(KERNEL_HEADERS)/linux/modversions.h ]; then \
-- echo $(KERNEL_HEADERS)/linux/modversions.h ; \
-- else \
-- echo $(KERNEL_HEADERS)/linux/modsetver.h ; \
-- fi )
--
--MODFLAGS = -DMODULE
--
--#
--# set MODVERSIONS if the kernel uses it
--#
--VERSUSED = $(shell grep 'define CONFIG_MODVERSIONS' \
-- $(KERNEL_HEADERS)/linux/autoconf.h | wc -l | sed 's/ //g')
--ifeq ($(VERSUSED),1)
-- MODFLAGS += -DMODVERSIONS -include $(MODVERFILE)
--endif
--
--
--WARNFLAGS = -Wall -Wstrict-prototypes
--CFLAGS = $(WARNFLAGS) $(OPT) -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(DEBFLAGS) $(MODFLAGS)
--MODLIB = /lib/modules/$(LINUXVERSION)
--
--ifdef SMP
--CFLAGS += -D__SMP__
--
--ifdef SMP_PROF
--CFLAGS += -D__SMP_PROF__
--endif
--endif
--
--TARGET = pt_drv
--
--OBJ = $(TARGET).o
--NAMES := dac detect genericio image map misc models io procfs
--NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
--NAMES := $(addprefix plustek-pp_, $(NAMES))
--SRCS := $(addprefix $(SRC_DIR)/, $(NAMES))
--SRCS := $(addsuffix .c, $(SRCS))
--OBJS := $(addprefix $(OBJ_DIR)/, $(NAMES))
--OBJS := $(addsuffix .o, $(OBJS))
--INCS := scan dbg types scandata procs hwdefs sysdep
--INCS := $(addsuffix .h, $(INCS))
--HDRS = $(addprefix $(INC_DIR)/plustek-pp_, $(INCS))
--
--#
--# the header files we need from the backend
--#
--BACKINCS := plustek-pp.h
--BACKINCS := $(addprefix $(BACKEND)/, $(BACKINCS))
--
--group = "root"
--mode = "644"
--INST_DIR = /lib/modules/$(LINUXVERSION)/kernel/drivers/char
--
--info:
-- @clear
-- @echo "Makefile to create the Plustek-Scanner kernel-module:"
-- @echo "all ... builds the module"
-- @echo "all DEBUG=y ... builds the module with debug-messages enabled"
-- @echo "clean ... cleans up the show"
-- @echo "install ... installs the module to the library path"
-- @echo "uninstall ... removes the module from the library path"
-- @echo "load ... tries to load the module and creates device nodes"
-- @echo "unload ... unloads the module"
--
--
--all: .depend chkdir $(OBJ)
--
--#
--# create object directory
--#
--.PHONY : chkdir
--chkdir:
-- @-$(MD) $(OBJ_DIR)
-- @-$(MD) $(DOC_DIR)
--
--$(OBJ): $(OBJS)
-- $(LD) -r $^ -o $@
--
--$(OBJS): Makefile $(HDRS) $(BACKINCS)
--
--$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-- $(CC) $(CFLAGS) -c $< -o $@
--
--$(OBJ_DIR)/$(OBJ): VERSION1 VERSION0
--
--#
--# copy the driver to the modules directory
--#
--install:
-- mkdir -p $(INST_DIR)
-- install -c -m $(mode) $(OBJ) $(INST_DIR)
-- /sbin/depmod -a
--
--#
--# remove it
--#
--uninstall:
-- rm -f $(INST_DIR)/$(OBJ)
--
--#
--# use modprobe to load the driver, remember to set the
--# parameter in /etc/modules.conf (see sane-plustek_pp.man for more details)
--#
--load: $(INST_DIR)/$(OBJ)
--# invoke modprobe with all arguments we got
-- /sbin/modprobe $(TARGET) || exit 1
--
--# Remove stale nodes and replace them, then give gid and perms
-- rm -f /dev/$(TARGET)*
--
--# when using the devfs support, we check the /dev/scanner entries
--# and only create links to the devfs nodes
--# at least we create one link
-- @if [ -e /dev/scanner/$(TARGET)* ]; then \
-- ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET); \
-- for name in `ls /dev/scanner | grep $(TARGET)`; do \
-- ln -s /dev/scanner/$$name /dev/$$name ; \
-- done \
-- else \
-- mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
-- mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
-- mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1; \
-- mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
-- mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3; \
-- \
-- chgrp $(group) /dev/$(TARGET)*; \
-- chmod $(mode) /dev/$(TARGET)*; \
-- fi
--
--#
--# unload the driver
--#
--unload:
-- /sbin/modprobe -r $(TARGET) || exit 1
--
--# Remove stale nodes
-- rm -f /dev/$(TARGET)*
--
--#
--# create reference docu
--#
--doc: chkdir
-- $(REF) $(REFOPT) $(INC_DIR)/*.h $(SRC_DIR)/*.c $(BACKEND)/plustek-share.h \
-- -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(MODFLAGS) \
-- -D_PTDRV_V1=$(VERSION1) -D_PTDRV_V0=$(VERSION0) -D_PTDRV_BUILD=$(BUILD) -O$(DOC_DIR)
--
--clean:
-- @-rm -f $(OBJ_DIR)/*.o .depend depend dep $(REF).* *.html $(TARGET).o
-- @-rm -rf $(OBJ_DIR)
-- @-rm -rf $(DOC_DIR)
--
--depend .depend dep:
-- $(CC) $(CFLAGS) -M $(SRCS) > $@
--
--ifeq (.depend,$(wildcard .depend))
--#include .depend
--endif
-Index: trunk/doc/plustek/Makefile.kernel26
-===================================================================
---- trunk.orig/doc/plustek/Makefile.kernel26
-+++ /dev/null
-@@ -1,124 +0,0 @@
--# Makefile for the plustek scanner driver (kernel-module)
--#
--###############################################################################
--
--#
--# retrieve the version numbers
--#
--ifeq ($(LINUXVERSION),)
-- LINUXVERSION = $(shell uname -r)
--endif
--LINUXRELEASE = $(shell uname -r | cut -d'.' -f3)
--
--ifeq ($(VERSIONSTR),)
-- ifeq ($(SUBDIRS),)
-- VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(M)/plustek_pp.c | cut -b25-50 )
-- else
-- VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(SUBDIRS)/plustek_pp.c | cut -b25-50 )
-- endif
--endif
--
--#
--# extra flags
--#
--EXTRA_CFLAGS += -D_PTDRV_VERSTR=\"$(VERSIONSTR)\"
--
--ifeq ($(DEBUG),y)
-- EXTRA_CFLAGS += -DDEBUG
--endif
--
--#
--# the module name
--#
--TARGET := pt_drv
--MODULE := $(TARGET).ko
--
--#
--# our files...
--#
--NAMES := dac detect genericio image map misc models io procfs
--NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
--NAMES := $(addprefix plustek-pp_, $(NAMES))
--OBJS := $(addsuffix .o, $(NAMES))
--
--#
--# now the kernel magic
--#
--ifneq ($(KERNELRELEASE),)
--obj-m := $(TARGET).o
--
--$(TARGET)-objs := $(OBJS)
--
--else
--KDIR := /lib/modules/$(shell uname -r)/build
--PWD := $(shell pwd)
--
--default:
-- $(MAKE) -C $(KDIR) M=$(PWD) modules
--endif
--
--#
--# the installation stuff
--#
--group = "root"
--mode = "644"
--INST_DIR = /lib/modules/$(LINUXVERSION)/kernel/drivers/parport
--
--#
--# copy the driver to the modules directory
--#
--install:
-- mkdir -p $(INST_DIR)
-- install -c -m $(mode) $(MODULE) $(INST_DIR)
-- /sbin/depmod -a
--
--#
--#
--#
--uninstall:
-- rm -f $(INST_DIR)/$(MODULE)
--
--#
--# use modprobe to load the driver, remember to set the
--# parameter in /etc/conf.modules (see INSTALL for more details)
--#
--load: $(INST_DIR)/$(MODULE)
--# invoke modprobe with all arguments we got
-- /sbin/modprobe $(TARGET) || exit 1
--
--# Remove stale nodes and replace them, then give gid and perms
-- rm -f /dev/$(TARGET)*
--
--# when using the devfs support, we check the /dev/scanner entries
--# and only create links to the devfs nodes
--# at least we create one link
-- @if [ -e /dev/scanner/$(TARGET)* ]; then \
-- ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET); \
-- for name in `ls /dev/scanner | grep $(TARGET)`; do \
-- ln -s /dev/scanner/$$name /dev/$$name ; \
-- done \
-- else \
-- mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
-- mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
-- mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1; \
-- mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
-- mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3; \
-- \
-- chgrp $(group) /dev/$(TARGET)*; \
-- chmod $(mode) /dev/$(TARGET)*; \
-- fi
--
--#
--# unload the driver
--#
--unload:
-- /sbin/modprobe -r $(TARGET) || exit 1
--
--# Remove stale nodes
-- rm -f /dev/$(TARGET)*
--
--#
--# cleanup the show
--#
--clean:
-- @-rm -f *.o .depend depend dep $(MODULE) $(TARGET).o $(TARGET).mod.c .*.cmd
-Index: trunk/doc/plustek/Plustek-PARPORT.txt
-===================================================================
---- trunk.orig/doc/plustek/Plustek-PARPORT.txt
-+++ trunk/doc/plustek/Plustek-PARPORT.txt
-@@ -1,46 +1,10 @@
- Plustek-PARPRORT.txt (2004-03-28) Gerhard Jäger <gerhard@gjaeger.de>
- ====================================================================
-
--
- Beginning with SANE-1.0.13, there's a backend called plustek_pp.
- This is for controlling Plustek parallel-port scanner and compatible
- devices. For a full listing, see plustek_pp.desc.
-
--This code formerly was available for creating the Linux kernelmodule
--pt_drv. This should no longer be necessary. You should be able to use
-+This code formerly was available for creating the Linux kernel module
-+pt_drv. This is no longer be necessary. You should be able to use
- the backend out of the box.
--
--
--The kernel module
-------------------
--
--As it might be helpful to create and use the kernel-module, this way still
--exists. It's possible to create this module out of the backend sources
--in sane-backends/backend. Simply do (as root user)
--
--./MakeModule.sh
--
--Then the module should be compiled, installed and loaded.
--
--Add the following three lines to file /etc/modules.conf
--
--alias char-major-40 pt_drv
--pre-install pt_drv modprobe -k parport
--options pt_drv lampoff=180 warmup=15 port=0x378 lOffonEnd=0 mov=0 slowIO=1
--
--See man page for sane-plustek_pp ("man sane-plustek_pp") for explanation of
--these options.
--
--Now "scanimage -L" should show something like this:
--device `plustek:/dev/pt_drv' is a Plustek 9630P flatbed scanner
--
--
--Known Problems:
-----------------
--
--Sometimes it is necessary to change the ioctl-interface between the
--driver and the backend, in this case the version number of the communication
--protocol will be changed and newer drivers won't work with older backends
--and vice versa.
--In this case (error -9019 in the SANE debug output!!) you have to recompile SANE
--AND the driver (have a look at the installation procedure above).
-Index: trunk/doc/plustek/Plustek-USB.txt
-===================================================================
---- trunk.orig/doc/plustek/Plustek-USB.txt
-+++ trunk/doc/plustek/Plustek-USB.txt
-@@ -4,10 +4,7 @@ Plustek-USB.txt (2005-08-08) Gerhard Jä
- NOTE:
- -----
-
--ALL YOU NEED TO RUN YOUR USB SCANNER IS ALREADY INCLUDED. THERE'S
--NO NEED TO INSTALL THE KERNEL MODULE pt_drv. THIS ONE IS ONLY NEEDED
--FOR THE PLUSTEK PARALLELPORT SCANNER.
--
-+ALL YOU NEED TO RUN YOUR USB SCANNER IS ALREADY INCLUDED.
-
- List of all currently implemented devices
- -----------------------------------------
-Index: trunk/doc/sane-plustek_pp.man
-===================================================================
---- trunk.orig/doc/sane-plustek_pp.man
-+++ trunk/doc/sane-plustek_pp.man
-@@ -9,18 +9,10 @@ The
- library implements a SANE (Scanner Access Now Easy) backend that
- provides access to Plustek ASIC 9600[1/3] and P9800[1/3] based
- parallel port flatbed scanners.
--The access of the scanner is either done directly by the backend
--or via kernel module, called pt_drv which can be created out of
--the
--.B sane\-plustek_pp
--backend code \- see also section
--.B "BUILDING THE KERNEL MODULE"
--for further information.
-
- .SH "SUPPORTED DEVICES"
-
--At present, the following scanners should work with this backend
--and/or the kernel module:
-+At present, the following scanners should work with this backend:
- .PP
- .B "PLUSTEK SCANNERS"
- .PP
-@@ -112,18 +104,14 @@ BrightScan OpticPro OpticPro P12
- .ft R
-
- .SH "DEVICE NAMES"
--This backend works in two modes, the so called "direct-mode"
--and the "kernel-mode". In direct-mode, the user-space backend is
--used, in kernel-mode, you should have a kernel-module named pt_drv
--loaded.
--This backends default device is:
-+This backend's default device is:
- .PP
- .RS
- .I 0x378
- .RE
- .PP
--This "default device" will be used, if no configuration
--file can be found. It is rather the base address of the parallel port
-+This "default device" will be used if no configuration
-+file can be found. It is the base address of the parallel port
- on i386 machines.
- .PP
- As the backend supports up to four devices, it is possible to
-@@ -150,24 +138,13 @@ For a proper setup, you will need at lea
- .I device 0x378
- .RE
- .PP
--or
--.RS
--.I [kernel]
--.br
--.I device /dev/pt_drv
--.RE
--.PP
- .I direct
- tells the backend, that the following devicename (here
- .IR 0x378 )
- has to be interpreted as parallel port scanner device. In
--fact it is the address to use, alternatively you can use
-+fact it is the address to use. Alternatively you can use
- .I /dev/parport0
- if the backend has been compiled with libieee1284 support.
--.I kernel
--should only be used, when a kernel-module has been built
--out of the backend sources. See below for more instructions
--about this.
- .PP
- Further options:
- .PP
-@@ -235,157 +212,6 @@ See the
- file for examples.
- .PP
-
--.SH "BUILDING THE KERNEL MODULE"
--As mentioned before, the
--.B sane\-plustek_pp
--backend code can also be compiled and installed as linux kernel module. To do so,
--you will need the source-files of this sane\-backend installation.
--Unpack this tar-ball and go to the directory:
--.IR sane\-backends/doc/plustek .
--Within this directory, you should find a script called:
--.IR MakeModule.sh .
--Now if your Linux kernelsources are installed correctly,
--it should be possible to build, install and load the
--module
--.BR pt_drv .
--.B Please note,
--that the kernelsources need to be configured correctly.
--Refer to your distributions
--manual on how this is done. As root user, try
--.PP
--.I ./MakeModule.sh
--.PP
--the script will try and get all necessary information about your
--running kernel and will lead you through the whole installation
--process.
--.br
--.B Note: Installing and loading the can only be done as
--superuser.
--.PP
--
--.SH "KERNEL MODULE SETUP"
--The configuration of the kernel module is done by providing
--some or more options found below to the kernel module at
--load time. This can be done by invoking
--.BR insmod (8)
--with the appropriate parameters or appending the options to the file
--.I /etc/modules.conf (kernel < 2.6.x)
--or
--.I /etc/modprobe.conf (kernel >= 2.6.x)
--.PP
--.B
--The Options:
--.br
--lampoff=lll
--.RS
--The value
--.I lll
--tells the driver, after how many seconds to
--switch-off the lamp(s). The default value is 180.
--0 will disable this feature.
--.br
--.B HINT:
--Do not use a value that is too small, because often
--switching on/off the lamps will reduce their lifetime.
--.RE
--.PP
--port=ppp
--.RS
--.I ppp
--specifies the port base address, where the scanner
--is connected to. The default value is 0x378, which
--is normally a standard.
--.RE
--.PP
--warmup=www
--.RS
--.I www
--specifies the time in seconds, how long a lamp has to be on,
--until the driver will start to scan. The default value is 30.
--.RE
--.PP
--lOffonEnd=e
--.RS
--.I e
--specifies the behaviour when unloading the driver, 1 --> switch
--lamps off, 0 --> do not change lamp status
--.RE
--.PP
--slowIO=s
--.RS
--.I s
--specifies which I/O functions the driver should use, 1 --> use
--delayed functions, 0 --> use the non-delayed ones
--.RE
--.PP
--forceMode=fm
--.RS
--.I fm
--specifies port mode which should be used, 0 --> autodetection,
--1 --> use SPP mode and 2 --> use EPP mode
--.RE
--.PP
--mov=m
--.RS
--.TP
--.IR m " = 0"
--default: no override
--.TP
--.IR m " = 1"
--OpticPro 9630PL override (works if OP9630
--has been detected) forces legal size (14")
--.TP
--.IR m " = 2"
--Primax 4800Direct override (works if OP600
--has been detected) swaps red/green color
--.TP
--.IR m " = 3"
--OpticPro 9636 override (works if OP9636 has
--been detected) disables backends
--transparency/negative capabilities
--.TP
--.IR m " = 4"
--OpticPro 9636P override (works if OP9636 has
--been detected) disables backends
--transparency/negative capabilities
--.TP
--.IR m " = 5"
--OpticPro A3I override (works if OP12000 has
--been detected) enables A3 scanning
--.TP
--.IR m " = 6"
--OpticPro 4800P override (works if OP600
--has been detected) swaps red/green color
--.TP
--.IR m " = 7"
--Primax 4800Direct 30bit override (works if
--OP4830 has been detected)
--.RE
--.PP
--Sample entry for file
--.IR /etc/modules.conf :
--.PP
--.RS
--alias char\-major\-40 pt_drv
--.br
--pre-install pt_drv modprobe -k parport
--.br
--options pt_drv lampoff=180 warmup=15 port=0x378 lOffonEnd=0 mov=0 slowIO=0 forceMode=0
--.RE
--.PP
--For multidevice support, simply add values separated by commas to
--the different options
--.PP
--.RS
--options pt_drv port=0x378,0x278 mov=0,4 slowIO=0,1 forceMode=0,1
--.RE
--.PP
--Remember to call
--.BR depmod (8)
--after changing
--.IR /etc/conf.modules .
--.PP
--
- .SH "PARALLEL PORT MODES"
- .PP
- The current driver works best, when the parallel port
-@@ -423,13 +249,6 @@ The static library implementing this bac
- .I @LIBDIR@/libsane\-plustek_pp.so
- The shared library implementing this backend (present on systems that
- support dynamic loading).
--.TP
--.I /lib/modules/<Kernel-Version>/kernel/drivers/parport/pt_drv.o
--The Linux kernelmodule for kernels < 2.6.x.
--.TP
--.I /lib/modules/<Kernel-Version>/kernel/drivers/parport/pt_drv.ko
--The Linux kernelmodule for kernels >= 2.6.x.
--.PP
-
- .SH ENVIRONMENT
- .TP
diff --git a/debian/patches/0195-genesys_fix_total_file_size_exceeding.patch b/debian/patches/0195-genesys_fix_total_file_size_exceeding.patch
deleted file mode 100644
index 4b95241..0000000
--- a/debian/patches/0195-genesys_fix_total_file_size_exceeding.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-Description: Fix out off memory on high resultions
-Origin: upstream, https://gitlab.com/sane-project/backends/-/merge_requests/697
-Bug: https://gitlab.com/sane-project/backends/-/issues/580
-Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=942176
-Forwarded: no
-Last-Update: 2022-03-27
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: trunk/backend/genesys/gl124.cpp
-===================================================================
---- trunk.orig/backend/genesys/gl124.cpp
-+++ trunk/backend/genesys/gl124.cpp
-@@ -745,7 +745,7 @@ void CommandSetGl124::init_regs_for_scan
- dev->session = session;
-
- dev->total_bytes_read = 0;
-- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
-+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
-
- DBG(DBG_info, "%s: total bytes to send to frontend = %zu\n", __func__,
- dev->total_bytes_to_read);
-Index: trunk/backend/genesys/gl646.cpp
-===================================================================
---- trunk.orig/backend/genesys/gl646.cpp
-+++ trunk/backend/genesys/gl646.cpp
-@@ -817,7 +817,8 @@ void CommandSetGl646::init_regs_for_scan
- dev->session = session;
-
- dev->total_bytes_read = 0;
-- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
-+ dev->total_bytes_to_read = (size_t) session.output_line_bytes_requested
-+ * (size_t) session.params.lines;
-
- /* select color filter based on settings */
- regs->find_reg(0x04).value &= ~REG_0x04_FILTER;
-Index: trunk/backend/genesys/gl841.cpp
-===================================================================
---- trunk.orig/backend/genesys/gl841.cpp
-+++ trunk/backend/genesys/gl841.cpp
-@@ -920,7 +920,7 @@ dummy \ scanned lines
- dev->session = session;
-
- dev->total_bytes_read = 0;
-- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
-+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
- if (session.use_host_side_gray) {
- dev->total_bytes_to_read /= 3;
- }
-Index: trunk/backend/genesys/gl842.cpp
-===================================================================
---- trunk.orig/backend/genesys/gl842.cpp
-+++ trunk/backend/genesys/gl842.cpp
-@@ -568,7 +568,7 @@ void CommandSetGl842::init_regs_for_scan
- dev->session = session;
-
- dev->total_bytes_read = 0;
-- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
-+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
- }
-
- ScanSession CommandSetGl842::calculate_scan_session(const Genesys_Device* dev,
-Index: trunk/backend/genesys/gl843.cpp
-===================================================================
---- trunk.orig/backend/genesys/gl843.cpp
-+++ trunk/backend/genesys/gl843.cpp
-@@ -1041,7 +1041,7 @@ void CommandSetGl843::init_regs_for_scan
- dev->session = session;
-
- dev->total_bytes_read = 0;
-- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
-+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
-
- DBG(DBG_info, "%s: total bytes to send = %zu\n", __func__, dev->total_bytes_to_read);
- }
-Index: trunk/backend/genesys/gl846.cpp
-===================================================================
---- trunk.orig/backend/genesys/gl846.cpp
-+++ trunk/backend/genesys/gl846.cpp
-@@ -658,7 +658,7 @@ void CommandSetGl846::init_regs_for_scan
- dev->session = session;
-
- dev->total_bytes_read = 0;
-- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
-+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
-
- DBG(DBG_info, "%s: total bytes to send = %zu\n", __func__, dev->total_bytes_to_read);
- }
-Index: trunk/backend/genesys/gl847.cpp
-===================================================================
---- trunk.orig/backend/genesys/gl847.cpp
-+++ trunk/backend/genesys/gl847.cpp
-@@ -624,7 +624,7 @@ void CommandSetGl847::init_regs_for_scan
- dev->session = session;
-
- dev->total_bytes_read = 0;
-- dev->total_bytes_to_read = session.output_line_bytes_requested * session.params.lines;
-+ dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.lines;
-
- DBG(DBG_info, "%s: total bytes to send = %zu\n", __func__, dev->total_bytes_to_read);
- }
diff --git a/debian/patches/0600-scanimage_manpage.patch b/debian/patches/0600-scanimage_manpage.patch
deleted file mode 100644
index 6e8cc23..0000000
--- a/debian/patches/0600-scanimage_manpage.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Description: Add remark to options.
-Author: Jörg Frings-Fürst <debian@jff-webhosting.net>
-Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=418630
-Forwarded: not-needed
-Last-Update: 2015-01-18
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: trunk/doc/scanimage.man
-===================================================================
---- trunk.orig/doc/scanimage.man
-+++ trunk/doc/scanimage.man
-@@ -75,6 +75,9 @@ To print all available options:
- scanimage \-h
-
- .SH OPTIONS
-+\fBRemark:\fR Parameter are defined by the backends. So are \-\-mode Gray and \-\-mode Grayscale in use.
-+Please read the backend documentation first.
-+
- Parameters are separated by a blank from single-character options (e.g.
- .BR "\-d epson" )
- and by a "=" from multi-character options (e.g.
diff --git a/debian/patches/0705-kfreebsd.patch b/debian/patches/0705-kfreebsd.patch
index 34a510b..c46c44d 100644
--- a/debian/patches/0705-kfreebsd.patch
+++ b/debian/patches/0705-kfreebsd.patch
@@ -4,7 +4,7 @@ Index: trunk/backend/umax_pp_low.c
===================================================================
--- trunk.orig/backend/umax_pp_low.c
+++ trunk/backend/umax_pp_low.c
-@@ -72,8 +72,10 @@
+@@ -70,8 +70,10 @@
#endif
#ifdef HAVE_MACHINE_CPUFUNC_H
diff --git a/debian/patches/series b/debian/patches/series
index d52a695..81eddad 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,25 +1,14 @@
-#0011-test.patch
-0195-genesys_fix_total_file_size_exceeding.patch
-0035-trim-libraries-in-sane-backends.pc.in.patch
0040-remove_git.patch
0100-source_spelling.patch
0125-multiarch_dll_search_path.patch
0175-fix_tests.patch
0140-avahi.patch
0145-avahi.patch
-#0600-scanimage_manpage.patch
0705-kfreebsd.patch
0725-fix_link_60-libsane_rule.patch
0150-i386-test.patch
0155-hurd_PATH_MAX.patch
-0045-disable_lock_test_at_build_time.patch
0050-Use-python3-shebang.patch
-#0055-Fix_build_error.patch
0060-cross.patch
-#0165-respect_local_only_parameter.patch
-#0170-return_empty_list_when_local_devices_requested.patch
0605-fix_groff-warnings.patch
-#0180-gt68xx_fix_use-after-free_two_memleaks.patch
-0185-Change_output_from_sane-find-scanner.patch
-#0190-remove-kernel-driver-for-plustek_pp.patch
0200-disable-check-equal-stderr.patch
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 17ae02f..7dbbfaf 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -95,7 +95,8 @@ MAN2HTML = nroff -c -man |\
sed 's,<BODY>,<BODY BGCOLOR=\#FFFFFF TEXT=\#000000><H1 ALIGN=CENTER><IMG SRC="/images/sane.png" HEIGHT=117 WIDTH=346></H1>,'
%.1 %.5 %.7 %.8: %.man
- @echo "Generating manpage $@...";
+ $(AM_V_GEN)
+ @if $(AM_V_P); then echo "Generating manpage $@..."; fi
@sed -e 's|@DATADIR@|$(datadir)|g' \
-e 's|@CONFIGDIR@|$(configdir)|g' \
-e 's|@DOCDIR@|$(docdir)|g' \
@@ -124,8 +125,8 @@ BEDOCS += mustek/mustek.CHANGES
BEDOCS += mustek_usb/mustek_usb.CHANGES mustek_usb/mustek_usb.TODO
BEDOCS += mustek_usb2/mustek_usb2.CHANGES mustek_usb2/mustek_usb2.TODO
BEDOCS += niash/niash.TODO
-BEDOCS += plustek/FAQ plustek/MakeModule.sh plustek/Makefile.kernel24 \
- plustek/Makefile.kernel26 plustek/Plustek-PARPORT-TODO.txt \
+BEDOCS += plustek/FAQ \
+ plustek/Plustek-PARPORT-TODO.txt \
plustek/Plustek-PARPORT.changes plustek/Plustek-PARPORT.txt \
plustek/Plustek-USB-TODO.txt plustek/Plustek-USB.changes \
plustek/Plustek-USB.txt
@@ -186,9 +187,10 @@ DESC_FILES = descriptions/abaton.desc descriptions/agfafocus.desc \
descriptions/umax1220u.desc descriptions/umax.desc \
descriptions/umax_pp.desc descriptions/unsupported.desc \
descriptions/v4l.desc descriptions/xerox_mfp.desc
-EXTRA_DIST += $(DESC_FILES) descriptions/template.desc.
+EXTRA_DIST += $(DESC_FILES) descriptions/template.desc
-DESC_EXT_FILES = descriptions-external/brother2.desc \
+DESC_EXT_FILES = descriptions-external/ambir.desc \
+ descriptions-external/brother2.desc \
descriptions-external/brother.desc \
descriptions-external/brother-mfc4600.desc \
descriptions-external/cs3200f.desc \
@@ -199,6 +201,7 @@ DESC_EXT_FILES = descriptions-external/brother2.desc \
descriptions-external/hpaio.desc \
descriptions-external/hpoj.desc \
descriptions-external/kodak-twain.desc \
+ descriptions-external/kyocera.desc \
descriptions-external/lhii.desc \
descriptions-external/mustek_a3p1.desc \
descriptions-external/panamfs.desc \
@@ -210,7 +213,7 @@ DESC_EXT_FILES = descriptions-external/brother2.desc \
descriptions-external/utsushi.desc \
descriptions-external/v4l2.desc \
descriptions-external/viceo.desc
-EXTRA_DIST += $(DESC_EXT_FILES) descriptions-external/template.desc.
+EXTRA_DIST += $(DESC_EXT_FILES) descriptions-external/template.desc
install-data-local: install-beman5
diff --git a/doc/backend-writing.txt b/doc/backend-writing.txt
index cb2a971..0ba324e 100644
--- a/doc/backend-writing.txt
+++ b/doc/backend-writing.txt
@@ -420,7 +420,7 @@ DOCUMENTATION
"doc/descriptions-external" (for included and external backends).
* "doc/descriptions.txt" describes the format of the ".desc" files. There is
- also a template for new .desc files: "template.desc.". The format of the
+ also a template for new .desc files: "template.desc". The format of the
files in the two directories is very similar. If you'd like to try parsing
your creation to recreate the sane-backends webpages, cd into "tools/" and
enter "make sane-desc". You can either use sane-desc directly (try
diff --git a/doc/descriptions-external/ambir.desc b/doc/descriptions-external/ambir.desc
new file mode 100644
index 0000000..b1a232d
--- /dev/null
+++ b/doc/descriptions-external/ambir.desc
@@ -0,0 +1,35 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "pl12x" ; name of backend
+;:version "" ; version of backend (or "unmaintained")
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "https://acct90501.secure.netsuite.com/c.ACCT90501/820ix%20linux%20Driver%205%2031%202022.zip" ; backend's web page
+:comment "External backend supplied by Ambir Technology. As this software contains non-free parts, it can't be included into SANE. If you can't find your model here, please have a look at the Ambir website which contains the latest list."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Ambir Technology" ; name a manufacturer
+:url "https://www.ambir.com/" ; manufacturer's URL
+;:comment ""
+ ; comment about the manufacturer
+
+;reports that we have seen
+
+
+:model "ImageScan Pro 820ix"
+:status :complete
+:interface "USB"
+:usbid "0x20ec" "0x820b"
diff --git a/doc/descriptions-external/kyocera.desc b/doc/descriptions-external/kyocera.desc
new file mode 100644
index 0000000..e5a2225
--- /dev/null
+++ b/doc/descriptions-external/kyocera.desc
@@ -0,0 +1,35 @@
+;
+; SANE Backend specification file
+;
+; It's basically emacs-lisp --- so ";" indicates comment to end of line.
+; All syntactic elements are keyword tokens, followed by a string or
+; keyword argument, as specified.
+;
+; ":backend" *must* be specified.
+; All other information is optional (but what good is the file without it?).
+;
+; See doc/descriptions.txt for details.
+
+:backend "kyocera" ; name of backend
+;:version "" ; version of backend (or "unmaintained")
+;:manpage "sane-template" ; name of manpage (if it exists)
+:url "https://www.kyoceradocumentsolutions.de/de/support/downloads.html" ; backend's web page
+:comment "External backend made by Kyocera. As this software contains non-free parts, it can't be included into SANE. If you can't find your model here, please have a look at the Kyocera website which contains the latest list."
+ ; comment about the backend
+
+:devicetype :scanner ; start of a list of devices....
+ ; other types: :stillcam, :vidcam,
+ ; :meta, :api
+
+:mfg "Kyocera" ; name a manufacturer
+:url "https://www.kyoceradocumentsolutions.de" ; manufacturer's URL
+;:comment ""
+ ; comment about the manufacturer
+
+;reports that we have seen
+
+
+:model "Ecosys M2640idw"
+:status :good
+:interface "Network"
+:comment "Reported to work over Network."
diff --git a/doc/descriptions-external/scangearmp2.desc b/doc/descriptions-external/scangearmp2.desc
index b670144..d9e3b7e 100644
--- a/doc/descriptions-external/scangearmp2.desc
+++ b/doc/descriptions-external/scangearmp2.desc
@@ -11,7 +11,7 @@
:backend "canon_pixma" ; name of backend
;:version "(external)" ; version of backend
-:url "https://github.com/Ordissimo/libmfp2-canon/blob/master/README.md" ; backend's web page
+:url "https://github.com/Ordissimo/scangearmp2/blob/master/README.md" ; backend's web page
:comment "External binary-only backend for Linux i386 and x86_64?. See the website for the latest release."
@@ -28,6 +28,89 @@
; Canon MFP2 conf file
;
+; ---- V440 --------------------------
+
+:model "TS2400 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1108"
+:status :untested
+:comment "Testers needed!"
+
+:model "TS2600 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1107"
+:status :untested
+:comment "Testers needed!"
+
+
+; ---- V420 --------------------------
+:model "TS5350i series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18d9"
+:status :untested
+:comment "Testers needed!"
+
+:model "G600 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18d5"
+:status :untested
+:comment "Testers needed!"
+
+:model "TS3500 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18d4"
+:status :untested
+:comment "Testers needed!"
+
+:model "TR4600 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18da"
+:status :untested
+:comment "Testers needed!"
+
+:model "E4500 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18db"
+:status :untested
+:comment "Testers needed!"
+
+:model "TR4700 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18dc"
+:status :untested
+:comment "Testers needed!"
+
+:model "XK500 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18df"
+:status :untested
+:comment "Testers needed!"
+
+:model "TS8530 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18e0"
+:status :untested
+:comment "Testers needed!"
+
+:model "XK100 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18e2"
+:status :untested
+:comment "Testers needed!"
+
+:model "TS7530 series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18e1"
+:status :untested
+:comment "Testers needed!"
+
+:model "TS7450i series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18f7"
+:status :untested
+:comment "Testers needed!"
+
+
; ---- V420 --------------------------
:model "GX6000 series"
:interface "USB WiFi"
diff --git a/doc/descriptions-external/template.desc. b/doc/descriptions-external/template.desc
index ce5d077..ce5d077 100644
--- a/doc/descriptions-external/template.desc.
+++ b/doc/descriptions-external/template.desc
diff --git a/doc/descriptions/avision.desc b/doc/descriptions/avision.desc
index b694e89..dc013bf 100644
--- a/doc/descriptions/avision.desc
+++ b/doc/descriptions/avision.desc
@@ -29,6 +29,12 @@
:mfg "Avision"
:url "http://www.avision.com"
+:model "AD345F"
+:interface "USB"
+:usbid "0x0638" "0x2e59"
+:comment "sheetfed duplex + flatbed scanner; ADF limitation: one sheet per one scan, scanner reboot needed otherwise"
+:status :basic
+
:model "AV100CS"
:interface "SCSI"
:status :untested
@@ -348,6 +354,12 @@
:comment "1 pass, 600 dpi, zero-edge" ASIC 7
:status :basic
+:model "FB2280E"
+:interface "USB"
+:usbid "0x0638" "0x2a1f"
+:comment "1 pass, 600 dpi, zero-edge" ASIC 7
+:status :basic
+
:model "AV8000S"
:interface "SCSI"
:comment "1 pass, 1200 dpi, A3"
diff --git a/doc/descriptions/canon.desc b/doc/descriptions/canon.desc
index 78a20c4..1a7e837 100644
--- a/doc/descriptions/canon.desc
+++ b/doc/descriptions/canon.desc
@@ -13,7 +13,7 @@
:version "1.12 (unmaintained)" ; version of backend
;:status :good ; :alpha, :beta, :stable, :new
-:url "http://www.rzg.mpg.de/~mpd/sane/" ; backend home page
+:url "https://web.archive.org/web/20051103043526/http://www.rzg.mpg.de/~mpd/sane/" ; backend home page
:devicetype :scanner
diff --git a/doc/descriptions/canon_dr.desc b/doc/descriptions/canon_dr.desc
index d43b1ea..b1f663b 100644
--- a/doc/descriptions/canon_dr.desc
+++ b/doc/descriptions/canon_dr.desc
@@ -335,6 +335,12 @@
:usbid "0x1083" "0x162c"
:status :good
+:model "P-150"
+:interface "USB"
+:usbid "0x1083" "0x162d"
+:status :unsupported
+:comment "This is the same device as the 0x162c P-150, but the mode switch on the scanner is in the wrong position, you must move the switch."
+
:model "P-201"
:interface "USB"
:usbid "0x1083" "0x1652"
@@ -355,7 +361,7 @@
:model "P-208"
:interface "USB"
:usbid "0x1083" "0x164e"
-:status :basic
+:status :unsupported
:comment "This is the same device as the 0x164c P-208, but the mode switch on the scanner is in the wrong position, you must move the switch."
:model "DR-P208II"
@@ -372,7 +378,7 @@
:model "P-208II"
:interface "USB"
:usbid "0x1083" "0x1660"
-:status :basic
+:status :unsupported
:comment "This is the same device as the 0x165f P-208II, but the mode switch on the scanner is in the wrong position, you must move the switch."
:model "DR-P215"
@@ -390,7 +396,7 @@
:model "P-215"
:interface "USB"
:usbid "0x1083" "0x1647"
-:status :basic
+:status :unsupported
:comment "This is the same device as the 0x1646 P-215, but the mode switch on the scanner is in the wrong position, you must move the switch."
:model "DR-P215II"
@@ -407,3 +413,9 @@
:interface "USB"
:usbid "0x1083" "0x1648"
:status :untested
+
+:model "R40"
+:interface "USB"
+:usbid "0x1083" "0x1679"
+:status :basic
+:comment "Letter-size ADF. Hardware provides: Gray/Color, Simplex/Duplex, Full-width, 300/600dpi horizontal, with front mirrored horizontally. Driver provides: Binary, Despeckle, Deskew, Cropping, Calibration, other resolutions. Multistream unsupported."
diff --git a/doc/descriptions/epjitsu.desc b/doc/descriptions/epjitsu.desc
index 03bc8fb..e7b0ff6 100644
--- a/doc/descriptions/epjitsu.desc
+++ b/doc/descriptions/epjitsu.desc
@@ -10,15 +10,16 @@
;
:backend "epjitsu" ; name of backend
-:version "31" ; version of backend
+:version "33" ; version of backend
:manpage "sane-epjitsu" ; name of manpage (if it exists)
-:comment "Backend updated for SANE release 1.0.26, see sane-epjitsu manpage"
+:comment "Backend updated for SANE release 1.1.2, see sane-epjitsu manpage"
:devicetype :scanner ; start of a list of devices....
; other types: :stillcam, :vidcam,
; :meta, :api
:mfg "Fujitsu" ; name a manufacturer
:url "http://www.fujitsu.com/"
+:url "https://fujitsuscanners.com/"
;==================================================
:model "fi-60F"
diff --git a/doc/descriptions/epsonds.desc b/doc/descriptions/epsonds.desc
index 9a17f43..989caf8 100644
--- a/doc/descriptions/epsonds.desc
+++ b/doc/descriptions/epsonds.desc
@@ -341,20 +341,20 @@
:model "ET-2810 Series"
:interface "USB"
-:usbid "0x04b8" "0x118A"
+:usbid "0x04b8" "0x118a"
:status :complete
:model "L3250 Series"
:interface "USB"
-:usbid "0x04b8" "0x118A"
+:usbid "0x04b8" "0x118a"
:status :complete
:model "XP-2150 Series"
:interface "USB"
-:usbid "0x04b8" "0x119B"
+:usbid "0x04b8" "0x119b"
:status :complete
-:model ""
+:model "XP-2200 Series"
:interface "USB"
-:usbid "0x04b8" "0x00"
+:usbid "0x04b8" "0x11b1"
:status :complete
diff --git a/doc/descriptions/escl.desc b/doc/descriptions/escl.desc
index fa5b32b..e09c4b4 100644
--- a/doc/descriptions/escl.desc
+++ b/doc/descriptions/escl.desc
@@ -23,13 +23,23 @@
:status :good
:comment "All resolutions supported."
+:model "MFC-J985DW"
+:interface "Ethernet WiFi"
+:status :good
+:comment "All resolutions supported, Flatbed and ADF supported."
+
+:model "MFC-J1300DW"
+:interface "Ethernet WiFi"
+:status :good
+:comment "All resolutions supported, Flatbed and ADF supported."
+
:mfg "Canon"
:url "https://www.canon-europe.com/support/"
:model "IR C3520"
:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:model "PIXMA MG5765"
:interface "WiFi"
@@ -47,39 +57,39 @@
:comment "Testers needed!"
:model "PIXMA TR4520 Series"
-:interface "Wifi"
+:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:model "PIXMA TR4540 Series"
-:interface "Wifi"
+:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:model "PIXMA TR4550 Series"
-:interface "Wifi"
+:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:model "PIXMA TR4551"
-:interface "Wifi"
+:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:model "PIXMA TR7500 Series"
:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:model "PIXMA TR8500 Series"
:interface "Ethernet WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:model "PIXMA TR8520"
:interface "Ethernet WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:model "PIXMA TS3100 Series"
:interface "WiFi"
@@ -121,6 +131,21 @@
:status :good
:comment "All resolutions supported."
+:model "PIXMA TS3450"
+:interface "WiFi"
+:status :good
+:comment "All resolutions supported."
+
+:model "PIXMA TS3451"
+:interface "WiFi"
+:status :good
+:comment "All resolutions supported."
+
+:model "PIXMA TS3452"
+:interface "WiFi"
+:status :good
+:comment "All resolutions supported."
+
:model "PIXMA TS5350 Series"
:interface "WiFi"
:status :good
@@ -132,17 +157,22 @@
:comment "All resolutions supported."
:model "PIXMA TS6150 Series"
-:interface "Wifi"
+:interface "WiFi"
:status :untested
:comment "Testers needed!"
:model "PIXMA TS8050 Series"
-:interface "Wifi"
+:interface "WiFi"
:status :untested
:comment "Testers needed!"
+:model "PIXMA TS8350 Series"
+:interface "WiFi"
+:status :good
+:comment "All resolutions supported."
+
:model "PIXMA TS9100 Series"
-:interface "Wifi"
+:interface "WiFi"
:status :untested
:comment "Testers needed!"
@@ -152,22 +182,27 @@
:model "ET-2750"
:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted only supported."
+:comment "All resolutions supported, Flatbed only supported."
:model "ET-3750"
:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:model "ET-4750"
:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
+
+:model "EcoTank L3160"
+:interface "WiFi"
+:status :good
+:comment "All resolutions supported."
:model "XP-6100"
:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted only supported."
+:comment "All resolutions supported, Flatbed only supported."
:mfg "HP"
:url "https://support.hp.com/us-en/drivers/printers"
@@ -215,7 +250,7 @@
:model "OfficeJet Pro 8610"
:interface "Ethernet WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
:mfg "Ricoh"
:url "http://support.ricoh.com/bb/html/dr_ut_e/re2/"
@@ -231,4 +266,4 @@
:model "VERSALINK C7220"
:interface "WiFi"
:status :good
-:comment "All resolutions supported, Flatted and ADF supported."
+:comment "All resolutions supported, Flatbed and ADF supported."
diff --git a/doc/descriptions/fujitsu.desc b/doc/descriptions/fujitsu.desc
index d484168..6cf8381 100644
--- a/doc/descriptions/fujitsu.desc
+++ b/doc/descriptions/fujitsu.desc
@@ -11,16 +11,16 @@
:backend "fujitsu" ; name of backend
-:url "http://www.thebility.com/fujitsu/"
-:version "137" ; version of backend
+:version "139" ; version of backend
:manpage "sane-fujitsu" ; name of manpage (if it exists)
-:comment "Backend updated for SANE release 1.0.32, see sane-fujitsu manpage"
+:comment "Backend updated for SANE release 1.1.2, see sane-fujitsu manpage"
:devicetype :scanner ; start of a list of devices....
; other types: :stillcam, :vidcam,
; :meta, :api
:mfg "Fujitsu" ; name a manufacturer
:url "http://www.fujitsu.com/"
+:url "https://fujitsuscanners.com/"
;==================================================
; DISCONTINUED OLDER MODELS, SMALL
@@ -28,12 +28,10 @@
:interface "SCSI"
:url "http://www.remote.org/frederik/projects/software/sane/"
:status :complete
-:comment "small, old, discontinued"
:model "M3092DC"
:interface "SCSI"
:status :complete
-:comment "small, old, discontinued"
;==================================================
; DISCONTINUED NEWER MODELS, SMALL
@@ -41,61 +39,55 @@
:interface "SCSI USB"
:usbid "0x04c5" "0x1041"
:status :complete
-:comment "small, recent, discontinued, usb 1.1"
+:comment "Slow USB 1.1"
:model "fi-4120C2"
:interface "SCSI USB"
:usbid "0x04c5" "0x10ae"
:status :complete
-:comment "small, recent, discontinued, usb 2.0"
+:comment "Faster USB 2.0"
:model "fi-4220C"
:interface "SCSI USB"
:usbid "0x04c5" "0x1042"
:status :complete
-:comment "small, recent, discontinued, usb 1.1"
+:comment "Slow USB 1.1"
:model "fi-4220C2"
:interface "SCSI USB"
:usbid "0x04c5" "0x10af"
:status :complete
-:comment "small, recent, discontinued, usb 2.0"
+:comment "Faster USB 2.0"
:model "fi-5110C"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x1097"
-:comment "small, recent, discontinued"
:model "fi-5110EOX/2"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x1096"
-:comment "small, recent, discontinued"
:model "fi-5110EOX3"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x10e6"
-:comment "small, recent, discontinued"
:model "fi-5110EOXM"
:interface "USB"
:usbid "0x04c5" "0x10f2"
:status :complete
-:comment "small, recent, discontinued"
:model "fi-5120C"
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x10e0"
-:comment "small, recent, discontinued"
:model "fi-5220C"
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x10e1"
-:comment "small, recent, discontinued"
:model "fi-5000N"
:interface "Ethernet"
@@ -105,154 +97,132 @@
:model "fi-6000NS"
:interface "Ethernet"
:status :untested
-:comment "small, recent, discontinued, integrated touchscreen and keyboard"
:model "ScanSnap S500"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x10fe"
-:comment "small, recent, discontinued"
:model "ScanSnap S500M"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x1135"
-:comment "small, recent, discontinued"
:model "ScanSnap S510"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x1155"
-:comment "small, recent, discontinued"
:model "ScanSnap S510M"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x116f"
-:comment "small, recent, discontinued"
:model "fi-6130"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x114f"
-:comment "small, recent, discontinued"
:model "fi-6230"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x1150"
-:comment "small, recent, discontinued"
:model "fi-6130Z"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x11f3"
-:comment "small, recent, discontinued"
:model "fi-6230Z"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x11f4"
-:comment "small, recent, discontinued"
:model "fi-6120ZLA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x146d"
-:comment "small, recent, discontinued, expected to work"
:model "fi-6220ZLA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x146e"
-:comment "small, recent, discontinued, expected to work"
:model "fi-6125ZLA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x1463"
-:comment "small, recent, discontinued, expected to work"
:model "fi-6225ZLA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x1464"
-:comment "small, recent, discontinued, expected to work"
:model "fi-6130ZLA"
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x1461"
-:comment "small, recent, discontinued"
:model "fi-6230ZLA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x1462"
-:comment "small, recent, discontinued, expected to work"
:model "ScanSnap S1500"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x11a2"
-:comment "small, discontinued"
:model "ScanSnap S1500M"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x11a2"
-:comment "small, discontinued, same as S1500"
+:comment "Same as S1500"
:model "ScanSnap N1800"
:interface "Ethernet"
-:status :untested
-:comment "small, discontinued, integrated touchscreen and keyboard"
+:status :unsupported
;==================================================
; CURRENT MODELS, SMALL
:model "ScanSnap N7100"
:interface "Ethernet"
-:status :untested
-:comment "small, current, integrated touchscreen and keyboard"
+:status :unsupported
:model "ScanSnap fi-6010N"
:interface "Ethernet"
-:status :untested
-:comment "small, current, integrated touchscreen and keyboard"
+:status :unsupported
:model "fi-6110"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x11fc"
-:comment "small, current"
:model "fi-7160"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x132e"
-:comment "small, current"
:model "fi-7260"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x132f"
-:comment "small, current"
:model "ScanSnap iX500"
:interface "USB WiFi"
:status :good
:usbid "0x04c5" "0x132b"
-:comment "small, current, WiFi not supported. Hardware only scans in color. Backend generates binary and grayscale modes."
+:comment "WiFi not supported. Hardware only scans in color. Backend generates binary and grayscale modes."
:model "ScanSnap iX100"
:interface "USB WiFi"
:status :good
:usbid "0x04c5" "0x13f4"
-:comment "small, current, WiFi not supported."
+:comment "WiFi not supported."
:model "ScanSnap SV600"
:interface "USB"
-:status :untested
+:status :unsupported
:usbid "0x04c5" "0x128e"
:comment "Also has a second USB VID 0x13ba. Will require some gymnastics to support."
@@ -261,57 +231,46 @@
:model "M3093E"
:interface "RS232C/Video"
:status :unsupported
-:comment "medium, old, discontinued"
:model "M3093DE"
:interface "RS232C/Video"
:status :unsupported
-:comment "medium, old, discontinued"
:model "M3093DG"
:interface "SCSI"
:status :complete
-:comment "medium, old, discontinued"
:model "M3093EX"
:interface "RS232C/Video"
:status :unsupported
-:comment "medium, old, discontinued"
:model "M3093GX"
:interface "SCSI"
:status :complete
-:comment "medium, old, discontinued"
:model "M3096EX"
:interface "RS232C/Video"
:status :unsupported
-:comment "medium, old, discontinued"
:model "M3096GX"
:interface "SCSI"
:status :complete
-:comment "medium, old, discontinued"
:model "M3097E+"
:interface "RS232C/Video"
:status :unsupported
-:comment "medium, old, discontinued"
:model "M3097G+"
:interface "SCSI"
:status :complete
-:comment "medium, old, discontinued"
:model "M3097DE"
:interface "RS232C/Video"
:status :unsupported
-:comment "medium, old, discontinued"
:model "M3097DG"
:interface "SCSI"
:status :complete
-:comment "medium, old, discontinued"
;==================================================
; DISCONTINUED NEWER MODELS, MEDIUM
@@ -319,77 +278,64 @@
:interface "SCSI USB"
:usbid "0x04c5" "0x10cf"
:status :complete
-:comment "medium, current"
:model "fi-4530C"
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x1078"
-:comment "medium, recent, discontinued"
:model "fi-4640S"
:interface "SCSI"
:status :complete
-:comment "medium, recent, discontinued"
:model "fi-4750C"
:interface "SCSI"
:status :complete
-:comment "medium, recent, discontinued"
:model "fi-5530C"
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x10e2"
-:comment "medium, recent, discontinued"
:model "fi-6140"
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x114d"
-:comment "medium, recent, discontinued"
:model "fi-6240"
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x114e"
-:comment "medium, recent, discontinued"
:model "fi-6140Z/fi-6140ZLA"
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x11f1"
-:comment "medium, recent, discontinued"
:model "fi-6240Z"
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x11f2"
-:comment "medium, recent, discontinued"
:model "fi-6135ZLA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x146b"
-:comment "medium, recent, discontinued, expected to work"
:model "fi-6235ZLA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x146c"
-:comment "medium, recent, discontinued, expected to work"
:model "fi-6140ZLA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x145f"
-:comment "medium, recent, discontinued, expected to work"
:model "fi-6240ZLA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x1460"
-:comment "medium, recent, discontinued, expected to work"
;==================================================
; CURRENT MODELS, MEDIUM
@@ -398,107 +344,90 @@
:interface "SCSI USB"
:status :complete
:usbid "0x04c5" "0x114a"
-:comment "medium, current"
:model "fi-7180"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x132c"
-:comment "medium, current"
:model "fi-7280"
:interface "USB"
:status :complete
:usbid "0x04c5" "0x132d"
-:comment "medium, current"
;==================================================
; DISCONTINUED OLDER MODELS, BIG
:model "M3099A"
:interface "RS232C/Video"
:status :unsupported
-:comment "big, old, discontinued"
:model "M3099G"
:interface "SCSI"
:status :complete
-:comment "big, old, discontinued"
:model "M3099EH"
:interface "RS232C/Video"
:status :unsupported
-:comment "big, old, discontinued"
:model "M3099GH"
:interface "SCSI"
:status :complete
-:comment "big, old, discontinued"
:model "M3099EX"
:interface "RS232C/Video"
:status :unsupported
-:comment "big, old, discontinued"
:model "M3099GX"
:interface "SCSI"
:status :complete
-:comment "big, old, discontinued"
:model "M4097D"
:interface "SCSI"
:status :complete
-:comment "big, old, discontinued"
:model "M4099D"
:interface "SCSI"
:status :complete
-:comment "big, old, discontinued"
;==================================================
; DISCONTINUED NEWER MODELS, BIG
:model "fi-4750L"
:interface "SCSI"
:status :complete
-:comment "big, recent, discontinued"
:model "fi-4860C"
:interface "SCSI"
:status :complete
-:comment "big, recent, discontinued"
:model "fi-4860C2"
:interface "SCSI"
:status :complete
-:comment "big, recent, discontinued"
:model "fi-4990C"
:interface "SCSI"
:status :complete
-:comment "big, recent, discontinued"
:model "fi-5650C"
:interface "SCSI USB"
:usbid "0x04c5" "0x10ad"
:status :complete
-:comment "big, recent, discontinued"
:model "fi-5750C"
:interface "SCSI USB"
:usbid "0x04c5" "0x1095"
:status :complete
-:comment "big, recent, discontinued"
:model "fi-5900C"
:interface "SCSI USB"
:usbid "0x04c5" "0x10e7"
:status :good
-:comment "big, recent, discontinued. Independent ultrasonic control and multistream unsupported"
+:comment "Independent ultrasonic control and multistream unsupported"
:model "fi-6750S"
:interface "USB"
:status :untested
:usbid "0x04c5" "0x1178"
-:comment "Simplex, USB only version of fi-6770, won't wakeup via software, discontinued"
+:comment "Simplex, USB only version of fi-6770, won't wakeup via software"
;==================================================
; CURRENT MODELS, BIG
@@ -506,43 +435,42 @@
:interface "SCSI USB"
:usbid "0x04c5" "0x1213"
:status :untested
-:comment "big, current. Faster version of fi-5900?"
:model "fi-6670"
:interface "SCSI USB"
:status :good
:usbid "0x04c5" "0x1176"
-:comment "big, current, won't wakeup via software"
+:comment "Won't wakeup via software"
:model "fi-6670A"
:interface "SCSI USB"
:status :good
:usbid "0x04c5" "0x1177"
-:comment "big, current, VRS CGA board unsupported, won't wakeup via software"
+:comment "VRS CGA board unsupported, won't wakeup via software"
:model "fi-6770"
:interface "SCSI USB"
:status :good
:usbid "0x04c5" "0x1174"
-:comment "big, current, won't wakeup via software"
+:comment "Won't wakeup via software"
:model "fi-6770A"
:interface "SCSI USB"
:status :good
:usbid "0x04c5" "0x1175"
-:comment "big, current, VRS CGA board unsupported, won't wakeup via software"
+:comment "VRS CGA board unsupported, won't wakeup via software"
:model "fi-6800"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x119d"
-:comment "big, current. Independent ultrasonic control and multistream unsupported"
+:comment "Independent ultrasonic control and multistream unsupported"
:model "fi-6800-CGA"
:interface "SCSI USB"
:status :untested
:usbid "0x04c5" "0x119e"
-:comment "big, current. VRS CGA board unsupported, Independent ultrasonic control and multistream unsupported"
+:comment "VRS CGA board unsupported, Independent ultrasonic control and multistream unsupported"
:model "fi-6400"
:interface "SCSI USB"
@@ -550,7 +478,7 @@
:usbid "0x04c5" "0x14ac"
;==================================================
-; 2015/2016/2017 NEW MODELS, UNORDERED
+; 2015 and later NEW MODELS, UNORDERED
:model "fi-6420"
:interface "SCSI USB"
@@ -656,13 +584,13 @@
:interface "USB WiFi"
:status :good
:usbid "0x04c5" "0x159f"
-:comment "small, current, WiFi not supported."
+:comment "WiFi not supported."
:model "fi-800R"
:interface "USB"
:status :good
:usbid "0x04c5" "0x15fc"
-:comment "small, current, both feed methods are supported."
+:comment "Both feed methods are supported."
:model "fi-7900"
:interface "USB"
@@ -674,8 +602,77 @@
:status :good
:usbid "0x04c5" "0x160b"
+:model "ScanSnap iX1300"
+:interface "USB WiFi"
+:status :good
+:usbid "0x04c5" "0x162c"
+:comment "WiFi not supported."
+
+:model "ScanSnap iX1400"
+:interface "USB"
+:status :untested
+:usbid "0x04c5" "0x1630"
+
:model "ScanSnap iX1600"
:interface "USB WiFi"
:status :good
:usbid "0x04c5" "0x1632"
-:comment "small, current, WiFi not supported."
+:comment "WiFi not supported."
+
+:model "ScanPartner SP30"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x140a"
+:comment "Reported to work, but that is questionable because other SP scanners are unsupported."
+
+:model "fi-7300NX"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x1575"
+:comment "Ethernet and WiFi not supported."
+
+:model "fi-8190"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x15fd"
+:comment "Ethernet not supported."
+
+:model "fi-8290"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x15fe"
+:comment "Ethernet not supported."
+
+:model "fi-8170"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x15ff"
+:comment "Ethernet not supported."
+
+:model "fi-8270"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x1600"
+:comment "Ethernet not supported."
+
+:model "fi-8150"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x1601"
+:comment "Ethernet not supported."
+
+:model "fi-8250"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x1602"
+:comment "Ethernet not supported."
+
+:model "fi-8150U"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x162d"
+
+:model "fi-8250U"
+:interface "USB"
+:status :good
+:usbid "0x04c5" "0x162e"
diff --git a/doc/descriptions/pixma.desc b/doc/descriptions/pixma.desc
index 618d128..b1a5657 100644
--- a/doc/descriptions/pixma.desc
+++ b/doc/descriptions/pixma.desc
@@ -106,6 +106,18 @@
:status :untested
:comment "Testers needed!"
+:model "PIXMA E4500 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18db"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA G600"
+:interface "USB"
+:usbid "0x04a9" "0x18d5"
+:status :complete
+:comment "All resolutions supported (up to 600DPI)."
+
:model "PIXMA G2000"
:interface "USB"
:usbid "0x04a9" "0x1795"
@@ -214,6 +226,18 @@
:status :untested
:comment "Testers needed!"
+:model "PIXMA GX6000 Series"
+:interface "USB Ethernet WiFi"
+:usbid "0x04a9" "0x18a6"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA GX7000"
+:interface "USB"
+:usbid "0x04a9" "0x18a8"
+:status :untested
+:comment "Testers needed!"
+
:model "PIXMA MG2100 Series"
:interface "USB"
:usbid "0x04a9" "0x1751"
@@ -917,6 +941,17 @@
:status :complete
:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+:model "PIXMA TR4600 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18da"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
+:model "PIXMA TR4700 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18dc"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
:model "PIXMA TR7000 Series"
:interface "USB"
@@ -978,6 +1013,18 @@
:status :untested
:comment "Testers needed!"
+:model "PIXMA TS2400 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1108"
+:status :good
+:comment "All resolutions supported (up to 600DPI). WiFi not working."
+
+:model "PIXMA TS2600 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1107"
+:status :good
+:comment "All resolutions supported (up to 600DPI). WiFi not working."
+
:model "PIXMA TS3100 Series"
:interface "USB WiFi"
:usbid "0x04a9" "0x1827"
@@ -990,9 +1037,27 @@
:status :good
:comment "All resolutions supported (up to 1200DPI). WiFi not working."
-:model "PIXMA TS3400 Series"
+:model "PIXMA TS3450"
+:interface "USB"
+:usbid "0x04a9" "0x18b7"
+:status :good
+:comment ""All resolutions supported (up to 600DPI). WiFi not working.
+
+:model "PIXMA TS3451"
+:interface "USB"
+:usbid "0x04a9" "0x18b7"
+:status :good
+:comment ""All resolutions supported (up to 600DPI). WiFi not working.
+
+:model "PIXMA TS3452"
:interface "USB"
:usbid "0x04a9" "0x18b7"
+:status :good
+:comment ""All resolutions supported (up to 600DPI). WiFi not working.
+
+:model "PIXMA TS3500 Series"
+:interface "USB"
+:usbid "0x04a9" "0x18d4"
:status :untested
:comment "Testers needed!"
@@ -1014,12 +1079,24 @@
:status :untested
:comment "Testers needed!"
+:model "PIXMA TS5350i Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18d9"
+:status :untested
+:comment "Testers needed!"
+
:model "PIXMA TS5380 Series"
:interface "USB WiFi"
:usbid "0x04a9" "0x188c"
:status :untested
:comment "Testers needed!"
+:model "PIXMA TS5400 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18d8"
+:status :untested
+:comment "Testers needed!"
+
:model "PIXMA TS6000 Series"
:interface "USB WiFi"
:usbid "0x04a9" "0x1801"
@@ -1083,8 +1160,8 @@
:model "PIXMA TS6400 Series"
:interface "USB"
:usbid "0x04a9" "0x18d3"
-:status :untested
-:comment "Testers needed!"
+:status :good
+:comment "All resolutions supported (up to 1200DPI). WiFi not tested by Pixma as yet."
:model "PIXMA TS7330 Series"
:interface "USB WiFi"
@@ -1104,18 +1181,24 @@
:status :untested
:comment "Testers needed!"
-:model "PIXMA TS8000 Series"
-:interface "USB WiFi"
-:usbid "0x04a9" "0x1800"
-:status :good
-:comment "All resolutions supported (up to 2400DPI). WiFi not working."
+:model "PIXMA TS7450i Series"
+:interface "USB"
+:usbid "0x04a9" "0x18f7"
+:status :untested
+:comment "Testers needed!"
-:model "PIXMA TS8430 Series"
+:model "PIXMA TS7530 Series"
:interface "USB"
-:usbid "0x04a9" "0x18b5"
+:usbid "0x04a9" "0x18e1"
:status :untested
:comment "Testers needed!"
+:model "PIXMA TS8000 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x1800"
+:status :good
+:comment "All resolutions supported (up to 2400DPI). WiFi not supported by Pixma."
+
:model "PIXMA TS8100 Series"
:interface "USB WiFi"
:usbid "0x04a9" "0x1821"
@@ -1170,6 +1253,18 @@
:status :untested
:comment "Testers needed!"
+:model "PIXMA TS8430 Series"
+:interface "USB"
+:usbid "0x04a9" "0x18b5"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXMA TS8530 Series"
+:interface "USB"
+:usbid "0x04a9" "0x18e0"
+:status :untested
+:comment "Testers needed!"
+
:model "PIXMA TS9000 Series"
:interface "USB WiFi"
:usbid "0x04a9" "0x179f"
@@ -1236,6 +1331,18 @@
:status :untested
:comment "Testers needed!"
+:model "PIXUS XK100 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18e2"
+:status :untested
+:comment "Testers needed!"
+
+:model "PIXUS XK500 Series"
+:interface "USB WiFi"
+:usbid "0x04a9" "0x18df"
+:status :untested
+:comment "Testers needed!"
+
:model "imageCLASS D420"
:interface "USB"
:usbid "0x04a9" "0x26ef"
@@ -1650,6 +1757,12 @@
:status :complete
:comment "All resolutions supported (up to 600DPI). Identical with SmartBase MPC200 and PIXUS MP10."
+:model "imageRUNNER 1018/1022/1023"
+:interface "USB"
+:usbid "0x04a9" "0x269d"
+:status :complete
+:comment "Flatbed and ADF scan. All resolutions supported (up to 600DPI)"
+
:model "imageRUNNER 1020/1024/1025"
:interface "USB"
:usbid "0x04a9" "0x26e6"
diff --git a/doc/descriptions/sp15c.desc b/doc/descriptions/sp15c.desc
index c43af80..f75c2cf 100644
--- a/doc/descriptions/sp15c.desc
+++ b/doc/descriptions/sp15c.desc
@@ -19,8 +19,8 @@
; :meta, :api
:mfg "Fujitsu" ; name a manufacturer
-:url "http://www.fcpa.fujitsu.com/products/scanners/"
:url "http://www.fujitsu.com/"
+:url "https://fujitsuscanners.com/"
:model "ScanPartner 15C" ; name models for above-specified mfg.
:interface "SCSI"
diff --git a/doc/descriptions/template.desc. b/doc/descriptions/template.desc
index a6b6bab..a6b6bab 100644
--- a/doc/descriptions/template.desc.
+++ b/doc/descriptions/template.desc
diff --git a/doc/descriptions/unsupported.desc b/doc/descriptions/unsupported.desc
index e7c1954..809be9b 100644
--- a/doc/descriptions/unsupported.desc
+++ b/doc/descriptions/unsupported.desc
@@ -434,27 +434,6 @@
:status :unsupported
:comment "Probably not supported. Scanner cardridge for Canon inkjet printers."
-:model "ImageRunner iR1018"
-:url "unsupported/canon-imagerunner.html"
-:interface "USB"
-:usbid "0x04a9" "0x269d"
-:status :unsupported
-:comment "Probably not supported. See link for details."
-
-:model "ImageRunner iR1022"
-:url "unsupported/canon-imagerunner.html"
-:interface "USB"
-:usbid "0x04a9" "0x269d"
-:status :unsupported
-:comment "Probably not supported. See link for details."
-
-:model "ImageRunner iR1023"
-:url "unsupported/canon-imagerunner.html"
-:interface "USB"
-:usbid "0x04a9" "0x269d"
-:status :unsupported
-:comment "Probably not supported. See link for details."
-
:model "PIXMA MP110"
:url "unsupported/canon-pixma-mp110.html"
:interface "USB"
@@ -1837,6 +1816,13 @@
:status :unsupported
:comment "Unsupported. See link for more details."
+:model "OpticSlim 550"
+:url "unsupported/plustek-opticslim-550.html"
+:interface "USB"
+:usbid "0x07b3" "0x0c33"
+:status :unsupported
+:comment "GL843 based, to be added to genesys backend"
+
:model "OpticSlim 2420"
:url "unsupported/plustek-opticslim-2420.html"
:interface "USB"
diff --git a/doc/plustek/FAQ b/doc/plustek/FAQ
index 92a4e72..089fc6d 100644
--- a/doc/plustek/FAQ
+++ b/doc/plustek/FAQ
@@ -12,111 +12,10 @@ If you have some more FAQ entries, let me know <gerhard@gjaeger.de>
THANKS to Jochen <jochen@puchalla-online.de>, who roamed through the
mailing-list and gathered the different questions.
-
*******************************************************************************
-* TROUBLE-SHOOTING *
-* *
-* DRIVER TOPICS *
+* General *
*******************************************************************************
-
-SYMPTOM: "kernel-module version mismatch"
---------
-"When I try to "make load" I get an error"
-
-/sbin/modprobe pt_drv || exit 1
-/lib/modules/2.2.14-6.0.6/misc/pt_drv.o: kernel-module version mismatch
-/lib/modules/2.2.14-6.0.1/misc/pt_drv.o was compiled
-for kernel version 2.2.14-5.0
-while this kernel is version 2.2.14-6.0.1.
-
-PROBLEM:
---------
-You're using the wrong Kernel-header files.
-
-The path
-/usr/include/linux is a link to
-/usr/src/linux/include/linux and
-/usr/src/linux is normally a link to your current
-kernel, i.e:
-/usr/src/linux-2.2.14
-
-If you now upgrade your kernel and you have
-forgotten to correct the link /usr/src/linux, then
-every kernel-module you build outside the
-kernelsource structure will include the wrong
-version information.
-
-SOLUTION:
----------
-Set the link /usr/src/linux
-to your current kernel-source tree before recompiling
-kernel-modules like pt_drv, then your version mismatch
-problem should be solved.
-
-
-
-SYMPTOM: "Device or resource busy"
---------
-Any attempt to "modprobe" or "make load" the driver leads
-to this message.
-
-PROBLEM:
---------
-The driver refuses to load. During startup, the driver performs
-some tests according to the parallel port and the connected
-scanners.
-If the parallel port is not supported or the scanner cannot be
-found, the driver returns an error and the system will report
-"device or resource busy"
-
-SOLUTION:
----------
-There's no way to provide a general solution. First of all
-you should check your connections and the parallel port.
-Also check power for your scanner.
-If the problem still exists, enable the debug-messages of the
-pt_drv module (see INSTALL).
-Then check the messages after loading or send the output to
-the mailing list.
-Most of these problems are related to HW-problems. Before
-giving up, check the scanner under Windows (not really a
-good advice I know, but it helps to find HW-damage).
-There was also one case were the internal plugs of the parport
-connection were wrong...
-
-
-
-SYMPTOM: "Unresolved symbols"
---------
-"make load" or "modprobe pt_drv" produces this message:
-
-/sbin/modprobe pt_drv || exit 1
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_unregister_device
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_enumerate
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_register_device
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_claim
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_release
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: insmod
-/lib/modules/2.2.14-5.0/misc/pt_drv.o failed
-
-
-PROBLEM:
---------
-The driver needs at least the parport_pc and the parport modules
-to work. They MUST be loaded prior to pt_drv. If these modules
-are not loaded you get this message.
-
-SOLUTION:
----------
-Simply load the parport module. You can add this dependency to
-your /etc/modules.conf (or /etc/conf.modules) file (see INSTALL).
-Then every time you load pt_drv with modprobe, parport will be loaded
-automatically. After modifying this file, call
-depmod -va
-
-
-
SYMPTOM: Scanner makes awful noise
--------
@@ -138,7 +37,6 @@ The second case is often reported when the printer driver lp.o is
already loaded. So remove lp.o before loading pt_drv.
-
SYMPTOM: Printer starts to print while scanning
--------
@@ -294,23 +192,6 @@ A: You should be able to use xscanimage with gimp:
now the Acquire Image menu entry. That's all.
If not, start gimp from an xterm and have a look at the output.
-
-Q: Is there any way to load the plustek_driver at bootup-time?
-
-A: Normally, there is no need to do so, because once you
- altered your /etc/conf.modules file (or /etc/modules.conf)
- and added the suggested stuff (see INSTALL file), you won't
- have to worry about loading the driver. It happens automagically. ;-)
- The driver will be loaded when needed (and eventually
- removed after a specific time of not using it).
-
- Nevertheless, another possibility is to do a modprobe pt_drv in the
- /etc/rc.d/boot.local (using SuSE) or
- /etc/rc.d/rc.local (using RedHat or Mandrake) file
- So the driver will be loaded at bootup-time...
- !!! YOUR SCANNER MUST BE ONLINE during power-up then !!!
-
-
Q: I wonder if Mandrake 7.1's sane rpm file has this support already built in.
My scanner light is coming on yet Xscanimage seems to report that there
is no scanner present.
diff --git a/doc/plustek/MakeModule.sh b/doc/plustek/MakeModule.sh
deleted file mode 100644
index b684f0d..0000000
--- a/doc/plustek/MakeModule.sh
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/bin/bash
-#******************************************************************************
-#
-# Bash-Script to create Plustek-Scannerdriver modules for Kernel 2.4, 2.6 and 3.x
-# out of the backend sources...
-#
-
-BUILD_DIR=$PWD/build
-SRC_DIR=$PWD/../../backend
-MAKEFILE=$PWD/Makefile.kernel26
-KERNEL_V=`uname -r`
-OSMINOR=`uname -r | cut -b 3`
-OSMAJOR=`uname -r | cut -b 1`
-
-#
-# some intro ;-)
-#
-echo "This script will try and build a suitable kernel-module for your system."
-echo "If you'd like to make the module WITH debug output, restart this script"
-echo "with as follows:"
-echo "./MakeModule.sh DEBUG=y"
-echo "Press <ENTER> to continue or <CTRL><C> to cancel."
-read
-
-#
-# we need to be root user...
-#
-echo -n "Check for root..."
-if [ $EUID -ne 0 ]; then
- echo -e "\b\b\b - failed"
- echo "Please retry as root user."
- exit -1
-fi
-echo -e "\b\b\b - done."
-
-#
-# Version checks...
-#
-echo -e "\nCheck for kernelversion:"
-if [ "$OSMAJOR" == "3" ];then
- echo "Using makefile for kernel 2.6.x - okay for kernel 3 as well..."
- MAKEFILE=$PWD/Makefile.kernel26
-elif [ "$OSMINOR" == "6" ]; then
- echo "Using makefile for kernel 2.6.x"
- MAKEFILE=$PWD/Makefile.kernel26
-elif [ "$OSMINOR" == "4" ]; then
- echo "Using makefile for kernel 2.4.x"
- MAKEFILE=$PWD/Makefile.kernel24
-else
- echo "Your kernelversion >"$OSMAJOR"."$OSMINOR"< is probably not supported"
- exit -2
-fi
-
-#
-# Setup...
-#
-echo -e "Build-directory: \n"$BUILD_DIR
-echo -n "Removing build-directory..."
-rm -rf $BUILD_DIR
-echo -e "\b\b\b - done."
-
-echo -n "Creating build-directory..."
-mkdir $BUILD_DIR
-cd $BUILD_DIR
-echo -e "\b\b\b - done.\n"
-
-echo -n "Linking source files..."
-C_FILES=`ls $SRC_DIR/plustek-pp_*.c`
-H_FILES=`ls $SRC_DIR/plustek-pp_*.h`
-
-for F in $C_FILES $H_FILES $SRC_DIR/plustek-pp.h $SRC_DIR/plustek_pp.c; do
- ln -s $F .
-done
-echo -e "\b\b\b - done."
-
-echo -n "Copying Makefile to build-directory..."
-cp $MAKEFILE Makefile
-echo -e "\b\b\b - done."
-
-#
-# Building the module...
-#
-echo "Making the module..."
-if [ "$OSMAJOR" == "2" -a "$OSMINOR" == "4" ]; then
- make all $1
-else
- make -C /lib/modules/$KERNEL_V/build/ SUBDIRS=$BUILD_DIR modules $1
-fi
-RES=$?
-cd ..
-if [ $RES != 0 ]; then
- echo "There were some build errors..."
- exit -1
-fi
-echo "done."
-
-echo "Should I install the module?"
-echo "Press <ENTER> to continue or <CTRL><C> to cancel."
-read
-
-make -C $BUILD_DIR install
-
-echo "Should I try and load the module?"
-echo "If this step fails, check the kernel-log."
-echo "Press <ENTER> to continue or <CTRL><C> to cancel."
-read
-
-make -C $BUILD_DIR load
-echo "done."
-
-echo "Should I remove the build directory?"
-echo "Press <ENTER> to continue or <CTRL><C> to cancel."
-read
-
-rm -rf $BUILD_DIR
-echo "done."
diff --git a/doc/plustek/Makefile.kernel24 b/doc/plustek/Makefile.kernel24
deleted file mode 100644
index 28677c1..0000000
--- a/doc/plustek/Makefile.kernel24
+++ /dev/null
@@ -1,250 +0,0 @@
-# Makefile for the plustek scanner driver (kernel-module)
-#
-###############################################################################
-#
-# define the directories
-#
-HOME_DIR := .
-SRC_DIR := $(HOME_DIR)
-INC_DIR := $(SRC_DIR)
-OBJ_DIR := $(HOME_DIR)/obj
-DOC_DIR := $(HOME_DIR)/doc
-BACKEND := $(SRC_DIR)
-
-#
-# define the used tools
-#
-MD = mkdir -p
-CC = gcc
-TAR = tar
-REF = cxref
-
-#
-# Comment/uncomment the following line to disable/enable debugging
-# can also be set by commandline parameter: make all DEBUG=y
-#
-#DEBUG = y
-
-#
-# common compiler options
-#
-OPT = -fomit-frame-pointer -D_PTDRV_VERSTR=\"$(VERSIONSTR)\"
-
-#
-# cxref options
-#
-REFOPT = -xref-all -index-all -html32
-
-#
-# Comment out if you are not running SMP. Someone take this out of here
-# when the SMP stuff gets moved out of the kernel Makefile.
-# SMP = 1
-# SMP_PROF = 1
-
-#
-# add the following to get assembly listing
-# -Wa,-alh,-L -g
-
-#
-# get some version numbers
-#
-ifeq ($(LINUXVERSION),)
- LINUXVERSION = $(shell uname -r)
-endif
-
-VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(SRC_DIR)/plustek_pp.c | cut -b25-50 )
-
-# Change it here or specify it on the "make" commandline
-ifeq ($(HEADER_PATH),)
-MACHTYPE = $(shell env | grep debian-linux | wc -l | sed 's/ //g')
-ifeq ($(MACHTYPE),1)
-# debian
- HEADER_PATH = /usr/src/kernel-headers-$(LINUXVERSION)/include
-else
-# redhat, slackware
- HEADER_PATH = /usr/src/linux/include
-endif
-# HEADER_PATH = /usr/include
-endif
-
-ifeq ($(DEBUG),y)
- DEBFLAGS = -O -g -DDEBUG # "-O" is needed to expand inlines
-else
- DEBFLAGS = -O2
-endif
-
-#
-# the new style reference
-#
-K24_HEADER_PATH = /lib/modules/$(LINUXVERSION)/build/include
-
-#
-# try to autodetect if we can use the new style header include references
-#
-KERNEL_HEADERS = $(shell if test -d $(K24_HEADER_PATH); then \
- echo $(K24_HEADER_PATH); \
- else \
- echo $(HEADER_PATH); \
- fi; )
-
-#
-# seems to be necessary for kernels 2.4.x
-#
-MODVERFILE = $(shell if [ -e $(KERNEL_HEADERS)/linux/modversions.h ]; then \
- echo $(KERNEL_HEADERS)/linux/modversions.h ; \
- else \
- echo $(KERNEL_HEADERS)/linux/modsetver.h ; \
- fi )
-
-MODFLAGS = -DMODULE
-
-#
-# set MODVERSIONS if the kernel uses it
-#
-VERSUSED = $(shell grep 'define CONFIG_MODVERSIONS' \
- $(KERNEL_HEADERS)/linux/autoconf.h | wc -l | sed 's/ //g')
-ifeq ($(VERSUSED),1)
- MODFLAGS += -DMODVERSIONS -include $(MODVERFILE)
-endif
-
-
-WARNFLAGS = -Wall -Wstrict-prototypes
-CFLAGS = $(WARNFLAGS) $(OPT) -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(DEBFLAGS) $(MODFLAGS)
-MODLIB = /lib/modules/$(LINUXVERSION)
-
-ifdef SMP
-CFLAGS += -D__SMP__
-
-ifdef SMP_PROF
-CFLAGS += -D__SMP_PROF__
-endif
-endif
-
-TARGET = pt_drv
-
-OBJ = $(TARGET).o
-NAMES := dac detect genericio image map misc models io procfs
-NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
-NAMES := $(addprefix plustek-pp_, $(NAMES))
-SRCS := $(addprefix $(SRC_DIR)/, $(NAMES))
-SRCS := $(addsuffix .c, $(SRCS))
-OBJS := $(addprefix $(OBJ_DIR)/, $(NAMES))
-OBJS := $(addsuffix .o, $(OBJS))
-INCS := scan dbg types scandata procs hwdefs sysdep
-INCS := $(addsuffix .h, $(INCS))
-HDRS = $(addprefix $(INC_DIR)/plustek-pp_, $(INCS))
-
-#
-# the header files we need from the backend
-#
-BACKINCS := plustek-pp.h
-BACKINCS := $(addprefix $(BACKEND)/, $(BACKINCS))
-
-group = "root"
-mode = "644"
-INST_DIR = /lib/modules/$(LINUXVERSION)/kernel/drivers/char
-
-info:
- @clear
- @echo "Makefile to create the Plustek-Scanner kernel-module:"
- @echo "all ... builds the module"
- @echo "all DEBUG=y ... builds the module with debug-messages enabled"
- @echo "clean ... cleans up the show"
- @echo "install ... installs the module to the library path"
- @echo "uninstall ... removes the module from the library path"
- @echo "load ... tries to load the module and creates device nodes"
- @echo "unload ... unloads the module"
-
-
-all: .depend chkdir $(OBJ)
-
-#
-# create object directory
-#
-.PHONY : chkdir
-chkdir:
- @-$(MD) $(OBJ_DIR)
- @-$(MD) $(DOC_DIR)
-
-$(OBJ): $(OBJS)
- $(LD) -r $^ -o $@
-
-$(OBJS): Makefile $(HDRS) $(BACKINCS)
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
- $(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJ_DIR)/$(OBJ): VERSION1 VERSION0
-
-#
-# copy the driver to the modules directory
-#
-install:
- mkdir -p $(INST_DIR)
- install -c -m $(mode) $(OBJ) $(INST_DIR)
- /sbin/depmod -a
-
-#
-# remove it
-#
-uninstall:
- rm -f $(INST_DIR)/$(OBJ)
-
-#
-# use modprobe to load the driver, remember to set the
-# parameter in /etc/modules.conf (see sane-plustek_pp.man for more details)
-#
-load: $(INST_DIR)/$(OBJ)
-# invoke modprobe with all arguments we got
- /sbin/modprobe $(TARGET) || exit 1
-
-# Remove stale nodes and replace them, then give gid and perms
- rm -f /dev/$(TARGET)*
-
-# when using the devfs support, we check the /dev/scanner entries
-# and only create links to the devfs nodes
-# at least we create one link
- @if [ -e /dev/scanner/$(TARGET)* ]; then \
- ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET); \
- for name in `ls /dev/scanner | grep $(TARGET)`; do \
- ln -s /dev/scanner/$$name /dev/$$name ; \
- done \
- else \
- mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
- mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
- mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1; \
- mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
- mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3; \
- \
- chgrp $(group) /dev/$(TARGET)*; \
- chmod $(mode) /dev/$(TARGET)*; \
- fi
-
-#
-# unload the driver
-#
-unload:
- /sbin/modprobe -r $(TARGET) || exit 1
-
-# Remove stale nodes
- rm -f /dev/$(TARGET)*
-
-#
-# create reference docu
-#
-doc: chkdir
- $(REF) $(REFOPT) $(INC_DIR)/*.h $(SRC_DIR)/*.c $(BACKEND)/plustek-share.h \
- -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(MODFLAGS) \
- -D_PTDRV_V1=$(VERSION1) -D_PTDRV_V0=$(VERSION0) -D_PTDRV_BUILD=$(BUILD) -O$(DOC_DIR)
-
-clean:
- @-rm -f $(OBJ_DIR)/*.o .depend depend dep $(REF).* *.html $(TARGET).o
- @-rm -rf $(OBJ_DIR)
- @-rm -rf $(DOC_DIR)
-
-depend .depend dep:
- $(CC) $(CFLAGS) -M $(SRCS) > $@
-
-ifeq (.depend,$(wildcard .depend))
-#include .depend
-endif
diff --git a/doc/plustek/Makefile.kernel26 b/doc/plustek/Makefile.kernel26
deleted file mode 100644
index 43a71ad..0000000
--- a/doc/plustek/Makefile.kernel26
+++ /dev/null
@@ -1,124 +0,0 @@
-# Makefile for the plustek scanner driver (kernel-module)
-#
-###############################################################################
-
-#
-# retrieve the version numbers
-#
-ifeq ($(LINUXVERSION),)
- LINUXVERSION = $(shell uname -r)
-endif
-LINUXRELEASE = $(shell uname -r | cut -d'.' -f3)
-
-ifeq ($(VERSIONSTR),)
- ifeq ($(SUBDIRS),)
- VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(M)/plustek_pp.c | cut -b25-50 )
- else
- VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(SUBDIRS)/plustek_pp.c | cut -b25-50 )
- endif
-endif
-
-#
-# extra flags
-#
-EXTRA_CFLAGS += -D_PTDRV_VERSTR=\"$(VERSIONSTR)\"
-
-ifeq ($(DEBUG),y)
- EXTRA_CFLAGS += -DDEBUG
-endif
-
-#
-# the module name
-#
-TARGET := pt_drv
-MODULE := $(TARGET).ko
-
-#
-# our files...
-#
-NAMES := dac detect genericio image map misc models io procfs
-NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
-NAMES := $(addprefix plustek-pp_, $(NAMES))
-OBJS := $(addsuffix .o, $(NAMES))
-
-#
-# now the kernel magic
-#
-ifneq ($(KERNELRELEASE),)
-obj-m := $(TARGET).o
-
-$(TARGET)-objs := $(OBJS)
-
-else
-KDIR := /lib/modules/$(shell uname -r)/build
-PWD := $(shell pwd)
-
-default:
- $(MAKE) -C $(KDIR) M=$(PWD) modules
-endif
-
-#
-# the installation stuff
-#
-group = "root"
-mode = "644"
-INST_DIR = /lib/modules/$(LINUXVERSION)/kernel/drivers/parport
-
-#
-# copy the driver to the modules directory
-#
-install:
- mkdir -p $(INST_DIR)
- install -c -m $(mode) $(MODULE) $(INST_DIR)
- /sbin/depmod -a
-
-#
-#
-#
-uninstall:
- rm -f $(INST_DIR)/$(MODULE)
-
-#
-# use modprobe to load the driver, remember to set the
-# parameter in /etc/conf.modules (see INSTALL for more details)
-#
-load: $(INST_DIR)/$(MODULE)
-# invoke modprobe with all arguments we got
- /sbin/modprobe $(TARGET) || exit 1
-
-# Remove stale nodes and replace them, then give gid and perms
- rm -f /dev/$(TARGET)*
-
-# when using the devfs support, we check the /dev/scanner entries
-# and only create links to the devfs nodes
-# at least we create one link
- @if [ -e /dev/scanner/$(TARGET)* ]; then \
- ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET); \
- for name in `ls /dev/scanner | grep $(TARGET)`; do \
- ln -s /dev/scanner/$$name /dev/$$name ; \
- done \
- else \
- mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
- mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
- mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1; \
- mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
- mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3; \
- \
- chgrp $(group) /dev/$(TARGET)*; \
- chmod $(mode) /dev/$(TARGET)*; \
- fi
-
-#
-# unload the driver
-#
-unload:
- /sbin/modprobe -r $(TARGET) || exit 1
-
-# Remove stale nodes
- rm -f /dev/$(TARGET)*
-
-#
-# cleanup the show
-#
-clean:
- @-rm -f *.o .depend depend dep $(MODULE) $(TARGET).o $(TARGET).mod.c .*.cmd
diff --git a/doc/plustek/Plustek-PARPORT.txt b/doc/plustek/Plustek-PARPORT.txt
index a181b9c..f763100 100644
--- a/doc/plustek/Plustek-PARPORT.txt
+++ b/doc/plustek/Plustek-PARPORT.txt
@@ -1,46 +1,10 @@
Plustek-PARPRORT.txt (2004-03-28) Gerhard Jäger <gerhard@gjaeger.de>
====================================================================
-
Beginning with SANE-1.0.13, there's a backend called plustek_pp.
This is for controlling Plustek parallel-port scanner and compatible
devices. For a full listing, see plustek_pp.desc.
-This code formerly was available for creating the Linux kernelmodule
-pt_drv. This should no longer be necessary. You should be able to use
+This code formerly was available for creating the Linux kernel module
+pt_drv. This is no longer be necessary. You should be able to use
the backend out of the box.
-
-
-The kernel module
------------------
-
-As it might be helpful to create and use the kernel-module, this way still
-exists. It's possible to create this module out of the backend sources
-in sane-backends/backend. Simply do (as root user)
-
-./MakeModule.sh
-
-Then the module should be compiled, installed and loaded.
-
-Add the following three lines to file /etc/modules.conf
-
-alias char-major-40 pt_drv
-pre-install pt_drv modprobe -k parport
-options pt_drv lampoff=180 warmup=15 port=0x378 lOffonEnd=0 mov=0 slowIO=1
-
-See man page for sane-plustek_pp ("man sane-plustek_pp") for explanation of
-these options.
-
-Now "scanimage -L" should show something like this:
-device `plustek:/dev/pt_drv' is a Plustek 9630P flatbed scanner
-
-
-Known Problems:
----------------
-
-Sometimes it is necessary to change the ioctl-interface between the
-driver and the backend, in this case the version number of the communication
-protocol will be changed and newer drivers won't work with older backends
-and vice versa.
-In this case (error -9019 in the SANE debug output!!) you have to recompile SANE
-AND the driver (have a look at the installation procedure above).
diff --git a/doc/plustek/Plustek-USB.txt b/doc/plustek/Plustek-USB.txt
index 29989d0..208850c 100644
--- a/doc/plustek/Plustek-USB.txt
+++ b/doc/plustek/Plustek-USB.txt
@@ -4,10 +4,7 @@ Plustek-USB.txt (2005-08-08) Gerhard Jäger <gerhard@gjaeger.de>
NOTE:
-----
-ALL YOU NEED TO RUN YOUR USB SCANNER IS ALREADY INCLUDED. THERE'S
-NO NEED TO INSTALL THE KERNEL MODULE pt_drv. THIS ONE IS ONLY NEEDED
-FOR THE PLUSTEK PARALLELPORT SCANNER.
-
+ALL YOU NEED TO RUN YOUR USB SCANNER IS ALREADY INCLUDED.
List of all currently implemented devices
-----------------------------------------
diff --git a/doc/sane-epjitsu.man b/doc/sane-epjitsu.man
index 25b9a46..ccf75f6 100644
--- a/doc/sane-epjitsu.man
+++ b/doc/sane-epjitsu.man
@@ -1,4 +1,4 @@
-.TH sane\-epjitsu 5 "11 Apr 2017" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.TH sane\-epjitsu 5 "15 Nov 2022" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
.IX sane\-epjitsu
.SH NAME
@@ -25,22 +25,23 @@ frontend to set resolution, color mode, and choose the ADF setting. The
.B sane\-epjitsu
backend supports the following basic options for most scanners:
.PP
-.BR source s
+.B source s
.RS
Selects the source for the scan. Options may include "Flatbed", "ADF Front", "ADF Back", "ADF Duplex".
.RE
.PP
-.BR mode m
+.B mode m
.RS
Selects the mode for the scan. Options may include "Lineart", "Gray", "Color".
.RE
.PP
-.BR resolution , y\-resolution
+.B resolution, y\-resolution
.RS
Controls scan resolution. Setting
.B \-\-resolution
also sets
-.B \-\-y\-resolution, though this behavior is overridden by some frontends.
+.B \-\-y\-resolution,
+though this behavior is overridden by some frontends.
.RE
.PP
Other options will be available based on the capabilities of the scanner. Use
diff --git a/doc/sane-escl.man b/doc/sane-escl.man
index f0c7821..ee70d69 100644
--- a/doc/sane-escl.man
+++ b/doc/sane-escl.man
@@ -15,24 +15,28 @@ BROTHER DCP-J772DW, DCP-L2530DW
.br
BROTHER HL-L2590DW
.br
+BROTHER MFC-J985DW, MFC-J1300DW
+.br
CANON IR C3520
.br
CANON PIXMA MG5765
.br
CANON PIXMA G4511, G7050
.br
-CANON PIXMA TR4520, TR4540, TR4550, TR4551, TR7500, TR8500,
+CANON PIXMA TR4520, TR4540, TR4550, TR4551, TR7500, TR8500
.br
CANON PIXMA TR8520
.br
-CANON PIXMA TS3100, TS3150, TS3151, TS3152, TS3300, TS3350,
+CANON PIXMA TS3100, TS3150, TS3151, TS3152, TS3300, TS3350
.br
-CANON PIXMA TS3351, TS3352, TS5350, TS5351, TS6150, TS8050,
+CANON PIXMA TS3351, TS3352, TS3450, TS3451, TS3452, TS5350
.br
-CANON PIXMA TS9100
+CANON PIXMA TS5351, TS6150, TS8050, TS8350, TS9100
.br
EPSON ET-2750, ET-3750, ET-4750
.br
+EPSON EcoTank L3160
+.br
EPSON XP-6100
.br
HP DESKJET 2710, DESKJET 2723, DESKJET 3760
diff --git a/doc/sane-fujitsu.man b/doc/sane-fujitsu.man
index 4db6d41..0485d2a 100644
--- a/doc/sane-fujitsu.man
+++ b/doc/sane-fujitsu.man
@@ -1,4 +1,4 @@
-.TH sane\-fujitsu 5 "13 Feb 2021" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
+.TH sane\-fujitsu 5 "15 Nov 2022" "@PACKAGEVERSION@" "SANE Scanner Access Now Easy"
.IX sane\-fujitsu
.SH NAME
@@ -10,13 +10,13 @@ The
library implements a SANE (Scanner Access Now Easy) backend which provides
access to most Fujitsu flatbed and ADF scanners.
-This document describes backend version 137, which shipped with SANE 1.0.32.
+This document describes backend version 139, which initially shipped with SANE 1.1.2.
.SH SUPPORTED HARDWARE
This version supports every known model which speaks the Fujitsu SCSI and
SCSI\-over\-USB protocols. Specifically, the SCSI M309x and M409x series, the
-SCSI fi\-series, most of the USB fi\-series, the USB ScanSnap S5xx/S15xx, and
-the USB iX1xx/5xx series scanners are supported. Please see the list at
+SCSI fi\-series, and most of the USB fi\-, ScanSnap, & iX series scanners are
+supported. Please see the list at
.I http://www.sane\-project.org/sane\-supported\-devices.html
for details.
@@ -27,7 +27,7 @@ Please contact the author for help or with test results.
.SH UNSUPPORTED HARDWARE
The following scanners are known NOT to work with this backend,
-either because they have a non\-fujitsu chipset, or an unsupported
+either because they have a non\-Fujitsu chipset, or an unsupported
interface type. Some of these scanners may be supported by another
backend.
.PP
@@ -100,19 +100,19 @@ may not perform as well as the native implementations. Note also that these
features all require that the driver cache the entire image in memory. This
will almost certainly result in a reduction of scanning speed.
.PP
-swcrop
+.B swcrop
.RS
Requests the driver to detect the extremities of the paper within the larger
image, and crop the empty edges.
.RE
.PP
-swdeskew
+.B swdeskew
.RS
Requests the driver to detect the rotation of the paper within the larger
image, and counter the rotation.
.RE
.PP
-swdespeck X
+.B swdespeck X
.RS
Requests the driver to find and remove dots of X diameter or smaller from the
image, and fill the space with the average surrounding color.
@@ -210,6 +210,8 @@ CCITT Fax compression used by older scanners is not supported.
.PP
JPEG output is supported by the backend, but not by the SANE protocol, so is
disabled in this release. It can be enabled if you rebuild from source.
+.PP
+Network interfaces are not supported on any scanner model.
.SH CREDITS
m3091 backend: Frederik Ramm
@@ -252,8 +254,8 @@ Automatic length detection support funded by:
.I mgmiller at optonline.net
Hardware donated, software image enhancement and fi-6/7xxx support funded by:
- Fujitsu Computer Products of America, Inc.
-.I www.fcpa.com
+ PFU America, Inc.
+.I fujitsuscanners.com
iX500 support funded by:
Prefix Computer Services
diff --git a/doc/sane-pixma.man b/doc/sane-pixma.man
index 860c9a9..9811742 100644
--- a/doc/sane-pixma.man
+++ b/doc/sane-pixma.man
@@ -13,11 +13,15 @@ The backend implements both the USB interface and network interface
over IPv4 as well as IPv6 (MFNP over IPv6 is untested).
.PP
Currently, the following models work with this backend:
+
+
.PP
.RS
-PIXMA E410, E510
+PIXMA E410, E510, E4500
.br
-PIXMA G2000, G2010, G2100, G4000, G4511
+PIXMA G600, G2000, G2010, G2100, G4000, G4511
+.br
+PIXMA GX6000, GX7000
.br
PIXMA MG2100, MG2200, MG2400, MG2500, MG2900, MG3000, MG3100
.br
@@ -51,11 +55,13 @@ PIXMA MX410, MX420, MX470, MX510, MX520, MX530, MX700, MX720
.br
PIXMA MX850, MX860, MX870, MX882, MX885, MX890, MX920, MX7600
.br
-PIXMA TR4500
+PIXMA TR4500, TR4600, TR4700
+.br
+PIXMA TS2400, TS2600, TS3100, TS3300, TS3450, TS3451, TS3452
.br
-PIXMA TS3100, TS3300, TS5000, TS5100, TS6100, TS6200, TS8000
+PIXMA TS3500, TS5000, TS5100, TS5350i, TS5400, TS6100, TS6200
.br
-PIXMA TS8200
+PIXMA TS7530, TS7450i ,TS8000, TS8530, TS8200
.br
PIXUS MP10
.br
@@ -81,7 +87,7 @@ i-SENSYS MF3010, MF4320d, MF4330d, MF4500, MF4700, MF4800
.br
i-SENSYS MF6100, MF8030, MF8200C, MF8300
.br
-imageRUNNER 1020/1024/1025, 1133
+imageRUNNER 1018/1022/1023, 1020/1024/1025, 1133
.br
CanoScan 8800F, 9000F, 9000F Mark II
.br
@@ -129,7 +135,7 @@ PIXMA TS8130, TS8180, TS8230, TS8280, TS8300, TS8330, TS8380, TS9000
.br
PIXMA TS9100, TS9180, TS9500, TS9580
.br
-PIXUS MP5, XK50, XK60, XK70, XK80, XK90
+PIXUS MP5, XK50, XK60, XK70, XK80, XK90, XK100, XK500
.br
imageCLASS MF720, MF810/820, MF5630, MF5650, MF5750, MF8170c
.br
diff --git a/doc/sane-plustek_pp.man b/doc/sane-plustek_pp.man
index 2ef9b96..2c73ada 100644
--- a/doc/sane-plustek_pp.man
+++ b/doc/sane-plustek_pp.man
@@ -9,18 +9,10 @@ The
library implements a SANE (Scanner Access Now Easy) backend that
provides access to Plustek ASIC 9600[1/3] and P9800[1/3] based
parallel port flatbed scanners.
-The access of the scanner is either done directly by the backend
-or via kernel module, called pt_drv which can be created out of
-the
-.B sane\-plustek_pp
-backend code \- see also section
-.B "BUILDING THE KERNEL MODULE"
-for further information.
.SH "SUPPORTED DEVICES"
-At present, the following scanners should work with this backend
-and/or the kernel module:
+At present, the following scanners should work with this backend:
.PP
.B "PLUSTEK SCANNERS"
.PP
@@ -112,18 +104,14 @@ BrightScan OpticPro OpticPro P12
.ft R
.SH "DEVICE NAMES"
-This backend works in two modes, the so called "direct-mode"
-and the "kernel-mode". In direct-mode, the user-space backend is
-used, in kernel-mode, you should have a kernel-module named pt_drv
-loaded.
-This backends default device is:
+This backend's default device is:
.PP
.RS
.I 0x378
.RE
.PP
-This "default device" will be used, if no configuration
-file can be found. It is rather the base address of the parallel port
+This "default device" will be used if no configuration
+file can be found. It is the base address of the parallel port
on i386 machines.
.PP
As the backend supports up to four devices, it is possible to
@@ -150,24 +138,13 @@ For a proper setup, you will need at least two entries:
.I device 0x378
.RE
.PP
-or
-.RS
-.I [kernel]
-.br
-.I device /dev/pt_drv
-.RE
-.PP
.I direct
tells the backend, that the following devicename (here
.IR 0x378 )
has to be interpreted as parallel port scanner device. In
-fact it is the address to use, alternatively you can use
+fact it is the address to use. Alternatively you can use
.I /dev/parport0
if the backend has been compiled with libieee1284 support.
-.I kernel
-should only be used, when a kernel-module has been built
-out of the backend sources. See below for more instructions
-about this.
.PP
Further options:
.PP
@@ -235,157 +212,6 @@ See the
file for examples.
.PP
-.SH "BUILDING THE KERNEL MODULE"
-As mentioned before, the
-.B sane\-plustek_pp
-backend code can also be compiled and installed as linux kernel module. To do so,
-you will need the source-files of this sane\-backend installation.
-Unpack this tar-ball and go to the directory:
-.IR sane\-backends/doc/plustek .
-Within this directory, you should find a script called:
-.IR MakeModule.sh .
-Now if your Linux kernelsources are installed correctly,
-it should be possible to build, install and load the
-module
-.BR pt_drv .
-.B Please note,
-that the kernelsources need to be configured correctly.
-Refer to your distributions
-manual on how this is done. As root user, try
-.PP
-.I ./MakeModule.sh
-.PP
-the script will try and get all necessary information about your
-running kernel and will lead you through the whole installation
-process.
-.br
-.B Note: Installing and loading the can only be done as
-superuser.
-.PP
-
-.SH "KERNEL MODULE SETUP"
-The configuration of the kernel module is done by providing
-some or more options found below to the kernel module at
-load time. This can be done by invoking
-.BR insmod (8)
-with the appropriate parameters or appending the options to the file
-.I /etc/modules.conf (kernel < 2.6.x)
-or
-.I /etc/modprobe.conf (kernel >= 2.6.x)
-.PP
-.B
-The Options:
-.br
-lampoff=lll
-.RS
-The value
-.I lll
-tells the driver, after how many seconds to
-switch-off the lamp(s). The default value is 180.
-0 will disable this feature.
-.br
-.B HINT:
-Do not use a value that is too small, because often
-switching on/off the lamps will reduce their lifetime.
-.RE
-.PP
-port=ppp
-.RS
-.I ppp
-specifies the port base address, where the scanner
-is connected to. The default value is 0x378, which
-is normally a standard.
-.RE
-.PP
-warmup=www
-.RS
-.I www
-specifies the time in seconds, how long a lamp has to be on,
-until the driver will start to scan. The default value is 30.
-.RE
-.PP
-lOffonEnd=e
-.RS
-.I e
-specifies the behaviour when unloading the driver, 1 --> switch
-lamps off, 0 --> do not change lamp status
-.RE
-.PP
-slowIO=s
-.RS
-.I s
-specifies which I/O functions the driver should use, 1 --> use
-delayed functions, 0 --> use the non-delayed ones
-.RE
-.PP
-forceMode=fm
-.RS
-.I fm
-specifies port mode which should be used, 0 --> autodetection,
-1 --> use SPP mode and 2 --> use EPP mode
-.RE
-.PP
-mov=m
-.RS
-.TP
-.IR m " = 0"
-default: no override
-.TP
-.IR m " = 1"
-OpticPro 9630PL override (works if OP9630
-has been detected) forces legal size (14")
-.TP
-.IR m " = 2"
-Primax 4800Direct override (works if OP600
-has been detected) swaps red/green color
-.TP
-.IR m " = 3"
-OpticPro 9636 override (works if OP9636 has
-been detected) disables backends
-transparency/negative capabilities
-.TP
-.IR m " = 4"
-OpticPro 9636P override (works if OP9636 has
-been detected) disables backends
-transparency/negative capabilities
-.TP
-.IR m " = 5"
-OpticPro A3I override (works if OP12000 has
-been detected) enables A3 scanning
-.TP
-.IR m " = 6"
-OpticPro 4800P override (works if OP600
-has been detected) swaps red/green color
-.TP
-.IR m " = 7"
-Primax 4800Direct 30bit override (works if
-OP4830 has been detected)
-.RE
-.PP
-Sample entry for file
-.IR /etc/modules.conf :
-.PP
-.RS
-alias char\-major\-40 pt_drv
-.br
-pre-install pt_drv modprobe -k parport
-.br
-options pt_drv lampoff=180 warmup=15 port=0x378 lOffonEnd=0 mov=0 slowIO=0 forceMode=0
-.RE
-.PP
-For multidevice support, simply add values separated by commas to
-the different options
-.PP
-.RS
-options pt_drv port=0x378,0x278 mov=0,4 slowIO=0,1 forceMode=0,1
-.RE
-.PP
-Remember to call
-.BR depmod (8)
-after changing
-.IR /etc/conf.modules .
-.PP
-
.SH "PARALLEL PORT MODES"
.PP
The current driver works best, when the parallel port
@@ -423,13 +249,6 @@ The static library implementing this backend.
.I @LIBDIR@/libsane\-plustek_pp.so
The shared library implementing this backend (present on systems that
support dynamic loading).
-.TP
-.I /lib/modules/<Kernel-Version>/kernel/drivers/parport/pt_drv.o
-The Linux kernelmodule for kernels < 2.6.x.
-.TP
-.I /lib/modules/<Kernel-Version>/kernel/drivers/parport/pt_drv.ko
-The Linux kernelmodule for kernels >= 2.6.x.
-.PP
.SH ENVIRONMENT
.TP
diff --git a/doc/sane-test.man b/doc/sane-test.man
index 194fd8b..c456ed5 100644
--- a/doc/sane-test.man
+++ b/doc/sane-test.man
@@ -208,35 +208,41 @@ backend.
.PP
.SH INT TEST OPTIONS
-There are 6 int test options in total.
+There are 7 int test options in total.
.PP
Option
.B int
-(1/6) is an int test option with no unit and no constraint set.
+(1/7) is an int test option with no unit and no constraint set.
.PP
Option
.B int\-constraint\-range
-(2/6) is an int test option with unit pixel and constraint range set. Minimum
+(2/7) is an int test option with unit pixel and constraint range set. Minimum
is 4, maximum 192, and quant is 2.
.PP
Option
.B int\-constraint\-word\-list
-(3/6) is an int test option with unit bits and constraint word list set.
+(3/7) is an int test option with unit bits and constraint word list set.
.PP
Option
.B int\-constraint\-array
-(4/6) is an int test option with unit mm and using an array without
+(4/7) is an int test option with unit mm and using an array without
constraints.
.PP
Option
.B int\-constraint\-array\-constraint\-range
-(5/6) is an int test option with unit mm and using an array with a range
+(5/7) is an int test option with unit mm and using an array with a range
constraint. Minimum is 4, maximum 192, and quant is 2.
.PP
Option
.B int\-constraint\-array\-constraint\-word\-list
-(6/6) is an int test option with unit percent and using an array a word list
+(6/7) is an int test option with unit percent and using an array a word list
constraint.
+.PP
+Option
+.B int\-inexact
+(7/7) is an int test option that increments the requested value and returns
+flag SANE_INFO_INEXACT.
+
.SH FIXED TEST OPTIONS
There are 3 fixed test options in total.
diff --git a/frontend/jpegtopdf.c b/frontend/jpegtopdf.c
index 8f144b5..5c5d712 100644
--- a/frontend/jpegtopdf.c
+++ b/frontend/jpegtopdf.c
@@ -201,7 +201,11 @@ static SANE_Int _get_current_time( struct tm *pt, SANE_Byte *sign_c, int *ptz_h,
goto EXIT;
}
/* get time difference ( OHH'mm' ) */
+#ifdef __FreeBSD__
+ tz = -pt->tm_gmtoff;
+#else
tz = timezone;
+#endif
if ( tz > 0 ) {
*sign_c = '-';
}
diff --git a/frontend/saned.c b/frontend/saned.c
index 5b16980..e31758a 100644
--- a/frontend/saned.c
+++ b/frontend/saned.c
@@ -84,8 +84,8 @@
#include "lgetopt.h"
-#if defined(HAVE_SYS_POLL_H) && defined(HAVE_POLL)
-# include <sys/poll.h>
+#if defined(HAVE_POLL_H) && defined(HAVE_POLL)
+# include <poll.h>
#else
/*
* This replacement poll() using select() is only designed to cover
@@ -2449,7 +2449,7 @@ void
sig_int_term_handler (int signum)
{
/* unused */
- signum = signum;
+ (void) signum;
signal (SIGINT, NULL);
signal (SIGTERM, NULL);
@@ -2543,7 +2543,7 @@ saned_avahi_group_callback (AvahiEntryGroup *g, AvahiEntryGroupState state, void
char *n;
/* unused */
- userdata = userdata;
+ (void) userdata;
if ((!g) || (g != avahi_group))
return;
@@ -2657,7 +2657,7 @@ saned_avahi_callback (AvahiClient *c, AvahiClientState state, void *userdata)
int error;
/* unused */
- userdata = userdata;
+ (void) userdata;
if (!c)
return;
diff --git a/frontend/scanimage.c b/frontend/scanimage.c
index b587b9d..d79d487 100644
--- a/frontend/scanimage.c
+++ b/frontend/scanimage.c
@@ -40,6 +40,14 @@
#include <unistd.h>
#include <stdarg.h>
+#ifdef __FreeBSD__
+#include <libgen.h>
+#endif
+
+#if defined (__APPLE__) && defined (__MACH__)
+#include <libgen.h> // for basename()
+#endif
+
#include <sys/types.h>
#include <sys/stat.h>
@@ -917,9 +925,10 @@ fetch_options (SANE_Device * device)
scanimage_exit (1);
}
- /* create command line option only for settable options */
- if (!SANE_OPTION_IS_SETTABLE (opt->cap) || opt->type == SANE_TYPE_GROUP)
- continue;
+ /* create command line option only for non-group options */
+ /* Also we sometimes see options with no name in rogue backends. */
+ if ((opt->type == SANE_TYPE_GROUP) || (opt->name == NULL))
+ continue;
option_number[option_count] = i;
@@ -1072,6 +1081,12 @@ process_backend_option (SANE_Handle device, int optnum, const char *optarg)
opt = sane_get_option_descriptor (device, optnum);
+ if (!SANE_OPTION_IS_SETTABLE (opt->cap))
+ {
+ fprintf (stderr, "%s: attempted to set readonly option %s\n",
+ prog_name, opt->name);
+ scanimage_exit (1);
+ }
if (!SANE_OPTION_IS_ACTIVE (opt->cap))
{
fprintf (stderr, "%s: attempted to set inactive option %s\n",
@@ -2013,6 +2028,10 @@ static void print_options(SANE_Device * device, SANE_Int num_dev_options, SANE_B
if (!opt)
opt = sane_get_option_descriptor (device, i);
+ /* Some options from rogue backends are empty. */
+ if (opt->name == NULL)
+ continue;
+
if (ro || SANE_OPTION_IS_SETTABLE (opt->cap)
|| opt->type == SANE_TYPE_GROUP)
print_option (device, i, opt);
diff --git a/include/Makefile.am b/include/Makefile.am
index c949491..f807e61 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -11,8 +11,9 @@ EXTRA_DIST = lalloca.h lassert.h lgetopt.h md5.h font_6x11.h
EXTRA_DIST += sane/config.h.in sane/sanei.h sane/sanei_ab306.h \
sane/sanei_access.h sane/sanei_auth.h sane/sanei_backend.h \
sane/sanei_cderror.h sane/sanei_codec_ascii.h sane/sanei_codec_bin.h \
- sane/sanei_config.h sane/sanei_debug.h sane/sanei_jinclude.h \
- sane/sanei_jpeg.h sane/sanei_lm983x.h sane/sanei_net.h sane/sanei_pa4s2.h \
- sane/sanei_pio.h sane/sanei_pp.h sane/sanei_pv8630.h sane/sanei_scsi.h \
- sane/sanei_tcp.h sane/sanei_thread.h sane/sanei_udp.h sane/sanei_usb.h \
+ sane/sanei_config.h sane/sanei_debug.h sane/sanei_directio.h \
+ sane/sanei_jinclude.h sane/sanei_jpeg.h sane/sanei_lm983x.h \
+ sane/sanei_net.h sane/sanei_pa4s2.h sane/sanei_pio.h sane/sanei_pp.h \
+ sane/sanei_pv8630.h sane/sanei_scsi.h sane/sanei_tcp.h \
+ sane/sanei_thread.h sane/sanei_udp.h sane/sanei_usb.h \
sane/sanei_wire.h sane/sanei_magic.h sane/sanei_ir.h
diff --git a/include/sane/sanei_backend.h b/include/sane/sanei_backend.h
index 32d8ce0..db4d7b8 100644
--- a/include/sane/sanei_backend.h
+++ b/include/sane/sanei_backend.h
@@ -24,14 +24,6 @@
# define __func__ "(unknown)"
#endif
-#ifdef HAVE_SYS_HW_H
- /* OS/2 i/o-port access compatibility macros: */
-# define inb(p) _inp8 (p)
-# define outb(v,p) _outp8 ((p),(v))
-# define ioperm(b,l,o) _portaccess ((b),(b)+(l)-1)
-# define HAVE_IOPERM 1
-#endif
-
#ifndef HAVE_OS2_H
#include <fcntl.h>
#ifndef O_NONBLOCK
diff --git a/include/sane/sanei_directio.h b/include/sane/sanei_directio.h
new file mode 100644
index 0000000..944605d
--- /dev/null
+++ b/include/sane/sanei_directio.h
@@ -0,0 +1,71 @@
+#ifndef __SANEI_DIRECTIO_H__
+#define __SANEI_DIRECTIO_H__
+
+#ifdef HAVE_SYS_IO_H
+#include <sys/io.h>
+#endif
+
+#ifdef ENABLE_PARPORT_DIRECTIO
+
+#if (! defined SANE_INB ) && ( defined HAVE_SYS_HW_H ) /* OS/2 EMX case */
+#define SANE_INB 1
+#endif /* OS/2 EMX case */
+
+
+
+#if (! defined SANE_INB ) && ( defined HAVE_MACHINE_CPUFUNC_H ) /* FreeBSD case */
+#define SANE_INB 2
+#endif /* FreeBSD case */
+
+
+/* linux GCC on i386 */
+#if ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( defined __i386__ )
+#define SANE_INB 3
+#endif /* linux GCC on i386 */
+
+
+/* linux GCC non i386 */
+#if ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( ! defined __i386__ )
+#define SANE_INB 4
+#endif /* linux GCC non i386 */
+
+
+/* ICC on i386 */
+#if ( ! defined SANE_INB ) && ( defined __INTEL_COMPILER ) && ( defined __i386__ )
+#define SANE_INB 5
+#endif /* ICC on i386 */
+
+/* direct io requested, but no valid inb/oub */
+#if ( ! defined SANE_INB) && ( defined ENABLE_PARPORT_DIRECTIO )
+#warning "ENABLE_PARPORT_DIRECTIO cannot be used du to lack of inb/out definition"
+#undef ENABLE_PARPORT_DIRECTIO
+#endif
+
+#endif /* ENABLE_PARPORT_DIRECTIO */
+
+/*
+ * no inb/outb without --enable-parport-directio *
+ */
+#ifndef ENABLE_PARPORT_DIRECTIO
+#define SANE_INB 0
+#endif /* ENABLE_PARPORT_DIRECTIO is not defined */
+
+/* we need either direct io or ppdev */
+#if ! defined ENABLE_PARPORT_DIRECTIO && ! defined HAVE_LINUX_PPDEV_H && ! defined HAVE_DEV_PPBUS_PPI_H
+#define IO_SUPPORT_MISSING
+#endif
+
+
+extern int sanei_ioperm (int start, int length, int enable);
+extern unsigned char sanei_inb (unsigned int port);
+extern void sanei_outb (unsigned int port, unsigned char value);
+extern void sanei_insb (unsigned int port, unsigned char *addr,
+ unsigned long count);
+extern void sanei_insl (unsigned int port, unsigned char *addr,
+ unsigned long count);
+extern void sanei_outsb (unsigned int port, const unsigned char *addr,
+ unsigned long count);
+extern void sanei_outsl (unsigned int port, const unsigned char *addr,
+ unsigned long count);
+
+#endif // __SANEI_DIRECTIO_H__
diff --git a/newsfragments/README.md b/newsfragments/README.md
index 1201054..355a6c2 100644
--- a/newsfragments/README.md
+++ b/newsfragments/README.md
@@ -7,7 +7,7 @@ included into the release note document when the next release is published.
The file extension specifies the type of a change. The following are currently supported:
- .backend: a new feature or a bugfix for a backend.
- - .frontend: a new feature or a bugfix for a backend.
+ - .frontend: a new feature or a bugfix for a frontend.
- .security: a fix for security issue.
- .removal: a deprecation or removal of functionality.
- .misc: miscellaneous changes
diff --git a/newsfragments/avision_new_models.backend b/newsfragments/avision_new_models.backend
new file mode 100644
index 0000000..1647def
--- /dev/null
+++ b/newsfragments/avision_new_models.backend
@@ -0,0 +1 @@
+avision: Implemented support for Avision FB2280E scanner.
diff --git a/newsfragments/canon_dr_new_models.backend b/newsfragments/canon_dr_new_models.backend
new file mode 100644
index 0000000..627d9a5
--- /dev/null
+++ b/newsfragments/canon_dr_new_models.backend
@@ -0,0 +1 @@
+canon_dr: Implemented basic support for Canon R40 scanner.
diff --git a/newsfragments/escl_fix_old_tls.backend b/newsfragments/escl_fix_old_tls.backend
new file mode 100644
index 0000000..be2697e
--- /dev/null
+++ b/newsfragments/escl_fix_old_tls.backend
@@ -0,0 +1 @@
+escl: Fixed support for scanners which used ancient versions of TLS encryption protocols.
diff --git a/newsfragments/escl_new_models.backend b/newsfragments/escl_new_models.backend
new file mode 100644
index 0000000..e744be2
--- /dev/null
+++ b/newsfragments/escl_new_models.backend
@@ -0,0 +1,4 @@
+escl: Marked the following scanners as supported in documentation:
+ - Brother MFC-J985DW
+ - Brother MFC-J1300DW
+ - Canon PIXMA TS8350 Series
diff --git a/newsfragments/genesys_gl845_gamma_crash.backend b/newsfragments/genesys_gl845_gamma_crash.backend
new file mode 100644
index 0000000..a321893
--- /dev/null
+++ b/newsfragments/genesys_gl845_gamma_crash.backend
@@ -0,0 +1 @@
+Fixed crash when loading gamma tables on Plustek 8200i and other gl845 scanners.
diff --git a/newsfragments/pixma_mf56x0.backend b/newsfragments/pixma_mf56x0.backend
new file mode 100644
index 0000000..d945649
--- /dev/null
+++ b/newsfragments/pixma_mf56x0.backend
@@ -0,0 +1 @@
+pixma: Implemented support for Canon ImageClass MF56x0 scanners.
diff --git a/newsfragments/pixma_new_models.backend b/newsfragments/pixma_new_models.backend
new file mode 100644
index 0000000..9d2c084
--- /dev/null
+++ b/newsfragments/pixma_new_models.backend
@@ -0,0 +1,16 @@
+pixma: Added support for the following Canon scanners:
+ - Canon imageRUNNER 1133A
+ - Canon PIXMA TS5350i Series
+ - Canon PIXMA G600
+ - Canon PIXMA TS3500 Series
+ - Canon PIXMA TR4600 Series
+ - Canon PIXMA TR4700 Series
+ - Canon PIXMA E4500 Series
+ - Canon PIXUS XK500 Series
+ - Canon PIXMA TS8530 Series
+ - Canon PIXUS XK100 Series
+ - Canon PIXMA TS7530 Series
+ - Canon PIXMA TS7450i Series
+ - Canon PIXMA GX6000 Series
+ - Canon PIXMA GX7000 Series
+ - Canon PIXMA TS5400 Series
diff --git a/newsfragments/scanimage_readonly.frontend b/newsfragments/scanimage_readonly.frontend
new file mode 100644
index 0000000..8dddeb7
--- /dev/null
+++ b/newsfragments/scanimage_readonly.frontend
@@ -0,0 +1 @@
+scanimage: Attempts to set readonly options will give a warning about readonly option set attempt now, instead of the misleading "unknown option" error.
diff --git a/newsfragments/test_inexact.backend b/newsfragments/test_inexact.backend
new file mode 100644
index 0000000..d4c8dc2
--- /dev/null
+++ b/newsfragments/test_inexact.backend
@@ -0,0 +1 @@
+test: Implemented support for testing `SANE_INFO_INEXACT`.
diff --git a/newsfragments/xerox_mfp_jpeg_configurable.backend b/newsfragments/xerox_mfp_jpeg_configurable.backend
new file mode 100644
index 0000000..259dfc1
--- /dev/null
+++ b/newsfragments/xerox_mfp_jpeg_configurable.backend
@@ -0,0 +1 @@
+xerox_mfp: Implemented an option to configure whether JPEG compression is used.
diff --git a/newsfragments/xerox_mfp_new_models.backend b/newsfragments/xerox_mfp_new_models.backend
new file mode 100644
index 0000000..9c67797
--- /dev/null
+++ b/newsfragments/xerox_mfp_new_models.backend
@@ -0,0 +1 @@
+xerox_mfp: Added support for Xerox WorkCentre 3025.
diff --git a/po/Makevars b/po/Makevars
index 86f423e..ca2a5cc 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -52,4 +52,4 @@ EXTRA_LOCALE_CATEGORIES =
# Selected files in POTFILES.in are generated. Make sure they are
# available when needed.
$(top_srcdir)/backend/pixma/pixma_sane_options.c:
- cd ../backend; make pixma/pixma_sane_options.c
+ $(MAKE) -C ../backend pixma/pixma_sane_options.c
diff --git a/po/en_GB.po b/po/en_GB.po
index 1e5a89f..f846122 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -4,17 +4,17 @@
# Andrew Coles <andrew_coles@yahoo.co.uk>, 2009.
msgid ""
msgstr ""
-"Project-Id-Version: sane-backends 1.0.31\n"
+"Project-Id-Version: sane-backends 1.2.1\n"
"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
-"POT-Creation-Date: 2021-09-20 20:08-0700\n"
-"PO-Revision-Date: 2021-09-20 20:30-0700\n"
-"Last-Translator: Ralph Little <littlesincanada@yahoo.co.uk>\n"
+"POT-Creation-Date: 2023-02-04 09:33-0800\n"
+"PO-Revision-Date: 2023-02-04 09:36-0800\n"
+"Last-Translator: Ralph Little <skelband@gmail.com>\n"
"Language-Team: British English <kde-i18n-doc@kde.org>\n"
"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.6\n"
+"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: include/sane/saneopts.h:156
@@ -27,14 +27,14 @@ msgstr "Number of options"
msgid "Standard"
msgstr "Standard"
-#: include/sane/saneopts.h:159 backend/artec_eplus48u.c:2882
+#: include/sane/saneopts.h:159 backend/artec_eplus48u.c:2873
#: backend/canon_lide70.c:416 backend/epson.c:3296 backend/epson2.c:1281
-#: backend/epsonds.c:1973 backend/genesys/genesys.cpp:4701
+#: backend/epsonds.c:1974 backend/genesys/genesys.cpp:4593
#: backend/gt68xx.c:694 backend/hp-option.c:3295 backend/hp3500.c:1017
#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
-#: backend/kvs40xx_opt.c:506 backend/leo.c:820 backend/lexmark.c:197
+#: backend/kvs40xx_opt.c:501 backend/leo.c:820 backend/lexmark.c:197
#: backend/ma1509.c:549 backend/matsushita.c:1132 backend/microtek2.h:597
-#: backend/mustek.c:4371 backend/mustek_usb.c:299 backend/mustek_usb2.c:463
+#: backend/mustek.c:4352 backend/mustek_usb.c:299 backend/mustek_usb2.c:463
#: backend/pixma/pixma_sane_options.c:161 backend/plustek.c:806
#: backend/plustek_pp.c:745 backend/sceptre.c:699
#: backend/snapscan-options.c:550 backend/teco1.c:1092 backend/teco2.c:1907
@@ -44,11 +44,11 @@ msgstr "Standard"
msgid "Geometry"
msgstr "Geometry"
-#: include/sane/saneopts.h:160 backend/artec_eplus48u.c:2803
-#: backend/canon.c:1491 backend/genesys/genesys.cpp:4744
+#: include/sane/saneopts.h:160 backend/artec_eplus48u.c:2794
+#: backend/canon.c:1507 backend/genesys/genesys.cpp:4636
#: backend/gt68xx.c:663 backend/hp-option.c:2951 backend/kvs1025_opt.c:703
#: backend/leo.c:868 backend/ma1509.c:597 backend/matsushita.c:1186
-#: backend/microtek2.h:598 backend/mustek.c:4419 backend/mustek_usb.c:347
+#: backend/microtek2.h:598 backend/mustek.c:4400 backend/mustek_usb.c:347
#: backend/mustek_usb2.c:429 backend/niash.c:751 backend/plustek.c:852
#: backend/plustek_pp.c:791 backend/sceptre.c:747
#: backend/snapscan-options.c:617 backend/stv680.c:1064
@@ -59,8 +59,8 @@ msgid "Enhancement"
msgstr "Enhancement"
#: include/sane/saneopts.h:161 backend/epson.c:3195 backend/epson2.c:1206
-#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
-#: backend/rts8891.c:2830 backend/snapscan-options.c:923
+#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:592
+#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5563
#, no-c-format
msgid "Advanced"
@@ -86,7 +86,7 @@ msgstr "Force monochrome preview"
msgid "Bit depth"
msgstr "Bit depth"
-#: include/sane/saneopts.h:167 backend/canon.c:1138 backend/leo.c:778
+#: include/sane/saneopts.h:167 backend/canon.c:1154 backend/leo.c:778
#: backend/pixma/pixma_sane_options.c:48
#, no-c-format
msgid "Scan mode"
@@ -127,7 +127,7 @@ msgstr "Bottom-right x"
msgid "Bottom-right y"
msgstr "Bottom-right y"
-#: include/sane/saneopts.h:175 backend/canon.c:1214
+#: include/sane/saneopts.h:175 backend/canon.c:1230
#: backend/pixma/pixma_sane_options.c:301
#, no-c-format
msgid "Scan resolution"
@@ -283,7 +283,7 @@ msgstr "Filename"
msgid "Halftone pattern size"
msgstr "Halftone pattern size"
-#: include/sane/saneopts.h:206 backend/fujitsu.c:3260
+#: include/sane/saneopts.h:206 backend/fujitsu.c:3262
#, no-c-format
msgid "Halftone pattern"
msgstr "Halftone pattern"
@@ -316,7 +316,7 @@ msgstr "Double Optical Resolution"
msgid "Bind RGB"
msgstr "Bind RGB"
-#: include/sane/saneopts.h:212 backend/sm3840.c:768
+#: include/sane/saneopts.h:212 backend/sm3840.c:769
#, no-c-format
msgid "Threshold"
msgstr "Threshold"
@@ -975,28 +975,28 @@ msgstr "Lamp not ready, please retry"
msgid "Scanner mechanism locked for transport"
msgstr "Scanner mechanism locked for transport"
-#: backend/artec_eplus48u.c:2872 backend/pnm.c:280
+#: backend/artec_eplus48u.c:2863 backend/pnm.c:280
#, no-c-format
msgid "Defaults"
msgstr "Defaults"
-#: backend/artec_eplus48u.c:2874
+#: backend/artec_eplus48u.c:2865
#, no-c-format
msgid "Set default values for enhancement controls."
msgstr "Set default values for enhancement controls."
-#: backend/artec_eplus48u.c:2930 backend/canon.c:1609
+#: backend/artec_eplus48u.c:2921 backend/canon.c:1625
#: backend/pixma/pixma_sane_options.c:406
#, no-c-format
msgid "Calibration"
msgstr "Calibration"
-#: backend/artec_eplus48u.c:2939
+#: backend/artec_eplus48u.c:2930
#, no-c-format
msgid "Calibrate before next scan"
msgstr "Calibrate before next scan"
-#: backend/artec_eplus48u.c:2941
+#: backend/artec_eplus48u.c:2932
#, no-c-format
msgid ""
"If enabled, the device will be calibrated before the next scan. "
@@ -1005,12 +1005,12 @@ msgstr ""
"If enabled, the device will be calibrated before the next scan. "
"Otherwise, calibration is performed only before the first start."
-#: backend/artec_eplus48u.c:2952
+#: backend/artec_eplus48u.c:2943
#, no-c-format
msgid "Only perform shading-correction"
msgstr "Only perform shading-correction"
-#: backend/artec_eplus48u.c:2954
+#: backend/artec_eplus48u.c:2945
#, no-c-format
msgid ""
"If enabled, only the shading correction is performed during calibration. "
@@ -1021,27 +1021,27 @@ msgstr ""
"The default values for gain, offset and exposure time, either built-in "
"or from the configuration file, are used."
-#: backend/artec_eplus48u.c:2965
+#: backend/artec_eplus48u.c:2956
#, no-c-format
msgid "Button state"
msgstr "Button state"
-#: backend/avision.h:832
+#: backend/avision.h:831
#, no-c-format
msgid "Number of the frame to scan"
msgstr "Number of the frame to scan"
-#: backend/avision.h:833
+#: backend/avision.h:832
#, no-c-format
msgid "Selects the number of the frame to scan"
msgstr "Selects the number of the frame to scan"
-#: backend/avision.h:836
+#: backend/avision.h:835
#, no-c-format
msgid "Duplex scan"
msgstr "Duplex scan"
-#: backend/avision.h:837
+#: backend/avision.h:836
#, no-c-format
msgid ""
"Duplex scan provides a scan of the front and back side of the document"
@@ -1059,8 +1059,8 @@ msgid "Correction according to film type"
msgstr "Correction according to film type"
#: backend/canon-sane.c:732 backend/canon-sane.c:940
-#: backend/canon-sane.c:1076 backend/canon-sane.c:1314
-#: backend/canon-sane.c:1494 backend/canon-sane.c:1643 backend/canon.c:155
+#: backend/canon-sane.c:1076 backend/canon-sane.c:1293
+#: backend/canon-sane.c:1473 backend/canon-sane.c:1622 backend/canon.c:155
#, no-c-format
msgid "Fine color"
msgstr "Fine colour"
@@ -1070,7 +1070,7 @@ msgstr "Fine colour"
msgid "Negatives"
msgstr "Negatives"
-#: backend/canon-sane.c:1318 backend/canon.c:147
+#: backend/canon-sane.c:1297 backend/canon.c:147
#, no-c-format
msgid "Raw"
msgstr "Raw"
@@ -1085,7 +1085,7 @@ msgstr "No transparency correction"
msgid "Slides"
msgstr "Slides"
-#: backend/canon.c:184 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
+#: backend/canon.c:184 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:268
#: backend/matsushita.c:175
#, no-c-format
msgid "Automatic"
@@ -1267,238 +1267,238 @@ msgstr "transparency unit shading error"
msgid "lamp not stabilized"
msgstr "lamp not stabilised"
-#: backend/canon.c:845 backend/canon.c:860
+#: backend/canon.c:844 backend/canon.c:860
#, no-c-format
msgid "film scanner"
msgstr "film scanner"
-#: backend/canon.c:875 backend/canon.c:890 backend/canon.c:905
-#: backend/canon.c:920 backend/hp3900_sane.c:1682 backend/plustek.c:1333
+#: backend/canon.c:876 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1682 backend/plustek.c:1333
#: backend/plustek_pp.c:1012 backend/sceptre.c:590 backend/teco2.c:1829
#: backend/u12.c:849
#, no-c-format
msgid "flatbed scanner"
msgstr "flatbed scanner"
-#: backend/canon.c:1176 backend/epson.c:3384 backend/epson2.c:1388
+#: backend/canon.c:1192 backend/epson.c:3384 backend/epson2.c:1388
#, no-c-format
msgid "Film type"
msgstr "Film type"
-#: backend/canon.c:1177
+#: backend/canon.c:1193
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Selects the film type, i.e. negatives or slides"
-#: backend/canon.c:1189
+#: backend/canon.c:1205
#, no-c-format
msgid "Negative film type"
msgstr "Negative film type"
-#: backend/canon.c:1190
+#: backend/canon.c:1206
#, no-c-format
msgid "Selects the negative film type"
msgstr "Selects the negative film type"
-#: backend/canon.c:1229
+#: backend/canon.c:1245
#, no-c-format
msgid "Hardware resolution"
msgstr "Hardware resolution"
-#: backend/canon.c:1230
+#: backend/canon.c:1246
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Use only hardware resolutions"
-#: backend/canon.c:1311 backend/epson2.c:1331
+#: backend/canon.c:1327 backend/epson2.c:1331
#, no-c-format
msgid "Focus"
msgstr "Focus"
-#: backend/canon.c:1321
+#: backend/canon.c:1337
#, no-c-format
msgid "Auto focus"
msgstr "Auto focus"
-#: backend/canon.c:1322
+#: backend/canon.c:1338
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Enable/disable auto focus"
-#: backend/canon.c:1329
+#: backend/canon.c:1345
#, no-c-format
msgid "Auto focus only once"
msgstr "Auto focus only once"
-#: backend/canon.c:1330
+#: backend/canon.c:1346
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Do auto focus only once between ejects"
-#: backend/canon.c:1338
+#: backend/canon.c:1354
#, no-c-format
msgid "Manual focus position"
msgstr "Manual focus position"
-#: backend/canon.c:1339
+#: backend/canon.c:1355
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr "Set the optical system's focus position by hand (default: 128)."
-#: backend/canon.c:1349
+#: backend/canon.c:1365
#, no-c-format
msgid "Scan margins"
msgstr "Scan margins"
-#: backend/canon.c:1396
+#: backend/canon.c:1412
#, no-c-format
msgid "Extra color adjustments"
msgstr "Extra colour adjustments"
-#: backend/canon.c:1531 backend/epson.c:3203 backend/epson2.c:1245
-#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
+#: backend/canon.c:1547 backend/epson.c:3203 backend/epson2.c:1245
+#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:821
#, no-c-format
msgid "Mirror image"
msgstr "Mirror image"
-#: backend/canon.c:1532
+#: backend/canon.c:1548
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Mirror the image horizontally"
-#: backend/canon.c:1601
+#: backend/canon.c:1617
#, no-c-format
msgid "Auto exposure"
msgstr "Auto exposure"
-#: backend/canon.c:1602
+#: backend/canon.c:1618
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Enable/disable the auto exposure feature"
-#: backend/canon.c:1618
+#: backend/canon.c:1634
#, no-c-format
msgid "Calibration now"
msgstr "Calibration now"
-#: backend/canon.c:1619
+#: backend/canon.c:1635
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Execute calibration *now*"
-#: backend/canon.c:1629
+#: backend/canon.c:1645
#, no-c-format
msgid "Self diagnosis"
msgstr "Self diagnosis"
-#: backend/canon.c:1630
+#: backend/canon.c:1646
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Perform scanner self diagnosis"
-#: backend/canon.c:1641
+#: backend/canon.c:1657
#, no-c-format
msgid "Reset scanner"
msgstr "Reset scanner"
-#: backend/canon.c:1642
+#: backend/canon.c:1658
#, no-c-format
msgid "Reset the scanner"
msgstr "Reset the scanner"
-#: backend/canon.c:1652
+#: backend/canon.c:1668
#, no-c-format
msgid "Medium handling"
msgstr "Medium handling"
-#: backend/canon.c:1661
+#: backend/canon.c:1677
#, no-c-format
msgid "Eject film after each scan"
msgstr "Eject film after each scan"
-#: backend/canon.c:1662
+#: backend/canon.c:1678
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr "Automatically eject the film from the device after each scan"
-#: backend/canon.c:1673
+#: backend/canon.c:1689
#, no-c-format
msgid "Eject film before exit"
msgstr "Eject film before exit"
-#: backend/canon.c:1674
+#: backend/canon.c:1690
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
msgstr ""
"Automatically eject the film from the device before exiting the program"
-#: backend/canon.c:1683
+#: backend/canon.c:1699
#, no-c-format
msgid "Eject film now"
msgstr "Eject film now"
-#: backend/canon.c:1684
+#: backend/canon.c:1700
#, no-c-format
msgid "Eject the film *now*"
msgstr "Eject the film *now*"
-#: backend/canon.c:1693
+#: backend/canon.c:1709
#, no-c-format
msgid "Document feeder extras"
msgstr "Document feeder extras"
-#: backend/canon.c:1700
+#: backend/canon.c:1716
#, no-c-format
msgid "Flatbed only"
msgstr "Flatbed only"
-#: backend/canon.c:1701
+#: backend/canon.c:1717
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr "Disable auto document feeder and use flatbed only"
-#: backend/canon.c:1711 backend/canon.c:1721
+#: backend/canon.c:1727 backend/canon.c:1737
#, no-c-format
msgid "Transparency unit"
msgstr "Transparency unit"
-#: backend/canon.c:1722
+#: backend/canon.c:1738
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr "Switch on/off the transparency unit (FAU, film adapter unit)"
-#: backend/canon.c:1732
+#: backend/canon.c:1748
#, no-c-format
msgid "Negative film"
msgstr "Negative film"
-#: backend/canon.c:1733
+#: backend/canon.c:1749
#, no-c-format
msgid "Positive or negative film"
msgstr "Positive or negative film"
-#: backend/canon.c:1742
+#: backend/canon.c:1758
#, no-c-format
msgid "Density control"
msgstr "Density control"
-#: backend/canon.c:1743
+#: backend/canon.c:1759
#, no-c-format
msgid "Set density control mode"
msgstr "Set density control mode"
-#: backend/canon.c:1754
+#: backend/canon.c:1770
#, no-c-format
msgid "Transparency ratio"
msgstr "Transparency ratio"
-#: backend/canon.c:1768
+#: backend/canon.c:1784
#, no-c-format
msgid "Select film type"
msgstr "Select film type"
-#: backend/canon.c:1769
+#: backend/canon.c:1785
#, no-c-format
msgid "Select the film type"
msgstr "Select the film type"
@@ -1543,10 +1543,10 @@ msgstr "Gamma Correction"
msgid "Selects the gamma corrected transfer curve"
msgstr "Selects the gamma corrected transfer curve"
-#: backend/canon_dr.c:429 backend/epjitsu.c:231 backend/epson.c:499
+#: backend/canon_dr.c:434 backend/epjitsu.c:241 backend/epson.c:499
#: backend/epson2-ops.c:101 backend/epson2.c:111 backend/epsonds-ops.c:31
-#: backend/epsonds.c:1319 backend/epsonds.h:65 backend/epsonds.h:69
-#: backend/fujitsu.c:683 backend/genesys/genesys.h:76 backend/gt68xx.c:146
+#: backend/epsonds.c:1323 backend/epsonds.h:65 backend/epsonds.h:69
+#: backend/fujitsu.c:688 backend/genesys/genesys.h:55 backend/gt68xx.c:146
#: backend/hp3900_sane.c:417 backend/hp3900_sane.c:426
#: backend/hp3900_sane.c:1016 backend/hp5590.c:90 backend/kodakaio.c:617
#: backend/ma1509.c:106 backend/magicolor.c:181 backend/mustek.c:154
@@ -1557,85 +1557,85 @@ msgstr "Selects the gamma corrected transfer curve"
msgid "Flatbed"
msgstr "Flatbed"
-#: backend/canon_dr.c:430 backend/epjitsu.c:232 backend/epsonds-ops.c:32
-#: backend/epsonds.c:1320 backend/epsonds.h:70 backend/fujitsu.c:684
+#: backend/canon_dr.c:435 backend/epjitsu.c:242 backend/epsonds-ops.c:32
+#: backend/epsonds.c:1324 backend/epsonds.h:70 backend/fujitsu.c:689
#: backend/kodak.c:138
#, no-c-format
msgid "ADF Front"
msgstr "ADF Front"
-#: backend/canon_dr.c:431 backend/epjitsu.c:233 backend/fujitsu.c:685
+#: backend/canon_dr.c:436 backend/epjitsu.c:243 backend/fujitsu.c:690
#: backend/kodak.c:139
#, no-c-format
msgid "ADF Back"
msgstr "ADF Back"
-#: backend/canon_dr.c:432 backend/epjitsu.c:234 backend/epsonds-ops.c:33
-#: backend/epsonds.c:1321 backend/epsonds.h:71 backend/fujitsu.c:686
+#: backend/canon_dr.c:437 backend/epjitsu.c:244 backend/epsonds-ops.c:33
+#: backend/epsonds.c:1325 backend/epsonds.h:71 backend/fujitsu.c:691
#: backend/hp5590.c:92 backend/kodak.c:140 backend/pixma/pixma.c:1007
#, no-c-format
msgid "ADF Duplex"
msgstr "ADF Duplex"
-#: backend/canon_dr.c:433 backend/fujitsu.c:687
+#: backend/canon_dr.c:438 backend/fujitsu.c:692
#, no-c-format
msgid "Card Front"
msgstr "Card Front"
-#: backend/canon_dr.c:434 backend/fujitsu.c:688
+#: backend/canon_dr.c:439 backend/fujitsu.c:693
#, no-c-format
msgid "Card Back"
msgstr "Card Back"
-#: backend/canon_dr.c:435 backend/fujitsu.c:689
+#: backend/canon_dr.c:440 backend/fujitsu.c:694
#, no-c-format
msgid "Card Duplex"
msgstr "Card Duplex"
-#: backend/canon_dr.c:442 backend/epson.c:597 backend/epson.c:3094
-#: backend/epson2.c:191 backend/fujitsu.c:706
-#: backend/genesys/genesys.cpp:117 backend/genesys/genesys.cpp:124
+#: backend/canon_dr.c:447 backend/epson.c:597 backend/epson.c:3094
+#: backend/epson2.c:191 backend/fujitsu.c:711
+#: backend/genesys/genesys.cpp:96 backend/genesys/genesys.cpp:103
#: backend/gt68xx_low.h:134 backend/hp-option.c:3091
#, no-c-format
msgid "Red"
msgstr "Red"
-#: backend/canon_dr.c:443 backend/epson.c:598 backend/epson.c:3090
-#: backend/epson2.c:192 backend/fujitsu.c:707
-#: backend/genesys/genesys.cpp:118 backend/genesys/genesys.cpp:125
+#: backend/canon_dr.c:448 backend/epson.c:598 backend/epson.c:3090
+#: backend/epson2.c:192 backend/fujitsu.c:712
+#: backend/genesys/genesys.cpp:97 backend/genesys/genesys.cpp:104
#: backend/gt68xx_low.h:135 backend/hp-option.c:3092
#, no-c-format
msgid "Green"
msgstr "Green"
-#: backend/canon_dr.c:444 backend/epson.c:599 backend/epson.c:3098
-#: backend/epson2.c:193 backend/fujitsu.c:708
-#: backend/genesys/genesys.cpp:119 backend/genesys/genesys.cpp:126
+#: backend/canon_dr.c:449 backend/epson.c:599 backend/epson.c:3098
+#: backend/epson2.c:193 backend/fujitsu.c:713
+#: backend/genesys/genesys.cpp:98 backend/genesys/genesys.cpp:105
#: backend/gt68xx_low.h:136 backend/hp-option.c:3093
#, no-c-format
msgid "Blue"
msgstr "Blue"
-#: backend/canon_dr.c:445
+#: backend/canon_dr.c:450
#, no-c-format
msgid "Enhance Red"
msgstr "Enhance Red"
-#: backend/canon_dr.c:446
+#: backend/canon_dr.c:451
#, no-c-format
msgid "Enhance Green"
msgstr "Enhance Green"
-#: backend/canon_dr.c:447
+#: backend/canon_dr.c:452
#, no-c-format
msgid "Enhance Blue"
msgstr "Enhance Blue"
-#: backend/canon_dr.c:449 backend/epson.c:554 backend/epson.c:562
+#: backend/canon_dr.c:454 backend/epson.c:554 backend/epson.c:562
#: backend/epson.c:574 backend/epson.c:596 backend/epson2.c:155
#: backend/epson2.c:163 backend/epson2.c:175 backend/epson2.c:190
-#: backend/epson2.c:204 backend/fujitsu.c:712
-#: backend/genesys/genesys.cpp:127 backend/leo.c:106
+#: backend/epson2.c:204 backend/fujitsu.c:717
+#: backend/genesys/genesys.cpp:106 backend/leo.c:106
#: backend/matsushita.c:135 backend/matsushita.c:156
#: backend/matsushita.c:188 backend/matsushita.c:210
#: backend/snapscan-options.c:91
@@ -1643,26 +1643,61 @@ msgstr "Enhance Blue"
msgid "None"
msgstr "None"
-#: backend/canon_dr.c:450 backend/fujitsu.c:713
+#: backend/canon_dr.c:455 backend/fujitsu.c:718
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2623 backend/fujitsu.c:4140 backend/kvs1025_opt.c:910
+#: backend/canon_dr.c:457
+#, no-c-format
+msgid "8x12"
+msgstr "8x12"
+
+#: backend/canon_dr.c:458
+#, no-c-format
+msgid "12x12"
+msgstr "12x12"
+
+#: backend/canon_dr.c:460
+#, no-c-format
+msgid "Black-on-White"
+msgstr "Black-on-White"
+
+#: backend/canon_dr.c:461
+#, no-c-format
+msgid "Black-on-Image"
+msgstr "Black-on-Image"
+
+#: backend/canon_dr.c:462
+#, no-c-format
+msgid "White-on-Black"
+msgstr "White-on-Black"
+
+#: backend/canon_dr.c:2784 backend/fujitsu.c:4142 backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr "Software blank skip percentage"
-#: backend/canon_dr.c:2624 backend/fujitsu.c:4141
+#: backend/canon_dr.c:2785 backend/fujitsu.c:4143
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr "Request driver to discard pages with low percentage of dark pixels"
+#: backend/canon_dr.c:2904
+#, no-c-format
+msgid "Imprinter Options"
+msgstr "Imprinter Options"
+
+#: backend/canon_dr.c:2905
+#, no-c-format
+msgid "Controls for imprinter units"
+msgstr "Controls for imprinter units"
+
#: backend/canon_lide70.c:342 backend/epson.c:2811 backend/epson2.c:967
-#: backend/genesys/genesys.cpp:4632 backend/gt68xx.c:449
+#: backend/genesys/genesys.cpp:4524 backend/gt68xx.c:449
#: backend/hp-option.c:2912 backend/kvs1025_opt.c:521
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:499
-#: backend/matsushita.c:1081 backend/microtek2.h:596 backend/mustek.c:4213
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:315 backend/ma1509.c:499
+#: backend/matsushita.c:1081 backend/microtek2.h:596 backend/mustek.c:4194
#: backend/mustek_usb.c:254 backend/mustek_usb2.c:342 backend/niash.c:731
#: backend/plustek.c:719 backend/plustek_pp.c:656 backend/sceptre.c:670
#: backend/snapscan-options.c:354 backend/stv680.c:1027
@@ -1689,7 +1724,7 @@ msgid "Simplex"
msgstr "Simplex"
#: backend/epson.c:490 backend/epson2.c:105 backend/kodakaio.c:612
-#: backend/kvs1025.h:50 backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:353
+#: backend/kvs1025.h:50 backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:348
#: backend/magicolor.c:175 backend/matsushita.h:212
#, no-c-format
msgid "Duplex"
@@ -1816,7 +1851,7 @@ msgstr "Ink-jet printers"
msgid "CRT monitors"
msgstr "CRT monitors"
-#: backend/epson.c:654 backend/epson2.c:244 backend/fujitsu.c:696
+#: backend/epson.c:654 backend/epson2.c:244 backend/fujitsu.c:701
#: backend/hp-option.c:3224 backend/test.c:147
#, no-c-format
msgid "Default"
@@ -1863,14 +1898,14 @@ msgid "A5 landscape"
msgstr "A5 landscape"
#: backend/epson.c:758 backend/kvs1025_opt.c:103 backend/kvs20xx_opt.c:77
-#: backend/kvs40xx_opt.c:131 backend/kvs40xx_opt.c:148
+#: backend/kvs40xx_opt.c:126 backend/kvs40xx_opt.c:143
#, no-c-format
msgid "Letter"
msgstr "Letter"
#: backend/epson.c:759 backend/kvs1025_opt.c:100 backend/kvs20xx_opt.c:74
-#: backend/kvs20xx_opt.c:302 backend/kvs40xx_opt.c:128
-#: backend/kvs40xx_opt.c:145 backend/kvs40xx_opt.c:526
+#: backend/kvs20xx_opt.c:302 backend/kvs40xx_opt.c:123
+#: backend/kvs40xx_opt.c:140 backend/kvs40xx_opt.c:521
#, no-c-format
msgid "A4"
msgstr "A4"
@@ -2005,7 +2040,7 @@ msgstr "Controls blue level"
msgid "Mirror the image."
msgstr "Mirror the image."
-#: backend/epson.c:3230 backend/mustek.c:4342
+#: backend/epson.c:3230 backend/mustek.c:4323
#, no-c-format
msgid "Fast preview"
msgstr "Fast preview"
@@ -2040,17 +2075,17 @@ msgstr "Defines the zoom factor the scanner will use"
msgid "Quick format"
msgstr "Quick format"
-#: backend/epson.c:3358 backend/epson2.c:1364 backend/epsonds.c:2022
+#: backend/epson.c:3358 backend/epson2.c:1364 backend/epsonds.c:2023
#, no-c-format
msgid "Optional equipment"
msgstr "Optional equipment"
-#: backend/epson.c:3429 backend/epson2.c:1401 backend/epsonds.c:2038
+#: backend/epson.c:3429 backend/epson2.c:1401 backend/epsonds.c:2039
#, no-c-format
msgid "Eject"
msgstr "Eject"
-#: backend/epson.c:3430 backend/epson2.c:1402 backend/epsonds.c:2039
+#: backend/epson.c:3430 backend/epson2.c:1402 backend/epsonds.c:2040
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Eject the sheet in the ADF"
@@ -2065,13 +2100,13 @@ msgstr "Auto eject"
msgid "Eject document after scanning"
msgstr "Eject document after scanning"
-#: backend/epson.c:3455 backend/epson2.c:1424 backend/kodakaio.c:2859
+#: backend/epson.c:3455 backend/epson2.c:1424 backend/kodakaio.c:2857
#: backend/magicolor.c:2454
#, no-c-format
msgid "ADF Mode"
msgstr "ADF Mode"
-#: backend/epson.c:3457 backend/epson2.c:1426 backend/kodakaio.c:2861
+#: backend/epson.c:3457 backend/epson2.c:1426 backend/kodakaio.c:2859
#: backend/magicolor.c:2456
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
@@ -2152,377 +2187,377 @@ msgstr "Built in CCT profile"
msgid "User defined CCT profile"
msgstr "User defined CCT profile"
-#: backend/epsonds.c:2046
+#: backend/epsonds.c:2047
#, no-c-format
msgid "Load"
msgstr "Load"
-#: backend/epsonds.c:2047
+#: backend/epsonds.c:2048
#, no-c-format
msgid "Load a sheet in the ADF"
msgstr "Load a sheet in the ADF"
-#: backend/epsonds.c:2055
+#: backend/epsonds.c:2056
#, no-c-format
msgid "ADF Skew Correction"
msgstr "ADF Skew Correction"
-#: backend/epsonds.c:2057
+#: backend/epsonds.c:2058
#, no-c-format
msgid "Enables ADF skew correction"
msgstr "Enables ADF skew correction"
-#: backend/epsonds.c:2063
+#: backend/epsonds.c:2064
#, no-c-format
msgid "ADF CRP Correction"
msgstr "ADF CRP Correction"
-#: backend/epsonds.c:2065
+#: backend/epsonds.c:2066
#, no-c-format
msgid "Enables ADF auto cropping"
msgstr "Enables ADF auto cropping"
-#: backend/fujitsu.c:697 backend/hp-option.c:3325 backend/hp-option.c:3338
+#: backend/fujitsu.c:702 backend/hp-option.c:3325 backend/hp-option.c:3338
#, no-c-format
msgid "On"
msgstr "On"
-#: backend/fujitsu.c:698 backend/hp-option.c:3157 backend/hp-option.c:3324
+#: backend/fujitsu.c:703 backend/hp-option.c:3157 backend/hp-option.c:3324
#: backend/hp-option.c:3337
#, no-c-format
msgid "Off"
msgstr "Off"
-#: backend/fujitsu.c:700
+#: backend/fujitsu.c:705
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:706
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:703 backend/teco1.c:1149 backend/teco1.c:1150
+#: backend/fujitsu.c:708 backend/teco1.c:1149 backend/teco1.c:1150
#: backend/teco2.c:1964 backend/teco2.c:1965 backend/teco3.c:974
#: backend/teco3.c:975
#, no-c-format
msgid "Dither"
msgstr "Dither"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:709
#, no-c-format
msgid "Diffusion"
msgstr "Diffusion"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:714
#, no-c-format
msgid "White"
msgstr "White"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Black"
msgstr "Black"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Continue"
msgstr "Continue"
-#: backend/fujitsu.c:716
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Stop"
msgstr "Stop"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:723
#, no-c-format
msgid "10mm"
msgstr "10mm"
-#: backend/fujitsu.c:719
+#: backend/fujitsu.c:724
#, no-c-format
msgid "15mm"
msgstr "15mm"
-#: backend/fujitsu.c:720
+#: backend/fujitsu.c:725
#, no-c-format
msgid "20mm"
msgstr "20mm"
-#: backend/fujitsu.c:722 backend/hp-option.c:3043
+#: backend/fujitsu.c:727 backend/hp-option.c:3043
#, no-c-format
msgid "Horizontal"
msgstr "Horizontal"
-#: backend/fujitsu.c:723
+#: backend/fujitsu.c:728
#, no-c-format
msgid "Horizontal bold"
msgstr "Horizontal bold"
-#: backend/fujitsu.c:724
+#: backend/fujitsu.c:729
#, no-c-format
msgid "Horizontal narrow"
msgstr "Horizontal narrow"
-#: backend/fujitsu.c:725 backend/hp-option.c:3042
+#: backend/fujitsu.c:730 backend/hp-option.c:3042
#, no-c-format
msgid "Vertical"
msgstr "Vertical"
-#: backend/fujitsu.c:726
+#: backend/fujitsu.c:731
#, no-c-format
msgid "Vertical bold"
msgstr "Vertical bold"
-#: backend/fujitsu.c:728
+#: backend/fujitsu.c:733
#, no-c-format
msgid "Top to bottom"
msgstr "Top to bottom"
-#: backend/fujitsu.c:729
+#: backend/fujitsu.c:734
#, no-c-format
msgid "Bottom to top"
msgstr "Bottom to top"
-#: backend/fujitsu.c:731
+#: backend/fujitsu.c:736
#, no-c-format
msgid "Front"
msgstr "Front"
-#: backend/fujitsu.c:732
+#: backend/fujitsu.c:737
#, no-c-format
msgid "Back"
msgstr "Back"
-#: backend/fujitsu.c:3171 backend/pixma/pixma_sane_options.c:146
+#: backend/fujitsu.c:3173 backend/pixma/pixma_sane_options.c:146
#, no-c-format
msgid "Gamma function exponent"
msgstr "Gamma function exponent"
-#: backend/fujitsu.c:3172 backend/pixma/pixma_sane_options.c:147
+#: backend/fujitsu.c:3174 backend/pixma/pixma_sane_options.c:147
#, no-c-format
msgid "Changes intensity of midtones"
msgstr "Changes intensity of midtones"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3223
#, no-c-format
msgid "RIF"
msgstr "RIF"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3224
#, no-c-format
msgid "Reverse image format"
msgstr "Reverse image format"
-#: backend/fujitsu.c:3239
+#: backend/fujitsu.c:3241
#, no-c-format
msgid "Halftone type"
msgstr "Halftone type"
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3242
#, no-c-format
msgid "Control type of halftone filter"
msgstr "Control type of halftone filter"
-#: backend/fujitsu.c:3261
+#: backend/fujitsu.c:3263
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr "Control pattern of halftone filter"
-#: backend/fujitsu.c:3283
+#: backend/fujitsu.c:3285
#, no-c-format
msgid "Outline"
msgstr "Outline"
-#: backend/fujitsu.c:3284
+#: backend/fujitsu.c:3286
#, no-c-format
msgid "Perform outline extraction"
msgstr "Perform outline extraction"
-#: backend/fujitsu.c:3295
+#: backend/fujitsu.c:3297
#, no-c-format
msgid "Emphasis"
msgstr "Emphasis"
-#: backend/fujitsu.c:3296
+#: backend/fujitsu.c:3298
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr "Negative to smooth or positive to sharpen image"
-#: backend/fujitsu.c:3314
+#: backend/fujitsu.c:3316
#, no-c-format
msgid "Separation"
msgstr "Separation"
-#: backend/fujitsu.c:3315
+#: backend/fujitsu.c:3317
#, no-c-format
msgid "Enable automatic separation of image and text"
msgstr "Enable automatic separation of image and text"
-#: backend/fujitsu.c:3326
+#: backend/fujitsu.c:3328
#, no-c-format
msgid "Mirroring"
msgstr "Mirroring"
-#: backend/fujitsu.c:3327
+#: backend/fujitsu.c:3329
#, no-c-format
msgid "Reflect output image horizontally"
msgstr "Reflect output image horizontally"
-#: backend/fujitsu.c:3344
+#: backend/fujitsu.c:3346
#, no-c-format
msgid "White level follower"
msgstr "White level follower"
-#: backend/fujitsu.c:3345
+#: backend/fujitsu.c:3347
#, no-c-format
msgid "Control white level follower"
msgstr "Control white level follower"
-#: backend/fujitsu.c:3363
+#: backend/fujitsu.c:3365
#, no-c-format
msgid "BP filter"
msgstr "BP filter"
-#: backend/fujitsu.c:3364
+#: backend/fujitsu.c:3366
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr "Improves quality of high resolution ball-point pen text"
-#: backend/fujitsu.c:3380 backend/hp-option.h:68
+#: backend/fujitsu.c:3382 backend/hp-option.h:68
#, no-c-format
msgid "Smoothing"
msgstr "Smoothing"
-#: backend/fujitsu.c:3381
+#: backend/fujitsu.c:3383
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr "Enable smoothing for improved OCR"
-#: backend/fujitsu.c:3397
+#: backend/fujitsu.c:3399
#, no-c-format
msgid "Gamma curve"
msgstr "Gamma curve"
-#: backend/fujitsu.c:3398
+#: backend/fujitsu.c:3400
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr "Gamma curve, from light to dark, but upper two may not work"
-#: backend/fujitsu.c:3420 backend/pixma/pixma_sane_options.c:378
+#: backend/fujitsu.c:3422 backend/pixma/pixma_sane_options.c:378
#, no-c-format
msgid "Threshold curve"
msgstr "Threshold curve"
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3423
#, no-c-format
msgid ""
"Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
"Threshold curve, from light to dark, but upper two may not be linear"
-#: backend/fujitsu.c:3443
+#: backend/fujitsu.c:3445
#, no-c-format
msgid "Threshold white"
msgstr "Threshold white"
-#: backend/fujitsu.c:3444
+#: backend/fujitsu.c:3446
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr "Set pixels equal to threshold to white instead of black"
-#: backend/fujitsu.c:3460 backend/fujitsu.c:3461
+#: backend/fujitsu.c:3462 backend/fujitsu.c:3463
#, no-c-format
msgid "Noise removal"
msgstr "Noise removal"
-#: backend/fujitsu.c:3477
+#: backend/fujitsu.c:3479
#, no-c-format
msgid "Matrix 5x5"
msgstr "Matrix 5x5"
-#: backend/fujitsu.c:3478
+#: backend/fujitsu.c:3480
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr "Remove 5 pixel square noise"
-#: backend/fujitsu.c:3494
+#: backend/fujitsu.c:3496
#, no-c-format
msgid "Matrix 4x4"
msgstr "Matrix 4x4"
-#: backend/fujitsu.c:3495
+#: backend/fujitsu.c:3497
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr "Remove 4 pixel square noise"
-#: backend/fujitsu.c:3511
+#: backend/fujitsu.c:3513
#, no-c-format
msgid "Matrix 3x3"
msgstr "Matrix 3x3"
-#: backend/fujitsu.c:3512
+#: backend/fujitsu.c:3514
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr "Remove 3 pixel square noise"
-#: backend/fujitsu.c:3528
+#: backend/fujitsu.c:3530
#, no-c-format
msgid "Matrix 2x2"
msgstr "Matrix 2x2"
-#: backend/fujitsu.c:3529
+#: backend/fujitsu.c:3531
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr "Remove 2 pixel square noise"
-#: backend/fujitsu.c:3548
+#: backend/fujitsu.c:3550
#, no-c-format
msgid "Variance"
msgstr "Variance"
-#: backend/fujitsu.c:3549
+#: backend/fujitsu.c:3551
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr "Set SDTC variance rate (sensitivity), 0 equals 127"
-#: backend/fujitsu.c:3582
+#: backend/fujitsu.c:3584
#, no-c-format
msgid "Auto width detection"
msgstr "Auto width detection"
-#: backend/fujitsu.c:3583
+#: backend/fujitsu.c:3585
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr "Scanner detects paper sides. May reduce scanning speed."
-#: backend/fujitsu.c:3600
+#: backend/fujitsu.c:3602
#, no-c-format
msgid "Auto length detection"
msgstr "Auto length detection"
-#: backend/fujitsu.c:3601
+#: backend/fujitsu.c:3603
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr "Scanner detects paper lower edge. May confuse some frontends."
-#: backend/fujitsu.c:3627
+#: backend/fujitsu.c:3629
#, no-c-format
msgid "Compression"
msgstr "Compression"
-#: backend/fujitsu.c:3628
+#: backend/fujitsu.c:3630
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr "Enable compressed data. May crash your front-end program"
-#: backend/fujitsu.c:3648
+#: backend/fujitsu.c:3650
#, no-c-format
msgid "Compression argument"
msgstr "Compression argument"
-#: backend/fujitsu.c:3649
+#: backend/fujitsu.c:3651
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
@@ -2531,114 +2566,114 @@ msgstr ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
"is same as 4"
-#: backend/fujitsu.c:3679
+#: backend/fujitsu.c:3681
#, no-c-format
msgid "DF action"
msgstr "DF action"
-#: backend/fujitsu.c:3680
+#: backend/fujitsu.c:3682
#, no-c-format
msgid "Action following double feed error"
msgstr "Action following double feed error"
-#: backend/fujitsu.c:3696
+#: backend/fujitsu.c:3698
#, no-c-format
msgid "DF skew"
msgstr "DF skew"
-#: backend/fujitsu.c:3697
+#: backend/fujitsu.c:3699
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr "Enable double feed error due to skew"
-#: backend/fujitsu.c:3715
+#: backend/fujitsu.c:3717
#, no-c-format
msgid "DF thickness"
msgstr "DF thickness"
-#: backend/fujitsu.c:3716
+#: backend/fujitsu.c:3718
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr "Enable double feed error due to paper thickness"
-#: backend/fujitsu.c:3734
+#: backend/fujitsu.c:3736
#, no-c-format
msgid "DF length"
msgstr "DF length"
-#: backend/fujitsu.c:3735
+#: backend/fujitsu.c:3737
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr "Enable double feed error due to paper length"
-#: backend/fujitsu.c:3758
+#: backend/fujitsu.c:3760
#, no-c-format
msgid "DF length difference"
msgstr "DF length difference"
-#: backend/fujitsu.c:3759
+#: backend/fujitsu.c:3761
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr "Difference in page length to trigger double feed error"
-#: backend/fujitsu.c:3782
+#: backend/fujitsu.c:3784
#, no-c-format
msgid "DF recovery mode"
msgstr "DF recovery mode"
-#: backend/fujitsu.c:3783
+#: backend/fujitsu.c:3785
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr "Request scanner to reverse feed on paper jam"
-#: backend/fujitsu.c:3802
+#: backend/fujitsu.c:3804
#, no-c-format
msgid "Paper protection"
msgstr "Paper protection"
-#: backend/fujitsu.c:3803
+#: backend/fujitsu.c:3805
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr "Request scanner to predict jams in the ADF"
-#: backend/fujitsu.c:3822
+#: backend/fujitsu.c:3824
#, no-c-format
msgid "Advanced paper protection"
msgstr "Advanced paper protection"
-#: backend/fujitsu.c:3823
+#: backend/fujitsu.c:3825
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr "Request scanner to predict jams in the ADF using improved sensors"
-#: backend/fujitsu.c:3842
+#: backend/fujitsu.c:3844
#, no-c-format
msgid "Staple detection"
msgstr "Staple detection"
-#: backend/fujitsu.c:3843
+#: backend/fujitsu.c:3845
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr "Request scanner to detect jams in the ADF caused by staples"
-#: backend/fujitsu.c:3862
+#: backend/fujitsu.c:3864
#, no-c-format
msgid "Background color"
msgstr "Background colour"
-#: backend/fujitsu.c:3863
+#: backend/fujitsu.c:3865
#, no-c-format
msgid ""
"Set color of background for scans. May conflict with overscan option"
msgstr ""
"Set colour of background for scans. May conflict with overscan option"
-#: backend/fujitsu.c:3883
+#: backend/fujitsu.c:3885
#, no-c-format
msgid "Dropout color"
msgstr "Dropout colour"
-#: backend/fujitsu.c:3884
+#: backend/fujitsu.c:3886
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
@@ -2647,33 +2682,33 @@ msgstr ""
"One-pass scanners use only one colour during grey or binary scanning, "
"useful for coloured paper or ink"
-#: backend/fujitsu.c:3907
+#: backend/fujitsu.c:3909
#, no-c-format
msgid "Buffer mode"
msgstr "Buffer mode"
-#: backend/fujitsu.c:3908
+#: backend/fujitsu.c:3910
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
"Request scanner to read pages quickly from ADF into internal memory"
-#: backend/fujitsu.c:3927
+#: backend/fujitsu.c:3929
#, no-c-format
msgid "Prepick"
msgstr "Prepick"
-#: backend/fujitsu.c:3928
+#: backend/fujitsu.c:3930
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr "Request scanner to grab next page from ADF"
-#: backend/fujitsu.c:3947
+#: backend/fujitsu.c:3949
#, no-c-format
msgid "Overscan"
msgstr "Overscan"
-#: backend/fujitsu.c:3948
+#: backend/fujitsu.c:3950
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2684,24 +2719,24 @@ msgstr ""
"ADF, and increase maximum scan area beyond paper size, to allow "
"collection on remaining sides. May conflict with bgcolor option"
-#: backend/fujitsu.c:3966
+#: backend/fujitsu.c:3968
#, no-c-format
msgid "Sleep timer"
msgstr "Sleep timer"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:3969
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
"Time in minutes until the internal power supply switches to sleep mode"
-#: backend/fujitsu.c:3985
+#: backend/fujitsu.c:3987
#, no-c-format
msgid "Off timer"
msgstr "Off timer"
-#: backend/fujitsu.c:3986
+#: backend/fujitsu.c:3988
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches the scanner "
@@ -2710,42 +2745,42 @@ msgstr ""
"Time in minutes until the internal power supply switches the scanner "
"off. Will be rounded to nearest 15 minutes. Zero means never power off."
-#: backend/fujitsu.c:4004
+#: backend/fujitsu.c:4006
#, no-c-format
msgid "Duplex offset"
msgstr "Duplex offset"
-#: backend/fujitsu.c:4005
+#: backend/fujitsu.c:4007
#, no-c-format
msgid "Adjust front/back offset"
msgstr "Adjust front/back offset"
-#: backend/fujitsu.c:4022 backend/plustek.c:1023 backend/umax_pp.c:793
+#: backend/fujitsu.c:4024 backend/plustek.c:1023 backend/umax_pp.c:793
#, no-c-format
msgid "Green offset"
msgstr "Green offset"
-#: backend/fujitsu.c:4023
+#: backend/fujitsu.c:4025
#, no-c-format
msgid "Adjust green/red offset"
msgstr "Adjust green/red offset"
-#: backend/fujitsu.c:4040 backend/plustek.c:1039 backend/umax_pp.c:805
+#: backend/fujitsu.c:4042 backend/plustek.c:1039 backend/umax_pp.c:805
#, no-c-format
msgid "Blue offset"
msgstr "Blue offset"
-#: backend/fujitsu.c:4041
+#: backend/fujitsu.c:4043
#, no-c-format
msgid "Adjust blue/red offset"
msgstr "Adjust blue/red offset"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Low Memory"
msgstr "Low Memory"
-#: backend/fujitsu.c:4055
+#: backend/fujitsu.c:4057
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2758,12 +2793,12 @@ msgstr ""
"option 'side' can be used to determine correct image. This option should "
"only be used with custom front-end software."
-#: backend/fujitsu.c:4070
+#: backend/fujitsu.c:4072
#, no-c-format
msgid "Duplex side"
msgstr "Duplex side"
-#: backend/fujitsu.c:4071
+#: backend/fujitsu.c:4073
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
@@ -2772,154 +2807,154 @@ msgstr ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
-#: backend/fujitsu.c:4082
+#: backend/fujitsu.c:4084
#, no-c-format
msgid "Hardware deskew and crop"
msgstr "Hardware deskew and crop"
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4085
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr "Request scanner to rotate and crop pages digitally."
-#: backend/fujitsu.c:4094 backend/kvs1025_opt.c:871
+#: backend/fujitsu.c:4096 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr "Software deskew"
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4097
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr "Request driver to rotate skewed pages digitally."
-#: backend/fujitsu.c:4107 backend/kvs1025_opt.c:880
+#: backend/fujitsu.c:4109 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr "Software despeckle diameter"
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4110
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr "Maximum diameter of lone dots to remove from scan."
-#: backend/fujitsu.c:4127
+#: backend/fujitsu.c:4129
#, no-c-format
msgid "Software crop"
msgstr "Software crop"
-#: backend/fujitsu.c:4128
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr "Request driver to remove border from pages digitally."
-#: backend/fujitsu.c:4157
+#: backend/fujitsu.c:4159
#, no-c-format
msgid "Halt on Cancel"
msgstr "Halt on Cancel"
-#: backend/fujitsu.c:4158
+#: backend/fujitsu.c:4160
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
"Request driver to halt the paper feed instead of eject during a cancel."
-#: backend/fujitsu.c:4169
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Endorser Options"
msgstr "Endorser Options"
-#: backend/fujitsu.c:4170
+#: backend/fujitsu.c:4172
#, no-c-format
msgid "Controls for endorser unit"
msgstr "Controls for endorser unit"
-#: backend/fujitsu.c:4181
+#: backend/fujitsu.c:4183
#, no-c-format
msgid "Endorser"
msgstr "Endorser"
-#: backend/fujitsu.c:4182
+#: backend/fujitsu.c:4184
#, no-c-format
msgid "Enable endorser unit"
msgstr "Enable endorser unit"
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4199
#, no-c-format
msgid "Endorser bits"
msgstr "Endorser bits"
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4200
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr "Determines maximum endorser counter value."
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4225
#, no-c-format
msgid "Endorser value"
msgstr "Endorser value"
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4226
#, no-c-format
msgid "Initial endorser counter value."
msgstr "Initial endorser counter value."
-#: backend/fujitsu.c:4247
+#: backend/fujitsu.c:4249
#, no-c-format
msgid "Endorser step"
msgstr "Endorser step"
-#: backend/fujitsu.c:4248
+#: backend/fujitsu.c:4250
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr "Change endorser counter value by this much for each page."
-#: backend/fujitsu.c:4271
+#: backend/fujitsu.c:4273
#, no-c-format
msgid "Endorser Y"
msgstr "Endorser Y"
-#: backend/fujitsu.c:4272
+#: backend/fujitsu.c:4274
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr "Endorser print offset from top of paper."
-#: backend/fujitsu.c:4297
+#: backend/fujitsu.c:4299
#, no-c-format
msgid "Endorser font"
msgstr "Endorser font"
-#: backend/fujitsu.c:4298
+#: backend/fujitsu.c:4300
#, no-c-format
msgid "Endorser printing font."
msgstr "Endorser printing font."
-#: backend/fujitsu.c:4327
+#: backend/fujitsu.c:4329
#, no-c-format
msgid "Endorser direction"
msgstr "Endorser direction"
-#: backend/fujitsu.c:4328
+#: backend/fujitsu.c:4330
#, no-c-format
msgid "Endorser printing direction."
msgstr "Endorser printing direction."
-#: backend/fujitsu.c:4352
+#: backend/fujitsu.c:4354
#, no-c-format
msgid "Endorser side"
msgstr "Endorser side"
-#: backend/fujitsu.c:4353
+#: backend/fujitsu.c:4355
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr "Endorser printing side, requires hardware support to change"
-#: backend/fujitsu.c:4378
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Endorser string"
msgstr "Endorser string"
-#: backend/fujitsu.c:4379
+#: backend/fujitsu.c:4381
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
@@ -2928,202 +2963,202 @@ msgstr ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
-#: backend/fujitsu.c:4406
+#: backend/fujitsu.c:4408
#, no-c-format
msgid "Top edge"
msgstr "Top edge"
-#: backend/fujitsu.c:4407
+#: backend/fujitsu.c:4409
#, no-c-format
msgid "Paper is pulled partly into ADF"
msgstr "Paper is pulled partly into ADF"
-#: backend/fujitsu.c:4418
+#: backend/fujitsu.c:4420
#, no-c-format
msgid "A3 paper"
msgstr "A3 paper"
-#: backend/fujitsu.c:4419
+#: backend/fujitsu.c:4421
#, no-c-format
msgid "A3 paper detected"
msgstr "A3 paper detected"
-#: backend/fujitsu.c:4430
+#: backend/fujitsu.c:4432
#, no-c-format
msgid "B4 paper"
msgstr "B4 paper"
-#: backend/fujitsu.c:4431
+#: backend/fujitsu.c:4433
#, no-c-format
msgid "B4 paper detected"
msgstr "B4 paper detected"
-#: backend/fujitsu.c:4442
+#: backend/fujitsu.c:4444
#, no-c-format
msgid "A4 paper"
msgstr "A4 paper"
-#: backend/fujitsu.c:4443
+#: backend/fujitsu.c:4445
#, no-c-format
msgid "A4 paper detected"
msgstr "A4 paper detected"
-#: backend/fujitsu.c:4454
+#: backend/fujitsu.c:4456
#, no-c-format
msgid "B5 paper"
msgstr "B5 paper"
-#: backend/fujitsu.c:4455
+#: backend/fujitsu.c:4457
#, no-c-format
msgid "B5 paper detected"
msgstr "B5 paper detected"
-#: backend/fujitsu.c:4478
+#: backend/fujitsu.c:4480
#, no-c-format
msgid "OMR or DF"
msgstr "OMR or DF"
-#: backend/fujitsu.c:4479
+#: backend/fujitsu.c:4481
#, no-c-format
msgid "OMR or double feed detected"
msgstr "OMR or double feed detected"
-#: backend/fujitsu.c:4502
+#: backend/fujitsu.c:4504
#, no-c-format
msgid "Card loaded"
msgstr "Card loaded"
-#: backend/fujitsu.c:4503
+#: backend/fujitsu.c:4505
#, no-c-format
msgid "Card slot contains paper"
msgstr "Card slot contains paper"
-#: backend/fujitsu.c:4514
+#: backend/fujitsu.c:4516
#, no-c-format
msgid "Power saving"
msgstr "Power saving"
-#: backend/fujitsu.c:4515
+#: backend/fujitsu.c:4517
#, no-c-format
msgid "Scanner in power saving mode"
msgstr "Scanner in power saving mode"
-#: backend/fujitsu.c:4538
+#: backend/fujitsu.c:4540
#, no-c-format
msgid "Manual feed"
msgstr "Manual feed"
-#: backend/fujitsu.c:4539
+#: backend/fujitsu.c:4541
#, no-c-format
msgid "Manual feed selected"
msgstr "Manual feed selected"
-#: backend/fujitsu.c:4562
+#: backend/fujitsu.c:4564
#, no-c-format
msgid "Function"
msgstr "Function"
-#: backend/fujitsu.c:4563
+#: backend/fujitsu.c:4565
#, no-c-format
msgid "Function character on screen"
msgstr "Function character on screen"
-#: backend/fujitsu.c:4574
+#: backend/fujitsu.c:4576
#, no-c-format
msgid "Ink low"
msgstr "Ink low"
-#: backend/fujitsu.c:4575
+#: backend/fujitsu.c:4577
#, no-c-format
msgid "Imprinter ink running low"
msgstr "Imprinter ink running low"
-#: backend/fujitsu.c:4586
+#: backend/fujitsu.c:4588
#, no-c-format
msgid "Double feed"
msgstr "Double feed"
-#: backend/fujitsu.c:4587
+#: backend/fujitsu.c:4589
#, no-c-format
msgid "Double feed detected"
msgstr "Double feed detected"
-#: backend/fujitsu.c:4598
+#: backend/fujitsu.c:4600
#, no-c-format
msgid "Error code"
msgstr "Error code"
-#: backend/fujitsu.c:4599
+#: backend/fujitsu.c:4601
#, no-c-format
msgid "Hardware error code"
msgstr "Hardware error code"
-#: backend/fujitsu.c:4610
+#: backend/fujitsu.c:4612
#, no-c-format
msgid "Skew angle"
msgstr "Skew angle"
-#: backend/fujitsu.c:4611
+#: backend/fujitsu.c:4613
#, no-c-format
msgid "Requires black background for scanning"
msgstr "Requires black background for scanning"
-#: backend/fujitsu.c:4622
+#: backend/fujitsu.c:4624
#, no-c-format
msgid "Ink remaining"
msgstr "Ink remaining"
-#: backend/fujitsu.c:4623
+#: backend/fujitsu.c:4625
#, no-c-format
msgid "Imprinter ink level"
msgstr "Imprinter ink level"
-#: backend/fujitsu.c:4634
+#: backend/fujitsu.c:4636
#, no-c-format
msgid "Density"
msgstr "Density"
-#: backend/fujitsu.c:4635
+#: backend/fujitsu.c:4637
#, no-c-format
msgid "Density dial"
msgstr "Density dial"
-#: backend/fujitsu.c:4646 backend/fujitsu.c:4647
+#: backend/fujitsu.c:4648 backend/fujitsu.c:4649
#, no-c-format
msgid "Duplex switch"
msgstr "Duplex switch"
-#: backend/genesys/genesys.cpp:4821 backend/pixma/pixma_sane_options.c:357
+#: backend/genesys/genesys.cpp:4713 backend/pixma/pixma_sane_options.c:357
#, no-c-format
msgid "Extras"
msgstr "Extras"
-#: backend/genesys/genesys.cpp:4830
+#: backend/genesys/genesys.cpp:4722
#, no-c-format
msgid "Color filter"
msgstr "Colour filter"
-#: backend/genesys/genesys.cpp:4833
+#: backend/genesys/genesys.cpp:4725
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr "When using grey or lineart this option selects the used colour."
-#: backend/genesys/genesys.cpp:4857
+#: backend/genesys/genesys.cpp:4749
#, no-c-format
msgid "Calibration file"
msgstr "Calibration file"
-#: backend/genesys/genesys.cpp:4858
+#: backend/genesys/genesys.cpp:4750
#, no-c-format
msgid "Specify the calibration file to use"
msgstr "Specify the calibration file to use"
-#: backend/genesys/genesys.cpp:4875
+#: backend/genesys/genesys.cpp:4767
#, no-c-format
msgid "Calibration cache expiration time"
msgstr "Calibration cache expiration time"
-#: backend/genesys/genesys.cpp:4876
+#: backend/genesys/genesys.cpp:4768
#, no-c-format
msgid ""
"Time (in minutes) before a cached calibration expires. A value of 0 "
@@ -3132,12 +3167,12 @@ msgstr ""
"Time (in minutes) before a cached calibration expires. A value of 0 "
"means cache is not used. A negative value means cache never expires."
-#: backend/genesys/genesys.cpp:4886
+#: backend/genesys/genesys.cpp:4778
#, no-c-format
msgid "Lamp off time"
msgstr "Lamp off time"
-#: backend/genesys/genesys.cpp:4889
+#: backend/genesys/genesys.cpp:4781
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3146,91 +3181,116 @@ msgstr ""
"The lamp will be turned off after the given time (in minutes). A value "
"of 0 means, that the lamp won't be turned off."
-#: backend/genesys/genesys.cpp:4899
+#: backend/genesys/genesys.cpp:4791
#, no-c-format
msgid "Lamp off during scan"
msgstr "Lamp off during scan"
-#: backend/genesys/genesys.cpp:4900
+#: backend/genesys/genesys.cpp:4792
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "The lamp will be turned off during scan. "
-#: backend/genesys/genesys.cpp:4927 backend/genesys/genesys.cpp:4928
+#: backend/genesys/genesys.cpp:4819 backend/genesys/genesys.cpp:4820
#, no-c-format
msgid "File button"
msgstr "File button"
-#: backend/genesys/genesys.cpp:4972 backend/genesys/genesys.cpp:4973
+#: backend/genesys/genesys.cpp:4864 backend/genesys/genesys.cpp:4865
#, no-c-format
msgid "OCR button"
msgstr "OCR button"
-#: backend/genesys/genesys.cpp:4984 backend/genesys/genesys.cpp:4985
+#: backend/genesys/genesys.cpp:4876 backend/genesys/genesys.cpp:4877
#, no-c-format
msgid "Power button"
msgstr "Power button"
-#: backend/genesys/genesys.cpp:4996 backend/genesys/genesys.cpp:4997
+#: backend/genesys/genesys.cpp:4888 backend/genesys/genesys.cpp:4889
#, no-c-format
msgid "Extra button"
msgstr "Extra button"
-#: backend/genesys/genesys.cpp:5008 backend/gt68xx.c:753
+#: backend/genesys/genesys.cpp:4900 backend/genesys/genesys.cpp:4901
+#, no-c-format
+msgid "Transparency button"
+msgstr "Transparency button"
+
+#: backend/genesys/genesys.cpp:4912 backend/genesys/genesys.cpp:4913
+#, no-c-format
+msgid "PDF function button 1"
+msgstr "PDF function button 1"
+
+#: backend/genesys/genesys.cpp:4924 backend/genesys/genesys.cpp:4925
+#, no-c-format
+msgid "PDF function button 2"
+msgstr "PDF function button 2"
+
+#: backend/genesys/genesys.cpp:4936 backend/genesys/genesys.cpp:4937
+#, no-c-format
+msgid "PDF function button 3"
+msgstr "PDF function button 3"
+
+#: backend/genesys/genesys.cpp:4948 backend/genesys/genesys.cpp:4949
+#, no-c-format
+msgid "PDF function button 4"
+msgstr "PDF function button 4"
+
+#: backend/genesys/genesys.cpp:4960 backend/gt68xx.c:753
#, no-c-format
msgid "Needs calibration"
msgstr "Needs calibration"
-#: backend/genesys/genesys.cpp:5009 backend/gt68xx.c:754 backend/p5.c:1928
+#: backend/genesys/genesys.cpp:4961 backend/gt68xx.c:754 backend/p5.c:1928
#, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "The scanner needs calibration for the current settings"
-#: backend/genesys/genesys.cpp:5020 backend/gt68xx.c:778
+#: backend/genesys/genesys.cpp:4972 backend/gt68xx.c:778
#: backend/gt68xx.c:779 backend/p5.c:1937 backend/p5.c:1938
#: backend/pixma/pixma_sane_options.c:227 backend/plustek.c:1078
#, no-c-format
msgid "Buttons"
msgstr "Buttons"
-#: backend/genesys/genesys.cpp:5029 backend/gt68xx.c:785
+#: backend/genesys/genesys.cpp:4981 backend/gt68xx.c:785
#: backend/hp-option.h:92 backend/hp5400_sane.c:535 backend/niash.c:723
#: backend/p5.c:1945 backend/plustek.c:939
#, no-c-format
msgid "Calibrate"
msgstr "Calibrate"
-#: backend/genesys/genesys.cpp:5031 backend/gt68xx.c:787 backend/p5.c:1947
+#: backend/genesys/genesys.cpp:4983 backend/gt68xx.c:787 backend/p5.c:1947
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Start calibration using special sheet"
-#: backend/genesys/genesys.cpp:5043 backend/gt68xx.c:800 backend/p5.c:1958
+#: backend/genesys/genesys.cpp:4995 backend/gt68xx.c:800 backend/p5.c:1958
#, no-c-format
msgid "Clear calibration"
msgstr "Clear calibration"
-#: backend/genesys/genesys.cpp:5044 backend/gt68xx.c:801 backend/p5.c:1960
+#: backend/genesys/genesys.cpp:4996 backend/gt68xx.c:801 backend/p5.c:1960
#, no-c-format
msgid "Clear calibration cache"
msgstr "Clear calibration cache"
-#: backend/genesys/genesys.cpp:5054
+#: backend/genesys/genesys.cpp:5006
#, no-c-format
msgid "Force calibration"
msgstr "Force calibration"
-#: backend/genesys/genesys.cpp:5055
+#: backend/genesys/genesys.cpp:5007
#, no-c-format
msgid "Force calibration ignoring all and any calibration caches"
msgstr "Force calibration ignoring all and any calibration caches"
-#: backend/genesys/genesys.cpp:5065
+#: backend/genesys/genesys.cpp:5017
#, no-c-format
msgid "Ignore internal offsets"
msgstr "Ignore internal offsets"
-#: backend/genesys/genesys.cpp:5067
+#: backend/genesys/genesys.cpp:5019
#, no-c-format
msgid ""
"Acquires the image including the internal calibration areas of the "
@@ -3239,13 +3299,13 @@ msgstr ""
"Acquires the image including the internal calibration areas of the "
"scanner"
-#: backend/genesys/genesys.h:77 backend/gt68xx.c:147 backend/ma1509.c:106
+#: backend/genesys/genesys.h:56 backend/gt68xx.c:147 backend/ma1509.c:106
#: backend/mustek.c:162 backend/snapscan-options.c:87 backend/umax.c:180
#, no-c-format
msgid "Transparency Adapter"
msgstr "Transparency Adapter"
-#: backend/genesys/genesys.h:78
+#: backend/genesys/genesys.h:57
#, no-c-format
msgid "Transparency Adapter Infrared"
msgstr "Transparency Adapter Infrared"
@@ -3416,7 +3476,7 @@ msgid "Slow"
msgstr "Slow"
#: backend/hp-option.c:3143 backend/hp-option.c:3250
-#: backend/kvs40xx_opt.c:230 backend/matsushita.c:241 backend/mustek.c:147
+#: backend/kvs40xx_opt.c:225 backend/matsushita.c:241 backend/mustek.c:147
#: backend/plustek.c:232 backend/plustek_pp.c:201 backend/u12.c:153
#, no-c-format
msgid "Normal"
@@ -4094,7 +4154,7 @@ msgstr ""
"Colour value for trailing lines filling mode 'colour'. RGB colour as "
"r*65536+256*g+b or grey value (default=violet or grey)"
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:511
#: backend/matsushita.h:213
#, no-c-format
msgid "Paper size"
@@ -4106,48 +4166,48 @@ msgstr "Paper size"
msgid "Automatic separation"
msgstr "Automatic separation"
-#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307 backend/kvs40xx_opt.c:531
+#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307 backend/kvs40xx_opt.c:526
#, no-c-format
msgid "Landscape"
msgstr "Landscape"
-#: backend/kvs1025.h:54 backend/kvs40xx_opt.c:693
+#: backend/kvs1025.h:54 backend/kvs40xx_opt.c:688
#, no-c-format
msgid "Inverse Image"
msgstr "Inverse Image"
-#: backend/kvs1025.h:56 backend/kvs40xx_opt.c:404
+#: backend/kvs1025.h:56 backend/kvs40xx_opt.c:399
#, no-c-format
msgid "Long paper mode"
msgstr "Long paper mode"
-#: backend/kvs1025.h:57 backend/kvs20xx_opt.c:230 backend/kvs40xx_opt.c:393
+#: backend/kvs1025.h:57 backend/kvs20xx_opt.c:230 backend/kvs40xx_opt.c:388
#, no-c-format
msgid "Length control mode"
msgstr "Length control mode"
-#: backend/kvs1025.h:58 backend/kvs20xx_opt.c:242 backend/kvs40xx_opt.c:416
+#: backend/kvs1025.h:58 backend/kvs20xx_opt.c:242 backend/kvs40xx_opt.c:411
#, no-c-format
msgid "Manual feed mode"
msgstr "Manual feed mode"
-#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254 backend/kvs40xx_opt.c:428
+#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254 backend/kvs40xx_opt.c:423
#, no-c-format
msgid "Manual feed timeout"
msgstr "Manual feed timeout"
-#: backend/kvs1025.h:60 backend/kvs20xx_opt.c:267 backend/kvs40xx_opt.c:441
+#: backend/kvs1025.h:60 backend/kvs20xx_opt.c:267 backend/kvs40xx_opt.c:436
#, no-c-format
msgid "Double feed detection"
msgstr "Double feed detection"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:349
#: backend/matsushita.h:217
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Enable Duplex (Dual-Sided) Scanning"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:512
#: backend/matsushita.h:219
#, no-c-format
msgid "Physical size of the paper in the ADF"
@@ -4173,113 +4233,113 @@ msgstr "grey"
msgid "color"
msgstr "colour"
-#: backend/kvs1025_opt.c:61 backend/kvs40xx_opt.c:108
-#: backend/kvs40xx_opt.c:1047
+#: backend/kvs1025_opt.c:61 backend/kvs40xx_opt.c:103
+#: backend/kvs40xx_opt.c:1042
#, no-c-format
msgid "adf"
msgstr "adf"
-#: backend/kvs1025_opt.c:62 backend/kvs40xx_opt.c:50
-#: backend/kvs40xx_opt.c:109
+#: backend/kvs1025_opt.c:62 backend/kvs40xx_opt.c:45
+#: backend/kvs40xx_opt.c:104
#, no-c-format
msgid "fb"
msgstr "fb"
#: backend/kvs1025_opt.c:72 backend/kvs20xx_opt.c:55
-#: backend/kvs40xx_opt.c:101
+#: backend/kvs40xx_opt.c:96
#, no-c-format
msgid "single"
msgstr "single"
#: backend/kvs1025_opt.c:73 backend/kvs20xx.c:462 backend/kvs20xx_opt.c:56
-#: backend/kvs40xx.c:705 backend/kvs40xx.c:723 backend/kvs40xx_opt.c:102
-#: backend/kvs40xx_opt.c:1087
+#: backend/kvs40xx.c:700 backend/kvs40xx.c:718 backend/kvs40xx_opt.c:97
+#: backend/kvs40xx_opt.c:1082
#, no-c-format
msgid "continuous"
msgstr "continuous"
#: backend/kvs1025_opt.c:83 backend/kvs20xx_opt.c:62
-#: backend/kvs40xx_opt.c:115
+#: backend/kvs40xx_opt.c:110
#, no-c-format
msgid "off"
msgstr "off"
#: backend/kvs1025_opt.c:84 backend/kvs20xx_opt.c:63
-#: backend/kvs40xx_opt.c:116
+#: backend/kvs40xx_opt.c:111
#, no-c-format
msgid "wait_doc"
msgstr "wait_doc"
#: backend/kvs1025_opt.c:85 backend/kvs20xx_opt.c:64
-#: backend/kvs40xx_opt.c:118
+#: backend/kvs40xx_opt.c:113
#, no-c-format
msgid "wait_key"
msgstr "wait_key"
#: backend/kvs1025_opt.c:96 backend/kvs20xx_opt.c:70
-#: backend/kvs40xx_opt.c:124 backend/kvs40xx_opt.c:141
+#: backend/kvs40xx_opt.c:119 backend/kvs40xx_opt.c:136
#, no-c-format
msgid "user_def"
msgstr "user_def"
#: backend/kvs1025_opt.c:97 backend/kvs20xx_opt.c:71
-#: backend/kvs40xx_opt.c:125 backend/kvs40xx_opt.c:142
+#: backend/kvs40xx_opt.c:120 backend/kvs40xx_opt.c:137
#, no-c-format
msgid "business_card"
msgstr "business_card"
-#: backend/kvs1025_opt.c:98 backend/kvs40xx_opt.c:126
-#: backend/kvs40xx_opt.c:143
+#: backend/kvs1025_opt.c:98 backend/kvs40xx_opt.c:121
+#: backend/kvs40xx_opt.c:138
#, no-c-format
msgid "Check"
msgstr "Check"
#: backend/kvs1025_opt.c:101 backend/kvs20xx_opt.c:75
-#: backend/kvs40xx_opt.c:129 backend/kvs40xx_opt.c:146
+#: backend/kvs40xx_opt.c:124 backend/kvs40xx_opt.c:141
#, no-c-format
msgid "A5"
msgstr "A5"
#: backend/kvs1025_opt.c:102 backend/kvs20xx_opt.c:76
-#: backend/kvs40xx_opt.c:130 backend/kvs40xx_opt.c:147
+#: backend/kvs40xx_opt.c:125 backend/kvs40xx_opt.c:142
#, no-c-format
msgid "A6"
msgstr "A6"
#: backend/kvs1025_opt.c:106 backend/kvs20xx_opt.c:80
-#: backend/kvs40xx_opt.c:134 backend/kvs40xx_opt.c:151
+#: backend/kvs40xx_opt.c:129 backend/kvs40xx_opt.c:146
#, no-c-format
msgid "B5"
msgstr "B5"
#: backend/kvs1025_opt.c:107 backend/kvs20xx_opt.c:81
-#: backend/kvs40xx_opt.c:135 backend/kvs40xx_opt.c:152
+#: backend/kvs40xx_opt.c:130 backend/kvs40xx_opt.c:147
#, no-c-format
msgid "B6"
msgstr "B6"
#: backend/kvs1025_opt.c:108 backend/kvs20xx_opt.c:82
-#: backend/kvs40xx_opt.c:136 backend/kvs40xx_opt.c:153
+#: backend/kvs40xx_opt.c:131 backend/kvs40xx_opt.c:148
#, no-c-format
msgid "Legal"
msgstr "Legal"
-#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:234
#, no-c-format
msgid "bayer_64"
msgstr "bayer_64"
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:235
#, no-c-format
msgid "bayer_16"
msgstr "bayer_16"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:236
#, no-c-format
msgid "halftone_32"
msgstr "halftone_32"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:237
#, no-c-format
msgid "halftone_64"
msgstr "halftone_64"
@@ -4291,70 +4351,70 @@ msgstr "diffusion"
#: backend/kvs1025_opt.c:165 backend/kvs1025_opt.c:227
#: backend/kvs1025_opt.c:240 backend/kvs20xx_opt.c:129
-#: backend/kvs20xx_opt.c:137 backend/kvs40xx_opt.c:215
-#: backend/kvs40xx_opt.c:223 backend/kvs40xx_opt.c:258
+#: backend/kvs20xx_opt.c:137 backend/kvs40xx_opt.c:210
+#: backend/kvs40xx_opt.c:218 backend/kvs40xx_opt.c:253
#, no-c-format
msgid "normal"
msgstr "normal"
-#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:254
#, no-c-format
msgid "light"
msgstr "light"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:255
#, no-c-format
msgid "dark"
msgstr "dark"
-#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:266
#, no-c-format
msgid "From scanner"
msgstr "From scanner"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:267
#: backend/matsushita.c:174
#, no-c-format
msgid "From paper"
msgstr "From paper"
-#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:279
#, no-c-format
msgid "default"
msgstr "default"
#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
-#: backend/kvs40xx_opt.c:209
+#: backend/kvs40xx_opt.c:204
#, no-c-format
msgid "smooth"
msgstr "smooth"
#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
-#: backend/kvs40xx_opt.c:205
+#: backend/kvs40xx_opt.c:200
#, no-c-format
msgid "none"
msgstr "none"
#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
-#: backend/kvs40xx_opt.c:206
+#: backend/kvs40xx_opt.c:201
#, no-c-format
msgid "low"
msgstr "low"
#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
-#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
+#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:202
#, no-c-format
msgid "medium"
msgstr "medium"
#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
-#: backend/kvs40xx_opt.c:208
+#: backend/kvs40xx_opt.c:203
#, no-c-format
msgid "high"
msgstr "high"
#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
-#: backend/kvs40xx_opt.c:216
+#: backend/kvs40xx_opt.c:211
#, no-c-format
msgid "crt"
msgstr "crt"
@@ -4365,19 +4425,19 @@ msgid "linear"
msgstr "linear"
#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
-#: backend/kvs40xx_opt.c:224
+#: backend/kvs40xx_opt.c:219
#, no-c-format
msgid "red"
msgstr "red"
#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
-#: backend/kvs40xx_opt.c:225
+#: backend/kvs40xx_opt.c:220
#, no-c-format
msgid "green"
msgstr "green"
#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
-#: backend/kvs40xx_opt.c:226
+#: backend/kvs40xx_opt.c:221
#, no-c-format
msgid "blue"
msgstr "blue"
@@ -4388,13 +4448,13 @@ msgid "Sets the scan source"
msgstr "Sets the scan source"
#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
-#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1123
+#: backend/kvs40xx_opt.c:362 backend/matsushita.c:1123
#, no-c-format
msgid "Feeder mode"
msgstr "Feeder mode"
#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
-#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1124
+#: backend/kvs40xx_opt.c:363 backend/matsushita.c:1124
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Sets the feeding mode"
@@ -4410,43 +4470,43 @@ msgid "Enable/Disable length control mode"
msgstr "Enable/Disable length control mode"
#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
-#: backend/kvs40xx_opt.c:417
+#: backend/kvs40xx_opt.c:412
#, no-c-format
msgid "Sets the manual feed mode"
msgstr "Sets the manual feed mode"
#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
-#: backend/kvs40xx_opt.c:429
+#: backend/kvs40xx_opt.c:424
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Sets the manual feed timeout in seconds"
#: backend/kvs1025_opt.c:624 backend/kvs20xx_opt.c:268
-#: backend/kvs40xx_opt.c:442
+#: backend/kvs40xx_opt.c:437
#, no-c-format
msgid "Enable/Disable double feed detection"
msgstr "Enable/Disable double feed detection"
#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
-#: backend/kvs40xx_opt.c:497
+#: backend/kvs40xx_opt.c:492
#, no-c-format
msgid "fit-to-page"
msgstr "fit-to-page"
#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
-#: backend/kvs40xx_opt.c:498
+#: backend/kvs40xx_opt.c:493
#, no-c-format
msgid "Fit to page"
msgstr "Fit to page"
#: backend/kvs1025_opt.c:633 backend/kvs20xx_opt.c:278
-#: backend/kvs40xx_opt.c:499
+#: backend/kvs40xx_opt.c:494
#, no-c-format
msgid "Scanner shrinks image to fit scanned page"
msgstr "Scanner shrinks image to fit scanned page"
#: backend/kvs1025_opt.c:660 backend/kvs20xx_opt.c:309
-#: backend/kvs40xx_opt.c:533
+#: backend/kvs40xx_opt.c:528
#, no-c-format
msgid "Set paper position : true for landscape, false for portrait"
msgstr "Set paper position : true for landscape, false for portrait"
@@ -4465,26 +4525,26 @@ msgstr ""
"Automatically sets brightness, contrast, white level, gamma, noise "
"reduction and image emphasis"
-#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:759
#: backend/matsushita.c:1272
#, no-c-format
msgid "Noise reduction"
msgstr "Noise reduction"
-#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:760
#: backend/matsushita.c:1274
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Reduce the isolated dot noise"
#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
-#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1285
+#: backend/kvs40xx_opt.c:650 backend/matsushita.c:1285
#, no-c-format
msgid "Image emphasis"
msgstr "Image emphasis"
#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
-#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1286
+#: backend/kvs40xx_opt.c:651 backend/matsushita.c:1286
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Sets the image emphasis"
@@ -4497,13 +4557,13 @@ msgid "Gamma"
msgstr "Gamma"
#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
-#: backend/kvs40xx_opt.c:681
+#: backend/kvs40xx_opt.c:676
#, no-c-format
msgid "Lamp color"
msgstr "Lamp colour"
#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
-#: backend/kvs40xx_opt.c:682
+#: backend/kvs40xx_opt.c:677
#, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Sets the lamp colour (colour dropout)"
@@ -4583,63 +4643,63 @@ msgstr ""
"length of the actual paper or logical document length."
#: backend/kvs20xx_opt.c:424 backend/kvs20xx_opt.c:425
-#: backend/kvs40xx_opt.c:668 backend/kvs40xx_opt.c:669
+#: backend/kvs40xx_opt.c:663 backend/kvs40xx_opt.c:664
#: backend/microtek2.h:638
#, no-c-format
msgid "Gamma correction"
msgstr "Gamma correction"
-#: backend/kvs40xx_opt.c:117
+#: backend/kvs40xx_opt.c:112
#, no-c-format
msgid "wait_doc_hopper_up"
msgstr "wait_doc_hopper_up"
-#: backend/kvs40xx_opt.c:127
+#: backend/kvs40xx_opt.c:122
#, no-c-format
msgid "A3"
msgstr "A3"
-#: backend/kvs40xx_opt.c:132
+#: backend/kvs40xx_opt.c:127
#, no-c-format
msgid "Double letter 11x17 in"
msgstr "Double letter 11x17 in"
-#: backend/kvs40xx_opt.c:133
+#: backend/kvs40xx_opt.c:128
#, no-c-format
msgid "B4"
msgstr "B4"
-#: backend/kvs40xx_opt.c:231
+#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "High sensitivity"
msgstr "High sensitivity"
-#: backend/kvs40xx_opt.c:232
+#: backend/kvs40xx_opt.c:227
#, no-c-format
msgid "Low sensitivity"
msgstr "Low sensitivity"
-#: backend/kvs40xx_opt.c:243
+#: backend/kvs40xx_opt.c:238
#, no-c-format
msgid "err_diffusion"
msgstr "err_diffusion"
-#: backend/kvs40xx_opt.c:249
+#: backend/kvs40xx_opt.c:244
#, no-c-format
msgid "No detection"
msgstr "No detection"
-#: backend/kvs40xx_opt.c:250
+#: backend/kvs40xx_opt.c:245
#, no-c-format
msgid "Normal mode"
msgstr "Normal mode"
-#: backend/kvs40xx_opt.c:251
+#: backend/kvs40xx_opt.c:246
#, no-c-format
msgid "Enhanced mode"
msgstr "Enhanced mode"
-#: backend/kvs40xx_opt.c:396
+#: backend/kvs40xx_opt.c:391
#, no-c-format
msgid ""
"Length Control Mode causes the scanner to read the shorter of either the "
@@ -4649,7 +4709,7 @@ msgstr ""
"length of the actual paper or logical document length"
# The grammar is a bit suspect here.
-#: backend/kvs40xx_opt.c:405
+#: backend/kvs40xx_opt.c:400
#, no-c-format
msgid ""
"Long Paper Mode is a mode that the scanner reads the image after it "
@@ -4658,122 +4718,122 @@ msgstr ""
"Long Paper Mode is a mode that the scanner reads the image after it "
"divides long paper by the length which is set in Document Size option."
-#: backend/kvs40xx_opt.c:449
+#: backend/kvs40xx_opt.c:444
#, no-c-format
msgid "Double feed detector sensitivity"
msgstr "Double feed detector sensitivity"
-#: backend/kvs40xx_opt.c:450
+#: backend/kvs40xx_opt.c:445
#, no-c-format
msgid "Set the double feed detector sensitivity"
msgstr "Set the double feed detector sensitivity"
-#: backend/kvs40xx_opt.c:461 backend/kvs40xx_opt.c:462
+#: backend/kvs40xx_opt.c:456 backend/kvs40xx_opt.c:457
#, no-c-format
msgid "Do not stop after double feed detection"
msgstr "Do not stop after double feed detection"
-#: backend/kvs40xx_opt.c:470 backend/kvs40xx_opt.c:471
+#: backend/kvs40xx_opt.c:465 backend/kvs40xx_opt.c:466
#, no-c-format
msgid "Ignore left double feed sensor"
msgstr "Ignore left double feed sensor"
-#: backend/kvs40xx_opt.c:479 backend/kvs40xx_opt.c:480
+#: backend/kvs40xx_opt.c:474 backend/kvs40xx_opt.c:475
#, no-c-format
msgid "Ignore center double feed sensor"
msgstr "Ignore centre double feed sensor"
-#: backend/kvs40xx_opt.c:488 backend/kvs40xx_opt.c:489
+#: backend/kvs40xx_opt.c:483 backend/kvs40xx_opt.c:484
#, no-c-format
msgid "Ignore right double feed sensor"
msgstr "Ignore right double feed sensor"
-#: backend/kvs40xx_opt.c:642
+#: backend/kvs40xx_opt.c:637
#, no-c-format
msgid "Automatic threshold mode"
msgstr "Automatic threshold mode"
-#: backend/kvs40xx_opt.c:643
+#: backend/kvs40xx_opt.c:638
#, no-c-format
msgid "Sets the automatic threshold mode"
msgstr "Sets the automatic threshold mode"
-#: backend/kvs40xx_opt.c:694
+#: backend/kvs40xx_opt.c:689
#, no-c-format
msgid "Inverse image in B/W mode"
msgstr "Inverse image in B/W mode"
-#: backend/kvs40xx_opt.c:715
+#: backend/kvs40xx_opt.c:710
#, no-c-format
msgid "JPEG compression"
msgstr "JPEG compression"
-#: backend/kvs40xx_opt.c:718
+#: backend/kvs40xx_opt.c:713
#, no-c-format
msgid "JPEG compression (your application must be able to uncompress)"
msgstr "JPEG compression (your application must be able to uncompress)"
-#: backend/kvs40xx_opt.c:737 backend/kvs40xx_opt.c:738
+#: backend/kvs40xx_opt.c:732 backend/kvs40xx_opt.c:733
#, no-c-format
msgid "Detect stapled document"
msgstr "Detect stapled document"
-#: backend/kvs40xx_opt.c:776
+#: backend/kvs40xx_opt.c:771
#, no-c-format
msgid "chroma of red"
msgstr "chroma of red"
-#: backend/kvs40xx_opt.c:777
+#: backend/kvs40xx_opt.c:772
#, no-c-format
msgid "Set chroma of red"
msgstr "Set chroma of red"
-#: backend/kvs40xx_opt.c:787
+#: backend/kvs40xx_opt.c:782
#, no-c-format
msgid "chroma of blue"
msgstr "chroma of blue"
-#: backend/kvs40xx_opt.c:788
+#: backend/kvs40xx_opt.c:783
#, no-c-format
msgid "Set chroma of blue"
msgstr "Set chroma of blue"
-#: backend/kvs40xx_opt.c:798 backend/kvs40xx_opt.c:799
+#: backend/kvs40xx_opt.c:793 backend/kvs40xx_opt.c:794
#, no-c-format
msgid "Skew adjustment"
msgstr "Skew adjustment"
-#: backend/kvs40xx_opt.c:808
+#: backend/kvs40xx_opt.c:803
#, no-c-format
msgid "Stop scanner if a sheet is skewed"
msgstr "Stop scanner if a sheet is skewed"
-#: backend/kvs40xx_opt.c:809
+#: backend/kvs40xx_opt.c:804
#, no-c-format
msgid "Scanner will stop if a sheet is skewed"
msgstr "Scanner will stop if a sheet is skewed"
-#: backend/kvs40xx_opt.c:816
+#: backend/kvs40xx_opt.c:811
#, no-c-format
msgid "Crop actual image area"
msgstr "Crop actual image area"
-#: backend/kvs40xx_opt.c:817
+#: backend/kvs40xx_opt.c:812
#, no-c-format
msgid "Scanner will automatically detect image area and crop to it"
msgstr "Scanner will automatically detect image area and crop to it"
-#: backend/kvs40xx_opt.c:827
+#: backend/kvs40xx_opt.c:822
#, no-c-format
msgid "Left/right mirror image"
msgstr "Left/right mirror image"
-#: backend/kvs40xx_opt.c:834 backend/kvs40xx_opt.c:835
+#: backend/kvs40xx_opt.c:829 backend/kvs40xx_opt.c:830
#, no-c-format
msgid "Addition of space in top position"
msgstr "Addition of space in top position"
-#: backend/kvs40xx_opt.c:842 backend/kvs40xx_opt.c:843
+#: backend/kvs40xx_opt.c:837 backend/kvs40xx_opt.c:838
#, no-c-format
msgid "Addition of space in bottom position"
msgstr "Addition of space in bottom position"
@@ -5297,17 +5357,17 @@ msgstr "3x3 custom"
msgid "2x2 custom"
msgstr "2x2 custom"
-#: backend/mustek.c:4245
+#: backend/mustek.c:4226
#, no-c-format
msgid "Fast gray mode"
msgstr "Fast grey mode"
-#: backend/mustek.c:4246
+#: backend/mustek.c:4227
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Scan in fast grey mode (lower quality)."
-#: backend/mustek.c:4343
+#: backend/mustek.c:4324
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5316,83 +5376,83 @@ msgstr ""
"Request that all previews are done in the fastest (low-quality) mode. "
"This may be a non-colour mode or a low resolution mode."
-#: backend/mustek.c:4351
+#: backend/mustek.c:4332
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Lamp off time (minutes)"
-#: backend/mustek.c:4352
+#: backend/mustek.c:4333
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Set the time (in minutes) after which the lamp is shut off."
-#: backend/mustek.c:4363
+#: backend/mustek.c:4344
#, no-c-format
msgid "Turn lamp off"
msgstr "Turn lamp off"
-#: backend/mustek.c:4364
+#: backend/mustek.c:4345
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Turns the lamp off immediately."
-#: backend/mustek.c:4441
+#: backend/mustek.c:4422
#, no-c-format
msgid "Red brightness"
msgstr "Red brightness"
-#: backend/mustek.c:4442
+#: backend/mustek.c:4423
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Controls the brightness of the red channel of the acquired image."
-#: backend/mustek.c:4454
+#: backend/mustek.c:4435
#, no-c-format
msgid "Green brightness"
msgstr "Green brightness"
-#: backend/mustek.c:4455
+#: backend/mustek.c:4436
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr ""
"Controls the brightness of the green channel of the acquired image."
-#: backend/mustek.c:4467
+#: backend/mustek.c:4448
#, no-c-format
msgid "Blue brightness"
msgstr "Blue brightness"
-#: backend/mustek.c:4468
+#: backend/mustek.c:4449
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Controls the brightness of the blue channel of the acquired image."
-#: backend/mustek.c:4493
+#: backend/mustek.c:4474
#, no-c-format
msgid "Contrast red channel"
msgstr "Contrast red channel"
-#: backend/mustek.c:4494
+#: backend/mustek.c:4475
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Controls the contrast of the red channel of the acquired image."
-#: backend/mustek.c:4506
+#: backend/mustek.c:4487
#, no-c-format
msgid "Contrast green channel"
msgstr "Contrast green channel"
-#: backend/mustek.c:4507
+#: backend/mustek.c:4488
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Controls the contrast of the green channel of the acquired image."
-#: backend/mustek.c:4519
+#: backend/mustek.c:4500
#, no-c-format
msgid "Contrast blue channel"
msgstr "Contrast blue channel"
-#: backend/mustek.c:4520
+#: backend/mustek.c:4501
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Controls the contrast of the blue channel of the acquired image."
@@ -5954,42 +6014,42 @@ msgstr ""
"Force the backend to return the status code SANE_STATUS_ACCESS_DENIED "
"after sane_read() has been called."
-#: backend/rts8891.c:2808
+#: backend/rts8891.c:2809
#, no-c-format
msgid "This option reflects the status of a scanner button."
msgstr "This option reflects the status of a scanner button."
-#: backend/rts8891.c:2839 backend/umax.c:5793 backend/umax_pp.c:628
+#: backend/rts8891.c:2840 backend/umax.c:5793 backend/umax_pp.c:628
#, no-c-format
msgid "Lamp on"
msgstr "Lamp on"
-#: backend/rts8891.c:2840 backend/umax.c:5794
+#: backend/rts8891.c:2841 backend/umax.c:5794
#, no-c-format
msgid "Turn on scanner lamp"
msgstr "Turn on scanner lamp"
-#: backend/rts8891.c:2850 backend/umax.c:5810 backend/umax1220u.c:246
+#: backend/rts8891.c:2851 backend/umax.c:5810 backend/umax1220u.c:246
#, no-c-format
msgid "Lamp off"
msgstr "Lamp off"
-#: backend/rts8891.c:2851 backend/umax.c:5811 backend/umax1220u.c:247
+#: backend/rts8891.c:2852 backend/umax.c:5811 backend/umax1220u.c:247
#, no-c-format
msgid "Turn off scanner lamp"
msgstr "Turn off scanner lamp"
-#: backend/sm3840.c:758
+#: backend/sm3840.c:759
#, no-c-format
msgid "Lamp timeout"
msgstr "Lamp timeout"
-#: backend/sm3840.c:760
+#: backend/sm3840.c:761
#, no-c-format
msgid "Minutes until lamp is turned off after scan"
msgstr "Minutes until lamp is turned off after scan"
-#: backend/sm3840.c:770
+#: backend/sm3840.c:771
#, no-c-format
msgid "Threshold value for lineart mode"
msgstr "Threshold value for lineart mode"
@@ -6506,101 +6566,115 @@ msgstr "Int test options"
#: backend/test.c:917
#, no-c-format
-msgid "(1/6) Int"
-msgstr "(1/6) Int"
+msgid "(1/7) Int"
+msgstr "(1/7) Int"
#: backend/test.c:918
#, no-c-format
-msgid "(1/6) Int test option with no unit and no constraint set."
-msgstr "(1/6) Int test option with no unit and no constraint set."
+msgid "(1/7) Int test option with no unit and no constraint set."
+msgstr "(1/7) Int test option with no unit and no constraint set."
#: backend/test.c:933
#, no-c-format
-msgid "(2/6) Int constraint range"
-msgstr "(2/6) Int constraint range"
+msgid "(2/7) Int constraint range"
+msgstr "(2/7) Int constraint range"
#: backend/test.c:934
#, no-c-format
msgid ""
-"(2/6) Int test option with unit pixel and constraint range set. Minimum "
+"(2/7) Int test option with unit pixel and constraint range set. Minimum "
"is 4, maximum 192, and quant is 2."
msgstr ""
-"(2/6) Int test option with unit pixel and constraint range set. Minimum "
+"(2/7) Int test option with unit pixel and constraint range set. Minimum "
"is 4, maximum 192, and quant is 2."
#: backend/test.c:950
#, no-c-format
-msgid "(3/6) Int constraint word list"
-msgstr "(3/6) Int constraint word list"
+msgid "(3/7) Int constraint word list"
+msgstr "(3/7) Int constraint word list"
#: backend/test.c:951
#, no-c-format
-msgid "(3/6) Int test option with unit bits and constraint word list set."
-msgstr "(3/6) Int test option with unit bits and constraint word list set."
+msgid "(3/7) Int test option with unit bits and constraint word list set."
+msgstr "(3/7) Int test option with unit bits and constraint word list set."
#: backend/test.c:966
#, no-c-format
-msgid "(4/6) Int array"
-msgstr "(4/6) Int array"
+msgid "(4/7) Int array"
+msgstr "(4/7) Int array"
#: backend/test.c:967
#, no-c-format
msgid ""
-"(4/6) Int test option with unit mm and using an array without "
+"(4/7) Int test option with unit mm and using an array without "
"constraints."
msgstr ""
-"(4/6) Int test option with unit mm and using an array without "
+"(4/7) Int test option with unit mm and using an array without "
"constraints."
#: backend/test.c:982
#, no-c-format
-msgid "(5/6) Int array constraint range"
-msgstr "(5/6) Int array constraint range"
+msgid "(5/7) Int array constraint range"
+msgstr "(5/7) Int array constraint range"
#: backend/test.c:983
#, no-c-format
msgid ""
-"(5/6) Int test option with unit dpi and using an array with a range "
+"(5/7) Int test option with unit dpi and using an array with a range "
"constraint. Minimum is 4, maximum 192, and quant is 2."
msgstr ""
-"(5/6) Int test option with unit dpi and using an array with a range "
+"(5/7) Int test option with unit dpi and using an array with a range "
"constraint. Minimum is 4, maximum 192, and quant is 2."
-#: backend/test.c:1057
+#: backend/test.c:1000
#, no-c-format
-msgid "(6/6) Int array constraint word list"
-msgstr "(6/6) Int array constraint word list"
+msgid "(6/7) Int array constraint word list"
+msgstr "(6/7) Int array constraint word list"
-#: backend/test.c:1058
+#: backend/test.c:1001
#, no-c-format
msgid ""
-"(6/6) Int test option with unit percent and using an array with a word "
+"(6/7) Int test option with unit percent and using an array with a word "
"list constraint."
msgstr ""
-"(6/6) Int test option with unit percent and using an array with a word "
+"(6/7) Int test option with unit percent and using an array with a word "
"list constraint."
-#: backend/test.c:1074
+#: backend/test.c:1017
+#, no-c-format
+msgid "(7/7) Int inexact"
+msgstr "(7/7) Int inexact"
+
+#: backend/test.c:1018
+#, no-c-format
+msgid ""
+"(7/7) Int test option that modifies the value and returns "
+"SANE_INFO_INEXACT."
+msgstr ""
+"(7/7) Int test option that modifies the value and returns "
+"SANE_INFO_INEXACT."
+
+#: backend/test.c:1091
#, no-c-format
msgid "Fixed test options"
msgstr "Fixed test options"
-#: backend/test.c:1087
+#: backend/test.c:1104
#, no-c-format
msgid "(1/3) Fixed"
msgstr "(1/3) Fixed"
-#: backend/test.c:1088
+#: backend/test.c:1105
#, no-c-format
msgid "(1/3) Fixed test option with no unit and no constraint set."
msgstr "(1/3) Fixed test option with no unit and no constraint set."
-#: backend/test.c:1103
+#: backend/test.c:1120
#, no-c-format
msgid "(2/3) Fixed constraint range"
msgstr "(2/3) Fixed constraint range"
-#: backend/test.c:1104
+#: backend/test.c:1121
#, no-c-format
msgid ""
"(2/3) Fixed test option with unit microsecond and constraint range set. "
@@ -6609,47 +6683,47 @@ msgstr ""
"(2/3) Fixed test option with unit microsecond and constraint range set. "
"Minimum is -42.17, maximum 32767.9999, and quant is 2.0."
-#: backend/test.c:1120
+#: backend/test.c:1137
#, no-c-format
msgid "(3/3) Fixed constraint word list"
msgstr "(3/3) Fixed constraint word list"
-#: backend/test.c:1121
+#: backend/test.c:1138
#, no-c-format
msgid "(3/3) Fixed test option with no unit and constraint word list set."
msgstr "(3/3) Fixed test option with no unit and constraint word list set."
-#: backend/test.c:1136
+#: backend/test.c:1153
#, no-c-format
msgid "String test options"
msgstr "String test options"
-#: backend/test.c:1149
+#: backend/test.c:1166
#, no-c-format
msgid "(1/3) String"
msgstr "(1/3) String"
-#: backend/test.c:1150
+#: backend/test.c:1167
#, no-c-format
msgid "(1/3) String test option without constraint."
msgstr "(1/3) String test option without constraint."
-#: backend/test.c:1167
+#: backend/test.c:1184
#, no-c-format
msgid "(2/3) String constraint string list"
msgstr "(2/3) String constraint string list"
-#: backend/test.c:1168
+#: backend/test.c:1185
#, no-c-format
msgid "(2/3) String test option with string list constraint."
msgstr "(2/3) String test option with string list constraint."
-#: backend/test.c:1187
+#: backend/test.c:1204
#, no-c-format
msgid "(3/3) String constraint long string list"
msgstr "(3/3) String constraint long string list"
-#: backend/test.c:1188
+#: backend/test.c:1205
#, no-c-format
msgid ""
"(3/3) String test option with string list constraint. Contains some more "
@@ -6658,17 +6732,17 @@ msgstr ""
"(3/3) String test option with string list constraint. Contains some more "
"entries..."
-#: backend/test.c:1208
+#: backend/test.c:1225
#, no-c-format
msgid "Button test options"
msgstr "Button test options"
-#: backend/test.c:1221
+#: backend/test.c:1238
#, no-c-format
msgid "(1/1) Button"
msgstr "(1/1) Button"
-#: backend/test.c:1222
+#: backend/test.c:1239
#, no-c-format
msgid "(1/1) Button test option. Prints some text..."
msgstr "(1/1) Button test option. Prints some text..."
@@ -6866,6 +6940,3 @@ msgstr "Sets blue channel offset"
#~ msgid "Display a shortened resolution list"
#~ msgstr "Display a shortened resolution list"
-
-#~ msgid "Black & White"
-#~ msgstr "Black & White"
diff --git a/po/it.po b/po/it.po
index c05f068..a353cbe 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: sane-backends 1.0.18\n"
"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
"POT-Creation-Date: 2021-09-20 20:08-0700\n"
-"PO-Revision-Date: 2020-08-19 12:06+0200\n"
+"PO-Revision-Date: 2022-12-03 16:17-0500\n"
"Last-Translator: Vincenzo Reale <smart2128@baslug.org>\n"
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
"Language: it\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 20.08.0\n"
+"X-Generator: Poedit 3.2.2\n"
#: include/sane/saneopts.h:156
#, no-c-format
@@ -182,7 +182,7 @@ msgstr "Intensità del blu"
#: include/sane/saneopts.h:185
#, no-c-format
msgid "Brightness"
-msgstr "Brillantezza"
+msgstr "Luminosità"
#: include/sane/saneopts.h:186
#, no-c-format
@@ -305,7 +305,7 @@ msgstr "Negativo"
#: include/sane/saneopts.h:209
#, no-c-format
msgid "Quality calibration"
-msgstr "Qualità della calibrazione"
+msgstr "Calibrazione della qualità"
#: include/sane/saneopts.h:210
#, no-c-format
diff --git a/po/ru.po b/po/ru.po
index fb3d464..ee1e0b7 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,24 +1,25 @@
# translation of sane-backends.po to
# Russian translation for SANE backend options
# Copyright (C) 2002, 2003, 2004, 2005 SANE Project
+#
# Vitaly Lipatov <lav@altlinux.ru>, 2002, 2003, 2004. 2005.
# Vitaly Lipatov <LAV@VL3143.spb.edu>, 2005.
-#
+# Мария Шикунова <translation-team@basealt.ru>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: sane-backends\n"
"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
"POT-Creation-Date: 2021-09-20 20:08-0700\n"
-"PO-Revision-Date: 2007-12-17 23:05+0100\n"
-"Last-Translator: \n"
-"Language-Team: <ru@li.org>\n"
+"PO-Revision-Date: 2022-12-28 08:49+0300\n"
+"Last-Translator: Мария Шикунова <translation-team@basealt.ru>\n"
+"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.10.1\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Lokalize 22.04.3\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: include/sane/saneopts.h:156
#, no-c-format
@@ -28,33 +29,31 @@ msgstr "Количество параметров"
#: include/sane/saneopts.h:158
#, no-c-format
msgid "Standard"
-msgstr ""
+msgstr "Стандартно"
#: include/sane/saneopts.h:159 backend/artec_eplus48u.c:2882
#: backend/canon_lide70.c:416 backend/epson.c:3296 backend/epson2.c:1281
-#: backend/epsonds.c:1973 backend/genesys/genesys.cpp:4701
-#: backend/gt68xx.c:694 backend/hp-option.c:3295 backend/hp3500.c:1017
-#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
-#: backend/kvs40xx_opt.c:506 backend/leo.c:820 backend/lexmark.c:197
-#: backend/ma1509.c:549 backend/matsushita.c:1132 backend/microtek2.h:597
-#: backend/mustek.c:4371 backend/mustek_usb.c:299 backend/mustek_usb2.c:463
-#: backend/pixma/pixma_sane_options.c:161 backend/plustek.c:806
-#: backend/plustek_pp.c:745 backend/sceptre.c:699
+#: backend/epsonds.c:1973 backend/genesys/genesys.cpp:4701 backend/gt68xx.c:694
+#: backend/hp-option.c:3295 backend/hp3500.c:1017 backend/kvs1025_opt.c:639
+#: backend/kvs20xx_opt.c:285 backend/kvs40xx_opt.c:506 backend/leo.c:820
+#: backend/lexmark.c:197 backend/ma1509.c:549 backend/matsushita.c:1132
+#: backend/microtek2.h:597 backend/mustek.c:4371 backend/mustek_usb.c:299
+#: backend/mustek_usb2.c:463 backend/pixma/pixma_sane_options.c:161
+#: backend/plustek.c:806 backend/plustek_pp.c:745 backend/sceptre.c:699
#: backend/snapscan-options.c:550 backend/teco1.c:1092 backend/teco2.c:1907
-#: backend/teco3.c:917 backend/test.c:718 backend/u12.c:544
-#: backend/umax.c:5174 backend/umax_pp.c:569
+#: backend/teco3.c:917 backend/test.c:718 backend/u12.c:544 backend/umax.c:5174
+#: backend/umax_pp.c:569
#, no-c-format
msgid "Geometry"
msgstr "Расположение"
#: include/sane/saneopts.h:160 backend/artec_eplus48u.c:2803
-#: backend/canon.c:1491 backend/genesys/genesys.cpp:4744
-#: backend/gt68xx.c:663 backend/hp-option.c:2951 backend/kvs1025_opt.c:703
-#: backend/leo.c:868 backend/ma1509.c:597 backend/matsushita.c:1186
-#: backend/microtek2.h:598 backend/mustek.c:4419 backend/mustek_usb.c:347
-#: backend/mustek_usb2.c:429 backend/niash.c:751 backend/plustek.c:852
-#: backend/plustek_pp.c:791 backend/sceptre.c:747
-#: backend/snapscan-options.c:617 backend/stv680.c:1064
+#: backend/canon.c:1491 backend/genesys/genesys.cpp:4744 backend/gt68xx.c:663
+#: backend/hp-option.c:2951 backend/kvs1025_opt.c:703 backend/leo.c:868
+#: backend/ma1509.c:597 backend/matsushita.c:1186 backend/microtek2.h:598
+#: backend/mustek.c:4419 backend/mustek_usb.c:347 backend/mustek_usb2.c:429
+#: backend/niash.c:751 backend/plustek.c:852 backend/plustek_pp.c:791
+#: backend/sceptre.c:747 backend/snapscan-options.c:617 backend/stv680.c:1064
#: backend/teco1.c:1140 backend/teco2.c:1955 backend/teco3.c:965
#: backend/u12.c:590 backend/umax.c:5224 backend/umax_pp.c:618
#, no-c-format
@@ -62,9 +61,8 @@ msgid "Enhancement"
msgstr "Повышение"
#: include/sane/saneopts.h:161 backend/epson.c:3195 backend/epson2.c:1206
-#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
-#: backend/rts8891.c:2830 backend/snapscan-options.c:923
-#: backend/umax.c:5563
+#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597 backend/rts8891.c:2830
+#: backend/snapscan-options.c:923 backend/umax.c:5563
#, no-c-format
msgid "Advanced"
msgstr "Дополнительно"
@@ -72,7 +70,7 @@ msgstr "Дополнительно"
#: include/sane/saneopts.h:162
#, no-c-format
msgid "Sensors"
-msgstr ""
+msgstr "Датчики"
#: include/sane/saneopts.h:164
#, no-c-format
@@ -149,12 +147,12 @@ msgstr "Разрешение по Y"
#: include/sane/saneopts.h:178
#, no-c-format
msgid "Page width"
-msgstr ""
+msgstr "Ширина страницы"
#: include/sane/saneopts.h:179
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Page height"
-msgstr "Подсветка"
+msgstr "Высота страницы"
#: include/sane/saneopts.h:180
#, no-c-format
@@ -194,7 +192,7 @@ msgstr "Контрастность"
#: include/sane/saneopts.h:187
#, no-c-format
msgid "Grain size"
-msgstr ""
+msgstr "Размер зерна"
#: include/sane/saneopts.h:188
#, no-c-format
@@ -298,8 +296,8 @@ msgstr "Согласовывать разрешение по X и по Y"
#: include/sane/saneopts.h:208 backend/hp-option.c:3233
#: backend/hp3900_sane.c:427 backend/hp3900_sane.c:1020
-#: backend/hp3900_sane.c:1420 backend/mustek_usb2.c:119
-#: backend/plustek.c:234 backend/plustek_pp.c:203 backend/u12.c:155
+#: backend/hp3900_sane.c:1420 backend/mustek_usb2.c:119 backend/plustek.c:234
+#: backend/plustek_pp.c:203 backend/u12.c:155
#, no-c-format
msgid "Negative"
msgstr "Негатив"
@@ -420,48 +418,47 @@ msgid "Lamp off at exit"
msgstr "Выключить лампу при выходе"
#: include/sane/saneopts.h:234
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus position"
-msgstr "Расположение фокуса"
+msgstr "Положение фокуса"
#: include/sane/saneopts.h:235
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Autofocus"
-msgstr "Автоизвлечение"
+msgstr "Автофокус"
#: include/sane/saneopts.h:249
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
-"Read-only option that specifies how many options a specific device "
-"supports."
+"Read-only option that specifies how many options a specific device supports."
msgstr ""
-"Параметр только для чтения, указывающий как много параметров указанное "
-"устройство поддерживает."
+"Параметр только для чтения, определяющий количество параметров, "
+"поддерживаемых указанным устройством."
#: include/sane/saneopts.h:252
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Source, mode and resolution options"
-msgstr "Короткий список разрешений"
+msgstr "Параметры источника данных, режима и разрешения"
#: include/sane/saneopts.h:253
#, no-c-format
msgid "Scan area and media size options"
-msgstr ""
+msgstr "Параметры области сканирования и размера носителя"
#: include/sane/saneopts.h:254
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Image modification options"
-msgstr "Количество параметров"
+msgstr "Параметры изменения изображения"
#: include/sane/saneopts.h:255
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Hardware specific options"
-msgstr "Разрешение сканирования"
+msgstr "Параметры оборудования"
#: include/sane/saneopts.h:256
#, no-c-format
msgid "Scanner sensors and buttons"
-msgstr ""
+msgstr "Датчики и кнопки сканера"
#: include/sane/saneopts.h:259
#, no-c-format
@@ -475,26 +472,25 @@ msgid ""
"scanner this cuts down the number of passes to one and on a one-pass "
"scanner, it reduces the memory requirements and scan-time of the preview."
msgstr ""
-"Запросить, чтобы все предварительные просмотры были в одноцветном "
-"режиме. На трёхпроходных сканерах это уменьшит количество проходов до "
-"одного, а на однопроходных сканерах сократит требования к памяти и время "
-"предварительного сканирования."
+"Запросить, чтобы все предварительные просмотры были в одноцветном режиме. На "
+"трёхпроходных сканерах это уменьшит количество проходов до одного, а на "
+"однопроходных сканерах сократит требования к памяти и время предварительного "
+"сканирования."
#: include/sane/saneopts.h:268
#, no-c-format
msgid ""
-"Number of bits per sample, typical values are 1 for \"line-art\" and 8 "
-"for multibit scans."
+"Number of bits per sample, typical values are 1 for \"line-art\" and 8 for "
+"multibit scans."
msgstr ""
-"Количество бит на цвет, обычным значением является 1 для штрихового и 8 "
-"для полутонового режима сканирования."
+"Количество бит на цвет, обычным значением является 1 для штрихового и 8 для "
+"полутонового режима сканирования."
#: include/sane/saneopts.h:272
#, no-c-format
msgid "Selects the scan mode (e.g., lineart, monochrome, or color)."
msgstr ""
-"Выберите режим сканирования (например, штриховой, чёрно-белый или "
-"цветной)."
+"Выберите режим сканирования (например, штриховой, чёрно-белый или цветной)."
#: include/sane/saneopts.h:275
#, no-c-format
@@ -505,8 +501,8 @@ msgstr "Определяет скорость, с которой произво
#, no-c-format
msgid "Selects the scan source (such as a document-feeder)."
msgstr ""
-"Выберите источник сканирование (такой как устройство автоматической "
-"подачи документов)"
+"Выберите источник сканирование (такой как устройство автоматической подачи "
+"документов)"
#: include/sane/saneopts.h:281
#, no-c-format
@@ -551,19 +547,20 @@ msgstr "Устанавливает вертикальное разрешение
#: include/sane/saneopts.h:305
#, no-c-format
msgid ""
-"Specifies the width of the media. Required for automatic centering of "
-"sheet-fed scans."
+"Specifies the width of the media. Required for automatic centering of sheet-"
+"fed scans."
msgstr ""
+"Определяет ширину носителя. Это значение необходимо для автоматического "
+"центрирования листовых печатных источников."
#: include/sane/saneopts.h:309
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Specifies the height of the media."
-msgstr "Устанавливает разрешение сканируемого изображения."
+msgstr "Определяет высоту носителя."
#: include/sane/saneopts.h:312
#, no-c-format
-msgid ""
-"Determines whether a builtin or a custom gamma-table should be used."
+msgid "Determines whether a builtin or a custom gamma-table should be used."
msgstr ""
"Определяет, будет ли использоваться встроенная или нестандартная таблица "
"гамма-коррекции."
@@ -571,13 +568,13 @@ msgstr ""
#: include/sane/saneopts.h:316
#, no-c-format
msgid ""
-"Gamma-correction table. In color mode this option equally affects the "
-"red, green, and blue channels simultaneously (i.e., it is an intensity "
-"gamma table)."
+"Gamma-correction table. In color mode this option equally affects the red, "
+"green, and blue channels simultaneously (i.e., it is an intensity gamma "
+"table)."
msgstr ""
-"Таблица коррекции гаммы. В цветном режиме этот параметр действует "
-"одинаково на красный, зелёный и синий каналы (то есть это интенсивность "
-"коррекции гаммы)."
+"Таблица коррекции гаммы. В цветном режиме этот параметр действует одинаково "
+"на красный, зелёный и синий каналы (то есть это интенсивность коррекции "
+"гаммы)."
#: include/sane/saneopts.h:321
#, no-c-format
@@ -607,23 +604,24 @@ msgstr "Управление контрастностью полученного
#: include/sane/saneopts.h:336
#, no-c-format
msgid ""
-"Selects the \"graininess\" of the acquired image. Smaller values result "
-"in sharper images."
+"Selects the \"graininess\" of the acquired image. Smaller values result in "
+"sharper images."
msgstr ""
+"Определяет зернистость сканируемого изображения. Меньшие значения позволяют "
+"создавать более чёткие изображения."
#: include/sane/saneopts.h:340
#, no-c-format
msgid "Selects whether the acquired image should be halftoned (dithered)."
msgstr ""
-"Определяет, должно ли полученное изображение быть превращено в "
-"полутоновое (размытием)."
+"Определяет, должно ли полученное изображение быть превращено в полутоновое "
+"(размытием)."
#: include/sane/saneopts.h:343 include/sane/saneopts.h:358
#, no-c-format
msgid "Selects what radiance level should be considered \"black\"."
msgstr ""
-"Определяет, какой уровень излучения должен быть рассмотрен как \"чёрный"
-"\"."
+"Определяет, какой уровень излучения должен быть рассмотрен как \"чёрный\"."
#: include/sane/saneopts.h:346 include/sane/saneopts.h:367
#, no-c-format
@@ -649,8 +647,8 @@ msgstr ""
#, no-c-format
msgid "Selects what blue radiance level should be considered \"white\"."
msgstr ""
-"Определяет, какой синий уровень излучения должен быть рассмотрен как "
-"\"белый\"."
+"Определяет, какой синий уровень излучения должен быть рассмотрен как \"белый"
+"\"."
#: include/sane/saneopts.h:360
#, no-c-format
@@ -670,8 +668,8 @@ msgstr ""
#, no-c-format
msgid "Selects what blue radiance level should be considered \"black\"."
msgstr ""
-"Определяет, какой синий уровень излучения должен быть рассмотрен как "
-"\"чёрный\"."
+"Определяет, какой синий уровень излучения должен быть рассмотрен как \"чёрный"
+"\"."
#: include/sane/saneopts.h:369
#, no-c-format
@@ -682,16 +680,14 @@ msgstr ""
#: include/sane/saneopts.h:371
#, no-c-format
-msgid ""
-"Selects what green radiance level should be considered \"full green\"."
+msgid "Selects what green radiance level should be considered \"full green\"."
msgstr ""
"Определяет, какой зелёный уровень излучения должен быть рассмотрен как "
"\"полный зелёный\"."
#: include/sane/saneopts.h:374
#, no-c-format
-msgid ""
-"Selects what blue radiance level should be considered \"full blue\"."
+msgid "Selects what blue radiance level should be considered \"full blue\"."
msgstr ""
"Определяет, какой синий уровень излучения должен быть рассмотрен как "
"\"полный синий\"."
@@ -704,12 +700,12 @@ msgstr "Управляет \"тоном\" (уровнем синего) полу
#: include/sane/saneopts.h:381
#, no-c-format
msgid ""
-"The saturation level controls the amount of \"blooming\" that occurs "
-"when acquiring an image with a camera. Larger values cause more blooming."
+"The saturation level controls the amount of \"blooming\" that occurs when "
+"acquiring an image with a camera. Larger values cause more blooming."
msgstr ""
-"Уровень насыщенности управляет количеством \"blooming\", который "
-"получается при получении изображения с камеры. Большие значения вызывают "
-"больше blooming."
+"Уровень насыщенности управляет количеством \"blooming\", который получается "
+"при получении изображения с камеры. Большие значения вызывают больше "
+"blooming."
#: include/sane/saneopts.h:386
#, no-c-format
@@ -730,15 +726,14 @@ msgstr ""
msgid ""
"Defines the halftoning (dithering) pattern for scanning halftoned images."
msgstr ""
-"Устанавливает полутоновый (dithering) шаблон, используемый при "
-"сканировании полутоновых изображений."
+"Устанавливает полутоновый (dithering) шаблон, используемый при сканировании "
+"полутоновых изображений."
#: include/sane/saneopts.h:397
#, no-c-format
msgid "Use same values for X and Y resolution"
msgstr ""
-"Использовать одинаковые значения для разрешений по горизонтали и "
-"вертикали."
+"Использовать одинаковые значения для разрешений по горизонтали и вертикали."
#: include/sane/saneopts.h:399
#, no-c-format
@@ -786,7 +781,7 @@ msgid "Analog gamma-correction for blue"
msgstr "Аналоговая коррекция гаммы для синего"
#: include/sane/saneopts.h:419
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Warm up lamp before scanning"
msgstr "Прогревать лампу перед сканированием"
@@ -856,54 +851,54 @@ msgid "Turn off lamp when program exits"
msgstr "Выключить лампу при выходе из программы"
#: include/sane/saneopts.h:447
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus position for manual focus"
-msgstr "Автоизвлечение"
+msgstr "Положение фокуса для ручного фокуса"
#: include/sane/saneopts.h:449
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Perform autofocus before scan"
-msgstr "Прогревать лампу перед сканированием"
+msgstr "Выполнять автофокус перед сканированием"
#: include/sane/saneopts.h:452
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Scan button"
-msgstr "Разрешение сканирования"
+msgstr "Кнопка «Сканировать»"
#: include/sane/saneopts.h:453
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Email button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Кнопка «Электронная почта»"
#: include/sane/saneopts.h:454
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Fax button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Кнопка «Факс»"
#: include/sane/saneopts.h:455
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Copy button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Кнопка «Копировать»"
#: include/sane/saneopts.h:456
#, no-c-format
msgid "PDF button"
-msgstr ""
+msgstr "Кнопка «PDF»"
#: include/sane/saneopts.h:457
#, no-c-format
msgid "Cancel button"
-msgstr ""
+msgstr "Кнопка «Отмена»"
#: include/sane/saneopts.h:458
#, no-c-format
msgid "Page loaded"
-msgstr ""
+msgstr "Страница загружена"
#: include/sane/saneopts.h:459
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Cover open"
-msgstr "Цветовой шаблон"
+msgstr "Крышка открыта"
#: include/sane/saneopts.h:462
#, no-c-format
@@ -938,72 +933,72 @@ msgstr "Штриховой"
#: backend/sane_strstatus.c:57
#, no-c-format
msgid "Success"
-msgstr ""
+msgstr "Готово"
#: backend/sane_strstatus.c:60
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Operation not supported"
-msgstr "Полутоновое сканирование не поддерживается"
+msgstr "Действие не поддерживается"
#: backend/sane_strstatus.c:63
#, no-c-format
msgid "Operation was canceled"
-msgstr ""
+msgstr "Действие было отменено"
#: backend/sane_strstatus.c:66
#, no-c-format
msgid "Device busy"
-msgstr ""
+msgstr "Устройство занято"
#: backend/sane_strstatus.c:69
#, no-c-format
msgid "Invalid argument"
-msgstr ""
+msgstr "Недопустимый параметр"
#: backend/sane_strstatus.c:72
#, no-c-format
msgid "End of file reached"
-msgstr ""
+msgstr "Достигнут конец файла"
#: backend/sane_strstatus.c:75
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Document feeder jammed"
-msgstr "Податчик листов"
+msgstr "Застревание документа в устройстве подачи"
#: backend/sane_strstatus.c:78
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Document feeder out of documents"
-msgstr "Податчик листов"
+msgstr "В устройстве подачи закончились документы"
#: backend/sane_strstatus.c:81
#, no-c-format
msgid "Scanner cover is open"
-msgstr ""
+msgstr "Открыта крышка сканера"
#: backend/sane_strstatus.c:84
#, no-c-format
msgid "Error during device I/O"
-msgstr ""
+msgstr "Ошибка во время ввода/вывода устройства"
#: backend/sane_strstatus.c:87
#, no-c-format
msgid "Out of memory"
-msgstr ""
+msgstr "Недостаточно памяти"
#: backend/sane_strstatus.c:90
#, no-c-format
msgid "Access to resource has been denied"
-msgstr ""
+msgstr "Доступ к ресурсу запрещён"
#: backend/sane_strstatus.c:94
#, no-c-format
msgid "Lamp not ready, please retry"
-msgstr ""
+msgstr "Лампа не готова, попробуйте ещё раз"
#: backend/sane_strstatus.c:99
#, no-c-format
msgid "Scanner mechanism locked for transport"
-msgstr ""
+msgstr "Механизм сканера заблокирован"
#: backend/artec_eplus48u.c:2872 backend/pnm.c:280
#, no-c-format
@@ -1029,12 +1024,12 @@ msgstr "Калибровать перед следующим сканирова
#: backend/artec_eplus48u.c:2941
#, no-c-format
msgid ""
-"If enabled, the device will be calibrated before the next scan. "
-"Otherwise, calibration is performed only before the first start."
+"If enabled, the device will be calibrated before the next scan. Otherwise, "
+"calibration is performed only before the first start."
msgstr ""
-"Если отмечено, устройство будет откалибровано перед следующим "
-"сканированием. В противном случае, калибровка будет выполнена только "
-"перед первым сканированием."
+"Если отмечено, устройство будет откалибровано перед следующим сканированием. "
+"В противном случае, калибровка будет выполнена только перед первым "
+"сканированием."
#: backend/artec_eplus48u.c:2952
#, no-c-format
@@ -1042,15 +1037,15 @@ msgid "Only perform shading-correction"
msgstr "Выполнять только коррекцию оттенка"
#: backend/artec_eplus48u.c:2954
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
-"If enabled, only the shading correction is performed during calibration. "
-"The default values for gain, offset and exposure time, either built-in "
-"or from the configuration file, are used."
+"If enabled, only the shading correction is performed during calibration. The "
+"default values for gain, offset and exposure time, either built-in or from "
+"the configuration file, are used."
msgstr ""
-"Если отмечено, во время калибровки выполняется только коррекция "
-"оттенков. Для усиления, смещения и времени выдержки используются либо "
-"встроенные значения по умолчанию, либо из конфигурационного файла."
+"Если отмечено, при калибровке будет выполняться только исправление градации. "
+"Для усиления, смещения и времени экспозиции используются встроенные или "
+"заимствованные из конфигурационного файла стандартные значения."
#: backend/artec_eplus48u.c:2965
#, no-c-format
@@ -1073,49 +1068,48 @@ msgid "Duplex scan"
msgstr "Двухстороннее сканирование"
#: backend/avision.h:837
-#, fuzzy, no-c-format
-msgid ""
-"Duplex scan provides a scan of the front and back side of the document"
+#, no-c-format
+msgid "Duplex scan provides a scan of the front and back side of the document"
msgstr ""
-"Двухстороннее сканирование позволяет получить изображение лицевой и "
-"обратной стороны документа"
+"При двухстороннем сканировании будет получено изображение сразу лицевой и "
+"обратной сторон документа"
#: backend/canon-sane.c:674 backend/canon.c:169
#, no-c-format
msgid "Correction according to transparency ratio"
-msgstr ""
+msgstr "Коррекция по коэффициенту прозрачности"
#: backend/canon-sane.c:680 backend/canon.c:168
#, no-c-format
msgid "Correction according to film type"
-msgstr ""
+msgstr "Коррекция по типу плёнки"
-#: backend/canon-sane.c:732 backend/canon-sane.c:940
-#: backend/canon-sane.c:1076 backend/canon-sane.c:1314
-#: backend/canon-sane.c:1494 backend/canon-sane.c:1643 backend/canon.c:155
+#: backend/canon-sane.c:732 backend/canon-sane.c:940 backend/canon-sane.c:1076
+#: backend/canon-sane.c:1314 backend/canon-sane.c:1494
+#: backend/canon-sane.c:1643 backend/canon.c:155
#, no-c-format
msgid "Fine color"
-msgstr ""
+msgstr "Чистый цвет"
#: backend/canon-sane.c:776 backend/canon.c:174
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Negatives"
-msgstr "Негатив"
+msgstr "Негативы"
#: backend/canon-sane.c:1318 backend/canon.c:147
#, no-c-format
msgid "Raw"
-msgstr ""
+msgstr "Без обработки"
#: backend/canon.c:167
-#, fuzzy, no-c-format
+#, no-c-format
msgid "No transparency correction"
-msgstr "Коррекция цветов"
+msgstr "Без коррекции прозрачности"
#: backend/canon.c:174
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Slides"
-msgstr "Слайд"
+msgstr "Слайды"
#: backend/canon.c:184 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
#: backend/matsushita.c:175
@@ -1124,185 +1118,185 @@ msgid "Automatic"
msgstr "Автоматически"
#: backend/canon.c:184
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Normal speed"
-msgstr "Нормально"
+msgstr "Нормальная скорость"
#: backend/canon.c:185
-#, fuzzy, no-c-format
+#, no-c-format
msgid "1/2 normal speed"
-msgstr "2x2 нормальное"
+msgstr "1/2 нормальной скорости"
#: backend/canon.c:185
-#, fuzzy, no-c-format
+#, no-c-format
msgid "1/3 normal speed"
-msgstr "3x3 нормальное"
+msgstr "1/3 нормальной скорости"
#: backend/canon.c:358
-#, fuzzy, no-c-format
+#, no-c-format
msgid "rounded parameter"
-msgstr "Нечёткие параметры"
+msgstr "округлённый параметр"
#: backend/canon.c:361 backend/canon.c:377 backend/canon.c:412
#: backend/canon.c:462 backend/canon.c:480 backend/canon.c:523
#, no-c-format
msgid "unknown"
-msgstr ""
+msgstr "неизвестно"
#: backend/canon.c:371
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ADF jam"
-msgstr "АПД"
+msgstr "Заедание в УПД"
#: backend/canon.c:374
#, no-c-format
msgid "ADF cover open"
-msgstr ""
+msgstr "Крышка УПД открыта"
#: backend/canon.c:387
-#, fuzzy, no-c-format
+#, no-c-format
msgid "lamp failure"
-msgstr "Значение гаммы"
+msgstr "лампа не работает"
#: backend/canon.c:390
#, no-c-format
msgid "scan head positioning error"
-msgstr ""
+msgstr "ошибка позиционирования сканирующей головки"
#: backend/canon.c:393
#, no-c-format
msgid "CPU check error"
-msgstr ""
+msgstr "Ошибка проверки процессора"
#: backend/canon.c:396
#, no-c-format
msgid "RAM check error"
-msgstr ""
+msgstr "Ошибка проверки ОЗУ"
#: backend/canon.c:399
#, no-c-format
msgid "ROM check error"
-msgstr ""
+msgstr "Ошибка проверки ПЗУ"
#: backend/canon.c:402
#, no-c-format
msgid "hardware check error"
-msgstr ""
+msgstr "ошибка проверки оборудования"
#: backend/canon.c:405
-#, fuzzy, no-c-format
+#, no-c-format
msgid "transparency unit lamp failure"
-msgstr "Модуль для слайдов"
+msgstr "не работает лампа модуля слайдов"
#: backend/canon.c:408
#, no-c-format
msgid "transparency unit scan head positioning failure"
-msgstr ""
+msgstr "ошибка позиционирования головки сканирования модуля слайдов"
#: backend/canon.c:422
#, no-c-format
msgid "parameter list length error"
-msgstr ""
+msgstr "ошибка длины списка параметров"
#: backend/canon.c:426
#, no-c-format
msgid "invalid command operation code"
-msgstr ""
+msgstr "неверный код команды действия"
#: backend/canon.c:430
#, no-c-format
msgid "invalid field in CDB"
-msgstr ""
+msgstr "недопустимое поле CDB"
#: backend/canon.c:434
#, no-c-format
msgid "unsupported LUN"
-msgstr ""
+msgstr "неподдерживаемое значение LUN"
#: backend/canon.c:438
#, no-c-format
msgid "invalid field in parameter list"
-msgstr ""
+msgstr "недопустимое поле в списке параметров"
#: backend/canon.c:442
#, no-c-format
msgid "command sequence error"
-msgstr ""
+msgstr "ошибка последовательности команд"
#: backend/canon.c:446
#, no-c-format
msgid "too many windows specified"
-msgstr ""
+msgstr "указано слишком много окон"
#: backend/canon.c:450
#, no-c-format
msgid "medium not present"
-msgstr ""
+msgstr "отсутствует носитель"
#: backend/canon.c:454
#, no-c-format
msgid "invalid bit IDENTIFY message"
-msgstr ""
+msgstr "сообщение о некорректном бите IDENTIFY"
#: backend/canon.c:458
-#, fuzzy, no-c-format
+#, no-c-format
msgid "option not correct"
-msgstr "Полутоновое сканирование не поддерживается"
+msgstr "некорректный параметр"
#: backend/canon.c:472
#, no-c-format
msgid "power on reset / bus device reset"
-msgstr ""
+msgstr "сброс при включении/соединении устройства"
#: backend/canon.c:476
#, no-c-format
msgid "parameter changed by another initiator"
-msgstr ""
+msgstr "параметр изменён другим инструментом инициализации"
#: backend/canon.c:490
#, no-c-format
msgid "no additional sense information"
-msgstr ""
+msgstr "отсутствуют дополнительные данные"
#: backend/canon.c:494
#, no-c-format
msgid "reselect failure"
-msgstr ""
+msgstr "ошибка повторного выделения"
#: backend/canon.c:498
#, no-c-format
msgid "SCSI parity error"
-msgstr ""
+msgstr "ошибка чётности SCSI"
#: backend/canon.c:502
#, no-c-format
msgid "initiator detected error message received"
-msgstr ""
+msgstr "получен сообщение об ошибке обнаружения инструмента инициализации"
#: backend/canon.c:507
#, no-c-format
msgid "invalid message error"
-msgstr ""
+msgstr "неверное сообщение"
#: backend/canon.c:511
#, no-c-format
msgid "timeout error"
-msgstr ""
+msgstr "время ожидания истекло"
#: backend/canon.c:515
-#, fuzzy, no-c-format
+#, no-c-format
msgid "transparency unit shading error"
-msgstr "Модуль для слайдов"
+msgstr "ошибка градации модуля слайдов"
#: backend/canon.c:519
#, no-c-format
msgid "lamp not stabilized"
-msgstr ""
+msgstr "лампа не стабилизирована"
#: backend/canon.c:845 backend/canon.c:860
-#, fuzzy, no-c-format
+#, no-c-format
msgid "film scanner"
-msgstr "планшетный сканер"
+msgstr "плёночный сканер"
#: backend/canon.c:875 backend/canon.c:890 backend/canon.c:905
#: backend/canon.c:920 backend/hp3900_sane.c:1682 backend/plustek.c:1333
@@ -1320,219 +1314,222 @@ msgstr "Тип плёнки"
#: backend/canon.c:1177
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
-msgstr ""
+msgstr "Позволяет выбрать тип плёнки, то есть негатив или слайд"
#: backend/canon.c:1189
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Negative film type"
-msgstr "Негатив"
+msgstr "Тип плёнки негатива"
#: backend/canon.c:1190
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Selects the negative film type"
-msgstr "Выберите тестовое изображение"
+msgstr "Выбирает тип плёнки негатива"
#: backend/canon.c:1229
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Hardware resolution"
-msgstr "Разрешение сканирования"
+msgstr "Аппаратное разрешение"
#: backend/canon.c:1230
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Use only hardware resolutions"
-msgstr "Показывать короткий список разрешений"
+msgstr "Использовать только аппаратное разрешение"
#: backend/canon.c:1311 backend/epson2.c:1331
#, no-c-format
msgid "Focus"
-msgstr ""
+msgstr "Фокус"
#: backend/canon.c:1321
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Auto focus"
-msgstr "Автоизвлечение"
+msgstr "Автофокусировка"
#: backend/canon.c:1322
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enable/disable auto focus"
-msgstr "Выключить предварительный фокус"
+msgstr "Включить/выключить автофокусировку"
#: backend/canon.c:1329
#, no-c-format
msgid "Auto focus only once"
-msgstr ""
+msgstr "Автофокусировка только один раз"
#: backend/canon.c:1330
#, no-c-format
msgid "Do auto focus only once between ejects"
-msgstr ""
+msgstr "Выполнять автофокусировку только один раз между извлечением"
#: backend/canon.c:1338
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Manual focus position"
-msgstr "Зафиксировать позицию фокуса"
+msgstr "Определить позицию фокуса вручную"
#: backend/canon.c:1339
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
+"Установить положение фокуса оптической системы вручную (по умолчанию: 128)."
#: backend/canon.c:1349
#, no-c-format
msgid "Scan margins"
-msgstr ""
+msgstr "Поля области сканирования"
#: backend/canon.c:1396
#, no-c-format
msgid "Extra color adjustments"
-msgstr ""
+msgstr "Дополнительная настройка цветов"
#: backend/canon.c:1531 backend/epson.c:3203 backend/epson2.c:1245
#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
#, no-c-format
msgid "Mirror image"
-msgstr "Зеркальное изображение"
+msgstr "Отразить изображение"
#: backend/canon.c:1532
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Mirror the image horizontally"
-msgstr "Отображает изображение по горизонтали."
+msgstr "Отразить изображение по горизонтали"
#: backend/canon.c:1601
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Auto exposure"
-msgstr "Установить время выдержки"
+msgstr "Автоэкспозиция"
#: backend/canon.c:1602
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enable/disable the auto exposure feature"
-msgstr "Включить выбор времени выдержки"
+msgstr "Включить/выключить функцию автоэкспозиции"
#: backend/canon.c:1618
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Calibration now"
msgstr "Калибровка"
#: backend/canon.c:1619
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Execute calibration *now*"
-msgstr "Задать режим калибровки"
+msgstr "Выполнить калибровку прямо сейчас"
#: backend/canon.c:1629
#, no-c-format
msgid "Self diagnosis"
-msgstr ""
+msgstr "Самопроверка"
#: backend/canon.c:1630
#, no-c-format
msgid "Perform scanner self diagnosis"
-msgstr ""
+msgstr "Выполнить самопроверку сканера"
#: backend/canon.c:1641
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Reset scanner"
-msgstr "листовой сканер"
+msgstr "Сбросить параметры сканера"
#: backend/canon.c:1642
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Reset the scanner"
-msgstr "листовой сканер"
+msgstr "Сбросить параметры сканера"
#: backend/canon.c:1652
#, no-c-format
msgid "Medium handling"
-msgstr ""
+msgstr "Обработка носителя"
#: backend/canon.c:1661
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Eject film after each scan"
-msgstr "Извлечь документ после сканирования"
+msgstr "Извлекать плёнку после каждого сканирования"
#: backend/canon.c:1662
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
msgstr ""
+"Автоматически извлекать плёнку из устройства после каждого сканирования"
#: backend/canon.c:1673
#, no-c-format
msgid "Eject film before exit"
-msgstr ""
+msgstr "Извлекать плёнку перед выходом"
#: backend/canon.c:1674
#, no-c-format
-msgid ""
-"Automatically eject the film from the device before exiting the program"
-msgstr ""
+msgid "Automatically eject the film from the device before exiting the program"
+msgstr "Автоматически извлекать плёнку из устройства перед закрытием программы"
#: backend/canon.c:1683
#, no-c-format
msgid "Eject film now"
-msgstr ""
+msgstr "Извлечь плёнку сейчас"
#: backend/canon.c:1684
#, no-c-format
msgid "Eject the film *now*"
-msgstr ""
+msgstr "Извлечь плёнку сейчас"
#: backend/canon.c:1693
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Document feeder extras"
-msgstr "Податчик листов"
+msgstr "Дополнительные инструменты подачи"
#: backend/canon.c:1700
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Flatbed only"
-msgstr "Планшетный"
+msgstr "Только планшетный"
#: backend/canon.c:1701
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
msgstr ""
+"Отключить автоматическую подачу документов и использовать только планшетный "
+"механизм"
#: backend/canon.c:1711 backend/canon.c:1721
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Transparency unit"
-msgstr "Модуль для слайдов"
+msgstr "Модуль слайдов"
#: backend/canon.c:1722
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
-msgstr ""
+msgstr "Включить/выключить модуль слайдов (FAU, film adapter unit)"
#: backend/canon.c:1732
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Negative film"
msgstr "Негатив"
#: backend/canon.c:1733
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Positive or negative film"
-msgstr "Позитив"
+msgstr "Позитивная или негативная плёнка"
#: backend/canon.c:1742
#, no-c-format
msgid "Density control"
-msgstr ""
+msgstr "Управление плотностью"
#: backend/canon.c:1743
#, no-c-format
msgid "Set density control mode"
-msgstr ""
+msgstr "Установить режим управления плотностью"
#: backend/canon.c:1754
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Transparency ratio"
-msgstr "Модуль для слайдов"
+msgstr "Коэффициент прозрачности"
#: backend/canon.c:1768
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Select film type"
-msgstr "Тип плёнки"
+msgstr "Выбрать тип плёнки"
#: backend/canon.c:1769
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Select the film type"
-msgstr "Выбирает полутона."
+msgstr "Выбрать тип плёнки"
#: backend/canon630u.c:157
#, no-c-format
@@ -1593,112 +1590,110 @@ msgstr "Планшетный"
#: backend/kodak.c:138
#, no-c-format
msgid "ADF Front"
-msgstr ""
+msgstr "Переднее устройство подачи документов"
#: backend/canon_dr.c:431 backend/epjitsu.c:233 backend/fujitsu.c:685
#: backend/kodak.c:139
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ADF Back"
-msgstr "АПД"
+msgstr "Заднее устройство подачи документов"
#: backend/canon_dr.c:432 backend/epjitsu.c:234 backend/epsonds-ops.c:33
#: backend/epsonds.c:1321 backend/epsonds.h:71 backend/fujitsu.c:686
#: backend/hp5590.c:92 backend/kodak.c:140 backend/pixma/pixma.c:1007
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ADF Duplex"
-msgstr "Двухсторонний"
+msgstr "Двухстороннее устройство подачи документов"
#: backend/canon_dr.c:433 backend/fujitsu.c:687
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Card Front"
-msgstr "Распечатка"
+msgstr "Карта (лицевая сторона)"
#: backend/canon_dr.c:434 backend/fujitsu.c:688
#, no-c-format
msgid "Card Back"
-msgstr ""
+msgstr "Карта (задняя строна)"
#: backend/canon_dr.c:435 backend/fujitsu.c:689
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Card Duplex"
-msgstr "Двухсторонний"
+msgstr "Карта (обе стороны)"
#: backend/canon_dr.c:442 backend/epson.c:597 backend/epson.c:3094
-#: backend/epson2.c:191 backend/fujitsu.c:706
-#: backend/genesys/genesys.cpp:117 backend/genesys/genesys.cpp:124
-#: backend/gt68xx_low.h:134 backend/hp-option.c:3091
+#: backend/epson2.c:191 backend/fujitsu.c:706 backend/genesys/genesys.cpp:117
+#: backend/genesys/genesys.cpp:124 backend/gt68xx_low.h:134
+#: backend/hp-option.c:3091
#, no-c-format
msgid "Red"
msgstr "Красный"
#: backend/canon_dr.c:443 backend/epson.c:598 backend/epson.c:3090
-#: backend/epson2.c:192 backend/fujitsu.c:707
-#: backend/genesys/genesys.cpp:118 backend/genesys/genesys.cpp:125
-#: backend/gt68xx_low.h:135 backend/hp-option.c:3092
+#: backend/epson2.c:192 backend/fujitsu.c:707 backend/genesys/genesys.cpp:118
+#: backend/genesys/genesys.cpp:125 backend/gt68xx_low.h:135
+#: backend/hp-option.c:3092
#, no-c-format
msgid "Green"
msgstr "Зелёный"
#: backend/canon_dr.c:444 backend/epson.c:599 backend/epson.c:3098
-#: backend/epson2.c:193 backend/fujitsu.c:708
-#: backend/genesys/genesys.cpp:119 backend/genesys/genesys.cpp:126
-#: backend/gt68xx_low.h:136 backend/hp-option.c:3093
+#: backend/epson2.c:193 backend/fujitsu.c:708 backend/genesys/genesys.cpp:119
+#: backend/genesys/genesys.cpp:126 backend/gt68xx_low.h:136
+#: backend/hp-option.c:3093
#, no-c-format
msgid "Blue"
msgstr "Синий"
#: backend/canon_dr.c:445
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enhance Red"
-msgstr "Повышение"
+msgstr "Улучшить красный"
#: backend/canon_dr.c:446
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enhance Green"
-msgstr "Повышение"
+msgstr "Улучшить зелёный"
#: backend/canon_dr.c:447
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enhance Blue"
-msgstr "Повышение"
+msgstr "Улучшить голубой"
#: backend/canon_dr.c:449 backend/epson.c:554 backend/epson.c:562
#: backend/epson.c:574 backend/epson.c:596 backend/epson2.c:155
#: backend/epson2.c:163 backend/epson2.c:175 backend/epson2.c:190
-#: backend/epson2.c:204 backend/fujitsu.c:712
-#: backend/genesys/genesys.cpp:127 backend/leo.c:106
-#: backend/matsushita.c:135 backend/matsushita.c:156
+#: backend/epson2.c:204 backend/fujitsu.c:712 backend/genesys/genesys.cpp:127
+#: backend/leo.c:106 backend/matsushita.c:135 backend/matsushita.c:156
#: backend/matsushita.c:188 backend/matsushita.c:210
#: backend/snapscan-options.c:91
#, no-c-format
msgid "None"
-msgstr "Ничего"
+msgstr "Нет"
#: backend/canon_dr.c:450 backend/fujitsu.c:713
#, no-c-format
msgid "JPEG"
-msgstr ""
+msgstr "JPEG"
#: backend/canon_dr.c:2623 backend/fujitsu.c:4140 backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
-msgstr ""
+msgstr "Процент пустых страниц для программного пропуска"
#: backend/canon_dr.c:2624 backend/fujitsu.c:4141
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
-msgstr ""
+msgstr "Запросить драйвер удалить страницы с низким процентом тёмных пикселов"
#: backend/canon_lide70.c:342 backend/epson.c:2811 backend/epson2.c:967
#: backend/genesys/genesys.cpp:4632 backend/gt68xx.c:449
-#: backend/hp-option.c:2912 backend/kvs1025_opt.c:521
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:499
-#: backend/matsushita.c:1081 backend/microtek2.h:596 backend/mustek.c:4213
-#: backend/mustek_usb.c:254 backend/mustek_usb2.c:342 backend/niash.c:731
-#: backend/plustek.c:719 backend/plustek_pp.c:656 backend/sceptre.c:670
-#: backend/snapscan-options.c:354 backend/stv680.c:1027
-#: backend/teco2.c:1879 backend/test.c:377 backend/u12.c:471
-#: backend/umax.c:5052
+#: backend/hp-option.c:2912 backend/kvs1025_opt.c:521 backend/kvs20xx_opt.c:171
+#: backend/kvs40xx_opt.c:320 backend/ma1509.c:499 backend/matsushita.c:1081
+#: backend/microtek2.h:596 backend/mustek.c:4213 backend/mustek_usb.c:254
+#: backend/mustek_usb2.c:342 backend/niash.c:731 backend/plustek.c:719
+#: backend/plustek_pp.c:656 backend/sceptre.c:670
+#: backend/snapscan-options.c:354 backend/stv680.c:1027 backend/teco2.c:1879
+#: backend/test.c:377 backend/u12.c:471 backend/umax.c:5052
#, no-c-format
msgid "Scan Mode"
msgstr "Режим сканирования"
@@ -1784,25 +1779,25 @@ msgstr "Чёрно-белый C (Net Screen)"
#: backend/epson2.c:179
#, no-c-format
msgid "Dither A (4x4 Bayer)"
-msgstr ""
+msgstr "Размытие A (4x4 Байер)"
#: backend/epson.c:567 backend/epson.c:579 backend/epson2.c:168
#: backend/epson2.c:180
#, no-c-format
msgid "Dither B (4x4 Spiral)"
-msgstr ""
+msgstr "Размытие B (4x4 спираль)"
#: backend/epson.c:568 backend/epson.c:580 backend/epson2.c:169
#: backend/epson2.c:181
#, no-c-format
msgid "Dither C (4x4 Net Screen)"
-msgstr ""
+msgstr "Размытие C (4x4 Net Screen)"
#: backend/epson.c:569 backend/epson.c:581 backend/epson2.c:170
#: backend/epson2.c:182
#, no-c-format
msgid "Dither D (8x4 Net Screen)"
-msgstr ""
+msgstr "Размытие D (8x4 Net Screen)"
#: backend/epson.c:582 backend/epson2.c:183
#, no-c-format
@@ -1921,12 +1916,12 @@ msgstr "Выбирает полутона."
#: backend/epson.c:2865 backend/epson2.c:1023
#, no-c-format
msgid "Dropout"
-msgstr ""
+msgstr "Выдача"
#: backend/epson.c:2866 backend/epson2.c:1024
#, no-c-format
msgid "Selects the dropout."
-msgstr ""
+msgstr "Выбрать тип выдачи."
#: backend/epson.c:2878 backend/epson2.c:1036
#, no-c-format
@@ -1947,8 +1942,7 @@ msgstr "Коррекция цветов"
#, no-c-format
msgid "Sets the color correction table for the selected output device."
msgstr ""
-"Устанавливает таблицу коррекции цветов для выбранного выходного "
-"устройства."
+"Устанавливает таблицу коррекции цветов для выбранного выходного устройства."
#: backend/epson.c:3073
#, no-c-format
@@ -2069,8 +2063,7 @@ msgstr "Масштаб"
#, no-c-format
msgid "Defines the zoom factor the scanner will use"
msgstr ""
-"Определяет коэффициент масштабирования, который будет использоваться "
-"сканером"
+"Определяет коэффициент масштабирования, который будет использоваться сканером"
#: backend/epson.c:3347
#, no-c-format
@@ -2127,11 +2120,11 @@ msgstr "Выбрать отсек, который сканировать"
#: backend/epson.h:67 backend/epson2.h:71
#, no-c-format
msgid ""
-"Selects the gamma correction value from a list of pre-defined devices or "
-"the user defined table, which can be downloaded to the scanner"
+"Selects the gamma correction value from a list of pre-defined devices or the "
+"user defined table, which can be downloaded to the scanner"
msgstr ""
-"Выбирает значение гамма-коррекции из списка предопределённых или "
-"настроенных пользователем, которое может быть загружено в сканер"
+"Выбирает значение гамма-коррекции из списка предопределённых или настроенных "
+"пользователем, которое может быть загружено в сканер"
#: backend/epson.h:70 backend/epson2.h:74
#, no-c-format
@@ -2140,11 +2133,9 @@ msgstr "Расположение фокуса"
#: backend/epson.h:71 backend/epson2.h:75
#, no-c-format
-msgid ""
-"Sets the focus position to either the glass or 2.5mm above the glass"
+msgid "Sets the focus position to either the glass or 2.5mm above the glass"
msgstr ""
-"Устанавливает расположение фокуса либо на стекле, либо на 2.5мм выше "
-"стекла"
+"Устанавливает расположение фокуса либо на стекле, либо на 2.5мм выше стекла"
#: backend/epson.h:73 backend/epson2.h:77
#, no-c-format
@@ -2163,62 +2154,62 @@ msgstr ""
#: backend/epson2-ops.c:103 backend/epson2.c:113
#, no-c-format
msgid "TPU8x10"
-msgstr ""
+msgstr "TPU8x10"
#: backend/epson2.c:98 backend/pixma/pixma.c:414
#, no-c-format
msgid "Infrared"
-msgstr ""
+msgstr "Инфракрасное"
#: backend/epson2.c:132
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Positive Slide"
-msgstr "Позитив"
+msgstr "Слайд-позитив"
#: backend/epson2.c:133
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Negative Slide"
-msgstr "Негатив"
+msgstr "Слайд-негатив"
#: backend/epson2.c:205
#, no-c-format
msgid "Built in CCT profile"
-msgstr ""
+msgstr "Встроенный профиль цветовой температуры"
#: backend/epson2.c:206
-#, fuzzy, no-c-format
+#, no-c-format
msgid "User defined CCT profile"
-msgstr "Определяемое пользователем"
+msgstr "Определённый пользователем профиль цветовой температуры"
#: backend/epsonds.c:2046
#, no-c-format
msgid "Load"
-msgstr ""
+msgstr "Загрузить"
#: backend/epsonds.c:2047
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Load a sheet in the ADF"
msgstr "Вставить бумагу в устройство подачи документов"
#: backend/epsonds.c:2055
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ADF Skew Correction"
-msgstr "Без коррекции"
+msgstr "Коррекция сдвига в устройстве подачи документов"
#: backend/epsonds.c:2057
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enables ADF skew correction"
-msgstr "Аналоговая коррекция гаммы"
+msgstr "Включает коррекцию сдвига устройства подачи документов"
#: backend/epsonds.c:2063
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ADF CRP Correction"
-msgstr "Без коррекции"
+msgstr "Коррекция обрезки в устройстве подачи документов"
#: backend/epsonds.c:2065
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enables ADF auto cropping"
-msgstr "Аналоговая коррекция гаммы"
+msgstr "Включает автообрезку в устройстве подачи документов"
#: backend/fujitsu.c:697 backend/hp-option.c:3325 backend/hp-option.c:3338
#, no-c-format
@@ -2234,12 +2225,12 @@ msgstr "Выкл"
#: backend/fujitsu.c:700
#, no-c-format
msgid "DTC"
-msgstr ""
+msgstr "DTC"
#: backend/fujitsu.c:701
#, no-c-format
msgid "SDTC"
-msgstr ""
+msgstr "SDTC"
#: backend/fujitsu.c:703 backend/teco1.c:1149 backend/teco1.c:1150
#: backend/teco2.c:1964 backend/teco2.c:1965 backend/teco3.c:974
@@ -2249,186 +2240,185 @@ msgid "Dither"
msgstr "Размытие"
#: backend/fujitsu.c:704
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Diffusion"
-msgstr "Диффузия ошибок"
+msgstr "Рассеивание"
#: backend/fujitsu.c:709
-#, fuzzy, no-c-format
+#, no-c-format
msgid "White"
-msgstr "Уровень белого"
+msgstr "Белый"
#: backend/fujitsu.c:710
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Black"
-msgstr "Уровень чёрного"
+msgstr "Чёрный"
#: backend/fujitsu.c:715
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Continue"
-msgstr "Условно"
+msgstr "Продолжить"
#: backend/fujitsu.c:716
#, no-c-format
msgid "Stop"
-msgstr ""
+msgstr "Остановить"
#: backend/fujitsu.c:718
#, no-c-format
msgid "10mm"
-msgstr ""
+msgstr "10 мм"
#: backend/fujitsu.c:719
#, no-c-format
msgid "15mm"
-msgstr ""
+msgstr "15 мм"
#: backend/fujitsu.c:720
#, no-c-format
msgid "20mm"
-msgstr ""
+msgstr "20 мм"
#: backend/fujitsu.c:722 backend/hp-option.c:3043
#, no-c-format
msgid "Horizontal"
-msgstr "Горизонтально"
+msgstr "По горизонтали"
#: backend/fujitsu.c:723
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Horizontal bold"
-msgstr "Горизонтально"
+msgstr "Жирный по горизонтали"
#: backend/fujitsu.c:724
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Horizontal narrow"
-msgstr "Горизонтально"
+msgstr "Узкий по горизонтали"
#: backend/fujitsu.c:725 backend/hp-option.c:3042
#, no-c-format
msgid "Vertical"
-msgstr "Вертикальное"
+msgstr "По вертикали"
#: backend/fujitsu.c:726
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Vertical bold"
-msgstr "Вертикальное"
+msgstr "Жирный по вертикали"
#: backend/fujitsu.c:728
#, no-c-format
msgid "Top to bottom"
-msgstr ""
+msgstr "Сверху вниз"
#: backend/fujitsu.c:729
#, no-c-format
msgid "Bottom to top"
-msgstr ""
+msgstr "Снизу вверх"
#: backend/fujitsu.c:731
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Front"
-msgstr "Распечатка"
+msgstr "Лицевая сторона"
#: backend/fujitsu.c:732
#, no-c-format
msgid "Back"
-msgstr ""
+msgstr "Задняя сторона"
#: backend/fujitsu.c:3171 backend/pixma/pixma_sane_options.c:146
#, no-c-format
msgid "Gamma function exponent"
-msgstr ""
+msgstr "Экспонента гамма-функции"
#: backend/fujitsu.c:3172 backend/pixma/pixma_sane_options.c:147
#, no-c-format
msgid "Changes intensity of midtones"
-msgstr ""
+msgstr "Изменяет интенсивность полутонов"
#: backend/fujitsu.c:3221
#, no-c-format
msgid "RIF"
-msgstr ""
+msgstr "RIF"
#: backend/fujitsu.c:3222
#, no-c-format
msgid "Reverse image format"
-msgstr ""
+msgstr "Реверсивный формат изображения"
#: backend/fujitsu.c:3239
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Halftone type"
-msgstr "Полутоновый (растр)"
+msgstr "Тип полутонов"
#: backend/fujitsu.c:3240
#, no-c-format
msgid "Control type of halftone filter"
-msgstr ""
+msgstr "Управление типом фильтра полутонов"
#: backend/fujitsu.c:3261
#, no-c-format
msgid "Control pattern of halftone filter"
-msgstr ""
+msgstr "Управление шаблоном фильтра полутонов"
#: backend/fujitsu.c:3283
#, no-c-format
msgid "Outline"
-msgstr ""
+msgstr "Контур"
#: backend/fujitsu.c:3284
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Perform outline extraction"
-msgstr "Грубая калибровка"
+msgstr "Выполнить извлечение контура"
#: backend/fujitsu.c:3295
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Emphasis"
-msgstr "Выразительность изображения"
+msgstr "Выделение"
#: backend/fujitsu.c:3296
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
+"Негатив для сглаживания или позитив для увеличения резкости изображения"
#: backend/fujitsu.c:3314
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Separation"
-msgstr "Насыщенность"
+msgstr "Разделение"
#: backend/fujitsu.c:3315
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enable automatic separation of image and text"
-msgstr ""
-"Включает автоматическое определение порога при сканировании штриховых "
-"изображений."
+msgstr "Включить автоматическое разделение изображения и текста"
#: backend/fujitsu.c:3326
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Mirroring"
-msgstr "Зеркальное изображение"
+msgstr "Отражение"
#: backend/fujitsu.c:3327
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Reflect output image horizontally"
-msgstr "Отображает изображение по горизонтали."
+msgstr "Отразить полученное изображение по горизонтали"
#: backend/fujitsu.c:3344
-#, fuzzy, no-c-format
+#, no-c-format
msgid "White level follower"
-msgstr "Уровень белого для синего"
+msgstr "Инструмент уровня белого"
#: backend/fujitsu.c:3345
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Control white level follower"
-msgstr "Управляет уровнем красного"
+msgstr "Управляет инструментом уровня белого"
#: backend/fujitsu.c:3363
-#, fuzzy, no-c-format
+#, no-c-format
msgid "BP filter"
-msgstr "Цветное штриховое"
+msgstr "Фильтр BP"
#: backend/fujitsu.c:3364
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
-msgstr ""
+msgstr "Улучшает качество текста, написанное шариковой ручкой"
#: backend/fujitsu.c:3380 backend/hp-option.h:68
#, no-c-format
@@ -2438,314 +2428,340 @@ msgstr "Сглаживание"
#: backend/fujitsu.c:3381
#, no-c-format
msgid "Enable smoothing for improved OCR"
-msgstr ""
+msgstr "Включить сглаживание для улучшения оптического распознавания символов"
#: backend/fujitsu.c:3397
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Gamma curve"
-msgstr "Значение гаммы"
+msgstr "Кривая гаммы"
#: backend/fujitsu.c:3398
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
+"Кривая гаммы от светлого к тёмному, но два верхних значения могут не работать"
#: backend/fujitsu.c:3420 backend/pixma/pixma_sane_options.c:378
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Threshold curve"
-msgstr "Порог"
+msgstr "Порог кривой"
#: backend/fujitsu.c:3421
#, no-c-format
-msgid ""
-"Threshold curve, from light to dark, but upper two may not be linear"
+msgid "Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
+"Порог кривой, от светлого к тёмного, но два верхних значения могут быть не "
+"линейными"
#: backend/fujitsu.c:3443
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Threshold white"
-msgstr "Порог"
+msgstr "Порог белого"
#: backend/fujitsu.c:3444
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
-msgstr ""
+msgstr "Указать для пороговых пикселов белый цвет, а не чёрный"
#: backend/fujitsu.c:3460 backend/fujitsu.c:3461
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Noise removal"
-msgstr "Уменьшение шумов"
+msgstr "Удаление шума"
#: backend/fujitsu.c:3477
#, no-c-format
msgid "Matrix 5x5"
-msgstr ""
+msgstr "Матрица 5x5"
#: backend/fujitsu.c:3478
#, no-c-format
msgid "Remove 5 pixel square noise"
-msgstr ""
+msgstr "Удалить пиксельный шум размером до 5 пикселов"
#: backend/fujitsu.c:3494
#, no-c-format
msgid "Matrix 4x4"
-msgstr ""
+msgstr "Матрица 4x4"
#: backend/fujitsu.c:3495
#, no-c-format
msgid "Remove 4 pixel square noise"
-msgstr ""
+msgstr "Удалить пиксельный шум размером до 4 пикселов"
#: backend/fujitsu.c:3511
#, no-c-format
msgid "Matrix 3x3"
-msgstr ""
+msgstr "Матрица 3x3"
#: backend/fujitsu.c:3512
#, no-c-format
msgid "Remove 3 pixel square noise"
-msgstr ""
+msgstr "Удалить пиксельный шум размером до 3 пикселов"
#: backend/fujitsu.c:3528
#, no-c-format
msgid "Matrix 2x2"
-msgstr ""
+msgstr "Матрица 2x2"
#: backend/fujitsu.c:3529
#, no-c-format
msgid "Remove 2 pixel square noise"
-msgstr ""
+msgstr "Удалить пиксельный шум размером до 2 пикселов"
#: backend/fujitsu.c:3548
#, no-c-format
msgid "Variance"
-msgstr ""
+msgstr "Дисперсия"
#: backend/fujitsu.c:3549
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr ""
+"Указать величину дисперсии SDTC (чувствительность), 0 соответствует 127"
#: backend/fujitsu.c:3582
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Auto width detection"
-msgstr "Без коррекции"
+msgstr "Автоопределение ширины"
#: backend/fujitsu.c:3583
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr ""
+"Сканер определяет края бумаги. Это может замедлить скорость сканирования."
#: backend/fujitsu.c:3600
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Auto length detection"
-msgstr "Без коррекции"
+msgstr "Автоопределение длины"
#: backend/fujitsu.c:3601
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
+"Сканер определяет нижний край бумаги. Может привести к ошибочной работе "
+"некоторых модулей."
#: backend/fujitsu.c:3627
#, no-c-format
msgid "Compression"
-msgstr ""
+msgstr "Сжатие"
#: backend/fujitsu.c:3628
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
+"Включить сжатые данные. Это может привести к закрытию программы сканирования"
#: backend/fujitsu.c:3648
#, no-c-format
msgid "Compression argument"
-msgstr ""
+msgstr "Аргумент сжатия"
#: backend/fujitsu.c:3649
#, no-c-format
msgid ""
-"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
-"is same as 4"
+"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) is "
+"same as 4"
msgstr ""
+"Уровень сжатия JPEG. 1 — маленький файл, 7 — большой файл. 0 (по умолчанию) "
+"аналогичен 4"
#: backend/fujitsu.c:3679
#, no-c-format
msgid "DF action"
-msgstr ""
+msgstr "Действие ДП"
#: backend/fujitsu.c:3680
#, no-c-format
msgid "Action following double feed error"
-msgstr ""
+msgstr "Действие, которое будет выполнено в ответ на ошибку двойной подачи"
#: backend/fujitsu.c:3696
#, no-c-format
msgid "DF skew"
-msgstr ""
+msgstr "Сдвиг ДП"
#: backend/fujitsu.c:3697
#, no-c-format
msgid "Enable double feed error due to skew"
-msgstr ""
+msgstr "Включить ошибку двойной подачи для сдвига"
#: backend/fujitsu.c:3715
#, no-c-format
msgid "DF thickness"
-msgstr ""
+msgstr "Толщина ДП"
#: backend/fujitsu.c:3716
#, no-c-format
msgid "Enable double feed error due to paper thickness"
-msgstr ""
+msgstr "Включить ошибку двойной подачи для толщины бумаги"
#: backend/fujitsu.c:3734
#, no-c-format
msgid "DF length"
-msgstr ""
+msgstr "Длина ДП"
#: backend/fujitsu.c:3735
#, no-c-format
msgid "Enable double feed error due to paper length"
-msgstr ""
+msgstr "Включить ошибку двойной подачи для длины бумаги"
#: backend/fujitsu.c:3758
#, no-c-format
msgid "DF length difference"
-msgstr ""
+msgstr "Разница длины ДП"
#: backend/fujitsu.c:3759
#, no-c-format
msgid "Difference in page length to trigger double feed error"
-msgstr ""
+msgstr "Разница в длине страниц для срабатывания ошибки двойной подачи"
#: backend/fujitsu.c:3782
-#, fuzzy, no-c-format
+#, no-c-format
msgid "DF recovery mode"
-msgstr "Режим подачи"
+msgstr "Режим восстановления ДП"
#: backend/fujitsu.c:3783
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
-msgstr ""
+msgstr "Требовать от сканера обратной подачи при замятии бумаги"
#: backend/fujitsu.c:3802
#, no-c-format
msgid "Paper protection"
-msgstr ""
+msgstr "Защита бумаги"
#: backend/fujitsu.c:3803
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
-msgstr ""
+msgstr "Требовать от сканера предупреждать замятие бумаги в устройстве подачи"
#: backend/fujitsu.c:3822
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Advanced paper protection"
-msgstr "Дополнительные параметры"
+msgstr "Дополнительная защита бумаги"
#: backend/fujitsu.c:3823
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
+"Требовать от сканера предупреждать замятие бумаги в устройстве подачи с "
+"помощью датчиков"
#: backend/fujitsu.c:3842
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Staple detection"
-msgstr "Без коррекции"
+msgstr "Обнаружение скоб"
#: backend/fujitsu.c:3843
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
+"Требовать от сканера обнаруживать замятие бумаги в устройстве подачи, "
+"вызванное наличием скоб"
#: backend/fujitsu.c:3862
#, no-c-format
msgid "Background color"
-msgstr ""
+msgstr "Цвет фона"
#: backend/fujitsu.c:3863
#, no-c-format
-msgid ""
-"Set color of background for scans. May conflict with overscan option"
+msgid "Set color of background for scans. May conflict with overscan option"
msgstr ""
+"Установить цвет для фона сканированных изображений. Может конфликтовать с "
+"параметром полей."
#: backend/fujitsu.c:3883
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Dropout color"
-msgstr "Включить лампу"
+msgstr "Цвет для выдачи"
#: backend/fujitsu.c:3884
#, no-c-format
msgid ""
-"One-pass scanners use only one color during gray or binary scanning, "
-"useful for colored paper or ink"
+"One-pass scanners use only one color during gray or binary scanning, useful "
+"for colored paper or ink"
msgstr ""
+"Однопроходные сканеры используют только один цвет при сканировании в "
+"оттенках серого или при чёрно-белом сканировании. Это полезно для цветной "
+"бумаги или чернильных записей."
#: backend/fujitsu.c:3907
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Buffer mode"
-msgstr "Режим подачи"
+msgstr "Режим буфера"
#: backend/fujitsu.c:3908
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
+"Запрашивать сканер быстро читать страницы из устройства подачи во внутреннюю "
+"память"
#: backend/fujitsu.c:3927
#, no-c-format
msgid "Prepick"
-msgstr ""
+msgstr "Предварительный захват"
#: backend/fujitsu.c:3928
#, no-c-format
msgid "Request scanner to grab next page from ADF"
-msgstr ""
+msgstr "Запрашивать сканер захватывать следующую страницу из устройства подачи"
#: backend/fujitsu.c:3947
#, no-c-format
msgid "Overscan"
-msgstr ""
+msgstr "Поля"
#: backend/fujitsu.c:3948
#, no-c-format
msgid ""
-"Collect a few mm of background on top side of scan, before paper enters "
-"ADF, and increase maximum scan area beyond paper size, to allow "
-"collection on remaining sides. May conflict with bgcolor option"
+"Collect a few mm of background on top side of scan, before paper enters ADF, "
+"and increase maximum scan area beyond paper size, to allow collection on "
+"remaining sides. May conflict with bgcolor option"
msgstr ""
+"Собрать данные о нескольких миллиметрах в верхней части сканированного "
+"изображения, прежде чем лист попадёт в устройство подачи, и увеличить "
+"максимальную область сканирования за пределы установленного размера бумаги, "
+"а также разрешить сбор остальных данных с боковых полей. Может конфликтовать "
+"с параметром цвета фона."
#: backend/fujitsu.c:3966
#, no-c-format
msgid "Sleep timer"
-msgstr ""
+msgstr "Таймер сна"
#: backend/fujitsu.c:3967
#, no-c-format
-msgid ""
-"Time in minutes until the internal power supply switches to sleep mode"
-msgstr ""
+msgid "Time in minutes until the internal power supply switches to sleep mode"
+msgstr "Время в минутах до перехода внутреннего блока питания в спящий режим"
#: backend/fujitsu.c:3985
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Off timer"
-msgstr "Время выключения лампы"
+msgstr "Таймер выключения"
#: backend/fujitsu.c:3986
#, no-c-format
msgid ""
-"Time in minutes until the internal power supply switches the scanner "
-"off. Will be rounded to nearest 15 minutes. Zero means never power off."
+"Time in minutes until the internal power supply switches the scanner off. "
+"Will be rounded to nearest 15 minutes. Zero means never power off."
msgstr ""
+"Время в минутах до перехода внутреннего блока питания в спящий режим. Будет "
+"округлено до ближайших 15 минут. Ноль означает, что питание никогда не будет "
+"выключено."
#: backend/fujitsu.c:4004
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplex offset"
-msgstr "Смещение синего"
+msgstr "Двустроннее смещение"
#: backend/fujitsu.c:4005
#, no-c-format
msgid "Adjust front/back offset"
-msgstr ""
+msgstr "Настроить переднее/заднее смещение"
#: backend/fujitsu.c:4022 backend/plustek.c:1023 backend/umax_pp.c:793
#, no-c-format
@@ -2753,9 +2769,9 @@ msgid "Green offset"
msgstr "Смещение зелёного"
#: backend/fujitsu.c:4023
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Adjust green/red offset"
-msgstr "Смещение зелёного"
+msgstr "Настроить смещение зелёного"
#: backend/fujitsu.c:4040 backend/plustek.c:1039 backend/umax_pp.c:805
#, no-c-format
@@ -2763,28 +2779,33 @@ msgid "Blue offset"
msgstr "Смещение синего"
#: backend/fujitsu.c:4041
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Adjust blue/red offset"
-msgstr "Устанавливает смещение канала синего"
+msgstr "Настроить смещение синего"
#: backend/fujitsu.c:4054
#, no-c-format
msgid "Low Memory"
-msgstr ""
+msgstr "Ограничение памяти"
#: backend/fujitsu.c:4055
#, no-c-format
msgid ""
-"Limit driver memory usage for use in embedded systems. Causes some "
-"duplex transfers to alternate sides on each call to sane_read. Value of "
-"option 'side' can be used to determine correct image. This option should "
-"only be used with custom front-end software."
+"Limit driver memory usage for use in embedded systems. Causes some duplex "
+"transfers to alternate sides on each call to sane_read. Value of option "
+"'side' can be used to determine correct image. This option should only be "
+"used with custom front-end software."
msgstr ""
+"Ограничить использование драйвером памяти на встроенных системах. Это "
+"приводит к передаче отдельных сторон при каждом вызове sane_read. Значение "
+"параметра «side» позволит определить подходящее изображение. Этот параметр "
+"следует использовать только для особого внешнего интерфейса программного "
+"обеспечения."
#: backend/fujitsu.c:4070
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplex side"
-msgstr "Двухстороннее сканирование"
+msgstr "Сторона для двучстороннего сканирования"
#: backend/fujitsu.c:4071
#, no-c-format
@@ -2792,152 +2813,159 @@ msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
"sane_read will return."
msgstr ""
+"Сообщает, с какой стороны (0=передняя, 1=задняя) двухстороннего сканера "
+"вернётся следующий вызов sane_read."
#: backend/fujitsu.c:4082
#, no-c-format
msgid "Hardware deskew and crop"
-msgstr ""
+msgstr "Аппаратное выравнивание и обрезка"
#: backend/fujitsu.c:4083
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
-msgstr ""
+msgstr "Запрашивает сканер вращать и обрезать страницы в цифровом виде."
#: backend/fujitsu.c:4094 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
-msgstr ""
+msgstr "Программное выравнивание"
#: backend/fujitsu.c:4095
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
-msgstr ""
+msgstr "Запрашивает драйвер перестать вращать страницы в цифровом виде."
#: backend/fujitsu.c:4107 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
-msgstr ""
+msgstr "Диаметр пятен для программного устранения"
#: backend/fujitsu.c:4108
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
+"Максимальный диаметр пятен, которые следует устранить из сканируемого "
+"изображения."
#: backend/fujitsu.c:4127
#, no-c-format
msgid "Software crop"
-msgstr ""
+msgstr "Программная обрезка"
#: backend/fujitsu.c:4128
#, no-c-format
msgid "Request driver to remove border from pages digitally."
-msgstr ""
+msgstr "Запрашивает драйвер удалять границу страниц в цифровом виде."
#: backend/fujitsu.c:4157
#, no-c-format
msgid "Halt on Cancel"
-msgstr ""
+msgstr "Прервать при отмене"
#: backend/fujitsu.c:4158
#, no-c-format
-msgid ""
-"Request driver to halt the paper feed instead of eject during a cancel."
+msgid "Request driver to halt the paper feed instead of eject during a cancel."
msgstr ""
+"Запрашивает драйвер прервать подачу бумаги вместо извлечения во время отмены."
#: backend/fujitsu.c:4169
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Endorser Options"
-msgstr "Дополнительные параметры"
+msgstr "Параметры впечатывания"
#: backend/fujitsu.c:4170
#, no-c-format
msgid "Controls for endorser unit"
-msgstr ""
+msgstr "Управление модулем впечатывания"
#: backend/fujitsu.c:4181
#, no-c-format
msgid "Endorser"
-msgstr ""
+msgstr "Впечатывание"
#: backend/fujitsu.c:4182
#, no-c-format
msgid "Enable endorser unit"
-msgstr ""
+msgstr "Включить модуль впечатывания"
#: backend/fujitsu.c:4197
#, no-c-format
msgid "Endorser bits"
-msgstr ""
+msgstr "Биты впечатывания"
#: backend/fujitsu.c:4198
#, no-c-format
msgid "Determines maximum endorser counter value."
-msgstr ""
+msgstr "Определяет максимальное значение счётчика впечатывания."
#: backend/fujitsu.c:4223
#, no-c-format
msgid "Endorser value"
-msgstr ""
+msgstr "Значение впечатывания"
#: backend/fujitsu.c:4224
#, no-c-format
msgid "Initial endorser counter value."
-msgstr ""
+msgstr "Первоначальное значение счётчика впечатывания."
#: backend/fujitsu.c:4247
#, no-c-format
msgid "Endorser step"
-msgstr ""
+msgstr "Шаг впечатывания"
#: backend/fujitsu.c:4248
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
+"Изменение значения счётчика впечатывания на указанное число для каждой "
+"следующей страницы."
#: backend/fujitsu.c:4271
#, no-c-format
msgid "Endorser Y"
-msgstr ""
+msgstr "Y впечатывания"
#: backend/fujitsu.c:4272
#, no-c-format
msgid "Endorser print offset from top of paper."
-msgstr ""
+msgstr "Смещение впечатывания от верхнего края бумаги."
#: backend/fujitsu.c:4297
#, no-c-format
msgid "Endorser font"
-msgstr ""
+msgstr "Шрифт впечатывания"
#: backend/fujitsu.c:4298
#, no-c-format
msgid "Endorser printing font."
-msgstr ""
+msgstr "Шрифт печати."
#: backend/fujitsu.c:4327
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Endorser direction"
-msgstr "Уменьшение шумов"
+msgstr "Направление впечатывания"
#: backend/fujitsu.c:4328
#, no-c-format
msgid "Endorser printing direction."
-msgstr ""
+msgstr "Направление печати."
#: backend/fujitsu.c:4352
#, no-c-format
msgid "Endorser side"
-msgstr ""
+msgstr "Сторона впечатывания"
#: backend/fujitsu.c:4353
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
+"Сторона для впечатывания. Требуется аппаратная поддержка для изменения."
#: backend/fujitsu.c:4378
#, no-c-format
msgid "Endorser string"
-msgstr ""
+msgstr "Строка впечатывания"
#: backend/fujitsu.c:4379
#, no-c-format
@@ -2945,171 +2973,173 @@ msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
"replaced by counter value."
msgstr ""
+"Буквенно-цифровой формат печати. В конце %05ud или %08ud будет заменено на "
+"значение счётчика."
#: backend/fujitsu.c:4406
#, no-c-format
msgid "Top edge"
-msgstr ""
+msgstr "Верхний край"
#: backend/fujitsu.c:4407
#, no-c-format
msgid "Paper is pulled partly into ADF"
-msgstr ""
+msgstr "Бумага частично втянута в устройство подачи документов"
#: backend/fujitsu.c:4418
-#, fuzzy, no-c-format
+#, no-c-format
msgid "A3 paper"
-msgstr "От бумаги"
+msgstr "Бумага A3"
#: backend/fujitsu.c:4419
#, no-c-format
msgid "A3 paper detected"
-msgstr ""
+msgstr "Определена бумага A3"
#: backend/fujitsu.c:4430
-#, fuzzy, no-c-format
+#, no-c-format
msgid "B4 paper"
-msgstr "От бумаги"
+msgstr "Бумага B4"
#: backend/fujitsu.c:4431
#, no-c-format
msgid "B4 paper detected"
-msgstr ""
+msgstr "Определена бумага B4"
#: backend/fujitsu.c:4442
-#, fuzzy, no-c-format
+#, no-c-format
msgid "A4 paper"
-msgstr "От бумаги"
+msgstr "Бумага A4"
#: backend/fujitsu.c:4443
#, no-c-format
msgid "A4 paper detected"
-msgstr ""
+msgstr "Определена бумага A4"
#: backend/fujitsu.c:4454
-#, fuzzy, no-c-format
+#, no-c-format
msgid "B5 paper"
-msgstr "От бумаги"
+msgstr "Бумага B5"
#: backend/fujitsu.c:4455
#, no-c-format
msgid "B5 paper detected"
-msgstr ""
+msgstr "Определена бумага B5"
#: backend/fujitsu.c:4478
#, no-c-format
msgid "OMR or DF"
-msgstr ""
+msgstr "OMR или ДП"
#: backend/fujitsu.c:4479
#, no-c-format
msgid "OMR or double feed detected"
-msgstr ""
+msgstr "Обнаружен OMR или двойная подача"
#: backend/fujitsu.c:4502
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Card loaded"
-msgstr "Двухсторонний"
+msgstr "Карта загружена"
#: backend/fujitsu.c:4503
#, no-c-format
msgid "Card slot contains paper"
-msgstr ""
+msgstr "В лотке карт находится бумага"
#: backend/fujitsu.c:4514
#, no-c-format
msgid "Power saving"
-msgstr ""
+msgstr "Энергосберегающий режим"
#: backend/fujitsu.c:4515
#, no-c-format
msgid "Scanner in power saving mode"
-msgstr ""
+msgstr "Перевести сканер в энергосберегающий режим"
#: backend/fujitsu.c:4538
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Manual feed"
-msgstr "Ручная предварительная фокусировка"
+msgstr "Ручная подача"
#: backend/fujitsu.c:4539
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Manual feed selected"
-msgstr "Ручная предварительная фокусировка"
+msgstr "Выбор ручной подачи"
#: backend/fujitsu.c:4562
#, no-c-format
msgid "Function"
-msgstr ""
+msgstr "Функция"
#: backend/fujitsu.c:4563
#, no-c-format
msgid "Function character on screen"
-msgstr ""
+msgstr "Отображение символа функции"
#: backend/fujitsu.c:4574
#, no-c-format
msgid "Ink low"
-msgstr ""
+msgstr "Чернила на исходе"
#: backend/fujitsu.c:4575
#, no-c-format
msgid "Imprinter ink running low"
-msgstr ""
+msgstr "Заканчиваются чернила"
#: backend/fujitsu.c:4586
#, no-c-format
msgid "Double feed"
-msgstr ""
+msgstr "Двойная подача"
#: backend/fujitsu.c:4587
#, no-c-format
msgid "Double feed detected"
-msgstr ""
+msgstr "Обнаружена двойная подача"
#: backend/fujitsu.c:4598
#, no-c-format
msgid "Error code"
-msgstr ""
+msgstr "Код ошибки"
#: backend/fujitsu.c:4599
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Hardware error code"
-msgstr "Разрешение сканирования"
+msgstr "Код аппаратной ошибки"
#: backend/fujitsu.c:4610
#, no-c-format
msgid "Skew angle"
-msgstr ""
+msgstr "Угол сдвига"
#: backend/fujitsu.c:4611
#, no-c-format
msgid "Requires black background for scanning"
-msgstr ""
+msgstr "Для сканирования необходим чёрный фон"
#: backend/fujitsu.c:4622
#, no-c-format
msgid "Ink remaining"
-msgstr ""
+msgstr "Осталось чернил"
#: backend/fujitsu.c:4623
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Imprinter ink level"
-msgstr "Уровень белого"
+msgstr "Уровень чернил в принтере"
#: backend/fujitsu.c:4634
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Density"
-msgstr "Интенсивность красного"
+msgstr "Плотность"
#: backend/fujitsu.c:4635
#, no-c-format
msgid "Density dial"
-msgstr ""
+msgstr "Регулятор плотности"
#: backend/fujitsu.c:4646 backend/fujitsu.c:4647
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplex switch"
-msgstr "Двухстороннее сканирование"
+msgstr "Переключатель двухстороннего сканирования"
#: backend/genesys/genesys.cpp:4821 backend/pixma/pixma_sane_options.c:357
#, no-c-format
@@ -3117,36 +3147,41 @@ msgid "Extras"
msgstr "Дополнительно"
#: backend/genesys/genesys.cpp:4830
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Color filter"
-msgstr "Цветное штриховое"
+msgstr "Фильтр цвета"
#: backend/genesys/genesys.cpp:4833
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
+"При использовании серого или линейного изображения этот параметр выбирает "
+"используемый цвет."
#: backend/genesys/genesys.cpp:4857
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Calibration file"
-msgstr "Калибровка"
+msgstr "Файл калибровки"
#: backend/genesys/genesys.cpp:4858
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Specify the calibration file to use"
-msgstr "Задать режим калибровки"
+msgstr "Задать файл калибровки для использования"
#: backend/genesys/genesys.cpp:4875
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Calibration cache expiration time"
-msgstr "Кэширование калибровочных данных"
+msgstr "Время истечения срока действия кэша калибровки"
#: backend/genesys/genesys.cpp:4876
#, no-c-format
msgid ""
-"Time (in minutes) before a cached calibration expires. A value of 0 "
-"means cache is not used. A negative value means cache never expires."
+"Time (in minutes) before a cached calibration expires. A value of 0 means "
+"cache is not used. A negative value means cache never expires."
msgstr ""
+"Время (в минутах) до истечения срока действия данных кэша калибровки. "
+"Значение 0 означает, что кэш не используется. Отрицательное значение говорит "
+"о том, что срок действия данных кэша никогда не истечёт."
#: backend/genesys/genesys.cpp:4886
#, no-c-format
@@ -3156,102 +3191,101 @@ msgstr "Время выключения лампы"
#: backend/genesys/genesys.cpp:4889
#, no-c-format
msgid ""
-"The lamp will be turned off after the given time (in minutes). A value "
-"of 0 means, that the lamp won't be turned off."
+"The lamp will be turned off after the given time (in minutes). A value of 0 "
+"means, that the lamp won't be turned off."
msgstr ""
"Лампа будет выключена через указанное время (в минутах). Значение 0 "
"означает, что лампа выключаться не будет."
#: backend/genesys/genesys.cpp:4899
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Lamp off during scan"
-msgstr "Грубая калибровка"
+msgstr "Выключение лампы во время сканирования"
#: backend/genesys/genesys.cpp:4900
#, no-c-format
msgid "The lamp will be turned off during scan. "
-msgstr ""
+msgstr "Лампа будет выключена во время сканирования."
#: backend/genesys/genesys.cpp:4927 backend/genesys/genesys.cpp:4928
-#, fuzzy, no-c-format
+#, no-c-format
msgid "File button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Кнопка «Файл»"
#: backend/genesys/genesys.cpp:4972 backend/genesys/genesys.cpp:4973
#, no-c-format
msgid "OCR button"
-msgstr ""
+msgstr "Кнопка оптического распознавания символов"
#: backend/genesys/genesys.cpp:4984 backend/genesys/genesys.cpp:4985
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Power button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Кнопка питания"
#: backend/genesys/genesys.cpp:4996 backend/genesys/genesys.cpp:4997
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Extra button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Дополнительная кнопка"
#: backend/genesys/genesys.cpp:5008 backend/gt68xx.c:753
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Needs calibration"
-msgstr "Грубая калибровка"
+msgstr "Необходима калибровка"
#: backend/genesys/genesys.cpp:5009 backend/gt68xx.c:754 backend/p5.c:1928
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The scanner needs calibration for the current settings"
-msgstr "Выполнять калибровку сканера перед сканированием"
+msgstr "Сканеру необходима калибровка для использования текущих параметров"
-#: backend/genesys/genesys.cpp:5020 backend/gt68xx.c:778
-#: backend/gt68xx.c:779 backend/p5.c:1937 backend/p5.c:1938
-#: backend/pixma/pixma_sane_options.c:227 backend/plustek.c:1078
+#: backend/genesys/genesys.cpp:5020 backend/gt68xx.c:778 backend/gt68xx.c:779
+#: backend/p5.c:1937 backend/p5.c:1938 backend/pixma/pixma_sane_options.c:227
+#: backend/plustek.c:1078
#, no-c-format
msgid "Buttons"
msgstr "Кнопки"
-#: backend/genesys/genesys.cpp:5029 backend/gt68xx.c:785
-#: backend/hp-option.h:92 backend/hp5400_sane.c:535 backend/niash.c:723
-#: backend/p5.c:1945 backend/plustek.c:939
+#: backend/genesys/genesys.cpp:5029 backend/gt68xx.c:785 backend/hp-option.h:92
+#: backend/hp5400_sane.c:535 backend/niash.c:723 backend/p5.c:1945
+#: backend/plustek.c:939
#, no-c-format
msgid "Calibrate"
msgstr "Калибровка"
#: backend/genesys/genesys.cpp:5031 backend/gt68xx.c:787 backend/p5.c:1947
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Start calibration using special sheet"
-msgstr "Начать процесс калибровки."
+msgstr "Начать процесс калибровки с помощью специального листа"
#: backend/genesys/genesys.cpp:5043 backend/gt68xx.c:800 backend/p5.c:1958
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Clear calibration"
-msgstr "Грубая калибровка"
+msgstr "Очистить данные калибровки"
#: backend/genesys/genesys.cpp:5044 backend/gt68xx.c:801 backend/p5.c:1960
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Clear calibration cache"
-msgstr "Кэширование калибровочных данных"
+msgstr "Очистить кэш калибровочных данных"
#: backend/genesys/genesys.cpp:5054
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Force calibration"
msgstr "Грубая калибровка"
#: backend/genesys/genesys.cpp:5055
#, no-c-format
msgid "Force calibration ignoring all and any calibration caches"
-msgstr ""
+msgstr "Грубая калибровка, игнорирующая весь кэш калибровки"
#: backend/genesys/genesys.cpp:5065
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Ignore internal offsets"
-msgstr "Смещение зелёного"
+msgstr "Игнорировать внутреннее смещение"
#: backend/genesys/genesys.cpp:5067
#, no-c-format
msgid ""
-"Acquires the image including the internal calibration areas of the "
-"scanner"
-msgstr ""
+"Acquires the image including the internal calibration areas of the scanner"
+msgstr "Сканирует изображение, включая внутренние области калибровки сканера"
#: backend/genesys/genesys.h:77 backend/gt68xx.c:147 backend/ma1509.c:106
#: backend/mustek.c:162 backend/snapscan-options.c:87 backend/umax.c:180
@@ -3260,9 +3294,9 @@ msgid "Transparency Adapter"
msgstr "Слайд-модуль"
#: backend/genesys/genesys.h:78
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Transparency Adapter Infrared"
-msgstr "Слайд-модуль"
+msgstr "Инфракрасный слайд-модуль"
#: backend/gt68xx.c:468
#, no-c-format
@@ -3276,8 +3310,7 @@ msgstr ""
"Выбирает, какой цвет будет использоваться при сканировании в полутоновом "
"режиме (по умолчанию - зелёный)."
-#: backend/gt68xx.c:551 backend/hp3900_sane.c:1391
-#: backend/mustek_usb2.c:408
+#: backend/gt68xx.c:551 backend/hp3900_sane.c:1391 backend/mustek_usb2.c:408
#, no-c-format
msgid "Debugging Options"
msgstr "Параметры отладки"
@@ -3290,8 +3323,8 @@ msgstr "Автоматический прогрев"
#: backend/gt68xx.c:564
#, no-c-format
msgid ""
-"Warm-up until the lamp's brightness is constant instead of insisting on "
-"60 seconds warm-up time."
+"Warm-up until the lamp's brightness is constant instead of insisting on 60 "
+"seconds warm-up time."
msgstr ""
"Разогревать пока яркость лампы не станет постоянной, вместо простого 60-"
"тисекундного ожидания разогрева."
@@ -3320,13 +3353,12 @@ msgstr "Грубая калибровка"
#, no-c-format
msgid ""
"Setup gain and offset for scanning automatically. If this option is "
-"disabled, options for setting the analog frontend parameters manually "
-"are provided. This option is enabled by default. For testing only."
+"disabled, options for setting the analog frontend parameters manually are "
+"provided. This option is enabled by default. For testing only."
msgstr ""
-"Настраивает усиление и смещение для сканирования автоматически. Если "
-"этот параметр выключен, будут предоставлены параметры для ручной "
-"аналоговой настройки. Параметр включен по умолчанию. Только для "
-"тестирования."
+"Настраивает усиление и смещение для сканирования автоматически. Если этот "
+"параметр выключен, будут предоставлены параметры для ручной аналоговой "
+"настройки. Параметр включен по умолчанию. Только для тестирования."
#: backend/gt68xx.c:610
#, no-c-format
@@ -3336,14 +3368,14 @@ msgstr "Грубая калибровка только для первого с
#: backend/gt68xx.c:612
#, no-c-format
msgid ""
-"Coarse calibration is only done for the first scan. Works with most "
-"scanners and can save scanning time. If the image brightness is "
-"different with each scan, disable this option. For testing only."
+"Coarse calibration is only done for the first scan. Works with most scanners "
+"and can save scanning time. If the image brightness is different with each "
+"scan, disable this option. For testing only."
msgstr ""
-"Выполнять грубую калибровку только во временя первого сканирования. "
-"Работает с большинством сканеров и может сэкономить время сканирования. "
-"Если яркость изображения отличается при каждом сканировании, выключите "
-"этот параметр. Только для тестирования."
+"Выполнять грубую калибровку только во временя первого сканирования. Работает "
+"с большинством сканеров и может сэкономить время сканирования. Если яркость "
+"изображения отличается при каждом сканировании, выключите этот параметр. "
+"Только для тестирования."
#: backend/gt68xx.c:645
#, no-c-format
@@ -3353,15 +3385,14 @@ msgstr "Линии отката"
#: backend/gt68xx.c:647
#, no-c-format
msgid ""
-"Number of lines the scan slider moves back when backtracking occurs. "
-"That happens when the scanner scans faster than the computer can receive "
-"the data. Low values cause faster scans but increase the risk of "
-"omitting lines."
+"Number of lines the scan slider moves back when backtracking occurs. That "
+"happens when the scanner scans faster than the computer can receive the "
+"data. Low values cause faster scans but increase the risk of omitting lines."
msgstr ""
"Количество линий, на которые считыватель возвращается обратно при "
-"необходимости. Это происходит когда сканер считывает изображение "
-"быстрее, чем компьютер может принимать данные. Низкое значение приводит "
-"к более быстрому сканированию, но увеличивает вероятность пропуска линий."
+"необходимости. Это происходит когда сканер считывает изображение быстрее, "
+"чем компьютер может принимать данные. Низкое значение приводит к более "
+"быстрому сканированию, но увеличивает вероятность пропуска линий."
#: backend/gt68xx.c:672 backend/mustek_usb2.c:450
#, no-c-format
@@ -3391,15 +3422,14 @@ msgstr "Точное"
#: backend/hp-option.c:3041
#, no-c-format
msgid "Bayer"
-msgstr ""
+msgstr "Байер"
#: backend/hp-option.c:3044 backend/hp-option.c:3095
#, no-c-format
msgid "Custom"
msgstr "Пользовательское"
-#: backend/hp-option.c:3085 backend/hp-option.c:3141
-#: backend/hp-option.c:3156
+#: backend/hp-option.c:3085 backend/hp-option.c:3141 backend/hp-option.c:3156
#, no-c-format
msgid "Auto"
msgstr "Автоматически"
@@ -3434,9 +3464,9 @@ msgstr "Чёрно-белое XPA"
msgid "Slow"
msgstr "Медленно"
-#: backend/hp-option.c:3143 backend/hp-option.c:3250
-#: backend/kvs40xx_opt.c:230 backend/matsushita.c:241 backend/mustek.c:147
-#: backend/plustek.c:232 backend/plustek_pp.c:201 backend/u12.c:153
+#: backend/hp-option.c:3143 backend/hp-option.c:3250 backend/kvs40xx_opt.c:230
+#: backend/matsushita.c:241 backend/mustek.c:147 backend/plustek.c:232
+#: backend/plustek_pp.c:201 backend/u12.c:153
#, no-c-format
msgid "Normal"
msgstr "Нормально"
@@ -3485,12 +3515,12 @@ msgstr "Плёнка"
#: backend/hp-option.c:3251 backend/hp5590.c:91
#, no-c-format
msgid "ADF"
-msgstr "АПД"
+msgstr "УПД"
#: backend/hp-option.c:3252
#, no-c-format
msgid "XPA"
-msgstr ""
+msgstr "XPA"
#: backend/hp-option.c:3326 backend/hp-option.c:3339
#, no-c-format
@@ -3582,15 +3612,14 @@ msgstr "Время выдержки"
#: backend/hp-option.h:106
#, no-c-format
msgid ""
-"A longer exposure time lets the scanner collect more light. Suggested "
-"use is 175% for prints, 150% for normal slides and \"Negative\" for "
-"negative film. For dark (underexposed) images you can increase this "
-"value."
+"A longer exposure time lets the scanner collect more light. Suggested use is "
+"175% for prints, 150% for normal slides and \"Negative\" for negative film. "
+"For dark (underexposed) images you can increase this value."
msgstr ""
"Длительное время выдержки позволяет сканеру собрать больше света. "
-"Рекомендуется использовать 175% для распечаток, 150% для нормальных "
-"слайдов и \"Негатив\" для негативов. Для тёмных (недоэкспонированных) "
-"изображений вы можете увеличить это значение."
+"Рекомендуется использовать 175% для распечаток, 150% для нормальных слайдов "
+"и \"Негатив\" для негативов. Для тёмных (недоэкспонированных) изображений вы "
+"можете увеличить это значение."
#: backend/hp-option.h:114 backend/hp-option.h:121
#, no-c-format
@@ -3598,7 +3627,7 @@ msgid "Color Matrix"
msgstr "Цветовая матрица"
#: backend/hp-option.h:116
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Set the scanner's color matrix."
msgstr "Устанавливает цветовую матрицу сканера."
@@ -3655,8 +3684,7 @@ msgstr "Восьмибитный вывод"
#: backend/hp-option.h:153
#, no-c-format
msgid "Use bit depth greater eight internally, but output only eight bits."
-msgstr ""
-"Внутри использовать разрядность более 8 бит, но выводить только 8 бит."
+msgstr "Внутри использовать разрядность более 8 бит, но выводить только 8 бит."
#: backend/hp-option.h:159
#, no-c-format
@@ -3679,302 +3707,312 @@ msgid "Shut off scanner lamp."
msgstr "Выключает лампу сканера."
#: backend/hp3500.c:1018
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Geometry Group"
-msgstr "Расположение"
+msgstr "Группа положения"
#: backend/hp3500.c:1071 backend/hp3500.c:1072
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Scan Mode Group"
-msgstr "Режим сканирования"
+msgstr "Группа режима сканирования"
#: backend/hp3900_sane.c:1404
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Scanner model"
-msgstr "Режим сканирования"
+msgstr "Модель сканера"
#: backend/hp3900_sane.c:1407
#, no-c-format
msgid "Allows one to test device behavior with other supported models"
msgstr ""
+"Позволяет проверить поведение устройства с другими поддерживаемыми моделями"
#: backend/hp3900_sane.c:1421
#, no-c-format
msgid "Image colors will be inverted"
-msgstr ""
+msgstr "Цвета изображения будут инвертированы"
#: backend/hp3900_sane.c:1435
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Disable gamma correction"
-msgstr "Аналоговая коррекция гаммы"
+msgstr "Отключить коррекцию гаммы"
#: backend/hp3900_sane.c:1436
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Gamma correction will be disabled"
-msgstr "Коррекция гаммы"
+msgstr "Коррекция гаммы будет отключена"
#: backend/hp3900_sane.c:1450
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Disable white shading correction"
-msgstr "Выполнять только коррекцию оттенка"
+msgstr "Отключить коррекцию оттенков белого"
#: backend/hp3900_sane.c:1452
#, no-c-format
msgid "White shading correction will be disabled"
-msgstr ""
+msgstr "Коррекция оттенков белого будет отключена"
#: backend/hp3900_sane.c:1466
#, no-c-format
msgid "Skip warmup process"
-msgstr ""
+msgstr "Пропустить процесс разогрева"
#: backend/hp3900_sane.c:1467
#, no-c-format
msgid "Warmup process will be disabled"
-msgstr ""
+msgstr "Процесс разогрева будет отключён"
#: backend/hp3900_sane.c:1481
#, no-c-format
msgid "Force real depth"
-msgstr ""
+msgstr "Указать настоящую глубину"
#: backend/hp3900_sane.c:1484
#, no-c-format
msgid ""
-"If gamma is enabled, scans are always made in 16 bits depth to improve "
-"image quality and then converted to the selected depth. This option "
-"avoids depth emulation."
+"If gamma is enabled, scans are always made in 16 bits depth to improve image "
+"quality and then converted to the selected depth. This option avoids depth "
+"emulation."
msgstr ""
+"Если гамма включена, сканирование всегда выполняется с глубиной цветов в 16 "
+"бит для улучшения качества изображения, а затем преобразуется в выбранную "
+"глубину цветов. Этот параметр позволяет избежать такой эмуляции."
#: backend/hp3900_sane.c:1498
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Emulate Grayscale"
-msgstr "Чёрно-белый"
+msgstr "Имитация чёрно-белого"
#: backend/hp3900_sane.c:1501
#, no-c-format
msgid ""
"If enabled, image will be scanned in color mode and then converted to "
-"grayscale by software. This may improve image quality in some "
-"circumstances."
+"grayscale by software. This may improve image quality in some circumstances."
msgstr ""
+"Если этот флажок установлен, изображение будет отсканировано в цветом "
+"режиме, а затем программно преобразовано в изображение в оттенках серого. В "
+"некоторых случаях это может улучшить качество изображения."
#: backend/hp3900_sane.c:1515
#, no-c-format
msgid "Save debugging images"
-msgstr ""
+msgstr "Сохранить отладочные изображения"
#: backend/hp3900_sane.c:1518
#, no-c-format
msgid ""
-"If enabled, some images involved in scanner processing are saved to "
-"analyze them."
+"If enabled, some images involved in scanner processing are saved to analyze "
+"them."
msgstr ""
+"Если этот флажок установлен, некоторые изображения из процесса сканирования "
+"будут сохранены для анализа."
#: backend/hp3900_sane.c:1532
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Reset chipset"
-msgstr "листовой сканер"
+msgstr "Сбросить данные микропроцессора"
#: backend/hp3900_sane.c:1533
#, no-c-format
msgid "Resets chipset data"
-msgstr ""
+msgstr "Сбрасывает данные микропроцессора"
#: backend/hp3900_sane.c:1546
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Information"
-msgstr "Игнорировать калибровку"
+msgstr "Сведения"
#: backend/hp3900_sane.c:1559
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Chipset name"
-msgstr "Название файла"
+msgstr "Название чипсета"
#: backend/hp3900_sane.c:1560
#, no-c-format
msgid "Shows chipset name used in device."
-msgstr ""
+msgstr "Показать название чипсета, используемого в устройстве."
#: backend/hp3900_sane.c:1564
#, no-c-format
msgid "Unknown"
-msgstr ""
+msgstr "Неизвестно"
#: backend/hp3900_sane.c:1570
#, no-c-format
msgid "Chipset ID"
-msgstr ""
+msgstr "Идентификатор чипсета"
#: backend/hp3900_sane.c:1571
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Shows the chipset ID"
-msgstr "листовой сканер"
+msgstr "Показывает идентификатор чипсета"
#: backend/hp3900_sane.c:1581
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Scan counter"
-msgstr "Источник сканирования"
+msgstr "Счётчик сканирования"
#: backend/hp3900_sane.c:1583
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Shows the number of scans made by scanner"
-msgstr "Выберите количество кадров для сканирования"
+msgstr "Показывает количество отсканированных файлов"
#: backend/hp3900_sane.c:1593
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Update information"
-msgstr "Обновить параметры"
+msgstr "Обновить информацию"
#: backend/hp3900_sane.c:1594
#, no-c-format
msgid "Updates information about device"
-msgstr ""
+msgstr "Обновляет информацию об устройстве"
#: backend/hp3900_sane.c:1634
-#, fuzzy, no-c-format
+#, no-c-format
msgid "This option reflects a front panel scanner button"
-msgstr "Этот параметр отражает состояние кнопок сканера."
+msgstr "Этот пункт соответствует кнопке передней панели сканера"
#: backend/hp5400_sane.c:417
#, no-c-format
msgid "web"
-msgstr ""
+msgstr "web"
#: backend/hp5400_sane.c:418
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Share-To-Web button"
-msgstr "Разрешение сканирования"
+msgstr "Кнопка «Отправить через сайт»"
#: backend/hp5400_sane.c:419
#, no-c-format
msgid "Scan an image and send it on the web"
-msgstr ""
+msgstr "Отсканировать изображение и отправить его через сайт"
#: backend/hp5400_sane.c:425
-#, fuzzy, no-c-format
+#, no-c-format
msgid "reprint"
-msgstr "Распечатка"
+msgstr "перепечатать"
#: backend/hp5400_sane.c:426
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Reprint Photos button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Кнопка «Перепечатать»"
#: backend/hp5400_sane.c:427
#, no-c-format
msgid "Button for reprinting photos"
-msgstr ""
+msgstr "Кнопка для перепечатывания фотографий"
#: backend/hp5400_sane.c:449
-#, fuzzy, no-c-format
+#, no-c-format
msgid "more-options"
-msgstr "Дополнительные параметры"
+msgstr "дополнительные-параметры"
#: backend/hp5400_sane.c:450
-#, fuzzy, no-c-format
+#, no-c-format
msgid "More Options button"
-msgstr "Дополнительные параметры"
+msgstr "Кнопка «Дополнительные параметры»"
#: backend/hp5400_sane.c:451
#, no-c-format
msgid "Button for additional options/configuration"
-msgstr ""
+msgstr "Кнопка для дополнительных параметров"
#: backend/hp5400_sane.c:465
#, no-c-format
msgid "power-save"
-msgstr ""
+msgstr "энергосберегающий-режим"
#: backend/hp5400_sane.c:466
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Power Save button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Кнопка энергосберегающего режима"
#: backend/hp5400_sane.c:467
#, no-c-format
msgid "Puts the scanner in an energy-conservation mode"
-msgstr ""
+msgstr "Переводит сканер в энергосберегающий режим"
#: backend/hp5400_sane.c:473
#, no-c-format
msgid "copies-up"
-msgstr ""
+msgstr "copies-up"
#: backend/hp5400_sane.c:474
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Increase Copies button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Кнопка «Увеличить число копий»"
#: backend/hp5400_sane.c:475
#, no-c-format
msgid "Increase the number of copies"
-msgstr ""
+msgstr "Увеличивает количество копий"
#: backend/hp5400_sane.c:481
#, no-c-format
msgid "copies-down"
-msgstr ""
+msgstr "copies-down"
#: backend/hp5400_sane.c:482
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Decrease Copies button"
-msgstr "Ожидать нажатия кнопки"
+msgstr "Кнопка «Уменьшить число копий»"
#: backend/hp5400_sane.c:483
#, no-c-format
msgid "Decrease the number of copies"
-msgstr ""
+msgstr "Уменьшает количество копий"
#: backend/hp5400_sane.c:489
-#, fuzzy, no-c-format
+#, no-c-format
msgid "color-bw"
-msgstr "Цветной"
+msgstr "color-bw"
#: backend/hp5400_sane.c:490
#, no-c-format
msgid "Select color/BW button"
-msgstr ""
+msgstr "Кнопка выбора цветного/чёрно-белого изображения"
#: backend/hp5400_sane.c:491
#, no-c-format
msgid "Alternates between color and black/white scanning"
msgstr ""
+"Позволяет выбрать между цветным изображением или чёрно/белым во время "
+"сканирования"
#: backend/hp5400_sane.c:497
#, no-c-format
msgid "color-bw-state"
-msgstr ""
+msgstr "color-bw-state"
#: backend/hp5400_sane.c:498
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Read color/BW button state"
-msgstr "Состояние кнопки"
+msgstr "Считать состояние кнопки цветного или чёрно/белого"
#: backend/hp5400_sane.c:499
#, no-c-format
msgid "Reads state of BW/colour panel setting"
-msgstr ""
+msgstr "Считывает состояние кнопки «ЧБ/цветной»"
#: backend/hp5400_sane.c:507
#, no-c-format
msgid "copies-count"
-msgstr ""
+msgstr "copies-count"
#: backend/hp5400_sane.c:508
#, no-c-format
msgid "Read copy count value"
-msgstr ""
+msgstr "Считать значение количества копий"
#: backend/hp5400_sane.c:509
#, no-c-format
msgid "Reads state of copy count panel setting"
-msgstr ""
+msgstr "Считывает значение количества копий"
#: backend/hp5400_sane.c:518 backend/niash.c:706
#, no-c-format
msgid "Miscellaneous"
-msgstr "Различное"
+msgstr "Разное"
#: backend/hp5400_sane.c:525 backend/niash.c:713
#, no-c-format
@@ -3992,29 +4030,29 @@ msgid "Calibrates for black and white level."
msgstr "Калибрует для чёрного и белого уровня."
#: backend/hp5590.c:93
-#, fuzzy, no-c-format
+#, no-c-format
msgid "TMA Slides"
-msgstr "Слайд"
+msgstr "Слайды TMA"
#: backend/hp5590.c:94
-#, fuzzy, no-c-format
+#, no-c-format
msgid "TMA Negatives"
-msgstr "Негатив"
+msgstr "Негативы TMA"
#: backend/hp5590.c:106
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Color (48 bits)"
-msgstr "Цветной 48"
+msgstr "Цветной (48 бит)"
#: backend/hp5590.c:110
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Extend lamp timeout"
-msgstr "Время выключения лампы"
+msgstr "Увеличить время ожидания лампы"
#: backend/hp5590.c:111
#, no-c-format
msgid "Extends lamp timeout (from 15 minutes to 1 hour)"
-msgstr ""
+msgstr "Увеличивает время ожидания лампы (от 15 минут до 1 часа)"
#: backend/hp5590.c:113
#, no-c-format
@@ -4022,65 +4060,71 @@ msgid "Wait for button"
msgstr "Ожидать нажатия кнопки"
#: backend/hp5590.c:114
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Waits for button before scanning"
-msgstr "Прогревать лампу перед сканированием"
+msgstr "Ожидает нажатия кнопки перед сканированием"
#: backend/hp5590.c:116
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Last button pressed"
-msgstr "Состояние кнопки"
+msgstr "Последняя нажатая кнопка"
#: backend/hp5590.c:117
#, no-c-format
msgid "Get ID of last button pressed (read only)"
-msgstr ""
+msgstr "Получить идентификатор последней нажатой кнопки (только для чтения)"
#: backend/hp5590.c:119
-#, fuzzy, no-c-format
+#, no-c-format
msgid "LCD counter"
-msgstr "Источник сканирования"
+msgstr "Счётчик LCD"
#: backend/hp5590.c:120
#, no-c-format
msgid "Get value of LCD counter (read only)"
-msgstr ""
+msgstr "Получить значение счётчика LCD (только для чтения)"
#: backend/hp5590.c:122
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Color LED indicator"
-msgstr "Цветное штриховое"
+msgstr "Цветной светодиодный индикатор"
#: backend/hp5590.c:123
#, no-c-format
msgid "Get value of LED indicator (read only)"
msgstr ""
+"Получить значение цветного светодиодного индикатора (только для чтения)"
#: backend/hp5590.c:125
#, no-c-format
msgid "Document available in ADF"
-msgstr ""
+msgstr "Документ доступен в устройстве подачи"
#: backend/hp5590.c:126
#, no-c-format
msgid "Get state of document-available indicator in ADF (read only)"
msgstr ""
+"Получить состояние индикатора доступности документа в устройстве подачи "
+"документов (только для чтения)"
#: backend/hp5590.c:128
#, no-c-format
msgid "Hide end-of-page pixel"
-msgstr ""
+msgstr "Скрыть пиксел конца страницы"
#: backend/hp5590.c:129
#, no-c-format
-msgid ""
-"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgid "Hide end-of-page indicator pixels and overwrite with neighbor pixels"
msgstr ""
+"Скрывать пикселы-индикаторы конца страницы и перезаписывать их соседними "
+"пикселами"
#: backend/hp5590.c:131
#, no-c-format
msgid "Filling mode of trailing lines after scan data (ADF)"
msgstr ""
+"Режим заполнения концевых линий после данных сканирования (устройств подачи "
+"документов)"
#: backend/hp5590.c:132
#, no-c-format
@@ -4088,11 +4132,14 @@ msgid ""
"raw = raw scan data, last = repeat last scan line, raster = b/w raster, "
"white = white color, black = black color, color = RGB or gray color value"
msgstr ""
+"raw = данные сканирования без обработки, last = повторить последнюю линию "
+"сканирования, raster = чёрно-белый растр, white = белый цвет, black = чёрный "
+"цвет, color = значение цвета RGB или в оттенках серого"
#: backend/hp5590.c:135
#, no-c-format
msgid "RGB or gray color value for filling mode 'color'"
-msgstr ""
+msgstr "Значения цвета RGB или в оттенках серого для режима заполнения «color»"
#: backend/hp5590.c:136
#, no-c-format
@@ -4100,6 +4147,9 @@ msgid ""
"Color value for trailing lines filling mode 'color'. RGB color as "
"r*65536+256*g+b or gray value (default=violet or gray)"
msgstr ""
+"Значение цвета для конечных линий режима заполнения «color». Цвет RGB как "
+"значение в формате r*65536+256*g+b или значение оттенка серого (по умолчанию "
+"— фиолетовый или серый)"
#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
#: backend/matsushita.h:213
@@ -4114,39 +4164,39 @@ msgid "Automatic separation"
msgstr "Автоматическое разделение"
#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307 backend/kvs40xx_opt.c:531
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Landscape"
-msgstr "A5 ландшафт"
+msgstr "Альбомная"
#: backend/kvs1025.h:54 backend/kvs40xx_opt.c:693
#, no-c-format
msgid "Inverse Image"
-msgstr ""
+msgstr "Инверсное изображение"
#: backend/kvs1025.h:56 backend/kvs40xx_opt.c:404
#, no-c-format
msgid "Long paper mode"
-msgstr ""
+msgstr "Режим длинной бумаги"
#: backend/kvs1025.h:57 backend/kvs20xx_opt.c:230 backend/kvs40xx_opt.c:393
#, no-c-format
msgid "Length control mode"
-msgstr ""
+msgstr "Режим контроля длины"
#: backend/kvs1025.h:58 backend/kvs20xx_opt.c:242 backend/kvs40xx_opt.c:416
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Manual feed mode"
-msgstr "Ручная предварительная фокусировка"
+msgstr "Режим ручной подачи"
#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254 backend/kvs40xx_opt.c:428
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Manual feed timeout"
-msgstr "Ручная предварительная фокусировка"
+msgstr "Время ожидания ручной подачи"
#: backend/kvs1025.h:60 backend/kvs20xx_opt.c:267 backend/kvs40xx_opt.c:441
#, no-c-format
msgid "Double feed detection"
-msgstr ""
+msgstr "Определение двойной подачи"
#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
#: backend/matsushita.h:217
@@ -4163,236 +4213,229 @@ msgstr "Физический размер бумаги в устройстве
#: backend/kvs1025_opt.c:39
#, no-c-format
msgid "bw"
-msgstr ""
+msgstr "ч/б"
#: backend/kvs1025_opt.c:40
-#, fuzzy, no-c-format
+#, no-c-format
msgid "halftone"
-msgstr "Полутоновый (растр)"
+msgstr "полутон"
#: backend/kvs1025_opt.c:41
#, no-c-format
msgid "gray"
-msgstr ""
+msgstr "серый"
#: backend/kvs1025_opt.c:42
-#, fuzzy, no-c-format
+#, no-c-format
msgid "color"
-msgstr "Цветной"
+msgstr "цветной"
#: backend/kvs1025_opt.c:61 backend/kvs40xx_opt.c:108
#: backend/kvs40xx_opt.c:1047
#, no-c-format
msgid "adf"
-msgstr ""
+msgstr "упд"
-#: backend/kvs1025_opt.c:62 backend/kvs40xx_opt.c:50
-#: backend/kvs40xx_opt.c:109
+#: backend/kvs1025_opt.c:62 backend/kvs40xx_opt.c:50 backend/kvs40xx_opt.c:109
#, no-c-format
msgid "fb"
-msgstr ""
+msgstr "планшет"
-#: backend/kvs1025_opt.c:72 backend/kvs20xx_opt.c:55
-#: backend/kvs40xx_opt.c:101
+#: backend/kvs1025_opt.c:72 backend/kvs20xx_opt.c:55 backend/kvs40xx_opt.c:101
#, no-c-format
msgid "single"
-msgstr ""
+msgstr "односторонний"
#: backend/kvs1025_opt.c:73 backend/kvs20xx.c:462 backend/kvs20xx_opt.c:56
#: backend/kvs40xx.c:705 backend/kvs40xx.c:723 backend/kvs40xx_opt.c:102
#: backend/kvs40xx_opt.c:1087
-#, fuzzy, no-c-format
+#, no-c-format
msgid "continuous"
-msgstr "Условно"
+msgstr "непрерывно"
-#: backend/kvs1025_opt.c:83 backend/kvs20xx_opt.c:62
-#: backend/kvs40xx_opt.c:115
-#, fuzzy, no-c-format
+#: backend/kvs1025_opt.c:83 backend/kvs20xx_opt.c:62 backend/kvs40xx_opt.c:115
+#, no-c-format
msgid "off"
-msgstr "Выкл"
+msgstr "выкл"
-#: backend/kvs1025_opt.c:84 backend/kvs20xx_opt.c:63
-#: backend/kvs40xx_opt.c:116
+#: backend/kvs1025_opt.c:84 backend/kvs20xx_opt.c:63 backend/kvs40xx_opt.c:116
#, no-c-format
msgid "wait_doc"
-msgstr ""
+msgstr "ожидание_документа"
-#: backend/kvs1025_opt.c:85 backend/kvs20xx_opt.c:64
-#: backend/kvs40xx_opt.c:118
+#: backend/kvs1025_opt.c:85 backend/kvs20xx_opt.c:64 backend/kvs40xx_opt.c:118
#, no-c-format
msgid "wait_key"
-msgstr ""
+msgstr "ожидание_клавиши"
-#: backend/kvs1025_opt.c:96 backend/kvs20xx_opt.c:70
-#: backend/kvs40xx_opt.c:124 backend/kvs40xx_opt.c:141
+#: backend/kvs1025_opt.c:96 backend/kvs20xx_opt.c:70 backend/kvs40xx_opt.c:124
+#: backend/kvs40xx_opt.c:141
#, no-c-format
msgid "user_def"
-msgstr ""
+msgstr "опред_пользователем"
-#: backend/kvs1025_opt.c:97 backend/kvs20xx_opt.c:71
-#: backend/kvs40xx_opt.c:125 backend/kvs40xx_opt.c:142
+#: backend/kvs1025_opt.c:97 backend/kvs20xx_opt.c:71 backend/kvs40xx_opt.c:125
+#: backend/kvs40xx_opt.c:142
#, no-c-format
msgid "business_card"
-msgstr ""
+msgstr "бизнес_карточка"
-#: backend/kvs1025_opt.c:98 backend/kvs40xx_opt.c:126
-#: backend/kvs40xx_opt.c:143
+#: backend/kvs1025_opt.c:98 backend/kvs40xx_opt.c:126 backend/kvs40xx_opt.c:143
#, no-c-format
msgid "Check"
-msgstr ""
+msgstr "Проверить"
-#: backend/kvs1025_opt.c:101 backend/kvs20xx_opt.c:75
-#: backend/kvs40xx_opt.c:129 backend/kvs40xx_opt.c:146
+#: backend/kvs1025_opt.c:101 backend/kvs20xx_opt.c:75 backend/kvs40xx_opt.c:129
+#: backend/kvs40xx_opt.c:146
#, no-c-format
msgid "A5"
-msgstr ""
+msgstr "A5"
-#: backend/kvs1025_opt.c:102 backend/kvs20xx_opt.c:76
-#: backend/kvs40xx_opt.c:130 backend/kvs40xx_opt.c:147
+#: backend/kvs1025_opt.c:102 backend/kvs20xx_opt.c:76 backend/kvs40xx_opt.c:130
+#: backend/kvs40xx_opt.c:147
#, no-c-format
msgid "A6"
-msgstr ""
+msgstr "A6"
-#: backend/kvs1025_opt.c:106 backend/kvs20xx_opt.c:80
-#: backend/kvs40xx_opt.c:134 backend/kvs40xx_opt.c:151
+#: backend/kvs1025_opt.c:106 backend/kvs20xx_opt.c:80 backend/kvs40xx_opt.c:134
+#: backend/kvs40xx_opt.c:151
#, no-c-format
msgid "B5"
-msgstr ""
+msgstr "B5"
-#: backend/kvs1025_opt.c:107 backend/kvs20xx_opt.c:81
-#: backend/kvs40xx_opt.c:135 backend/kvs40xx_opt.c:152
+#: backend/kvs1025_opt.c:107 backend/kvs20xx_opt.c:81 backend/kvs40xx_opt.c:135
+#: backend/kvs40xx_opt.c:152
#, no-c-format
msgid "B6"
-msgstr ""
+msgstr "B6"
-#: backend/kvs1025_opt.c:108 backend/kvs20xx_opt.c:82
-#: backend/kvs40xx_opt.c:136 backend/kvs40xx_opt.c:153
+#: backend/kvs1025_opt.c:108 backend/kvs20xx_opt.c:82 backend/kvs40xx_opt.c:136
+#: backend/kvs40xx_opt.c:153
#, no-c-format
msgid "Legal"
-msgstr ""
+msgstr "Legal"
#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
#, no-c-format
msgid "bayer_64"
-msgstr ""
+msgstr "bayer_64"
#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
#, no-c-format
msgid "bayer_16"
-msgstr ""
+msgstr "bayer_16"
#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
-#, fuzzy, no-c-format
+#, no-c-format
msgid "halftone_32"
-msgstr "Полутоновый (растр)"
+msgstr "полутон_32"
#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
-#, fuzzy, no-c-format
+#, no-c-format
msgid "halftone_64"
-msgstr "Полутоновый (растр)"
+msgstr "полутон_64"
#: backend/kvs1025_opt.c:152
-#, fuzzy, no-c-format
+#, no-c-format
msgid "diffusion"
-msgstr "Диффузия ошибок"
+msgstr "рассеивание"
#: backend/kvs1025_opt.c:165 backend/kvs1025_opt.c:227
#: backend/kvs1025_opt.c:240 backend/kvs20xx_opt.c:129
#: backend/kvs20xx_opt.c:137 backend/kvs40xx_opt.c:215
#: backend/kvs40xx_opt.c:223 backend/kvs40xx_opt.c:258
-#, fuzzy, no-c-format
+#, no-c-format
msgid "normal"
-msgstr "Нормально"
+msgstr "обычный"
#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
-#, fuzzy, no-c-format
+#, no-c-format
msgid "light"
-msgstr "Подсветка"
+msgstr "светлый"
#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
#, no-c-format
msgid "dark"
-msgstr ""
+msgstr "тёмный"
#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
-#, fuzzy, no-c-format
+#, no-c-format
msgid "From scanner"
-msgstr "планшетный сканер"
+msgstr "От сканера"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
-#: backend/matsushita.c:174
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272 backend/matsushita.c:174
#, no-c-format
msgid "From paper"
msgstr "От бумаги"
#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
-#, fuzzy, no-c-format
+#, no-c-format
msgid "default"
-msgstr "По умолчанию"
+msgstr "по умолчанию"
#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
#: backend/kvs40xx_opt.c:209
-#, fuzzy, no-c-format
+#, no-c-format
msgid "smooth"
-msgstr "Сглаживать"
+msgstr "плавный"
#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
#: backend/kvs40xx_opt.c:205
#, no-c-format
msgid "none"
-msgstr ""
+msgstr "нет"
#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
#: backend/kvs40xx_opt.c:206
-#, fuzzy, no-c-format
+#, no-c-format
msgid "low"
-msgstr "Медленно"
+msgstr "низкий"
#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
-#, fuzzy, no-c-format
+#, no-c-format
msgid "medium"
-msgstr "Нормальный"
+msgstr "средний"
#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
#: backend/kvs40xx_opt.c:208
#, no-c-format
msgid "high"
-msgstr ""
+msgstr "высокий"
#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
#: backend/kvs40xx_opt.c:216
#, no-c-format
msgid "crt"
-msgstr ""
+msgstr "ЭЛТ"
#: backend/kvs1025_opt.c:229
-#, fuzzy, no-c-format
+#, no-c-format
msgid "linear"
-msgstr "Штриховой"
+msgstr "линейный"
#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
#: backend/kvs40xx_opt.c:224
-#, fuzzy, no-c-format
+#, no-c-format
msgid "red"
-msgstr "Красный"
+msgstr "красный"
#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
#: backend/kvs40xx_opt.c:225
-#, fuzzy, no-c-format
+#, no-c-format
msgid "green"
-msgstr "Зелёный"
+msgstr "зелёный"
#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "blue"
-msgstr ""
+msgstr "голубой"
#: backend/kvs1025_opt.c:561
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Sets the scan source"
-msgstr "Источник сканирования"
+msgstr "Указывает источник сканирования"
#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1123
@@ -4407,56 +4450,58 @@ msgid "Sets the feeding mode"
msgstr "Устанавливает режим подачи"
#: backend/kvs1025_opt.c:583
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enable/Disable long paper mode"
-msgstr "Выключить предварительный фокус"
+msgstr "Включить/выключить режим длинной бумаги"
#: backend/kvs1025_opt.c:592
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enable/Disable length control mode"
-msgstr "Выключить предварительный фокус"
+msgstr "Включить/выключить режим контроля длины"
#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
#: backend/kvs40xx_opt.c:417
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Sets the manual feed mode"
-msgstr "Устанавливает режим подачи"
+msgstr "Устанавливает режим ручной подачи"
#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
#: backend/kvs40xx_opt.c:429
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Sets the manual feed timeout in seconds"
-msgstr "Устанавливает режим подачи"
+msgstr "Устанавливает время ожидания ручной подачи в секундах"
#: backend/kvs1025_opt.c:624 backend/kvs20xx_opt.c:268
#: backend/kvs40xx_opt.c:442
#, no-c-format
msgid "Enable/Disable double feed detection"
-msgstr ""
+msgstr "Включить/выключить определение двойной подачи"
#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
#: backend/kvs40xx_opt.c:497
#, no-c-format
msgid "fit-to-page"
-msgstr ""
+msgstr "по размеру страницы"
#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
#: backend/kvs40xx_opt.c:498
#, no-c-format
msgid "Fit to page"
-msgstr ""
+msgstr "По размеру страницы"
#: backend/kvs1025_opt.c:633 backend/kvs20xx_opt.c:278
#: backend/kvs40xx_opt.c:499
#, no-c-format
msgid "Scanner shrinks image to fit scanned page"
-msgstr ""
+msgstr "Сканер уменьшает изображение, чтобы поместить его в страницу"
#: backend/kvs1025_opt.c:660 backend/kvs20xx_opt.c:309
#: backend/kvs40xx_opt.c:533
#, no-c-format
msgid "Set paper position : true for landscape, false for portrait"
msgstr ""
+"Устанавливает расположение страницы: true — для альбомного, false — для "
+"книжного"
#: backend/kvs1025_opt.c:734 backend/matsushita.c:1221
#, no-c-format
@@ -4466,11 +4511,11 @@ msgstr "Автоматический порог"
#: backend/kvs1025_opt.c:737 backend/matsushita.c:1224
#, no-c-format
msgid ""
-"Automatically sets brightness, contrast, white level, gamma, noise "
-"reduction and image emphasis"
+"Automatically sets brightness, contrast, white level, gamma, noise reduction "
+"and image emphasis"
msgstr ""
-"Автоматически устанавливает яркость, контрастность, уровень белого, "
-"гамму, уменьшение шума и выразительность изображения"
+"Автоматически устанавливает яркость, контрастность, уровень белого, гамму, "
+"уменьшение шума и выразительность изображения"
#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
#: backend/matsushita.c:1272
@@ -4505,80 +4550,84 @@ msgstr "Гамма"
#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
#: backend/kvs40xx_opt.c:681
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Lamp color"
-msgstr "Включить лампу"
+msgstr "Цвет лампы"
#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
#: backend/kvs40xx_opt.c:682
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Sets the lamp color (color dropout)"
-msgstr "Включить/выключить лампу."
+msgstr "Настройка цвета лампы (цвета выдачи)"
#: backend/kvs1025_opt.c:831
#, no-c-format
msgid "Inverse image in B/W or halftone mode"
-msgstr ""
+msgstr "Инверсное изображение в чёрно-белом или полутоновом режиме"
#: backend/kvs1025_opt.c:839
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Mirror image (left/right flip)"
-msgstr "Отображает изображение по вертикали."
+msgstr "Отразить изображение (влево или вправо)"
#: backend/kvs1025_opt.c:846
#, no-c-format
msgid "jpeg compression"
-msgstr ""
+msgstr "Сжатие jpeg"
#: backend/kvs1025_opt.c:849
#, no-c-format
msgid "JPEG Image Compression with Q parameter, '0' - no compression"
-msgstr ""
+msgstr "Сжатие изображения в формате JPEG с параметром Q, «0» — без сжатия"
#: backend/kvs1025_opt.c:859
#, no-c-format
msgid "Rotate image clockwise"
-msgstr ""
+msgstr "Повернуть изображение по часовой стрелке"
#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
-msgstr ""
+msgstr "Запросить драйвер вращать страницы на фиксированный указанный угол"
#: backend/kvs1025_opt.c:873
#, no-c-format
msgid "Request driver to rotate skewed pages digitally"
-msgstr ""
+msgstr "Запросить драйвер вращать страницы в цифровом виде"
#: backend/kvs1025_opt.c:882
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan"
msgstr ""
+"Максимальный диаметр пятен, которые следует устранить из сканируемого "
+"изображения"
#: backend/kvs1025_opt.c:892
#, no-c-format
msgid "Software derotate"
-msgstr ""
+msgstr "Программное устранение вращения"
#: backend/kvs1025_opt.c:894
#, no-c-format
msgid "Request driver to detect and correct 90 degree image rotation"
msgstr ""
+"Запросить драйвер определить и исправить вращение изображения на 90 градусов"
#: backend/kvs1025_opt.c:901
#, no-c-format
msgid "Software automatic cropping"
-msgstr ""
+msgstr "Программная автоматическая обрезка"
#: backend/kvs1025_opt.c:903
#, no-c-format
msgid "Request driver to remove border from pages digitally"
-msgstr ""
+msgstr "Запрашивает драйвер удалять границу страниц в цифровом виде"
#: backend/kvs1025_opt.c:912
#, no-c-format
msgid "Request driver to discard pages with low numbers of dark pixels"
msgstr ""
+"Запросить драйвер удалить страницы с низким количеством тёмных пикселов"
#: backend/kvs20xx_opt.c:233
#, no-c-format
@@ -4586,10 +4635,12 @@ msgid ""
"Length Control Mode causes the scanner to read the shorter of either the "
"length of the actual paper or logical document length."
msgstr ""
+"В режиме управления длиной сканер считывает данные до самой короткой из "
+"следующих длин: действительной длины листа бумаги или логической длины "
+"документа."
#: backend/kvs20xx_opt.c:424 backend/kvs20xx_opt.c:425
-#: backend/kvs40xx_opt.c:668 backend/kvs40xx_opt.c:669
-#: backend/microtek2.h:638
+#: backend/kvs40xx_opt.c:668 backend/kvs40xx_opt.c:669 backend/microtek2.h:638
#, no-c-format
msgid "Gamma correction"
msgstr "Коррекция гаммы"
@@ -4597,52 +4648,52 @@ msgstr "Коррекция гаммы"
#: backend/kvs40xx_opt.c:117
#, no-c-format
msgid "wait_doc_hopper_up"
-msgstr ""
+msgstr "wait_doc_hopper_up"
#: backend/kvs40xx_opt.c:127
#, no-c-format
msgid "A3"
-msgstr ""
+msgstr "A3"
#: backend/kvs40xx_opt.c:132
#, no-c-format
msgid "Double letter 11x17 in"
-msgstr ""
+msgstr "Двойной лист 11x17 дюймов"
#: backend/kvs40xx_opt.c:133
#, no-c-format
msgid "B4"
-msgstr ""
+msgstr "B4"
#: backend/kvs40xx_opt.c:231
-#, fuzzy, no-c-format
+#, no-c-format
msgid "High sensitivity"
-msgstr "Печать высокой плотности"
+msgstr "Высокая чувствительность"
#: backend/kvs40xx_opt.c:232
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Low sensitivity"
-msgstr "Печать высокой плотности"
+msgstr "Низкая чувствительность"
#: backend/kvs40xx_opt.c:243
-#, fuzzy, no-c-format
+#, no-c-format
msgid "err_diffusion"
-msgstr "Диффузия ошибок"
+msgstr "ошибка_диффузии"
#: backend/kvs40xx_opt.c:249
-#, fuzzy, no-c-format
+#, no-c-format
msgid "No detection"
-msgstr "Без коррекции"
+msgstr "Без обнаружения"
#: backend/kvs40xx_opt.c:250
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Normal mode"
-msgstr "Нормально"
+msgstr "Обычный режим"
#: backend/kvs40xx_opt.c:251
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enhanced mode"
-msgstr "Повышение"
+msgstr "Расширенный режим"
#: backend/kvs40xx_opt.c:396
#, no-c-format
@@ -4650,153 +4701,161 @@ msgid ""
"Length Control Mode causes the scanner to read the shorter of either the "
"length of the actual paper or logical document length"
msgstr ""
+"В режиме управления длиной сканер считывает данные до самой короткой из "
+"следующих длин: действительной длины листа бумаги или логической длины "
+"документа"
#: backend/kvs40xx_opt.c:405
#, no-c-format
msgid ""
-"Long Paper Mode is a mode that the scanner reads the image after it "
-"divides long paper by the length which is set in Document Size option."
+"Long Paper Mode is a mode that the scanner reads the image after it divides "
+"long paper by the length which is set in Document Size option."
msgstr ""
+"Режим длинной бумаги — это режим, в котором сканер считывает изображение "
+"после разделения длинного листа бумаги на отрезки длины, установленной с "
+"помощью параметра «Размер документа»."
#: backend/kvs40xx_opt.c:449
#, no-c-format
msgid "Double feed detector sensitivity"
-msgstr ""
+msgstr "Чувствительность определителя двойной подачи"
#: backend/kvs40xx_opt.c:450
#, no-c-format
msgid "Set the double feed detector sensitivity"
-msgstr ""
+msgstr "Указать чувствительность определителя двойной подачи"
#: backend/kvs40xx_opt.c:461 backend/kvs40xx_opt.c:462
#, no-c-format
msgid "Do not stop after double feed detection"
-msgstr ""
+msgstr "Не останавливаться после определения двойной подачи"
#: backend/kvs40xx_opt.c:470 backend/kvs40xx_opt.c:471
#, no-c-format
msgid "Ignore left double feed sensor"
-msgstr ""
+msgstr "Игнорировать левый датчик двойной подачи"
#: backend/kvs40xx_opt.c:479 backend/kvs40xx_opt.c:480
#, no-c-format
msgid "Ignore center double feed sensor"
-msgstr ""
+msgstr "Игнорировать центральный датчик двойной подачи"
#: backend/kvs40xx_opt.c:488 backend/kvs40xx_opt.c:489
#, no-c-format
msgid "Ignore right double feed sensor"
-msgstr ""
+msgstr "Игнорировать правый датчик двойной подачи"
#: backend/kvs40xx_opt.c:642
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Automatic threshold mode"
-msgstr "Автоматический порог"
+msgstr "Автоматический пороговый режим"
#: backend/kvs40xx_opt.c:643
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Sets the automatic threshold mode"
-msgstr "Автоматический порог"
+msgstr "Указывает автоматический пороговый режим"
#: backend/kvs40xx_opt.c:694
#, no-c-format
msgid "Inverse image in B/W mode"
-msgstr ""
+msgstr "Инверсное изображение в чёрно-белом режиме"
#: backend/kvs40xx_opt.c:715
#, no-c-format
msgid "JPEG compression"
-msgstr ""
+msgstr "Сжатие JPEG"
#: backend/kvs40xx_opt.c:718
#, no-c-format
msgid "JPEG compression (your application must be able to uncompress)"
-msgstr ""
+msgstr "Сжатие JPEG (приложение должно иметь возможность распаковывать данные)"
#: backend/kvs40xx_opt.c:737 backend/kvs40xx_opt.c:738
#, no-c-format
msgid "Detect stapled document"
-msgstr ""
+msgstr "Определить документ со скобами"
#: backend/kvs40xx_opt.c:776
#, no-c-format
msgid "chroma of red"
-msgstr ""
+msgstr "интенсивность красного"
#: backend/kvs40xx_opt.c:777
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Set chroma of red"
-msgstr "Установить порядок кадров"
+msgstr "Указать интенсивность красного"
#: backend/kvs40xx_opt.c:787
-#, fuzzy, no-c-format
+#, no-c-format
msgid "chroma of blue"
-msgstr "Затенённость для синего"
+msgstr "интенсивность голубого"
#: backend/kvs40xx_opt.c:788
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Set chroma of blue"
-msgstr "Сдвиг красного к синему"
+msgstr "Указать интенсивность голубого"
#: backend/kvs40xx_opt.c:798 backend/kvs40xx_opt.c:799
#, no-c-format
msgid "Skew adjustment"
-msgstr ""
+msgstr "Коррекция сдвига"
#: backend/kvs40xx_opt.c:808
#, no-c-format
msgid "Stop scanner if a sheet is skewed"
-msgstr ""
+msgstr "Остановить сканер, если лист сдвинут"
#: backend/kvs40xx_opt.c:809
#, no-c-format
msgid "Scanner will stop if a sheet is skewed"
-msgstr ""
+msgstr "Сканер остановится, если лист сдвинут"
#: backend/kvs40xx_opt.c:816
#, no-c-format
msgid "Crop actual image area"
-msgstr ""
+msgstr "Обрезать до настоящей области изображения"
#: backend/kvs40xx_opt.c:817
#, no-c-format
msgid "Scanner will automatically detect image area and crop to it"
msgstr ""
+"Сканер автоматически определит область изображения и обрежет изображение до "
+"неё"
#: backend/kvs40xx_opt.c:827
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Left/right mirror image"
-msgstr "Зеркальное изображение"
+msgstr "Отразить изображение горизонтально"
#: backend/kvs40xx_opt.c:834 backend/kvs40xx_opt.c:835
#, no-c-format
msgid "Addition of space in top position"
-msgstr ""
+msgstr "Добавление пространства в верхней части"
#: backend/kvs40xx_opt.c:842 backend/kvs40xx_opt.c:843
#, no-c-format
msgid "Addition of space in bottom position"
-msgstr ""
+msgstr "Добавление пространства в нижней части"
#: backend/leo.c:107
#, no-c-format
msgid "Diamond"
-msgstr ""
+msgstr "Ромб"
#: backend/leo.c:108
#, no-c-format
msgid "8x8 Coarse Fatting"
-msgstr ""
+msgstr "8x8 грубая жирность"
#: backend/leo.c:109
#, no-c-format
msgid "8x8 Fine Fatting"
-msgstr ""
+msgstr "8x8 хорошая жирность"
#: backend/leo.c:110
#, no-c-format
msgid "8x8 Bayer"
-msgstr ""
+msgstr "8x8 Байер"
#: backend/leo.c:111
#, no-c-format
@@ -4811,7 +4870,7 @@ msgstr "Усиление"
#: backend/lexmark.c:272 backend/umax_pp.c:705
#, no-c-format
msgid "Color channels gain settings"
-msgstr "Настройки усиления цветовых каналов"
+msgstr "Настройка усиления цветовых каналов"
#: backend/lexmark.c:281 backend/umax_pp.c:712
#, no-c-format
@@ -4856,12 +4915,12 @@ msgstr "Устанавливает усиление синего канала"
#: backend/matsushita.c:136
#, no-c-format
msgid "Bayer Dither 16"
-msgstr ""
+msgstr "Размытие Байера 16"
#: backend/matsushita.c:137
#, no-c-format
msgid "Bayer Dither 64"
-msgstr ""
+msgstr "Размытие Байера 64"
#: backend/matsushita.c:138
#, no-c-format
@@ -4908,8 +4967,7 @@ msgstr "Сглаживать"
msgid "Low"
msgstr "Низкий"
-#: backend/matsushita.c:212 backend/matsushita.c:227
-#: backend/matsushita.c:1293
+#: backend/matsushita.c:212 backend/matsushita.c:227 backend/matsushita.c:1293
#, no-c-format
msgid "Medium"
msgstr "Нормальный"
@@ -4991,8 +5049,7 @@ msgstr "Калибровка производится движком"
#: backend/microtek2.h:615
#, no-c-format
-msgid ""
-"If checked the color calibration before a scan is done by the backend"
+msgid "If checked the color calibration before a scan is done by the backend"
msgstr ""
"Если отмечено, калибровка цвета перед сканированием выполняется движком"
@@ -5035,8 +5092,8 @@ msgstr "Автоматическое настраивание порога"
#: backend/microtek2.h:633
#, no-c-format
msgid ""
-"If checked the backend automatically tries to determine an optimal value "
-"for the threshold."
+"If checked the backend automatically tries to determine an optimal value for "
+"the threshold."
msgstr ""
"Если отмечено, движок автоматически попробует определить оптимальное "
"значение порога."
@@ -5106,8 +5163,7 @@ msgstr "Канал"
msgid ""
"Selects the colour band, \"Master\" means that all colours are affected."
msgstr ""
-"Выбирает связь цветов, \"Основной\" означает, что будут подвержены все "
-"цвета."
+"Выбирает связь цветов, \"Основной\" означает, что будут подвержены все цвета."
#: backend/microtek2.h:672
#, no-c-format
@@ -5118,8 +5174,8 @@ msgstr "Полутон"
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % gray\"."
msgstr ""
-"Определяет, какой уровень излучения должен быть рассмотрен как \"50 % "
-"серого\"."
+"Определяет, какой уровень излучения должен быть рассмотрен как \"50 % серого"
+"\"."
#: backend/microtek2.h:677
#, no-c-format
@@ -5154,8 +5210,8 @@ msgstr "Полутон для синего"
#, no-c-format
msgid "Selects which radiance level should be considered \"50 % blue\"."
msgstr ""
-"Определяет, какой уровень излучения должен быть рассмотрен как \"50 % "
-"синего\"."
+"Определяет, какой уровень излучения должен быть рассмотрен как \"50 % синего"
+"\"."
#: backend/microtek2.h:692
#, no-c-format
@@ -5166,8 +5222,7 @@ msgstr "Баланс красного"
#, no-c-format
msgid "Balance factor for red. A value of 100% means no correction."
msgstr ""
-"Коэффициент для красного цвета. Значение 100% означает отсутствие "
-"коррекции."
+"Коэффициент для красного цвета. Значение 100% означает отсутствие коррекции."
#: backend/microtek2.h:697
#, no-c-format
@@ -5178,8 +5233,7 @@ msgstr "Баланс зелёного"
#, no-c-format
msgid "Balance factor for green. A value of 100% means no correction."
msgstr ""
-"Коэффициент для зелёного цвета. Значение 100% означает отсутствие "
-"коррекции."
+"Коэффициент для зелёного цвета. Значение 100% означает отсутствие коррекции."
#: backend/microtek2.h:702
#, no-c-format
@@ -5190,8 +5244,7 @@ msgstr "Баланс синего"
#, no-c-format
msgid "Balance factor for blue. A value of 100% means no correction."
msgstr ""
-"Коэффициент для синего цвета. Значение 100% означает отсутствие "
-"коррекции."
+"Коэффициент для синего цвета. Значение 100% означает отсутствие коррекции."
#: backend/microtek2.h:707
#, no-c-format
@@ -5202,8 +5255,8 @@ msgstr "Баланс, установленный на заводе"
#, no-c-format
msgid "Sets the color balance values to the firmware provided values."
msgstr ""
-"Устанавливает значения цветового баланса в исходные значения, "
-"установленные на заводе."
+"Устанавливает значения цветового баланса в исходные значения, установленные "
+"на заводе."
#: backend/mustek.c:147
#, no-c-format
@@ -5328,8 +5381,8 @@ msgstr "Сканировать в быстром чёрно-белом режи
#: backend/mustek.c:4343
#, no-c-format
msgid ""
-"Request that all previews are done in the fastest (low-quality) mode. "
-"This may be a non-color mode or a low resolution mode."
+"Request that all previews are done in the fastest (low-quality) mode. This "
+"may be a non-color mode or a low resolution mode."
msgstr ""
"Предписывает все предварительные просмотры выполнять в быстрейшем "
"(низкокачественном) режиме. Это может быть чёрно-белый режим или режим с "
@@ -5438,21 +5491,21 @@ msgstr "Чёрно-белый 8"
#: backend/mustek_usb2.c:117
#, no-c-format
msgid "Reflective"
-msgstr ""
+msgstr "Отражённый"
#: backend/mustek_usb2.c:118
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Positive"
msgstr "Позитив"
#: backend/mustek_usb2.c:419
#, no-c-format
msgid ""
-"Warm-up until the lamp's brightness is constant instead of insisting on "
-"40 seconds warm-up time."
+"Warm-up until the lamp's brightness is constant instead of insisting on 40 "
+"seconds warm-up time."
msgstr ""
"Разогревать пока яркость лампы не станет постоянной, вместо простого 40-"
-"тисекундного ожидания разогрева."
+"секундного ожидания разогрева."
#: backend/niash.c:675
#, no-c-format
@@ -5460,67 +5513,70 @@ msgid "Image"
msgstr "Изображение"
#: backend/p5.c:1926
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Need calibration"
-msgstr "Грубая калибровка"
+msgstr "Требуется калибровка"
#: backend/pixma/pixma.c:402
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Negative color"
-msgstr "Негатив"
+msgstr "Цветной негатив"
#: backend/pixma/pixma.c:407
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Negative gray"
-msgstr "Негатив"
+msgstr "Чёрно-белый негатив"
#: backend/pixma/pixma.c:420
#, no-c-format
msgid "48 bits color"
-msgstr ""
+msgstr "48-битный цвет"
#: backend/pixma/pixma.c:425
#, no-c-format
msgid "16 bits gray"
-msgstr ""
+msgstr "16-битный серый"
#: backend/pixma/pixma.c:513 backend/pixma/pixma_sane_options.c:415
#, no-c-format
msgid "Once"
-msgstr ""
+msgstr "Один раз"
#: backend/pixma/pixma.c:516
#, no-c-format
msgid "Always"
-msgstr ""
+msgstr "Всегда"
#: backend/pixma/pixma.c:519
#, no-c-format
msgid "Never"
-msgstr ""
+msgstr "Никогда"
#: backend/pixma/pixma.c:1031
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
-"Gamma-correction table with 4096 entries. In color mode this option "
-"equally affects the red, green, and blue channels simultaneously (i.e., "
-"it is an intensity gamma table)."
+"Gamma-correction table with 4096 entries. In color mode this option equally "
+"affects the red, green, and blue channels simultaneously (i.e., it is an "
+"intensity gamma table)."
msgstr ""
-"Таблица коррекции гаммы. В цветном режиме этот параметр действует "
-"одинаково на красный, зелёный и синий каналы (то есть это интенсивность "
-"коррекции гаммы)."
+"Таблица коррекции гаммы из 4096 записей. В цветном режиме этот параметр "
+"действует одинаково на красный, зелёный и синий каналы (то есть это таблица "
+"интенсивности гаммы)."
#: backend/pixma/pixma_sane_options.c:85
#, no-c-format
msgid ""
-"Selects the scan source (such as a document-feeder). Set source before "
-"mode and resolution. Resets mode and resolution to auto values."
+"Selects the scan source (such as a document-feeder). Set source before mode "
+"and resolution. Resets mode and resolution to auto values."
msgstr ""
+"Выбирает источник сканирования (в том числе устройств подачи документов). "
+"Укажите источник перед режимом и разрешением. Восстанавливает автоматически "
+"определённые значения режима и разрешения."
#: backend/pixma/pixma_sane_options.c:99
#, no-c-format
msgid "Button-controlled scan"
-msgstr ""
+msgstr "Управляемое кнопкой сканирование"
#: backend/pixma/pixma_sane_options.c:100
#, no-c-format
@@ -5529,82 +5585,94 @@ msgid ""
"\"SCAN\" button (for MP150) or \"COLOR\" button (for other models). To "
"cancel, press \"GRAY\" button."
msgstr ""
+"Если отмечено, процесс сканирования не начнётся сразу. Чтобы начать "
+"сканирование, нажмите кнопку «SCAN» (MP150) или «COLOR» (в других моделях). "
+"Чтобы отменить, нажмите кнопку «GRAY»."
#: backend/pixma/pixma_sane_options.c:134
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
-"Gamma-correction table with 1024 entries. In color mode this option "
-"equally affects the red, green, and blue channels simultaneously (i.e., "
-"it is an intensity gamma table)."
+"Gamma-correction table with 1024 entries. In color mode this option equally "
+"affects the red, green, and blue channels simultaneously (i.e., it is an "
+"intensity gamma table)."
msgstr ""
-"Таблица коррекции гаммы. В цветном режиме этот параметр действует "
-"одинаково на красный, зелёный и синий каналы (то есть это интенсивность "
-"коррекции гаммы)."
+"Таблица коррекции гаммы из 1024 записей. В цветном режиме этот параметр "
+"действует одинаково на красный, зелёный и синий каналы (то есть это таблица "
+"интенсивности гаммы)."
#: backend/pixma/pixma_sane_options.c:233
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Update button state"
-msgstr "Состояние кнопки"
+msgstr "Обновить состояние кнопки"
#: backend/pixma/pixma_sane_options.c:245
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Button 1"
-msgstr "Кнопки"
+msgstr "Кнопка 1"
#: backend/pixma/pixma_sane_options.c:259
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Button 2"
-msgstr "Кнопки"
+msgstr "Кнопка 2"
#: backend/pixma/pixma_sane_options.c:273
#, no-c-format
msgid "Type of original to scan"
-msgstr ""
+msgstr "Тип оригинала для сканирования"
#: backend/pixma/pixma_sane_options.c:287
#, no-c-format
msgid "Target operation type"
-msgstr ""
+msgstr "Тип действия для достижения цели"
#: backend/pixma/pixma_sane_options.c:315
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Document type"
-msgstr "Податчик листов"
+msgstr "Тип документа"
#: backend/pixma/pixma_sane_options.c:329
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ADF status"
-msgstr "Состояние лампы"
+msgstr "Статус УПД"
#: backend/pixma/pixma_sane_options.c:343
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ADF orientation"
-msgstr "Без коррекции"
+msgstr "Ориентация УПД"
#: backend/pixma/pixma_sane_options.c:379
#, no-c-format
msgid "Dynamic threshold curve, from light to dark, normally 50-65"
msgstr ""
+"Кривая динамического порогового значения, от светлого до тёмного, по "
+"умолчанию — 50-65"
#: backend/pixma/pixma_sane_options.c:391
#, no-c-format
msgid "ADF Waiting Time"
-msgstr ""
+msgstr "Время ожидания УПД"
#: backend/pixma/pixma_sane_options.c:392
#, no-c-format
msgid ""
-"When set, the scanner waits up to the specified time in seconds for a "
-"new document inserted into the automatic document feeder."
+"When set, the scanner waits up to the specified time in seconds for a new "
+"document inserted into the automatic document feeder."
msgstr ""
+"Если значение указано, сканер будет искать новый документ, вставленный в "
+"устройство автоматической подачи документов, в течение указанного количества "
+"секунд."
#: backend/pixma/pixma_sane_options.c:407
#, no-c-format
msgid ""
"When to perform scanner calibration. If you choose \"Once\" it will be "
-"performed a single time per driver init for single page scans, and for "
-"the first page for each ADF scan."
+"performed a single time per driver init for single page scans, and for the "
+"first page for each ADF scan."
msgstr ""
+"Определяет, когда должна выполняться калибровка сканера. Если выбрать «Один "
+"раз», то она будет выполнена один раз при инициализации драйвера для "
+"сканирования отдельных страниц и первой страницы для каждого сканирования с "
+"автоматической подачей документов."
#: backend/plustek.c:233 backend/plustek_pp.c:202 backend/u12.c:154
#, no-c-format
@@ -5627,14 +5695,14 @@ msgid "Manually switching the lamp(s)."
msgstr "Вручную управляет лампой."
#: backend/plustek.c:924
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Lamp off during dark calibration"
-msgstr "Грубая калибровка"
+msgstr "Выключить лампу во время калибровки тёмного"
#: backend/plustek.c:925
#, no-c-format
msgid "Always switches lamp off when doing dark calibration."
-msgstr ""
+msgstr "Всегда выключает лампу во время калибровки тёмного."
#: backend/plustek.c:933
#, no-c-format
@@ -5647,19 +5715,19 @@ msgid "Enables or disables calibration data cache."
msgstr "Включает или выключает кэширование данных о калибровке."
#: backend/plustek.c:940
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Performs calibration"
-msgstr "Грубая калибровка"
+msgstr "Выполняет калибровку"
#: backend/plustek.c:957
#, no-c-format
msgid "Speedup sensor"
-msgstr ""
+msgstr "Ускорить датчик"
#: backend/plustek.c:958
#, no-c-format
msgid "Enables or disables speeding up sensor movement."
-msgstr ""
+msgstr "Включает или выключает ускорение движения датчика."
#: backend/plustek.c:972
#, no-c-format
@@ -5684,12 +5752,12 @@ msgstr "Время выключения лампы в секундах."
#: backend/plustek.c:993
#, no-c-format
msgid "Analog frontend"
-msgstr ""
+msgstr "Аналоговый интерфейс"
#: backend/plustek.c:1000
#, no-c-format
msgid "Red gain value of the AFE"
-msgstr ""
+msgstr "Значение усиления красного AFE"
#: backend/plustek.c:1007 backend/umax_pp.c:781
#, no-c-format
@@ -5699,27 +5767,27 @@ msgstr "Смещение красного"
#: backend/plustek.c:1008
#, no-c-format
msgid "Red offset value of the AFE"
-msgstr ""
+msgstr "Значение смещения красного AFE"
#: backend/plustek.c:1016
#, no-c-format
msgid "Green gain value of the AFE"
-msgstr ""
+msgstr "Значение усиления зелёного AFE"
#: backend/plustek.c:1024
#, no-c-format
msgid "Green offset value of the AFE"
-msgstr ""
+msgstr "Значение смещения зелёного AFE"
#: backend/plustek.c:1032
#, no-c-format
msgid "Blue gain value of the AFE"
-msgstr ""
+msgstr "Значение усиления голубого AFE"
#: backend/plustek.c:1040
#, no-c-format
msgid "Blue offset value of the AFE"
-msgstr ""
+msgstr "Значение смещения голубого AFE"
#: backend/plustek.c:1047
#, no-c-format
@@ -5764,12 +5832,12 @@ msgstr "Цветное 36"
#: backend/plustek_pp.c:209
#, no-c-format
msgid "Dithermap 1"
-msgstr ""
+msgstr "Карта размытия 1"
#: backend/plustek_pp.c:210
#, no-c-format
msgid "Dithermap 2"
-msgstr ""
+msgstr "Карта размытия 2"
#: backend/plustek_pp.c:211
#, no-c-format
@@ -5804,11 +5872,11 @@ msgstr "Имитация трёхпроходного режима"
#: backend/pnm.c:253
#, no-c-format
msgid ""
-"Simulate a three-pass scanner by returning 3 separate frames. For "
-"kicks, it returns green, then blue, then red."
+"Simulate a three-pass scanner by returning 3 separate frames. For kicks, it "
+"returns green, then blue, then red."
msgstr ""
-"Имитирует трёхпроходной скнер возвращениём трёх различных кадров. То "
-"есть возвращает сначала зелёный, потом синий, потом красный."
+"Имитирует трёхпроходной скнер возвращениём трёх различных кадров. То есть "
+"возвращает сначала зелёный, потом синий, потом красный."
#: backend/pnm.c:265
#, no-c-format
@@ -5818,22 +5886,20 @@ msgstr "Имитация ручного сканера"
#: backend/pnm.c:266
#, no-c-format
msgid ""
-"Simulate a hand-scanner. Hand-scanners often do not know the image "
-"height a priori. Instead, they return a height of -1. Setting this "
-"option allows one to test whether a frontend can handle this correctly."
+"Simulate a hand-scanner. Hand-scanners often do not know the image height a "
+"priori. Instead, they return a height of -1. Setting this option allows "
+"one to test whether a frontend can handle this correctly."
msgstr ""
-"Имитирует ручной сканер. Ручные сканеры часто не имеют информации о "
-"длине изображения. Вместо этого они возвращает длину -1. Установка этого "
-"параметра позволит проверить будет ли фронтенд корректно обрабатывать "
-"эту ситуацию."
+"Имитирует ручной сканер. Ручные сканеры часто не имеют информации о длине "
+"изображения. Вместо этого они возвращает длину -1. Установка этого параметра "
+"позволит проверить будет ли фронтенд корректно обрабатывать эту ситуацию."
#: backend/pnm.c:281
#, no-c-format
-msgid ""
-"Set default values for enhancement controls (brightness & contrast)."
+msgid "Set default values for enhancement controls (brightness & contrast)."
msgstr ""
-"Устанавливает значения по умолчанию для управления повышением (яркостью "
-"и контрастностью)."
+"Устанавливает значения по умолчанию для управления повышением (яркостью и "
+"контрастностью)."
#: backend/pnm.c:293
#, no-c-format
@@ -5843,7 +5909,7 @@ msgstr "Тестовый параметр только для чтения"
#: backend/pnm.c:294
#, no-c-format
msgid "Let's see whether frontends can treat this right"
-msgstr ""
+msgstr "Давайте убедимся в правильности обработки данных оболочкой"
#: backend/pnm.c:305
#, no-c-format
@@ -5868,7 +5934,7 @@ msgstr "Не принуждать драйвер возвращать код с
#: backend/pnm.c:401
#, no-c-format
msgid "Return SANE_STATUS_EOF"
-msgstr ""
+msgstr "Возвратить SANE_STATUS_EOF"
#: backend/pnm.c:402
#, no-c-format
@@ -5876,11 +5942,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_EOF after "
"sane_read() has been called."
msgstr ""
+"Указать серверу возвращать код состояния SANE_STATUS_EOF после вызова "
+"sane_read()."
#: backend/pnm.c:414
#, no-c-format
msgid "Return SANE_STATUS_JAMMED"
-msgstr ""
+msgstr "Возвратить SANE_STATUS_JAMMED"
#: backend/pnm.c:416
#, no-c-format
@@ -5888,11 +5956,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_JAMMED after "
"sane_read() has been called."
msgstr ""
+"Указать серверу возвращать код состояния SANE_STATUS_JAMMED после вызова "
+"sane_read()."
#: backend/pnm.c:428
#, no-c-format
msgid "Return SANE_STATUS_NO_DOCS"
-msgstr ""
+msgstr "Возвратить SANE_STATUS_NO_DOCS"
#: backend/pnm.c:429
#, no-c-format
@@ -5900,11 +5970,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_DOCS after "
"sane_read() has been called."
msgstr ""
+"Указать серверу возвращать код состояния SANE_STATUS_NO_DOCS после вызова "
+"sane_read()."
#: backend/pnm.c:441
#, no-c-format
msgid "Return SANE_STATUS_COVER_OPEN"
-msgstr ""
+msgstr "Возвратить SANE_STATUS_COVER_OPEN"
#: backend/pnm.c:442
#, no-c-format
@@ -5912,11 +5984,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_COVER_OPEN after "
"sane_read() has been called."
msgstr ""
+"Указать серверу возвращать код состояния SANE_STATUS_COVER_OPEN после вызова "
+"sane_read()."
#: backend/pnm.c:454
#, no-c-format
msgid "Return SANE_STATUS_IO_ERROR"
-msgstr ""
+msgstr "Возвратить SANE_STATUS_IO_ERROR"
#: backend/pnm.c:455
#, no-c-format
@@ -5924,11 +5998,13 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_IO_ERROR after "
"sane_read() has been called."
msgstr ""
+"Указать серверу возвращать код состояния SANE_STATUS_IO_ERROR после вызова "
+"sane_read()."
#: backend/pnm.c:467
#, no-c-format
msgid "Return SANE_STATUS_NO_MEM"
-msgstr ""
+msgstr "Возвратить SANE_STATUS_NO_MEM"
#: backend/pnm.c:469
#, no-c-format
@@ -5936,23 +6012,27 @@ msgid ""
"Force the backend to return the status code SANE_STATUS_NO_MEM after "
"sane_read() has been called."
msgstr ""
+"Указать серверу возвращать код состояния SANE_STATUS_NO_MEM после вызова "
+"sane_read()."
#: backend/pnm.c:481
#, no-c-format
msgid "Return SANE_STATUS_ACCESS_DENIED"
-msgstr ""
+msgstr "Возвратить SANE_STATUS_ACCESS_DENIED"
#: backend/pnm.c:482
#, no-c-format
msgid ""
-"Force the backend to return the status code SANE_STATUS_ACCESS_DENIED "
-"after sane_read() has been called."
+"Force the backend to return the status code SANE_STATUS_ACCESS_DENIED after "
+"sane_read() has been called."
msgstr ""
+"Указать серверу возвращать код состояния SANE_STATUS_ACCESS_DENIED после "
+"вызова sane_read()."
#: backend/rts8891.c:2808
-#, fuzzy, no-c-format
+#, no-c-format
msgid "This option reflects the status of a scanner button."
-msgstr "Этот параметр отражает состояние кнопок сканера."
+msgstr "Этот пункт соответствует состоянию кнопки сканера."
#: backend/rts8891.c:2839 backend/umax.c:5793 backend/umax_pp.c:628
#, no-c-format
@@ -5975,19 +6055,20 @@ msgid "Turn off scanner lamp"
msgstr "Выключить лампу сканера"
#: backend/sm3840.c:758
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Lamp timeout"
-msgstr "Время выключения лампы"
+msgstr "Время ожидания лампы"
#: backend/sm3840.c:760
#, no-c-format
msgid "Minutes until lamp is turned off after scan"
msgstr ""
+"Количество минут, после которого лампа будет выключена после сканирования"
#: backend/sm3840.c:770
#, no-c-format
msgid "Threshold value for lineart mode"
-msgstr ""
+msgstr "Пороговое значение для режима штрихов"
#: backend/snapscan-options.c:88
#, no-c-format
@@ -6028,33 +6109,33 @@ msgstr "Точка размытия 16x16"
#, no-c-format
msgid ""
"Number of scan lines to request in a SCSI read. Changing this parameter "
-"allows you to tune the speed at which data is read from the scanner "
-"during scans. If this is set too low, the scanner will have to stop "
-"periodically in the middle of a scan; if it's set too high, X-based "
-"frontends may stop responding to X events and your system could bog down."
+"allows you to tune the speed at which data is read from the scanner during "
+"scans. If this is set too low, the scanner will have to stop periodically in "
+"the middle of a scan; if it's set too high, X-based frontends may stop "
+"responding to X events and your system could bog down."
msgstr ""
"Количество строк сканирования в запросе чтения по SCSI.Изменение этого "
"параметра позволит вам настроить скорость, с которой данный будут "
"передаваться со сканера во время сканирования. Если он установлен очень "
"низким, сканер будет периодически останавливаться во время сканирования, "
-"если же этот параметр будет установлен очень высоким, графическая "
-"оболочка может перестать принимать события от системы X Window и не "
-"будет реагировать на ваши команды до окончания сканирования."
+"если же этот параметр будет установлен очень высоким, графическая оболочка "
+"может перестать принимать события от системы X Window и не будет реагировать "
+"на ваши команды до окончания сканирования."
#: backend/snapscan-options.c:111
#, no-c-format
msgid "Frame number of media holder that should be scanned."
-msgstr ""
+msgstr "Количество кадров на сканируемом шаблоне."
#: backend/snapscan-options.c:114
#, no-c-format
msgid "Use manual or automatic selection of focus point."
-msgstr ""
+msgstr "Использовать ручной или автоматический выбор точки фокуса."
#: backend/snapscan-options.c:117
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus point for scanning."
-msgstr "Извлечь документ после сканирования"
+msgstr "Точка фокуса после сканирования."
#: backend/snapscan-options.c:482
#, no-c-format
@@ -6067,9 +6148,8 @@ msgid ""
"Select the mode for previews. Greyscale previews usually give the best "
"combination of speed and detail."
msgstr ""
-"Выберите режим для предварительного просмотра. Чёрно-белый "
-"предварительный просмотр обычно даёт лучшее сочетание скорости и "
-"детализации."
+"Выберите режим для предварительного просмотра. Чёрно-белый предварительный "
+"просмотр обычно даёт лучшее сочетание скорости и детализации."
#: backend/snapscan-options.c:601
#, no-c-format
@@ -6079,56 +6159,55 @@ msgstr "Заранее настроенные параметры"
#: backend/snapscan-options.c:603
#, no-c-format
msgid ""
-"Provides standard scanning areas for photographs, printed pages and the "
-"like."
+"Provides standard scanning areas for photographs, printed pages and the like."
msgstr ""
-"Предоставляют стандартные области сканирования для фотографий, "
-"распечатанных страниц и прочего."
+"Предоставляют стандартные области сканирования для фотографий, распечатанных "
+"страниц и прочего."
#: backend/snapscan-options.c:884
#, no-c-format
msgid "Frame"
-msgstr ""
+msgstr "Кадр"
#: backend/snapscan-options.c:885
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Frame to be scanned"
-msgstr "планшетный сканер"
+msgstr "Кадр для сканирования"
#: backend/snapscan-options.c:897
#, no-c-format
msgid "Focus-mode"
-msgstr ""
+msgstr "Режим фокуса"
#: backend/snapscan-options.c:898
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Auto or manual focus"
-msgstr "Автоизвлечение"
+msgstr "Автоматический или ручной фокус"
#: backend/snapscan-options.c:911
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus-point"
-msgstr "Расположение фокуса"
+msgstr "Точка фокуса"
#: backend/snapscan-options.c:912
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Focus point"
-msgstr "Расположение фокуса"
+msgstr "Точка фокуса"
#: backend/snapscan-options.c:930
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Color lines per read"
msgstr "Цветных строк за запрос на чтение"
#: backend/snapscan-options.c:942
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Grayscale lines per read"
msgstr "Чёрно-белых строк за запрос на чтение"
#: backend/stv680.c:971
#, no-c-format
msgid "webcam"
-msgstr ""
+msgstr "веб-камера"
#: backend/stv680.h:109
#, no-c-format
@@ -6192,13 +6271,13 @@ msgstr "Имитация ручного сканера"
#, no-c-format
msgid ""
"Simulate a hand-scanner. Hand-scanners do not know the image height a "
-"priori. Instead, they return a height of -1. Setting this option "
-"allows one to test whether a frontend can handle this correctly. This "
-"option also enables a fixed width of 11 cm."
+"priori. Instead, they return a height of -1. Setting this option allows "
+"one to test whether a frontend can handle this correctly. This option also "
+"enables a fixed width of 11 cm."
msgstr ""
"Имитировать ручной сканер. Ручные сканеры никогда не знают о высоте "
-"изображения. Вместо этого они возвращают высоту, равную -1. Установка "
-"этого параметра позволяет протестировать, будет ли графическая оболочка "
+"изображения. Вместо этого они возвращают высоту, равную -1. Установка этого "
+"параметра позволяет протестировать, будет ли графическая оболочка "
"обрабатывать это корректно. Этот параметр также включает фиксированную "
"ширину 11 см."
@@ -6210,11 +6289,9 @@ msgstr "Имитация трёхпроходного режима"
#: backend/test.c:438
#, no-c-format
msgid ""
-"Simulate a three-pass scanner. In color mode, three frames are "
-"transmitted."
+"Simulate a three-pass scanner. In color mode, three frames are transmitted."
msgstr ""
-"Имитация трёхпроходного сканера. В цветном режиме будет передано три "
-"кадра."
+"Имитация трёхпроходного сканера. В цветном режиме будет передано три кадра."
#: backend/test.c:453
#, no-c-format
@@ -6229,9 +6306,11 @@ msgstr "Устанавливает порядок кадров в трёхпро
#: backend/test.c:487
#, no-c-format
msgid ""
-"If Automatic Document Feeder is selected, the feeder will be 'empty' "
-"after 10 scans."
+"If Automatic Document Feeder is selected, the feeder will be 'empty' after "
+"10 scans."
msgstr ""
+"Если выбрана автоматическая подача документов, устройство подачи будет "
+"«пустым» после 10 сканов."
#: backend/test.c:502
#, no-c-format
@@ -6250,14 +6329,13 @@ msgid ""
"Solid black: fills the whole scan with black.\n"
"Solid white: fills the whole scan with white.\n"
"Color pattern: draws various color test patterns depending on the mode.\n"
-"Grid: draws a black/white grid with a width and height of 10 mm per "
-"square."
+"Grid: draws a black/white grid with a width and height of 10 mm per square."
msgstr ""
"Выберите вид тестовой картинки. Доступные параметры:\n"
"Сплошной чёрный: вся область сканирования заполнена чёрным.\n"
"Сполной белый: вся область сканирования заполнена белым.\n"
-"Цветной шаблон: рисует тестовые шаблоны различными цветами, в "
-"зависимости от режима.\n"
+"Цветной шаблон: рисует тестовые шаблоны различными цветами, в зависимости от "
+"режима.\n"
"Сетка: рисует чёрно-белую сетку с размером каждого квадрата 10 на 10 мм."
#: backend/test.c:538
@@ -6268,10 +6346,13 @@ msgstr "Инвертировать порядок байт"
#: backend/test.c:539
#, no-c-format
msgid ""
-"Exchange upper and lower byte of image data in 16 bit modes. This option "
-"can be used to test the 16 bit modes of frontends, e.g. if the frontend "
-"uses the correct endianness."
+"Exchange upper and lower byte of image data in 16 bit modes. This option can "
+"be used to test the 16 bit modes of frontends, e.g. if the frontend uses the "
+"correct endianness."
msgstr ""
+"Поменять местами старший и младший байт данных изображения в 16-битных "
+"режимах. Этот пункт возможно использовать для проверки 16-битных режимов "
+"оболочек, например, для проверки правильности порядка байтов в оболочке."
#: backend/test.c:555
#, no-c-format
@@ -6291,11 +6372,9 @@ msgstr "Размер предела чтения"
#: backend/test.c:570
#, no-c-format
-msgid ""
-"The (maximum) amount of data transferred with each call to sane_read()."
+msgid "The (maximum) amount of data transferred with each call to sane_read()."
msgstr ""
-"Максимальное количество данных, передаваемых при каждом вызове "
-"sane_read()."
+"Максимальное количество данных, передаваемых при каждом вызове sane_read()."
#: backend/test.c:585
#, no-c-format
@@ -6316,8 +6395,7 @@ msgstr "Длительность задержки при чтении"
#, no-c-format
msgid ""
"How long to wait after transferring each buffer of data through the pipe."
-msgstr ""
-"Как долго ожидать после передачи каждого буфера данных через канал."
+msgstr "Как долго ожидать после передачи каждого буфера данных через канал."
#: backend/test.c:614
#, no-c-format
@@ -6327,10 +6405,13 @@ msgstr "Возвращаемое значение sane_read"
#: backend/test.c:616
#, no-c-format
msgid ""
-"Select the return-value of sane_read(). \"Default\" is the normal "
-"handling for scanning. All other status codes are for testing how the "
-"frontend handles them."
+"Select the return-value of sane_read(). \"Default\" is the normal handling "
+"for scanning. All other status codes are for testing how the frontend "
+"handles them."
msgstr ""
+"Укажите возвратное значение для sane_read(). По умолчанию — это обычная "
+"обработка сканирования. Все остальные коды состояния предназначены для "
+"проверки способов их обработки оболочкой."
#: backend/test.c:633
#, no-c-format
@@ -6353,18 +6434,21 @@ msgid ""
"Return fuzzy lines and bytes per line when sane_parameters() is called "
"before sane_start()."
msgstr ""
+"Количество возвращённых нечётких строк и байтов, когда sane_parameters() "
+"вызывается перед sane_start()."
#: backend/test.c:676
#, no-c-format
msgid "Offer select file descriptor"
-msgstr ""
+msgstr "Предлагать выбрать дескриптор файла"
#: backend/test.c:677
#, no-c-format
msgid ""
-"Offer a select filedescriptor for detecting if sane_read() will return "
-"data."
+"Offer a select filedescriptor for detecting if sane_read() will return data."
msgstr ""
+"Предлагать выбрать дескриптор файла для определения, если sane_read() "
+"возвратит данные."
#: backend/test.c:690
#, no-c-format
@@ -6374,8 +6458,8 @@ msgstr "Включить тестовые параметры"
#: backend/test.c:691
#, no-c-format
msgid ""
-"Enable various test options. This is for testing the ability of "
-"frontends to view and modify all the different SANE option types."
+"Enable various test options. This is for testing the ability of frontends to "
+"view and modify all the different SANE option types."
msgstr ""
"Включить различные тестовые параметры. Применяется для тестирования "
"способности графических оболочек просматривать и изменять различные типы "
@@ -6399,45 +6483,57 @@ msgstr "Двочные тестовые параметры"
#: backend/test.c:796
#, no-c-format
msgid "(1/6) Bool soft select soft detect"
-msgstr ""
+msgstr "(1/6) Логический программный выбор программного обеспечения"
#: backend/test.c:798
#, no-c-format
msgid ""
-"(1/6) Bool test option that has soft select and soft detect (and "
-"advanced) capabilities. That's just a normal bool option."
+"(1/6) Bool test option that has soft select and soft detect (and advanced) "
+"capabilities. That's just a normal bool option."
msgstr ""
+"(1/6) Логический параметр теста, определяющий наличие возможностей "
+"программного выбора и программного определения (с расширенными "
+"возможностями). Это обычный логический параметр."
#: backend/test.c:814
#, no-c-format
msgid "(2/6) Bool hard select soft detect"
-msgstr ""
+msgstr "(2/6) Логический аппаратный выбор программного обеспечения"
#: backend/test.c:816
#, no-c-format
msgid ""
-"(2/6) Bool test option that has hard select and soft detect (and "
-"advanced) capabilities. That means the option can't be set by the "
-"frontend but by the user (e.g. by pressing a button at the device)."
+"(2/6) Bool test option that has hard select and soft detect (and advanced) "
+"capabilities. That means the option can't be set by the frontend but by the "
+"user (e.g. by pressing a button at the device)."
msgstr ""
+"(2/6) Логический параметр теста, определяющий наличие возможностей "
+"аппаратного выбора и программного определения (с расширенными "
+"возможностями). Это означает, что параметр не может быть установлен "
+"оболочкой, только пользователем (например, нажатием кнопки на устройстве)."
#: backend/test.c:833
#, no-c-format
msgid "(3/6) Bool hard select"
-msgstr ""
+msgstr "(3/6) Логический аппаратный выбор"
#: backend/test.c:834
#, no-c-format
msgid ""
"(3/6) Bool test option that has hard select (and advanced) capabilities. "
-"That means the option can't be set by the frontend but by the user (e.g. "
-"by pressing a button at the device) and can't be read by the frontend."
+"That means the option can't be set by the frontend but by the user (e.g. by "
+"pressing a button at the device) and can't be read by the frontend."
msgstr ""
+"(3/6) Логический параметр теста, определяющий наличие возможностей "
+"аппаратного выбора (с расширенными возможностями). Это означает, что "
+"параметр не может быть установлен оболочкой, только пользователем (например, "
+"нажатием кнопки на устройстве), и оболочка не сможет считать данные при "
+"такой конфигурации."
#: backend/test.c:852
#, no-c-format
msgid "(4/6) Bool soft detect"
-msgstr ""
+msgstr "(4/6) Логический программный выбор"
#: backend/test.c:853
#, no-c-format
@@ -6445,31 +6541,41 @@ msgid ""
"(4/6) Bool test option that has soft detect (and advanced) capabilities. "
"That means the option is read-only."
msgstr ""
+"(4/6) Логический параметр теста, определяющий наличие возможностей "
+"программного определения (с расширенными возможностями). Это означает, что "
+"параметр доступен только для чтения."
#: backend/test.c:869
#, no-c-format
msgid "(5/6) Bool soft select soft detect emulated"
msgstr ""
+"(5/6) Логическая эмуляция программного выбора и программного определения"
#: backend/test.c:870
#, no-c-format
msgid ""
-"(5/6) Bool test option that has soft select, soft detect, and emulated "
-"(and advanced) capabilities."
+"(5/6) Bool test option that has soft select, soft detect, and emulated (and "
+"advanced) capabilities."
msgstr ""
+"(5/6)Логический параметр теста, определяющий наличие возможностей "
+"программного выбора, определения и эмуляции (с расширенными) возможностями."
#: backend/test.c:886
#, no-c-format
msgid "(6/6) Bool soft select soft detect auto"
msgstr ""
+"(6/6) Логический автоматический программный выбор, программное определение"
#: backend/test.c:887
#, no-c-format
msgid ""
-"(6/6) Bool test option that has soft select, soft detect, and automatic "
-"(and advanced) capabilities. This option can be automatically set by the "
-"backend."
+"(6/6) Bool test option that has soft select, soft detect, and automatic (and "
+"advanced) capabilities. This option can be automatically set by the backend."
msgstr ""
+"(6/6) Логический параметр теста, определяющий наличие возможностей "
+"программного выбора, программного определения и автоматических (и "
+"расширенных) возможностей. Этот параметр может быть автоматически установлен "
+"сервером."
#: backend/test.c:904
#, no-c-format
@@ -6479,51 +6585,58 @@ msgstr "Целочисленные тестовые параметры"
#: backend/test.c:917
#, no-c-format
msgid "(1/6) Int"
-msgstr ""
+msgstr "(1/6) Целочисленный"
#: backend/test.c:918
#, no-c-format
msgid "(1/6) Int test option with no unit and no constraint set."
msgstr ""
+"(1/6) Целочисленный параметр проверки без единиц измерения и набора "
+"ограничений."
#: backend/test.c:933
#, no-c-format
msgid "(2/6) Int constraint range"
-msgstr ""
+msgstr "(2/6) Целочисленный диапазон ограничения"
#: backend/test.c:934
#, no-c-format
msgid ""
-"(2/6) Int test option with unit pixel and constraint range set. Minimum "
-"is 4, maximum 192, and quant is 2."
+"(2/6) Int test option with unit pixel and constraint range set. Minimum is "
+"4, maximum 192, and quant is 2."
msgstr ""
+"(2/6) Целочисленный параметр с размерностью в пикселах и набором "
+"ограничений. Минимальное значение — 4, максимальное — 192, шаг — 2."
#: backend/test.c:950
#, no-c-format
msgid "(3/6) Int constraint word list"
-msgstr ""
+msgstr "(3/6) Целочисленный список ограничений слов"
#: backend/test.c:951
#, no-c-format
msgid "(3/6) Int test option with unit bits and constraint word list set."
msgstr ""
+"(3/6) Целочисленный параметр проверки с единицами измерения и набором "
+"списков ограничений слов."
#: backend/test.c:966
#, no-c-format
msgid "(4/6) Int array"
-msgstr ""
+msgstr "(4/6) Целочисленный массив"
#: backend/test.c:967
#, no-c-format
msgid ""
-"(4/6) Int test option with unit mm and using an array without "
-"constraints."
+"(4/6) Int test option with unit mm and using an array without constraints."
msgstr ""
+"(4/6) Целочисленный параметр теста с единицей измерения «миллиметры» и "
+"использованием массива без ограничений."
#: backend/test.c:982
#, no-c-format
msgid "(5/6) Int array constraint range"
-msgstr ""
+msgstr "(5/6) Целочисленный массив с диапазоном ограничения"
#: backend/test.c:983
#, no-c-format
@@ -6531,18 +6644,23 @@ msgid ""
"(5/6) Int test option with unit dpi and using an array with a range "
"constraint. Minimum is 4, maximum 192, and quant is 2."
msgstr ""
+"(5/6) Целочисленный параметр теста с размерностью в точках на дюйм с "
+"использованием массива ограничений диапазона. Минимальное значение — 4, "
+"максимальное — 192, шаг — 2."
#: backend/test.c:1057
#, no-c-format
msgid "(6/6) Int array constraint word list"
-msgstr ""
+msgstr "(6/6) Целочисленный массив со списком ограничений слов"
#: backend/test.c:1058
#, no-c-format
msgid ""
-"(6/6) Int test option with unit percent and using an array with a word "
-"list constraint."
+"(6/6) Int test option with unit percent and using an array with a word list "
+"constraint."
msgstr ""
+"(6/6) Целочисленный параметр с размерностью в процентах с использованием "
+"массива ограничений списка слов."
#: backend/test.c:1074
#, no-c-format
@@ -6552,17 +6670,19 @@ msgstr "Дробночисленные тестовые параметры"
#: backend/test.c:1087
#, no-c-format
msgid "(1/3) Fixed"
-msgstr ""
+msgstr "(1/3) Дробночисленный"
#: backend/test.c:1088
#, no-c-format
msgid "(1/3) Fixed test option with no unit and no constraint set."
msgstr ""
+"(1/3) Дробночисленный параметр проверки без единиц измерения и набора "
+"ограничений."
#: backend/test.c:1103
#, no-c-format
msgid "(2/3) Fixed constraint range"
-msgstr ""
+msgstr "(2/3) Дробночисленный диапазон ограничения"
#: backend/test.c:1104
#, no-c-format
@@ -6570,16 +6690,21 @@ msgid ""
"(2/3) Fixed test option with unit microsecond and constraint range set. "
"Minimum is -42.17, maximum 32767.9999, and quant is 2.0."
msgstr ""
+"(2/3) Дробночисленный параметр с размерностью в миллисекундах и набором "
+"ограничений. Минимальное значение — -42.17, максимальное — 32767,9999, шаг — "
+"2,0."
#: backend/test.c:1120
#, no-c-format
msgid "(3/3) Fixed constraint word list"
-msgstr ""
+msgstr "(3/3) Дробночисленный список ограничений слов"
#: backend/test.c:1121
#, no-c-format
msgid "(3/3) Fixed test option with no unit and constraint word list set."
msgstr ""
+"(3/3) Дробночисленный параметр проверки без единиц измерения и с набором "
+"списков ограничений слов."
#: backend/test.c:1136
#, no-c-format
@@ -6589,27 +6714,27 @@ msgstr "Тестовые параметры для строк"
#: backend/test.c:1149
#, no-c-format
msgid "(1/3) String"
-msgstr ""
+msgstr "(1/3) Строка"
#: backend/test.c:1150
#, no-c-format
msgid "(1/3) String test option without constraint."
-msgstr ""
+msgstr "(1/3) Параметр проверки строки без ограничений."
#: backend/test.c:1167
#, no-c-format
msgid "(2/3) String constraint string list"
-msgstr ""
+msgstr "(2/3) Ограничения строк со списком строк"
#: backend/test.c:1168
#, no-c-format
msgid "(2/3) String test option with string list constraint."
-msgstr ""
+msgstr "(2/3) Параметр проверки строки с ограничением списка строк."
#: backend/test.c:1187
#, no-c-format
msgid "(3/3) String constraint long string list"
-msgstr ""
+msgstr "(3/3) Ограничение строк с длинным списком строк"
#: backend/test.c:1188
#, no-c-format
@@ -6617,6 +6742,8 @@ msgid ""
"(3/3) String test option with string list constraint. Contains some more "
"entries..."
msgstr ""
+"(3/3) Параметр проверки строки с ограничением списка строк. Содержит чуть "
+"больше записей."
#: backend/test.c:1208
#, no-c-format
@@ -6631,7 +6758,7 @@ msgstr "(1/1) Кнопка"
#: backend/test.c:1222
#, no-c-format
msgid "(1/1) Button test option. Prints some text..."
-msgstr ""
+msgstr "(1/1) Параметр проверки кнопки. Выводит некоторый текст."
#: backend/u12.c:147
#, no-c-format
@@ -6691,12 +6818,12 @@ msgstr "Зафиксировать позицию фокуса"
#: backend/umax.c:5767
#, no-c-format
msgid "Lens calibration in doc position"
-msgstr ""
+msgstr "Калибровка линзы в области документа"
#: backend/umax.c:5768
#, no-c-format
msgid "Calibrate lens focus in document position"
-msgstr ""
+msgstr "Калибровать фокус линз в области документа"
#: backend/umax.c:5779
#, no-c-format
diff --git a/po/uk.po b/po/uk.po
index c68cc22..5023d1d 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,13 +1,13 @@
# Copyright (C) 2009
# This file is distributed under the same license as the sane-backends package.
#
-# Yuri Chornoivan <yurchor@ukr.net>, 2009-2021.
+# Yuri Chornoivan <yurchor@ukr.net>, 2009-2021, 2023.
msgid ""
msgstr ""
"Project-Id-Version: sane-backends 1.0.32\n"
"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
-"POT-Creation-Date: 2021-09-20 20:08-0700\n"
-"PO-Revision-Date: 2021-09-20 19:45+0300\n"
+"POT-Creation-Date: 2023-02-01 18:46+0200\n"
+"PO-Revision-Date: 2023-02-01 18:52+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -15,8 +15,8 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 20.12.0\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
-"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: include/sane/saneopts.h:156
#, no-c-format
@@ -28,14 +28,14 @@ msgstr "Кількість параметрів"
msgid "Standard"
msgstr "Типово"
-#: include/sane/saneopts.h:159 backend/artec_eplus48u.c:2882
+#: include/sane/saneopts.h:159 backend/artec_eplus48u.c:2873
#: backend/canon_lide70.c:416 backend/epson.c:3296 backend/epson2.c:1281
-#: backend/epsonds.c:1973 backend/genesys/genesys.cpp:4701
+#: backend/epsonds.c:1974 backend/genesys/genesys.cpp:4593
#: backend/gt68xx.c:694 backend/hp-option.c:3295 backend/hp3500.c:1017
#: backend/kvs1025_opt.c:639 backend/kvs20xx_opt.c:285
-#: backend/kvs40xx_opt.c:506 backend/leo.c:820 backend/lexmark.c:197
+#: backend/kvs40xx_opt.c:501 backend/leo.c:820 backend/lexmark.c:197
#: backend/ma1509.c:549 backend/matsushita.c:1132 backend/microtek2.h:597
-#: backend/mustek.c:4371 backend/mustek_usb.c:299 backend/mustek_usb2.c:463
+#: backend/mustek.c:4352 backend/mustek_usb.c:299 backend/mustek_usb2.c:463
#: backend/pixma/pixma_sane_options.c:161 backend/plustek.c:806
#: backend/plustek_pp.c:745 backend/sceptre.c:699
#: backend/snapscan-options.c:550 backend/teco1.c:1092 backend/teco2.c:1907
@@ -45,11 +45,11 @@ msgstr "Типово"
msgid "Geometry"
msgstr "Позиція і розміри"
-#: include/sane/saneopts.h:160 backend/artec_eplus48u.c:2803
-#: backend/canon.c:1491 backend/genesys/genesys.cpp:4744
+#: include/sane/saneopts.h:160 backend/artec_eplus48u.c:2794
+#: backend/canon.c:1507 backend/genesys/genesys.cpp:4636
#: backend/gt68xx.c:663 backend/hp-option.c:2951 backend/kvs1025_opt.c:703
#: backend/leo.c:868 backend/ma1509.c:597 backend/matsushita.c:1186
-#: backend/microtek2.h:598 backend/mustek.c:4419 backend/mustek_usb.c:347
+#: backend/microtek2.h:598 backend/mustek.c:4400 backend/mustek_usb.c:347
#: backend/mustek_usb2.c:429 backend/niash.c:751 backend/plustek.c:852
#: backend/plustek_pp.c:791 backend/sceptre.c:747
#: backend/snapscan-options.c:617 backend/stv680.c:1064
@@ -60,8 +60,8 @@ msgid "Enhancement"
msgstr "Покращення"
#: include/sane/saneopts.h:161 backend/epson.c:3195 backend/epson2.c:1206
-#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:597
-#: backend/rts8891.c:2830 backend/snapscan-options.c:923
+#: backend/kvs20xx_opt.c:366 backend/kvs40xx_opt.c:592
+#: backend/rts8891.c:2831 backend/snapscan-options.c:923
#: backend/umax.c:5563
#, no-c-format
msgid "Advanced"
@@ -87,7 +87,7 @@ msgstr "Примусовий чорно-білий перегляд"
msgid "Bit depth"
msgstr "Кількість бітів на колір"
-#: include/sane/saneopts.h:167 backend/canon.c:1138 backend/leo.c:778
+#: include/sane/saneopts.h:167 backend/canon.c:1154 backend/leo.c:778
#: backend/pixma/pixma_sane_options.c:48
#, no-c-format
msgid "Scan mode"
@@ -128,7 +128,7 @@ msgstr "Нижня права координата за X"
msgid "Bottom-right y"
msgstr "Нижня права координата за Y"
-#: include/sane/saneopts.h:175 backend/canon.c:1214
+#: include/sane/saneopts.h:175 backend/canon.c:1230
#: backend/pixma/pixma_sane_options.c:301
#, no-c-format
msgid "Scan resolution"
@@ -284,7 +284,7 @@ msgstr "Назва файла"
msgid "Halftone pattern size"
msgstr "Розмір шаблону напівтонів"
-#: include/sane/saneopts.h:206 backend/fujitsu.c:3260
+#: include/sane/saneopts.h:206 backend/fujitsu.c:3262
#, no-c-format
msgid "Halftone pattern"
msgstr "Шаблон напівтонів"
@@ -317,7 +317,7 @@ msgstr "Подвоїти оптичну роздільну здатність"
msgid "Bind RGB"
msgstr "Пов’язаний RGB"
-#: include/sane/saneopts.h:212 backend/sm3840.c:768
+#: include/sane/saneopts.h:212 backend/sm3840.c:769
#, no-c-format
msgid "Threshold"
msgstr "Поріг"
@@ -537,8 +537,7 @@ msgstr "Визначає роздільну здатність сканован
#: include/sane/saneopts.h:299
#, no-c-format
msgid "Sets the horizontal resolution of the scanned image."
-msgstr ""
-"Визначає горизонтальну роздільну здатність засканованого зображення."
+msgstr "Визначає горизонтальну роздільну здатність засканованого зображення."
#: include/sane/saneopts.h:302
#, no-c-format
@@ -561,8 +560,7 @@ msgstr "Визначає висоту носія."
#: include/sane/saneopts.h:312
#, no-c-format
-msgid ""
-"Determines whether a builtin or a custom gamma-table should be used."
+msgid "Determines whether a builtin or a custom gamma-table should be used."
msgstr "Визначає буде використано вбудовану чи нетипову таблицю гами."
#: include/sane/saneopts.h:316
@@ -664,17 +662,14 @@ msgstr ""
#: include/sane/saneopts.h:371
#, no-c-format
-msgid ""
-"Selects what green radiance level should be considered \"full green\"."
+msgid "Selects what green radiance level should be considered \"full green\"."
msgstr ""
"Визначає рівень світності зеленого, який слід вважати «цілком зеленим»."
#: include/sane/saneopts.h:374
#, no-c-format
-msgid ""
-"Selects what blue radiance level should be considered \"full blue\"."
-msgstr ""
-"Визначає рівень світності синього, який слід вважати «цілком синім»."
+msgid "Selects what blue radiance level should be considered \"full blue\"."
+msgstr "Визначає рівень світності синього, який слід вважати «цілком синім»."
#: include/sane/saneopts.h:378
#, no-c-format
@@ -716,8 +711,7 @@ msgstr ""
#: include/sane/saneopts.h:397
#, no-c-format
msgid "Use same values for X and Y resolution"
-msgstr ""
-"Використовувати однакові значення для роздільних здатностей за X та Y"
+msgstr "Використовувати однакові значення для роздільних здатностей за X та Y"
#: include/sane/saneopts.h:399
#, no-c-format
@@ -984,28 +978,28 @@ msgstr "Лампа не готова, будь ласка, повторіть с
msgid "Scanner mechanism locked for transport"
msgstr "Механізм сканера заблоковано"
-#: backend/artec_eplus48u.c:2872 backend/pnm.c:280
+#: backend/artec_eplus48u.c:2863 backend/pnm.c:280
#, no-c-format
msgid "Defaults"
msgstr "Типові"
-#: backend/artec_eplus48u.c:2874
+#: backend/artec_eplus48u.c:2865
#, no-c-format
msgid "Set default values for enhancement controls."
msgstr "Встановити типові значення для регуляторів покращення."
-#: backend/artec_eplus48u.c:2930 backend/canon.c:1609
+#: backend/artec_eplus48u.c:2921 backend/canon.c:1625
#: backend/pixma/pixma_sane_options.c:406
#, no-c-format
msgid "Calibration"
msgstr "Калібрування"
-#: backend/artec_eplus48u.c:2939
+#: backend/artec_eplus48u.c:2930
#, no-c-format
msgid "Calibrate before next scan"
msgstr "Калібрувати перед наступним скануванням"
-#: backend/artec_eplus48u.c:2941
+#: backend/artec_eplus48u.c:2932
#, no-c-format
msgid ""
"If enabled, the device will be calibrated before the next scan. "
@@ -1015,12 +1009,12 @@ msgstr ""
"скануванням. У іншому випадку калібрування виконуватиметься лише перед "
"першим скануванням."
-#: backend/artec_eplus48u.c:2952
+#: backend/artec_eplus48u.c:2943
#, no-c-format
msgid "Only perform shading-correction"
msgstr "Виконати лише коригування градації"
-#: backend/artec_eplus48u.c:2954
+#: backend/artec_eplus48u.c:2945
#, no-c-format
msgid ""
"If enabled, only the shading correction is performed during calibration. "
@@ -1032,30 +1026,29 @@ msgstr ""
"з файла налаштувань) значення для коефіцієнта підсилення, зміщення та "
"часу експозиції."
-#: backend/artec_eplus48u.c:2965
+#: backend/artec_eplus48u.c:2956
#, no-c-format
msgid "Button state"
msgstr "Стан кнопки"
-#: backend/avision.h:832
+#: backend/avision.h:831
#, no-c-format
msgid "Number of the frame to scan"
msgstr "Номер кадру для сканування"
-#: backend/avision.h:833
+#: backend/avision.h:832
#, no-c-format
msgid "Selects the number of the frame to scan"
msgstr "Визначає кількість кадрів для сканування"
-#: backend/avision.h:836
+#: backend/avision.h:835
#, no-c-format
msgid "Duplex scan"
msgstr "Двобічне сканування"
-#: backend/avision.h:837
+#: backend/avision.h:836
#, no-c-format
-msgid ""
-"Duplex scan provides a scan of the front and back side of the document"
+msgid "Duplex scan provides a scan of the front and back side of the document"
msgstr ""
"За використання двобічного сканування ви отримаєте одразу зображення "
"лицьового та зворотного боків документа"
@@ -1071,8 +1064,8 @@ msgid "Correction according to film type"
msgstr "Виправлення відповідно до типу плівки"
#: backend/canon-sane.c:732 backend/canon-sane.c:940
-#: backend/canon-sane.c:1076 backend/canon-sane.c:1314
-#: backend/canon-sane.c:1494 backend/canon-sane.c:1643 backend/canon.c:155
+#: backend/canon-sane.c:1076 backend/canon-sane.c:1293
+#: backend/canon-sane.c:1473 backend/canon-sane.c:1622 backend/canon.c:155
#, no-c-format
msgid "Fine color"
msgstr "Чистий колір"
@@ -1082,7 +1075,7 @@ msgstr "Чистий колір"
msgid "Negatives"
msgstr "Негативи"
-#: backend/canon-sane.c:1318 backend/canon.c:147
+#: backend/canon-sane.c:1297 backend/canon.c:147
#, no-c-format
msgid "Raw"
msgstr "Без обробки"
@@ -1097,7 +1090,7 @@ msgstr "Без виправлення прозорості"
msgid "Slides"
msgstr "Слайди"
-#: backend/canon.c:184 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:273
+#: backend/canon.c:184 backend/kvs1025_opt.c:180 backend/kvs40xx_opt.c:268
#: backend/matsushita.c:175
#, no-c-format
msgid "Automatic"
@@ -1257,8 +1250,7 @@ msgstr "Помилка парності SCSI"
#: backend/canon.c:502
#, no-c-format
msgid "initiator detected error message received"
-msgstr ""
-"Отримано повідомлення про помилку виявлення інструменту ініціалізації"
+msgstr "Отримано повідомлення про помилку виявлення інструменту ініціалізації"
#: backend/canon.c:507
#, no-c-format
@@ -1280,169 +1272,168 @@ msgstr "Помилка під час градації у модулі слайд
msgid "lamp not stabilized"
msgstr "Лампу не стабілізовано"
-#: backend/canon.c:845 backend/canon.c:860
+#: backend/canon.c:844 backend/canon.c:860
#, no-c-format
msgid "film scanner"
msgstr "плівковий сканер"
-#: backend/canon.c:875 backend/canon.c:890 backend/canon.c:905
-#: backend/canon.c:920 backend/hp3900_sane.c:1682 backend/plustek.c:1333
+#: backend/canon.c:876 backend/canon.c:892 backend/canon.c:907
+#: backend/canon.c:922 backend/hp3900_sane.c:1682 backend/plustek.c:1333
#: backend/plustek_pp.c:1012 backend/sceptre.c:590 backend/teco2.c:1829
#: backend/u12.c:849
#, no-c-format
msgid "flatbed scanner"
msgstr "планшетний сканер"
-#: backend/canon.c:1176 backend/epson.c:3384 backend/epson2.c:1388
+#: backend/canon.c:1192 backend/epson.c:3384 backend/epson2.c:1388
#, no-c-format
msgid "Film type"
msgstr "Тип плівки"
-#: backend/canon.c:1177
+#: backend/canon.c:1193
#, no-c-format
msgid "Selects the film type, i.e. negatives or slides"
msgstr "Визначає тип плівки, тобто негатив чи слайд"
-#: backend/canon.c:1189
+#: backend/canon.c:1205
#, no-c-format
msgid "Negative film type"
msgstr "Тип плівки негатива"
-#: backend/canon.c:1190
+#: backend/canon.c:1206
#, no-c-format
msgid "Selects the negative film type"
msgstr "Оберіть тестове зображення"
-#: backend/canon.c:1229
+#: backend/canon.c:1245
#, no-c-format
msgid "Hardware resolution"
msgstr "Апаратна роздільна здатність"
-#: backend/canon.c:1230
+#: backend/canon.c:1246
#, no-c-format
msgid "Use only hardware resolutions"
msgstr "Використовувати лише апаратні значення"
-#: backend/canon.c:1311 backend/epson2.c:1331
+#: backend/canon.c:1327 backend/epson2.c:1331
#, no-c-format
msgid "Focus"
msgstr "Фокусування"
-#: backend/canon.c:1321
+#: backend/canon.c:1337
#, no-c-format
msgid "Auto focus"
msgstr "Автоматичне фокусування"
-#: backend/canon.c:1322
+#: backend/canon.c:1338
#, no-c-format
msgid "Enable/disable auto focus"
msgstr "Увімкнути/Вимкнути автоматичне фокусування"
-#: backend/canon.c:1329
+#: backend/canon.c:1345
#, no-c-format
msgid "Auto focus only once"
msgstr "Одноразове автофокусування"
-#: backend/canon.c:1330
+#: backend/canon.c:1346
#, no-c-format
msgid "Do auto focus only once between ejects"
msgstr "Виконувати автоматичне фокусування лише раз між виштовхуваннями"
-#: backend/canon.c:1338
+#: backend/canon.c:1354
#, no-c-format
msgid "Manual focus position"
msgstr "Визначення позиції фокуса вручну"
-#: backend/canon.c:1339
+#: backend/canon.c:1355
#, no-c-format
msgid "Set the optical system's focus position by hand (default: 128)."
msgstr ""
"Встановити позицію фокусування оптичної системи вручну (типове значення: "
"128)."
-#: backend/canon.c:1349
+#: backend/canon.c:1365
#, no-c-format
msgid "Scan margins"
msgstr "Поля області сканування"
-#: backend/canon.c:1396
+#: backend/canon.c:1412
#, no-c-format
msgid "Extra color adjustments"
msgstr "Додаткова корекція кольорів"
-#: backend/canon.c:1531 backend/epson.c:3203 backend/epson2.c:1245
-#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:826
+#: backend/canon.c:1547 backend/epson.c:3203 backend/epson2.c:1245
+#: backend/kvs1025.h:55 backend/kvs40xx_opt.c:821
#, no-c-format
msgid "Mirror image"
msgstr "Віддзеркалити зображення"
-#: backend/canon.c:1532
+#: backend/canon.c:1548
#, no-c-format
msgid "Mirror the image horizontally"
msgstr "Віддзеркалити зображення горизонтально."
-#: backend/canon.c:1601
+#: backend/canon.c:1617
#, no-c-format
msgid "Auto exposure"
msgstr "Автоекспозиція"
-#: backend/canon.c:1602
+#: backend/canon.c:1618
#, no-c-format
msgid "Enable/disable the auto exposure feature"
msgstr "Увімкнути/Вимкнути можливість автоекспонування"
-#: backend/canon.c:1618
+#: backend/canon.c:1634
#, no-c-format
msgid "Calibration now"
msgstr "Калібрування"
-#: backend/canon.c:1619
+#: backend/canon.c:1635
#, no-c-format
msgid "Execute calibration *now*"
msgstr "Виконати калібрування негайно"
-#: backend/canon.c:1629
+#: backend/canon.c:1645
#, no-c-format
msgid "Self diagnosis"
msgstr "Самодіагностика"
-#: backend/canon.c:1630
+#: backend/canon.c:1646
#, no-c-format
msgid "Perform scanner self diagnosis"
msgstr "Виконати самодіагностику сканера"
-#: backend/canon.c:1641
+#: backend/canon.c:1657
#, no-c-format
msgid "Reset scanner"
msgstr "Скинути параметри сканера"
-#: backend/canon.c:1642
+#: backend/canon.c:1658
#, no-c-format
msgid "Reset the scanner"
msgstr "Скинути параметри сканера"
-#: backend/canon.c:1652
+#: backend/canon.c:1668
#, no-c-format
msgid "Medium handling"
msgstr "Обробка носіїв"
-#: backend/canon.c:1661
+#: backend/canon.c:1677
#, no-c-format
msgid "Eject film after each scan"
msgstr "Виштовхувати плівку після кожного сканування"
-#: backend/canon.c:1662
+#: backend/canon.c:1678
#, no-c-format
msgid "Automatically eject the film from the device after each scan"
-msgstr ""
-"Автоматично виштовхувати плівку з пристрою після кожного сканування"
+msgstr "Автоматично виштовхувати плівку з пристрою після кожного сканування"
-#: backend/canon.c:1673
+#: backend/canon.c:1689
#, no-c-format
msgid "Eject film before exit"
msgstr "Виштовхувати плівку перед завершенням роботи"
-#: backend/canon.c:1674
+#: backend/canon.c:1690
#, no-c-format
msgid ""
"Automatically eject the film from the device before exiting the program"
@@ -1450,73 +1441,72 @@ msgstr ""
"Автоматично виштовхувати плівку з пристрою перед завершенням роботи "
"програми"
-#: backend/canon.c:1683
+#: backend/canon.c:1699
#, no-c-format
msgid "Eject film now"
msgstr "Виштовхнути плівку"
-#: backend/canon.c:1684
+#: backend/canon.c:1700
#, no-c-format
msgid "Eject the film *now*"
msgstr "Виштовхнути плівку *негайно*"
-#: backend/canon.c:1693
+#: backend/canon.c:1709
#, no-c-format
msgid "Document feeder extras"
msgstr "Додаткові інструменти подачі"
-#: backend/canon.c:1700
+#: backend/canon.c:1716
#, no-c-format
msgid "Flatbed only"
msgstr "Лише планшетний"
-#: backend/canon.c:1701
+#: backend/canon.c:1717
#, no-c-format
msgid "Disable auto document feeder and use flatbed only"
-msgstr ""
-"Вимкнути автоматичну подачу, використовувати лише планшетний механізм"
+msgstr "Вимкнути автоматичну подачу, використовувати лише планшетний механізм"
-#: backend/canon.c:1711 backend/canon.c:1721
+#: backend/canon.c:1727 backend/canon.c:1737
#, no-c-format
msgid "Transparency unit"
msgstr "Модуль для слайдів"
-#: backend/canon.c:1722
+#: backend/canon.c:1738
#, no-c-format
msgid "Switch on/off the transparency unit (FAU, film adapter unit)"
msgstr "Увімкнути/Вимкнути модуль для слайдів (FAU, film adapter unit)"
-#: backend/canon.c:1732
+#: backend/canon.c:1748
#, no-c-format
msgid "Negative film"
msgstr "Негатив"
-#: backend/canon.c:1733
+#: backend/canon.c:1749
#, no-c-format
msgid "Positive or negative film"
msgstr "Позитивною чи негативною є плівка"
-#: backend/canon.c:1742
+#: backend/canon.c:1758
#, no-c-format
msgid "Density control"
msgstr "Керування щільністю"
-#: backend/canon.c:1743
+#: backend/canon.c:1759
#, no-c-format
msgid "Set density control mode"
msgstr "Встановити режим керування щільністю"
-#: backend/canon.c:1754
+#: backend/canon.c:1770
#, no-c-format
msgid "Transparency ratio"
msgstr "Співвідношення прозорості"
-#: backend/canon.c:1768
+#: backend/canon.c:1784
#, no-c-format
msgid "Select film type"
msgstr "Оберіть тип плівки"
-#: backend/canon.c:1769
+#: backend/canon.c:1785
#, no-c-format
msgid "Select the film type"
msgstr "Визначає тип плівки"
@@ -1561,10 +1551,10 @@ msgstr "Виправлення гами"
msgid "Selects the gamma corrected transfer curve"
msgstr "Визначити криву виправлення гами"
-#: backend/canon_dr.c:429 backend/epjitsu.c:231 backend/epson.c:499
+#: backend/canon_dr.c:434 backend/epjitsu.c:241 backend/epson.c:499
#: backend/epson2-ops.c:101 backend/epson2.c:111 backend/epsonds-ops.c:31
-#: backend/epsonds.c:1319 backend/epsonds.h:65 backend/epsonds.h:69
-#: backend/fujitsu.c:683 backend/genesys/genesys.h:76 backend/gt68xx.c:146
+#: backend/epsonds.c:1323 backend/epsonds.h:65 backend/epsonds.h:69
+#: backend/fujitsu.c:688 backend/genesys/genesys.h:55 backend/gt68xx.c:146
#: backend/hp3900_sane.c:417 backend/hp3900_sane.c:426
#: backend/hp3900_sane.c:1016 backend/hp5590.c:90 backend/kodakaio.c:617
#: backend/ma1509.c:106 backend/magicolor.c:181 backend/mustek.c:154
@@ -1575,85 +1565,85 @@ msgstr "Визначити криву виправлення гами"
msgid "Flatbed"
msgstr "Планшет"
-#: backend/canon_dr.c:430 backend/epjitsu.c:232 backend/epsonds-ops.c:32
-#: backend/epsonds.c:1320 backend/epsonds.h:70 backend/fujitsu.c:684
+#: backend/canon_dr.c:435 backend/epjitsu.c:242 backend/epsonds-ops.c:32
+#: backend/epsonds.c:1324 backend/epsonds.h:70 backend/fujitsu.c:689
#: backend/kodak.c:138
#, no-c-format
msgid "ADF Front"
msgstr "Перед протяжного механізму"
-#: backend/canon_dr.c:431 backend/epjitsu.c:233 backend/fujitsu.c:685
+#: backend/canon_dr.c:436 backend/epjitsu.c:243 backend/fujitsu.c:690
#: backend/kodak.c:139
#, no-c-format
msgid "ADF Back"
msgstr "Зворот протяжного механізму"
-#: backend/canon_dr.c:432 backend/epjitsu.c:234 backend/epsonds-ops.c:33
-#: backend/epsonds.c:1321 backend/epsonds.h:71 backend/fujitsu.c:686
+#: backend/canon_dr.c:437 backend/epjitsu.c:244 backend/epsonds-ops.c:33
+#: backend/epsonds.c:1325 backend/epsonds.h:71 backend/fujitsu.c:691
#: backend/hp5590.c:92 backend/kodak.c:140 backend/pixma/pixma.c:1007
#, no-c-format
msgid "ADF Duplex"
msgstr "Двобічна АПД"
-#: backend/canon_dr.c:433 backend/fujitsu.c:687
+#: backend/canon_dr.c:438 backend/fujitsu.c:692
#, no-c-format
msgid "Card Front"
msgstr "Картка (профіль)"
-#: backend/canon_dr.c:434 backend/fujitsu.c:688
+#: backend/canon_dr.c:439 backend/fujitsu.c:693
#, no-c-format
msgid "Card Back"
msgstr "Картка (зворот)"
-#: backend/canon_dr.c:435 backend/fujitsu.c:689
+#: backend/canon_dr.c:440 backend/fujitsu.c:694
#, no-c-format
msgid "Card Duplex"
msgstr "Картка (обидва боки)"
-#: backend/canon_dr.c:442 backend/epson.c:597 backend/epson.c:3094
-#: backend/epson2.c:191 backend/fujitsu.c:706
-#: backend/genesys/genesys.cpp:117 backend/genesys/genesys.cpp:124
+#: backend/canon_dr.c:447 backend/epson.c:597 backend/epson.c:3094
+#: backend/epson2.c:191 backend/fujitsu.c:711
+#: backend/genesys/genesys.cpp:96 backend/genesys/genesys.cpp:103
#: backend/gt68xx_low.h:134 backend/hp-option.c:3091
#, no-c-format
msgid "Red"
msgstr "Червоний"
-#: backend/canon_dr.c:443 backend/epson.c:598 backend/epson.c:3090
-#: backend/epson2.c:192 backend/fujitsu.c:707
-#: backend/genesys/genesys.cpp:118 backend/genesys/genesys.cpp:125
+#: backend/canon_dr.c:448 backend/epson.c:598 backend/epson.c:3090
+#: backend/epson2.c:192 backend/fujitsu.c:712
+#: backend/genesys/genesys.cpp:97 backend/genesys/genesys.cpp:104
#: backend/gt68xx_low.h:135 backend/hp-option.c:3092
#, no-c-format
msgid "Green"
msgstr "Зелений"
-#: backend/canon_dr.c:444 backend/epson.c:599 backend/epson.c:3098
-#: backend/epson2.c:193 backend/fujitsu.c:708
-#: backend/genesys/genesys.cpp:119 backend/genesys/genesys.cpp:126
+#: backend/canon_dr.c:449 backend/epson.c:599 backend/epson.c:3098
+#: backend/epson2.c:193 backend/fujitsu.c:713
+#: backend/genesys/genesys.cpp:98 backend/genesys/genesys.cpp:105
#: backend/gt68xx_low.h:136 backend/hp-option.c:3093
#, no-c-format
msgid "Blue"
msgstr "Синій"
-#: backend/canon_dr.c:445
+#: backend/canon_dr.c:450
#, no-c-format
msgid "Enhance Red"
msgstr "Покращити червоний"
-#: backend/canon_dr.c:446
+#: backend/canon_dr.c:451
#, no-c-format
msgid "Enhance Green"
msgstr "Покращити зелений"
-#: backend/canon_dr.c:447
+#: backend/canon_dr.c:452
#, no-c-format
msgid "Enhance Blue"
msgstr "Покращити синій"
-#: backend/canon_dr.c:449 backend/epson.c:554 backend/epson.c:562
+#: backend/canon_dr.c:454 backend/epson.c:554 backend/epson.c:562
#: backend/epson.c:574 backend/epson.c:596 backend/epson2.c:155
#: backend/epson2.c:163 backend/epson2.c:175 backend/epson2.c:190
-#: backend/epson2.c:204 backend/fujitsu.c:712
-#: backend/genesys/genesys.cpp:127 backend/leo.c:106
+#: backend/epson2.c:204 backend/fujitsu.c:717
+#: backend/genesys/genesys.cpp:106 backend/leo.c:106
#: backend/matsushita.c:135 backend/matsushita.c:156
#: backend/matsushita.c:188 backend/matsushita.c:210
#: backend/snapscan-options.c:91
@@ -1661,28 +1651,63 @@ msgstr "Покращити синій"
msgid "None"
msgstr "Немає"
-#: backend/canon_dr.c:450 backend/fujitsu.c:713
+#: backend/canon_dr.c:455 backend/fujitsu.c:718
#, no-c-format
msgid "JPEG"
msgstr "JPEG"
-#: backend/canon_dr.c:2623 backend/fujitsu.c:4140 backend/kvs1025_opt.c:910
+#: backend/canon_dr.c:457
+#, no-c-format
+msgid "8x12"
+msgstr "8x12"
+
+#: backend/canon_dr.c:458
+#, no-c-format
+msgid "12x12"
+msgstr "12x12"
+
+#: backend/canon_dr.c:460
+#, no-c-format
+msgid "Black-on-White"
+msgstr "Чорне на білому"
+
+#: backend/canon_dr.c:461
+#, no-c-format
+msgid "Black-on-Image"
+msgstr "Чорне на зображенні"
+
+#: backend/canon_dr.c:462
+#, no-c-format
+msgid "White-on-Black"
+msgstr "Біле на чорному"
+
+#: backend/canon_dr.c:2784 backend/fujitsu.c:4142 backend/kvs1025_opt.c:910
#, no-c-format
msgid "Software blank skip percentage"
msgstr "Порогове значення порожніх сторінок для програмного відкидання"
-#: backend/canon_dr.c:2624 backend/fujitsu.c:4141
+#: backend/canon_dr.c:2785 backend/fujitsu.c:4143
#, no-c-format
msgid "Request driver to discard pages with low percentage of dark pixels"
msgstr ""
"Вимагати від драйвера відкидання сторінок з надто низькою питомою "
"кількістю темних пікселів"
+#: backend/canon_dr.c:2904
+#, no-c-format
+msgid "Imprinter Options"
+msgstr "Параметри наддруку"
+
+#: backend/canon_dr.c:2905
+#, no-c-format
+msgid "Controls for imprinter units"
+msgstr "Керування одиницям наддруку"
+
#: backend/canon_lide70.c:342 backend/epson.c:2811 backend/epson2.c:967
-#: backend/genesys/genesys.cpp:4632 backend/gt68xx.c:449
+#: backend/genesys/genesys.cpp:4524 backend/gt68xx.c:449
#: backend/hp-option.c:2912 backend/kvs1025_opt.c:521
-#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:320 backend/ma1509.c:499
-#: backend/matsushita.c:1081 backend/microtek2.h:596 backend/mustek.c:4213
+#: backend/kvs20xx_opt.c:171 backend/kvs40xx_opt.c:315 backend/ma1509.c:499
+#: backend/matsushita.c:1081 backend/microtek2.h:596 backend/mustek.c:4194
#: backend/mustek_usb.c:254 backend/mustek_usb2.c:342 backend/niash.c:731
#: backend/plustek.c:719 backend/plustek_pp.c:656 backend/sceptre.c:670
#: backend/snapscan-options.c:354 backend/stv680.c:1027
@@ -1711,7 +1736,7 @@ msgid "Simplex"
msgstr "Однобічна"
#: backend/epson.c:490 backend/epson2.c:105 backend/kodakaio.c:612
-#: backend/kvs1025.h:50 backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:353
+#: backend/kvs1025.h:50 backend/kvs20xx_opt.c:204 backend/kvs40xx_opt.c:348
#: backend/magicolor.c:175 backend/matsushita.h:212
#, no-c-format
msgid "Duplex"
@@ -1838,7 +1863,7 @@ msgstr "Струминні принтери"
msgid "CRT monitors"
msgstr "Монітори з ЕПТ"
-#: backend/epson.c:654 backend/epson2.c:244 backend/fujitsu.c:696
+#: backend/epson.c:654 backend/epson2.c:244 backend/fujitsu.c:701
#: backend/hp-option.c:3224 backend/test.c:147
#, no-c-format
msgid "Default"
@@ -1885,14 +1910,14 @@ msgid "A5 landscape"
msgstr "A5 альбомна"
#: backend/epson.c:758 backend/kvs1025_opt.c:103 backend/kvs20xx_opt.c:77
-#: backend/kvs40xx_opt.c:131 backend/kvs40xx_opt.c:148
+#: backend/kvs40xx_opt.c:126 backend/kvs40xx_opt.c:143
#, no-c-format
msgid "Letter"
msgstr "Letter"
#: backend/epson.c:759 backend/kvs1025_opt.c:100 backend/kvs20xx_opt.c:74
-#: backend/kvs20xx_opt.c:302 backend/kvs40xx_opt.c:128
-#: backend/kvs40xx_opt.c:145 backend/kvs40xx_opt.c:526
+#: backend/kvs20xx_opt.c:302 backend/kvs40xx_opt.c:123
+#: backend/kvs40xx_opt.c:140 backend/kvs40xx_opt.c:521
#, no-c-format
msgid "A4"
msgstr "A4"
@@ -2029,7 +2054,7 @@ msgstr "Визначає рівень синього"
msgid "Mirror the image."
msgstr "Віддзеркалити зображення."
-#: backend/epson.c:3230 backend/mustek.c:4342
+#: backend/epson.c:3230 backend/mustek.c:4323
#, no-c-format
msgid "Fast preview"
msgstr "Швидкий перегляд"
@@ -2064,17 +2089,17 @@ msgstr "Визначає масштаб, який буде використан
msgid "Quick format"
msgstr "Швидке форматування"
-#: backend/epson.c:3358 backend/epson2.c:1364 backend/epsonds.c:2022
+#: backend/epson.c:3358 backend/epson2.c:1364 backend/epsonds.c:2023
#, no-c-format
msgid "Optional equipment"
msgstr "Додаткове устаткування"
-#: backend/epson.c:3429 backend/epson2.c:1401 backend/epsonds.c:2038
+#: backend/epson.c:3429 backend/epson2.c:1401 backend/epsonds.c:2039
#, no-c-format
msgid "Eject"
msgstr "Виштовхнути"
-#: backend/epson.c:3430 backend/epson2.c:1402 backend/epsonds.c:2039
+#: backend/epson.c:3430 backend/epson2.c:1402 backend/epsonds.c:2040
#, no-c-format
msgid "Eject the sheet in the ADF"
msgstr "Виштовхнути аркуш з протяжного пристрою"
@@ -2089,13 +2114,13 @@ msgstr "Автовиштовхування"
msgid "Eject document after scanning"
msgstr "Виштовхнути документ після сканування"
-#: backend/epson.c:3455 backend/epson2.c:1424 backend/kodakaio.c:2859
+#: backend/epson.c:3455 backend/epson2.c:1424 backend/kodakaio.c:2857
#: backend/magicolor.c:2454
#, no-c-format
msgid "ADF Mode"
msgstr "Режим протяжного пристрою"
-#: backend/epson.c:3457 backend/epson2.c:1426 backend/kodakaio.c:2861
+#: backend/epson.c:3457 backend/epson2.c:1426 backend/kodakaio.c:2859
#: backend/magicolor.c:2456
#, no-c-format
msgid "Selects the ADF mode (simplex/duplex)"
@@ -2128,8 +2153,7 @@ msgstr "Позиція фокусування"
#: backend/epson.h:71 backend/epson2.h:75
#, no-c-format
-msgid ""
-"Sets the focus position to either the glass or 2.5mm above the glass"
+msgid "Sets the focus position to either the glass or 2.5mm above the glass"
msgstr ""
"Визначає позицію фокусування на рівень від поверхні скла до висоти 2,5 "
"мм над склом"
@@ -2178,384 +2202,383 @@ msgstr "Вбудований профіль CCT"
msgid "User defined CCT profile"
msgstr "Визначений користувачем профіль CCT"
-#: backend/epsonds.c:2046
+#: backend/epsonds.c:2047
#, no-c-format
msgid "Load"
msgstr "Завантажити"
-#: backend/epsonds.c:2047
+#: backend/epsonds.c:2048
#, no-c-format
msgid "Load a sheet in the ADF"
msgstr "Завантажити аркуш до протяжного пристрою"
-#: backend/epsonds.c:2055
+#: backend/epsonds.c:2056
#, no-c-format
msgid "ADF Skew Correction"
msgstr "Виправлення нахилу у протяжному пристрої"
-#: backend/epsonds.c:2057
+#: backend/epsonds.c:2058
#, no-c-format
msgid "Enables ADF skew correction"
msgstr "Вмикає виправлення нахилу у протяжному пристрої"
-#: backend/epsonds.c:2063
+#: backend/epsonds.c:2064
#, no-c-format
msgid "ADF CRP Correction"
msgstr "Виправлення обрізання у протяжному пристрої"
-#: backend/epsonds.c:2065
+#: backend/epsonds.c:2066
#, no-c-format
msgid "Enables ADF auto cropping"
msgstr "Вмикає виправлення автообрізання у протяжному пристрої"
-#: backend/fujitsu.c:697 backend/hp-option.c:3325 backend/hp-option.c:3338
+#: backend/fujitsu.c:702 backend/hp-option.c:3325 backend/hp-option.c:3338
#, no-c-format
msgid "On"
msgstr "Увімкнути"
-#: backend/fujitsu.c:698 backend/hp-option.c:3157 backend/hp-option.c:3324
+#: backend/fujitsu.c:703 backend/hp-option.c:3157 backend/hp-option.c:3324
#: backend/hp-option.c:3337
#, no-c-format
msgid "Off"
msgstr "Вимкнути"
-#: backend/fujitsu.c:700
+#: backend/fujitsu.c:705
#, no-c-format
msgid "DTC"
msgstr "DTC"
-#: backend/fujitsu.c:701
+#: backend/fujitsu.c:706
#, no-c-format
msgid "SDTC"
msgstr "SDTC"
-#: backend/fujitsu.c:703 backend/teco1.c:1149 backend/teco1.c:1150
+#: backend/fujitsu.c:708 backend/teco1.c:1149 backend/teco1.c:1150
#: backend/teco2.c:1964 backend/teco2.c:1965 backend/teco3.c:974
#: backend/teco3.c:975
#, no-c-format
msgid "Dither"
msgstr "Дизеринг"
-#: backend/fujitsu.c:704
+#: backend/fujitsu.c:709
#, no-c-format
msgid "Diffusion"
msgstr "Дифузія"
-#: backend/fujitsu.c:709
+#: backend/fujitsu.c:714
#, no-c-format
msgid "White"
msgstr "Білий"
-#: backend/fujitsu.c:710
+#: backend/fujitsu.c:715
#, no-c-format
msgid "Black"
msgstr "Чорний"
-#: backend/fujitsu.c:715
+#: backend/fujitsu.c:720
#, no-c-format
msgid "Continue"
msgstr "Продовжити"
-#: backend/fujitsu.c:716
+#: backend/fujitsu.c:721
#, no-c-format
msgid "Stop"
msgstr "Зупинити"
-#: backend/fujitsu.c:718
+#: backend/fujitsu.c:723
#, no-c-format
msgid "10mm"
msgstr "10мм"
-#: backend/fujitsu.c:719
+#: backend/fujitsu.c:724
#, no-c-format
msgid "15mm"
msgstr "15мм"
-#: backend/fujitsu.c:720
+#: backend/fujitsu.c:725
#, no-c-format
msgid "20mm"
msgstr "20мм"
-#: backend/fujitsu.c:722 backend/hp-option.c:3043
+#: backend/fujitsu.c:727 backend/hp-option.c:3043
#, no-c-format
msgid "Horizontal"
msgstr "По горизонталі"
-#: backend/fujitsu.c:723
+#: backend/fujitsu.c:728
#, no-c-format
msgid "Horizontal bold"
msgstr "Жирний по горизонталі"
-#: backend/fujitsu.c:724
+#: backend/fujitsu.c:729
#, no-c-format
msgid "Horizontal narrow"
msgstr "Вузький по горизонталі"
-#: backend/fujitsu.c:725 backend/hp-option.c:3042
+#: backend/fujitsu.c:730 backend/hp-option.c:3042
#, no-c-format
msgid "Vertical"
msgstr "По вертикалі"
-#: backend/fujitsu.c:726
+#: backend/fujitsu.c:731
#, no-c-format
msgid "Vertical bold"
msgstr "Жирний по вертикалі"
-#: backend/fujitsu.c:728
+#: backend/fujitsu.c:733
#, no-c-format
msgid "Top to bottom"
msgstr "Згори вниз"
-#: backend/fujitsu.c:729
+#: backend/fujitsu.c:734
#, no-c-format
msgid "Bottom to top"
msgstr "Знизу догори"
-#: backend/fujitsu.c:731
+#: backend/fujitsu.c:736
#, no-c-format
msgid "Front"
msgstr "Перед"
-#: backend/fujitsu.c:732
+#: backend/fujitsu.c:737
#, no-c-format
msgid "Back"
msgstr "Зворот"
-#: backend/fujitsu.c:3171 backend/pixma/pixma_sane_options.c:146
+#: backend/fujitsu.c:3173 backend/pixma/pixma_sane_options.c:146
#, no-c-format
msgid "Gamma function exponent"
msgstr "Показник функції гами"
-#: backend/fujitsu.c:3172 backend/pixma/pixma_sane_options.c:147
+#: backend/fujitsu.c:3174 backend/pixma/pixma_sane_options.c:147
#, no-c-format
msgid "Changes intensity of midtones"
msgstr "Змінює інтенсивність напівтонів"
-#: backend/fujitsu.c:3221
+#: backend/fujitsu.c:3223
#, no-c-format
msgid "RIF"
msgstr "RIF"
-#: backend/fujitsu.c:3222
+#: backend/fujitsu.c:3224
#, no-c-format
msgid "Reverse image format"
msgstr "Інверсивний формат зображення"
-#: backend/fujitsu.c:3239
+#: backend/fujitsu.c:3241
#, no-c-format
msgid "Halftone type"
msgstr "Тип півтонів"
-#: backend/fujitsu.c:3240
+#: backend/fujitsu.c:3242
#, no-c-format
msgid "Control type of halftone filter"
msgstr "Керування типом фільтра півтонів"
-#: backend/fujitsu.c:3261
+#: backend/fujitsu.c:3263
#, no-c-format
msgid "Control pattern of halftone filter"
msgstr "Керування взірцем фільтра півтонів"
-#: backend/fujitsu.c:3283
+#: backend/fujitsu.c:3285
#, no-c-format
msgid "Outline"
msgstr "Контур"
-#: backend/fujitsu.c:3284
+#: backend/fujitsu.c:3286
#, no-c-format
msgid "Perform outline extraction"
msgstr "Виконати видобування контуру"
-#: backend/fujitsu.c:3295
+#: backend/fujitsu.c:3297
#, no-c-format
msgid "Emphasis"
msgstr "Виокремлення"
-#: backend/fujitsu.c:3296
+#: backend/fujitsu.c:3298
#, no-c-format
msgid "Negative to smooth or positive to sharpen image"
msgstr ""
"Негатив для згладжування або позитив для збільшення різкості зображення"
-#: backend/fujitsu.c:3314
+#: backend/fujitsu.c:3316
#, no-c-format
msgid "Separation"
msgstr "Розділення"
-#: backend/fujitsu.c:3315
+#: backend/fujitsu.c:3317
#, no-c-format
msgid "Enable automatic separation of image and text"
msgstr "Увімкнути автоматичне відокремлення зображень і тексту"
-#: backend/fujitsu.c:3326
+#: backend/fujitsu.c:3328
#, no-c-format
msgid "Mirroring"
msgstr "Віддзеркалення"
-#: backend/fujitsu.c:3327
+#: backend/fujitsu.c:3329
#, no-c-format
msgid "Reflect output image horizontally"
msgstr "Віддзеркалити отримане зображення по горизонталі"
-#: backend/fujitsu.c:3344
+#: backend/fujitsu.c:3346
#, no-c-format
msgid "White level follower"
msgstr "Відповідник рівня білого"
-#: backend/fujitsu.c:3345
+#: backend/fujitsu.c:3347
#, no-c-format
msgid "Control white level follower"
msgstr "Керує відповідником рівня білого"
-#: backend/fujitsu.c:3363
+#: backend/fujitsu.c:3365
#, no-c-format
msgid "BP filter"
msgstr "Фільтр СП"
-#: backend/fujitsu.c:3364
+#: backend/fujitsu.c:3366
#, no-c-format
msgid "Improves quality of high resolution ball-point pen text"
msgstr "Поліпшує якість тексту, написаного кульковою ручкою"
-#: backend/fujitsu.c:3380 backend/hp-option.h:68
+#: backend/fujitsu.c:3382 backend/hp-option.h:68
#, no-c-format
msgid "Smoothing"
msgstr "Згладжування"
-#: backend/fujitsu.c:3381
+#: backend/fujitsu.c:3383
#, no-c-format
msgid "Enable smoothing for improved OCR"
msgstr "Увімкнути згладжування для поліпшення ОРТ"
-#: backend/fujitsu.c:3397
+#: backend/fujitsu.c:3399
#, no-c-format
msgid "Gamma curve"
msgstr "Крива гами"
-#: backend/fujitsu.c:3398
+#: backend/fujitsu.c:3400
#, no-c-format
msgid "Gamma curve, from light to dark, but upper two may not work"
msgstr ""
"Крива гами, від світлого до темного, але верхні дві можуть не працювати"
-#: backend/fujitsu.c:3420 backend/pixma/pixma_sane_options.c:378
+#: backend/fujitsu.c:3422 backend/pixma/pixma_sane_options.c:378
#, no-c-format
msgid "Threshold curve"
msgstr "Порогова крива"
-#: backend/fujitsu.c:3421
+#: backend/fujitsu.c:3423
#, no-c-format
-msgid ""
-"Threshold curve, from light to dark, but upper two may not be linear"
+msgid "Threshold curve, from light to dark, but upper two may not be linear"
msgstr ""
"Порогова крива, від світлого до темного, але верхні дві не можуть бути "
"лінійними"
-#: backend/fujitsu.c:3443
+#: backend/fujitsu.c:3445
#, no-c-format
msgid "Threshold white"
msgstr "Білий поріг"
-#: backend/fujitsu.c:3444
+#: backend/fujitsu.c:3446
#, no-c-format
msgid "Set pixels equal to threshold to white instead of black"
msgstr "Встановити для порогових пікселів білий колір, а не чорний"
-#: backend/fujitsu.c:3460 backend/fujitsu.c:3461
+#: backend/fujitsu.c:3462 backend/fujitsu.c:3463
#, no-c-format
msgid "Noise removal"
msgstr "Вилучення шуму"
-#: backend/fujitsu.c:3477
+#: backend/fujitsu.c:3479
#, no-c-format
msgid "Matrix 5x5"
msgstr "Матриця 5x5"
-#: backend/fujitsu.c:3478
+#: backend/fujitsu.c:3480
#, no-c-format
msgid "Remove 5 pixel square noise"
msgstr "Вилучати піксельний шум розміром до 5 пікселів"
-#: backend/fujitsu.c:3494
+#: backend/fujitsu.c:3496
#, no-c-format
msgid "Matrix 4x4"
msgstr "Матриця 4x4"
-#: backend/fujitsu.c:3495
+#: backend/fujitsu.c:3497
#, no-c-format
msgid "Remove 4 pixel square noise"
msgstr "Вилучати піксельний шум розміром до 4 пікселів"
-#: backend/fujitsu.c:3511
+#: backend/fujitsu.c:3513
#, no-c-format
msgid "Matrix 3x3"
msgstr "Матриця 3x3"
-#: backend/fujitsu.c:3512
+#: backend/fujitsu.c:3514
#, no-c-format
msgid "Remove 3 pixel square noise"
msgstr "Вилучати піксельний шум розміром до 3 пікселів"
-#: backend/fujitsu.c:3528
+#: backend/fujitsu.c:3530
#, no-c-format
msgid "Matrix 2x2"
msgstr "Матриця 2x2"
-#: backend/fujitsu.c:3529
+#: backend/fujitsu.c:3531
#, no-c-format
msgid "Remove 2 pixel square noise"
msgstr "Вилучати піксельний шум розміром до 2 пікселів"
-#: backend/fujitsu.c:3548
+#: backend/fujitsu.c:3550
#, no-c-format
msgid "Variance"
msgstr "Дисперсія"
-#: backend/fujitsu.c:3549
+#: backend/fujitsu.c:3551
#, no-c-format
msgid "Set SDTC variance rate (sensitivity), 0 equals 127"
msgstr "Встановити величину дисперсії SDTC (чутливість), 0 відповідає 127"
-#: backend/fujitsu.c:3582
+#: backend/fujitsu.c:3584
#, no-c-format
msgid "Auto width detection"
msgstr "Автовиявлення ширини"
-#: backend/fujitsu.c:3583
+#: backend/fujitsu.c:3585
#, no-c-format
msgid "Scanner detects paper sides. May reduce scanning speed."
msgstr "Сканер визначає краї паперу. Може уповільнити сканування."
-#: backend/fujitsu.c:3600
+#: backend/fujitsu.c:3602
#, no-c-format
msgid "Auto length detection"
msgstr "Автовиявлення довжини"
-#: backend/fujitsu.c:3601
+#: backend/fujitsu.c:3603
#, no-c-format
msgid "Scanner detects paper lower edge. May confuse some frontends."
msgstr ""
"Сканер виявляє нижній край паперу. Може призвести до помилкової роботи "
"деяких програмних оболонок."
-#: backend/fujitsu.c:3627
+#: backend/fujitsu.c:3629
#, no-c-format
msgid "Compression"
msgstr "Стиснення"
-#: backend/fujitsu.c:3628
+#: backend/fujitsu.c:3630
#, no-c-format
msgid "Enable compressed data. May crash your front-end program"
msgstr ""
"Увімкнути стискання даних. Може призвести до аварійного завершення "
"роботи програмних оболонок."
-#: backend/fujitsu.c:3648
+#: backend/fujitsu.c:3650
#, no-c-format
msgid "Compression argument"
msgstr "Аргумент стискання"
-#: backend/fujitsu.c:3649
+#: backend/fujitsu.c:3651
#, no-c-format
msgid ""
"Level of JPEG compression. 1 is small file, 7 is large file. 0 (default) "
@@ -2564,120 +2587,119 @@ msgstr ""
"Рівень стискання JPEG. 1 — малий файл, 7 — великий файл. 0 (типовий) — "
"те саме, що і 4."
-#: backend/fujitsu.c:3679
+#: backend/fujitsu.c:3681
#, no-c-format
msgid "DF action"
msgstr "Дія ПП"
-#: backend/fujitsu.c:3680
+#: backend/fujitsu.c:3682
#, no-c-format
msgid "Action following double feed error"
msgstr "Дія, яку буде виконано у відповідь на помилку подвійного подавання"
-#: backend/fujitsu.c:3696
+#: backend/fujitsu.c:3698
#, no-c-format
msgid "DF skew"
msgstr "ПП для перекошування"
-#: backend/fujitsu.c:3697
+#: backend/fujitsu.c:3699
#, no-c-format
msgid "Enable double feed error due to skew"
msgstr "Увімкнути помилку подвійного подавання через перекошування"
-#: backend/fujitsu.c:3715
+#: backend/fujitsu.c:3717
#, no-c-format
msgid "DF thickness"
msgstr "ПП для товщини"
-#: backend/fujitsu.c:3716
+#: backend/fujitsu.c:3718
#, no-c-format
msgid "Enable double feed error due to paper thickness"
msgstr "Увімкнути помилку подвійного подавання через товщину паперу"
-#: backend/fujitsu.c:3734
+#: backend/fujitsu.c:3736
#, no-c-format
msgid "DF length"
msgstr "ПП для довжини"
-#: backend/fujitsu.c:3735
+#: backend/fujitsu.c:3737
#, no-c-format
msgid "Enable double feed error due to paper length"
msgstr "Увімкнути помилку подвійного подавання через довжину паперу"
-#: backend/fujitsu.c:3758
+#: backend/fujitsu.c:3760
#, no-c-format
msgid "DF length difference"
msgstr "Різниця довжини для ПП"
-#: backend/fujitsu.c:3759
+#: backend/fujitsu.c:3761
#, no-c-format
msgid "Difference in page length to trigger double feed error"
msgstr ""
"Різниця у довжинах аркушів паперу, яка призводитиме до помилки "
"подвійного подавання"
-#: backend/fujitsu.c:3782
+#: backend/fujitsu.c:3784
#, no-c-format
msgid "DF recovery mode"
msgstr "Режим відновлення для ПП"
-#: backend/fujitsu.c:3783
+#: backend/fujitsu.c:3785
#, no-c-format
msgid "Request scanner to reverse feed on paper jam"
msgstr "Вимагати від сканера зворотного подавання, якщо папір зам’ято"
-#: backend/fujitsu.c:3802
+#: backend/fujitsu.c:3804
#, no-c-format
msgid "Paper protection"
msgstr "Захист паперу"
-#: backend/fujitsu.c:3803
+#: backend/fujitsu.c:3805
#, no-c-format
msgid "Request scanner to predict jams in the ADF"
msgstr "Вимагати від сканера передбачати зам’яття у протяжному пристрої"
-#: backend/fujitsu.c:3822
+#: backend/fujitsu.c:3824
#, no-c-format
msgid "Advanced paper protection"
msgstr "Додатковий захист паперу"
-#: backend/fujitsu.c:3823
+#: backend/fujitsu.c:3825
#, no-c-format
msgid "Request scanner to predict jams in the ADF using improved sensors"
msgstr ""
"Вимагати від сканера передбачати зам’яття у протяжному пристрої за "
"допомогою поліпшених датчиків"
-#: backend/fujitsu.c:3842
+#: backend/fujitsu.c:3844
#, no-c-format
msgid "Staple detection"
msgstr "Виявлення скоб"
-#: backend/fujitsu.c:3843
+#: backend/fujitsu.c:3845
#, no-c-format
msgid "Request scanner to detect jams in the ADF caused by staples"
msgstr ""
"Вимагати від сканера виявляти зам’яття у протяжному пристрої через скоби"
-#: backend/fujitsu.c:3862
+#: backend/fujitsu.c:3864
#, no-c-format
msgid "Background color"
msgstr "Колір тла"
-#: backend/fujitsu.c:3863
+#: backend/fujitsu.c:3865
#, no-c-format
-msgid ""
-"Set color of background for scans. May conflict with overscan option"
+msgid "Set color of background for scans. May conflict with overscan option"
msgstr ""
"Встановити колір для тла сканованих зображень. Може конфліктувати із "
"параметром полів."
-#: backend/fujitsu.c:3883
+#: backend/fujitsu.c:3885
#, no-c-format
msgid "Dropout color"
msgstr "Колір для викидання"
-#: backend/fujitsu.c:3884
+#: backend/fujitsu.c:3886
#, no-c-format
msgid ""
"One-pass scanners use only one color during gray or binary scanning, "
@@ -2687,34 +2709,34 @@ msgstr ""
"відтінках сірого або чорно-білого сканування, корисно для кольорового "
"паперу або чорнильних записів"
-#: backend/fujitsu.c:3907
+#: backend/fujitsu.c:3909
#, no-c-format
msgid "Buffer mode"
msgstr "Режим буферизації"
-#: backend/fujitsu.c:3908
+#: backend/fujitsu.c:3910
#, no-c-format
msgid "Request scanner to read pages quickly from ADF into internal memory"
msgstr ""
"Наказати сканеру швидко читати сторінки з протяжного пристрою до "
"внутрішньої пам’яті"
-#: backend/fujitsu.c:3927
+#: backend/fujitsu.c:3929
#, no-c-format
msgid "Prepick"
msgstr "Попереднє захоплення"
-#: backend/fujitsu.c:3928
+#: backend/fujitsu.c:3930
#, no-c-format
msgid "Request scanner to grab next page from ADF"
msgstr "Наказати сканеру захопити наступну сторінку із протяжного пристрою"
-#: backend/fujitsu.c:3947
+#: backend/fujitsu.c:3949
#, no-c-format
msgid "Overscan"
msgstr "Поля"
-#: backend/fujitsu.c:3948
+#: backend/fujitsu.c:3950
#, no-c-format
msgid ""
"Collect a few mm of background on top side of scan, before paper enters "
@@ -2727,25 +2749,24 @@ msgstr ""
"також дозволити збирання решти даних з бічних полів. Може конфліктувати "
"з параметром кольору тла."
-#: backend/fujitsu.c:3966
+#: backend/fujitsu.c:3968
#, no-c-format
msgid "Sleep timer"
msgstr "Таймер присипляння"
-#: backend/fujitsu.c:3967
+#: backend/fujitsu.c:3969
#, no-c-format
-msgid ""
-"Time in minutes until the internal power supply switches to sleep mode"
+msgid "Time in minutes until the internal power supply switches to sleep mode"
msgstr ""
"Час у хвилинах, по завершенню якого внутрішнє живлення буде переведено у "
"режим сну"
-#: backend/fujitsu.c:3985
+#: backend/fujitsu.c:3987
#, no-c-format
msgid "Off timer"
msgstr "Таймер вимикання"
-#: backend/fujitsu.c:3986
+#: backend/fujitsu.c:3988
#, no-c-format
msgid ""
"Time in minutes until the internal power supply switches the scanner "
@@ -2755,42 +2776,42 @@ msgstr ""
"Буде округлено до найближчого кратного до 15 хвилин. Нульове значення "
"означає, що живлення не вимикатиметься."
-#: backend/fujitsu.c:4004
+#: backend/fujitsu.c:4006
#, no-c-format
msgid "Duplex offset"
msgstr "Зміщення двобічного"
-#: backend/fujitsu.c:4005
+#: backend/fujitsu.c:4007
#, no-c-format
msgid "Adjust front/back offset"
msgstr "Коригування зміщення між переднім і зворотним боком"
-#: backend/fujitsu.c:4022 backend/plustek.c:1023 backend/umax_pp.c:793
+#: backend/fujitsu.c:4024 backend/plustek.c:1023 backend/umax_pp.c:793
#, no-c-format
msgid "Green offset"
msgstr "Зміщення зеленого"
-#: backend/fujitsu.c:4023
+#: backend/fujitsu.c:4025
#, no-c-format
msgid "Adjust green/red offset"
msgstr "Коригування зміщення між зеленим і червоним каналами"
-#: backend/fujitsu.c:4040 backend/plustek.c:1039 backend/umax_pp.c:805
+#: backend/fujitsu.c:4042 backend/plustek.c:1039 backend/umax_pp.c:805
#, no-c-format
msgid "Blue offset"
msgstr "Зміщення синього"
-#: backend/fujitsu.c:4041
+#: backend/fujitsu.c:4043
#, no-c-format
msgid "Adjust blue/red offset"
msgstr "Коригування зміщення між синім і червоним каналами"
-#: backend/fujitsu.c:4054
+#: backend/fujitsu.c:4056
#, no-c-format
msgid "Low Memory"
msgstr "Обмеження пам’яті"
-#: backend/fujitsu.c:4055
+#: backend/fujitsu.c:4057
#, no-c-format
msgid ""
"Limit driver memory usage for use in embedded systems. Causes some "
@@ -2804,12 +2825,12 @@ msgstr ""
"«side». Цим параметром слід користуватися лише для нетипового "
"зовнішнього інтерфейсу програмного забезпечення."
-#: backend/fujitsu.c:4070
+#: backend/fujitsu.c:4072
#, no-c-format
msgid "Duplex side"
msgstr "Бік для двобічного"
-#: backend/fujitsu.c:4071
+#: backend/fujitsu.c:4073
#, no-c-format
msgid ""
"Tells which side (0=front, 1=back) of a duplex scan the next call to "
@@ -2818,58 +2839,58 @@ msgstr ""
"Визначає, який бік (0=передній, 1=зворотний) двобічного сканованого "
"зображення буде повернуто під час наступного виклику sane_read."
-#: backend/fujitsu.c:4082
+#: backend/fujitsu.c:4084
#, no-c-format
msgid "Hardware deskew and crop"
msgstr "Апаратне виправлення нахилу і обрізання"
-#: backend/fujitsu.c:4083
+#: backend/fujitsu.c:4085
#, no-c-format
msgid "Request scanner to rotate and crop pages digitally."
msgstr ""
"Вимагати від сканера обертання та обрізання сторінок у цифровому режимі."
-#: backend/fujitsu.c:4094 backend/kvs1025_opt.c:871
+#: backend/fujitsu.c:4096 backend/kvs1025_opt.c:871
#, no-c-format
msgid "Software deskew"
msgstr "Програмне усування обертання"
-#: backend/fujitsu.c:4095
+#: backend/fujitsu.c:4097
#, no-c-format
msgid "Request driver to rotate skewed pages digitally."
msgstr ""
"Вимагати від драйвера усування обертання сторінок у автоматичному режимі."
-#: backend/fujitsu.c:4107 backend/kvs1025_opt.c:880
+#: backend/fujitsu.c:4109 backend/kvs1025_opt.c:880
#, no-c-format
msgid "Software despeckle diameter"
msgstr "Діаметр плям для програмного усування"
-#: backend/fujitsu.c:4108
+#: backend/fujitsu.c:4110
#, no-c-format
msgid "Maximum diameter of lone dots to remove from scan."
msgstr ""
"Мінімальний діаметр окремих плям, які слід усунути зі сканованого "
"зображення."
-#: backend/fujitsu.c:4127
+#: backend/fujitsu.c:4129
#, no-c-format
msgid "Software crop"
msgstr "Програмне обрізання"
-#: backend/fujitsu.c:4128
+#: backend/fujitsu.c:4130
#, no-c-format
msgid "Request driver to remove border from pages digitally."
msgstr ""
"Вимагати від драйвера вилучення границі зі сторінок у автоматичному "
"режимі."
-#: backend/fujitsu.c:4157
+#: backend/fujitsu.c:4159
#, no-c-format
msgid "Halt on Cancel"
msgstr "Перервати при скасуванні"
-#: backend/fujitsu.c:4158
+#: backend/fujitsu.c:4160
#, no-c-format
msgid ""
"Request driver to halt the paper feed instead of eject during a cancel."
@@ -2877,106 +2898,106 @@ msgstr ""
"Наказати драйверу перервати подавання паперу, замість його "
"виштовхування, якщо сканування скасовано."
-#: backend/fujitsu.c:4169
+#: backend/fujitsu.c:4171
#, no-c-format
msgid "Endorser Options"
msgstr "Параметри наддруку"
-#: backend/fujitsu.c:4170
+#: backend/fujitsu.c:4172
#, no-c-format
msgid "Controls for endorser unit"
msgstr "Керування модулем наддруку"
-#: backend/fujitsu.c:4181
+#: backend/fujitsu.c:4183
#, no-c-format
msgid "Endorser"
msgstr "Наддрук"
-#: backend/fujitsu.c:4182
+#: backend/fujitsu.c:4184
#, no-c-format
msgid "Enable endorser unit"
msgstr "Увімкнути модуль наддруку"
-#: backend/fujitsu.c:4197
+#: backend/fujitsu.c:4199
#, no-c-format
msgid "Endorser bits"
msgstr "Біти наддруку"
-#: backend/fujitsu.c:4198
+#: backend/fujitsu.c:4200
#, no-c-format
msgid "Determines maximum endorser counter value."
msgstr "Визначає максимальне значення лічильника наддруку."
-#: backend/fujitsu.c:4223
+#: backend/fujitsu.c:4225
#, no-c-format
msgid "Endorser value"
msgstr "Значення наддруку"
-#: backend/fujitsu.c:4224
+#: backend/fujitsu.c:4226
#, no-c-format
msgid "Initial endorser counter value."
msgstr "Початкове значення лічильника наддруку."
-#: backend/fujitsu.c:4247
+#: backend/fujitsu.c:4249
#, no-c-format
msgid "Endorser step"
msgstr "Крок наддруку"
-#: backend/fujitsu.c:4248
+#: backend/fujitsu.c:4250
#, no-c-format
msgid "Change endorser counter value by this much for each page."
msgstr ""
"Змінювати значення лічильника наддруку на вказане число для кожної "
"наступної сторінки."
-#: backend/fujitsu.c:4271
+#: backend/fujitsu.c:4273
#, no-c-format
msgid "Endorser Y"
msgstr "Y наддруку"
-#: backend/fujitsu.c:4272
+#: backend/fujitsu.c:4274
#, no-c-format
msgid "Endorser print offset from top of paper."
msgstr "Зсув мітки наддруку від верхнього краю паперу."
-#: backend/fujitsu.c:4297
+#: backend/fujitsu.c:4299
#, no-c-format
msgid "Endorser font"
msgstr "Шрифт наддруку"
-#: backend/fujitsu.c:4298
+#: backend/fujitsu.c:4300
#, no-c-format
msgid "Endorser printing font."
msgstr "Шрифт наддруку."
-#: backend/fujitsu.c:4327
+#: backend/fujitsu.c:4329
#, no-c-format
msgid "Endorser direction"
msgstr "Напрямок наддруку"
-#: backend/fujitsu.c:4328
+#: backend/fujitsu.c:4330
#, no-c-format
msgid "Endorser printing direction."
msgstr "Напрямок друку."
-#: backend/fujitsu.c:4352
+#: backend/fujitsu.c:4354
#, no-c-format
msgid "Endorser side"
msgstr "Бік наддруку"
-#: backend/fujitsu.c:4353
+#: backend/fujitsu.c:4355
#, no-c-format
msgid "Endorser printing side, requires hardware support to change"
msgstr ""
"Бік, з якого буде друкуватися мітка. Потребує апаратної підтримки для "
"зміни."
-#: backend/fujitsu.c:4378
+#: backend/fujitsu.c:4380
#, no-c-format
msgid "Endorser string"
msgstr "Рядок наддруку"
-#: backend/fujitsu.c:4379
+#: backend/fujitsu.c:4381
#, no-c-format
msgid ""
"Endorser alphanumeric print format. %05ud or %08ud at the end will be "
@@ -2985,204 +3006,204 @@ msgstr ""
"Буквенно-цифровий формат наддруку. %05ud або %08ud наприкінці буде "
"замінено на значення лічильника."
-#: backend/fujitsu.c:4406
+#: backend/fujitsu.c:4408
#, no-c-format
msgid "Top edge"
msgstr "Верхній край"
-#: backend/fujitsu.c:4407
+#: backend/fujitsu.c:4409
#, no-c-format
msgid "Paper is pulled partly into ADF"
msgstr "Папір частково втягнуто до протяжного пристрою"
-#: backend/fujitsu.c:4418
+#: backend/fujitsu.c:4420
#, no-c-format
msgid "A3 paper"
msgstr "Папір A3"
-#: backend/fujitsu.c:4419
+#: backend/fujitsu.c:4421
#, no-c-format
msgid "A3 paper detected"
msgstr "Виявлено папір A3"
-#: backend/fujitsu.c:4430
+#: backend/fujitsu.c:4432
#, no-c-format
msgid "B4 paper"
msgstr "Папір B4"
-#: backend/fujitsu.c:4431
+#: backend/fujitsu.c:4433
#, no-c-format
msgid "B4 paper detected"
msgstr "Виявлено папір B4"
-#: backend/fujitsu.c:4442
+#: backend/fujitsu.c:4444
#, no-c-format
msgid "A4 paper"
msgstr "Папір A4"
-#: backend/fujitsu.c:4443
+#: backend/fujitsu.c:4445
#, no-c-format
msgid "A4 paper detected"
msgstr "Виявлено папір A4"
-#: backend/fujitsu.c:4454
+#: backend/fujitsu.c:4456
#, no-c-format
msgid "B5 paper"
msgstr "Папір B5"
-#: backend/fujitsu.c:4455
+#: backend/fujitsu.c:4457
#, no-c-format
msgid "B5 paper detected"
msgstr "Виявлено папір B5"
-#: backend/fujitsu.c:4478
+#: backend/fujitsu.c:4480
#, no-c-format
msgid "OMR or DF"
msgstr "OMR або ПП"
-#: backend/fujitsu.c:4479
+#: backend/fujitsu.c:4481
#, no-c-format
msgid "OMR or double feed detected"
msgstr "Виявлено OMR або подвійне подавання"
-#: backend/fujitsu.c:4502
+#: backend/fujitsu.c:4504
#, no-c-format
msgid "Card loaded"
msgstr "Картку завантажено"
-#: backend/fujitsu.c:4503
+#: backend/fujitsu.c:4505
#, no-c-format
msgid "Card slot contains paper"
msgstr "У лотку карток міститься папір"
-#: backend/fujitsu.c:4514
+#: backend/fujitsu.c:4516
#, no-c-format
msgid "Power saving"
msgstr "Заощадження енергії"
-#: backend/fujitsu.c:4515
+#: backend/fujitsu.c:4517
#, no-c-format
msgid "Scanner in power saving mode"
msgstr "Сканер перебуває у режимі заощадження енергії"
-#: backend/fujitsu.c:4538
+#: backend/fujitsu.c:4540
#, no-c-format
msgid "Manual feed"
msgstr "Подавання вручну"
-#: backend/fujitsu.c:4539
+#: backend/fujitsu.c:4541
#, no-c-format
msgid "Manual feed selected"
msgstr "Вибрано режим подавання вручну"
-#: backend/fujitsu.c:4562
+#: backend/fujitsu.c:4564
#, no-c-format
msgid "Function"
msgstr "Функція"
-#: backend/fujitsu.c:4563
+#: backend/fujitsu.c:4565
#, no-c-format
msgid "Function character on screen"
msgstr "Функціональний символ на екрані"
-#: backend/fujitsu.c:4574
+#: backend/fujitsu.c:4576
#, no-c-format
msgid "Ink low"
msgstr "Закінчуються чорнила"
-#: backend/fujitsu.c:4575
+#: backend/fujitsu.c:4577
#, no-c-format
msgid "Imprinter ink running low"
msgstr "Лишилося мало чорнила для наддруку"
-#: backend/fujitsu.c:4586
+#: backend/fujitsu.c:4588
#, no-c-format
msgid "Double feed"
msgstr "Подвійне подавання"
-#: backend/fujitsu.c:4587
+#: backend/fujitsu.c:4589
#, no-c-format
msgid "Double feed detected"
msgstr "Виявлено подвійне подавання"
-#: backend/fujitsu.c:4598
+#: backend/fujitsu.c:4600
#, no-c-format
msgid "Error code"
msgstr "Код помилки"
-#: backend/fujitsu.c:4599
+#: backend/fujitsu.c:4601
#, no-c-format
msgid "Hardware error code"
msgstr "Код апаратної помилки"
-#: backend/fujitsu.c:4610
+#: backend/fujitsu.c:4612
#, no-c-format
msgid "Skew angle"
msgstr "Кут перекошування"
-#: backend/fujitsu.c:4611
+#: backend/fujitsu.c:4613
#, no-c-format
msgid "Requires black background for scanning"
msgstr "Потребує чорного тла для сканування"
-#: backend/fujitsu.c:4622
+#: backend/fujitsu.c:4624
#, no-c-format
msgid "Ink remaining"
msgstr "Лишилося чорнила"
-#: backend/fujitsu.c:4623
+#: backend/fujitsu.c:4625
#, no-c-format
msgid "Imprinter ink level"
msgstr "Рівень чорнила для наддруку"
-#: backend/fujitsu.c:4634
+#: backend/fujitsu.c:4636
#, no-c-format
msgid "Density"
msgstr "Щільність"
-#: backend/fujitsu.c:4635
+#: backend/fujitsu.c:4637
#, no-c-format
msgid "Density dial"
msgstr "Набирач щільності"
-#: backend/fujitsu.c:4646 backend/fujitsu.c:4647
+#: backend/fujitsu.c:4648 backend/fujitsu.c:4649
#, no-c-format
msgid "Duplex switch"
msgstr "Перемикач двобічного"
-#: backend/genesys/genesys.cpp:4821 backend/pixma/pixma_sane_options.c:357
+#: backend/genesys/genesys.cpp:4713 backend/pixma/pixma_sane_options.c:357
#, no-c-format
msgid "Extras"
msgstr "Додаткові"
-#: backend/genesys/genesys.cpp:4830
+#: backend/genesys/genesys.cpp:4722
#, no-c-format
msgid "Color filter"
msgstr "Фільтр кольору"
-#: backend/genesys/genesys.cpp:4833
+#: backend/genesys/genesys.cpp:4725
#, no-c-format
msgid "When using gray or lineart this option selects the used color."
msgstr ""
"За використання друку у півтонах або штрихового друку за допомогою цього "
"пункту можна обрати колір друку."
-#: backend/genesys/genesys.cpp:4857
+#: backend/genesys/genesys.cpp:4749
#, no-c-format
msgid "Calibration file"
msgstr "Файл калібрування"
-#: backend/genesys/genesys.cpp:4858
+#: backend/genesys/genesys.cpp:4750
#, no-c-format
msgid "Specify the calibration file to use"
msgstr "Вкажіть файл даних калібрування, які буде використано"
-#: backend/genesys/genesys.cpp:4875
+#: backend/genesys/genesys.cpp:4767
#, no-c-format
msgid "Calibration cache expiration time"
msgstr "Строк дії кешу калібрування"
-#: backend/genesys/genesys.cpp:4876
+#: backend/genesys/genesys.cpp:4768
#, no-c-format
msgid ""
"Time (in minutes) before a cached calibration expires. A value of 0 "
@@ -3193,12 +3214,12 @@ msgstr ""
"Від’ємні значення означають, що обмежень на строк дії кешу не "
"накладатиметься."
-#: backend/genesys/genesys.cpp:4886
+#: backend/genesys/genesys.cpp:4778
#, no-c-format
msgid "Lamp off time"
msgstr "Час вимикання лампи"
-#: backend/genesys/genesys.cpp:4889
+#: backend/genesys/genesys.cpp:4781
#, no-c-format
msgid ""
"The lamp will be turned off after the given time (in minutes). A value "
@@ -3207,92 +3228,117 @@ msgstr ""
"Лампу буде вимкнено, коли спливе вказаний час (у хвилинах). Значення "
"рівне 0 означатиме, що лампа не вимикатиметься."
-#: backend/genesys/genesys.cpp:4899
+#: backend/genesys/genesys.cpp:4791
#, no-c-format
msgid "Lamp off during scan"
msgstr "Вимикання лампи під час сканування"
-#: backend/genesys/genesys.cpp:4900
+#: backend/genesys/genesys.cpp:4792
#, no-c-format
msgid "The lamp will be turned off during scan. "
msgstr "Лампу буде вимкнено під час сканування. "
-#: backend/genesys/genesys.cpp:4927 backend/genesys/genesys.cpp:4928
+#: backend/genesys/genesys.cpp:4819 backend/genesys/genesys.cpp:4820
#, no-c-format
msgid "File button"
msgstr "Кнопка «File»"
-#: backend/genesys/genesys.cpp:4972 backend/genesys/genesys.cpp:4973
+#: backend/genesys/genesys.cpp:4864 backend/genesys/genesys.cpp:4865
#, no-c-format
msgid "OCR button"
msgstr "Кнопка «OCR»"
-#: backend/genesys/genesys.cpp:4984 backend/genesys/genesys.cpp:4985
+#: backend/genesys/genesys.cpp:4876 backend/genesys/genesys.cpp:4877
#, no-c-format
msgid "Power button"
msgstr "Кнопка «Power»"
-#: backend/genesys/genesys.cpp:4996 backend/genesys/genesys.cpp:4997
+#: backend/genesys/genesys.cpp:4888 backend/genesys/genesys.cpp:4889
#, no-c-format
msgid "Extra button"
msgstr "Додаткова кнопка"
-#: backend/genesys/genesys.cpp:5008 backend/gt68xx.c:753
+#: backend/genesys/genesys.cpp:4900 backend/genesys/genesys.cpp:4901
+#, no-c-format
+msgid "Transparency button"
+msgstr "Кнопка прозорості"
+
+#: backend/genesys/genesys.cpp:4912 backend/genesys/genesys.cpp:4913
+#, no-c-format
+msgid "PDF function button 1"
+msgstr "Функціональна кнопка PDF 1"
+
+#: backend/genesys/genesys.cpp:4924 backend/genesys/genesys.cpp:4925
+#, no-c-format
+msgid "PDF function button 2"
+msgstr "Функціональна кнопка PDF 2"
+
+#: backend/genesys/genesys.cpp:4936 backend/genesys/genesys.cpp:4937
+#, no-c-format
+msgid "PDF function button 3"
+msgstr "Функціональна кнопка PDF 3"
+
+#: backend/genesys/genesys.cpp:4948 backend/genesys/genesys.cpp:4949
+#, no-c-format
+msgid "PDF function button 4"
+msgstr "Функціональна кнопка PDF 4"
+
+#: backend/genesys/genesys.cpp:4960 backend/gt68xx.c:753
#, no-c-format
msgid "Needs calibration"
msgstr "Потребує калібрування"
-#: backend/genesys/genesys.cpp:5009 backend/gt68xx.c:754 backend/p5.c:1928
+#: backend/genesys/genesys.cpp:4961 backend/gt68xx.c:754 backend/p5.c:1928
#, no-c-format
msgid "The scanner needs calibration for the current settings"
msgstr "Для застосування поточних параметрів потрібне калібрування"
-#: backend/genesys/genesys.cpp:5020 backend/gt68xx.c:778
+#: backend/genesys/genesys.cpp:4972 backend/gt68xx.c:778
#: backend/gt68xx.c:779 backend/p5.c:1937 backend/p5.c:1938
#: backend/pixma/pixma_sane_options.c:227 backend/plustek.c:1078
#, no-c-format
msgid "Buttons"
msgstr "Кнопки"
-#: backend/genesys/genesys.cpp:5029 backend/gt68xx.c:785
+#: backend/genesys/genesys.cpp:4981 backend/gt68xx.c:785
#: backend/hp-option.h:92 backend/hp5400_sane.c:535 backend/niash.c:723
#: backend/p5.c:1945 backend/plustek.c:939
#, no-c-format
msgid "Calibrate"
msgstr "Відкалібрувати"
-#: backend/genesys/genesys.cpp:5031 backend/gt68xx.c:787 backend/p5.c:1947
+#: backend/genesys/genesys.cpp:4983 backend/gt68xx.c:787 backend/p5.c:1947
#, no-c-format
msgid "Start calibration using special sheet"
msgstr "Почати калібрування за допомогою спеціального аркуша"
-#: backend/genesys/genesys.cpp:5043 backend/gt68xx.c:800 backend/p5.c:1958
+#: backend/genesys/genesys.cpp:4995 backend/gt68xx.c:800 backend/p5.c:1958
#, no-c-format
msgid "Clear calibration"
msgstr "Спорожнити дані калібрування"
-#: backend/genesys/genesys.cpp:5044 backend/gt68xx.c:801 backend/p5.c:1960
+#: backend/genesys/genesys.cpp:4996 backend/gt68xx.c:801 backend/p5.c:1960
#, no-c-format
msgid "Clear calibration cache"
msgstr "Спорожнити кеш калібрування"
-#: backend/genesys/genesys.cpp:5054
+#: backend/genesys/genesys.cpp:5006
#, no-c-format
msgid "Force calibration"
msgstr "Примусове калібрування"
-#: backend/genesys/genesys.cpp:5055
+#: backend/genesys/genesys.cpp:5007
#, no-c-format
msgid "Force calibration ignoring all and any calibration caches"
msgstr ""
"Примусове калібрування з ігноруванням усіх кешованих даних калібрування"
-#: backend/genesys/genesys.cpp:5065
+#: backend/genesys/genesys.cpp:5017
#, no-c-format
msgid "Ignore internal offsets"
msgstr "Ігнорувати внутрішні відступи"
-#: backend/genesys/genesys.cpp:5067
+#: backend/genesys/genesys.cpp:5019
#, no-c-format
msgid ""
"Acquires the image including the internal calibration areas of the "
@@ -3301,13 +3347,13 @@ msgstr ""
"Надсилає запит щодо сканування зображення включно із внутрішніми "
"областями калібрування сканера"
-#: backend/genesys/genesys.h:77 backend/gt68xx.c:147 backend/ma1509.c:106
+#: backend/genesys/genesys.h:56 backend/gt68xx.c:147 backend/ma1509.c:106
#: backend/mustek.c:162 backend/snapscan-options.c:87 backend/umax.c:180
#, no-c-format
msgid "Transparency Adapter"
msgstr "Адаптер плівок"
-#: backend/genesys/genesys.h:78
+#: backend/genesys/genesys.h:57
#, no-c-format
msgid "Transparency Adapter Infrared"
msgstr "Адаптер плівок для інфрачервоного сканування"
@@ -3482,7 +3528,7 @@ msgid "Slow"
msgstr "Повільно"
#: backend/hp-option.c:3143 backend/hp-option.c:3250
-#: backend/kvs40xx_opt.c:230 backend/matsushita.c:241 backend/mustek.c:147
+#: backend/kvs40xx_opt.c:225 backend/matsushita.c:241 backend/mustek.c:147
#: backend/plustek.c:232 backend/plustek_pp.c:201 backend/u12.c:153
#, no-c-format
msgid "Normal"
@@ -4124,8 +4170,7 @@ msgstr "Документ доступний у АПД"
#: backend/hp5590.c:126
#, no-c-format
msgid "Get state of document-available indicator in ADF (read only)"
-msgstr ""
-"Отримати стан індикатора доступності документа у АПД (лише читання)"
+msgstr "Отримати стан індикатора доступності документа у АПД (лише читання)"
#: backend/hp5590.c:128
#, no-c-format
@@ -4134,8 +4179,7 @@ msgstr "Приховувати кінцевий піксель сторінки"
#: backend/hp5590.c:129
#, no-c-format
-msgid ""
-"Hide end-of-page indicator pixels and overwrite with neighbor pixels"
+msgid "Hide end-of-page indicator pixels and overwrite with neighbor pixels"
msgstr ""
"Приховувати пікселі-індикатори кінця сторінки і перезаписувати їх "
"сусідніми пікселями"
@@ -4158,8 +4202,7 @@ msgstr ""
#: backend/hp5590.c:135
#, no-c-format
msgid "RGB or gray color value for filling mode 'color'"
-msgstr ""
-"Значення кольору у RGB або тонах сірого для режиму заповнення «color»"
+msgstr "Значення кольору у RGB або тонах сірого для режиму заповнення «color»"
#: backend/hp5590.c:136
#, no-c-format
@@ -4171,7 +4214,7 @@ msgstr ""
"як значення у форматі r*65536+256*g+b або значення тону сірого (типове "
"значення — фіолетовий або сірий)"
-#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:516
+#: backend/kvs1025.h:51 backend/kvs20xx_opt.c:295 backend/kvs40xx_opt.c:511
#: backend/matsushita.h:213
#, no-c-format
msgid "Paper size"
@@ -4183,48 +4226,48 @@ msgstr "Розмір паперу"
msgid "Automatic separation"
msgstr "Автоматичне відокремлення"
-#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307 backend/kvs40xx_opt.c:531
+#: backend/kvs1025.h:53 backend/kvs20xx_opt.c:307 backend/kvs40xx_opt.c:526
#, no-c-format
msgid "Landscape"
msgstr "Альбомна"
-#: backend/kvs1025.h:54 backend/kvs40xx_opt.c:693
+#: backend/kvs1025.h:54 backend/kvs40xx_opt.c:688
#, no-c-format
msgid "Inverse Image"
msgstr "Інверсивне зображення"
-#: backend/kvs1025.h:56 backend/kvs40xx_opt.c:404
+#: backend/kvs1025.h:56 backend/kvs40xx_opt.c:399
#, no-c-format
msgid "Long paper mode"
msgstr "Режим довгого паперу"
-#: backend/kvs1025.h:57 backend/kvs20xx_opt.c:230 backend/kvs40xx_opt.c:393
+#: backend/kvs1025.h:57 backend/kvs20xx_opt.c:230 backend/kvs40xx_opt.c:388
#, no-c-format
msgid "Length control mode"
msgstr "Режим керування довжиною"
-#: backend/kvs1025.h:58 backend/kvs20xx_opt.c:242 backend/kvs40xx_opt.c:416
+#: backend/kvs1025.h:58 backend/kvs20xx_opt.c:242 backend/kvs40xx_opt.c:411
#, no-c-format
msgid "Manual feed mode"
msgstr "Режим подавання вручну"
-#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254 backend/kvs40xx_opt.c:428
+#: backend/kvs1025.h:59 backend/kvs20xx_opt.c:254 backend/kvs40xx_opt.c:423
#, no-c-format
msgid "Manual feed timeout"
msgstr "Час очікування на подачу вручну"
-#: backend/kvs1025.h:60 backend/kvs20xx_opt.c:267 backend/kvs40xx_opt.c:441
+#: backend/kvs1025.h:60 backend/kvs20xx_opt.c:267 backend/kvs40xx_opt.c:436
#, no-c-format
msgid "Double feed detection"
msgstr "Виявлення двобічного подавання"
-#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:354
+#: backend/kvs1025.h:63 backend/kvs20xx_opt.c:205 backend/kvs40xx_opt.c:349
#: backend/matsushita.h:217
#, no-c-format
msgid "Enable Duplex (Dual-Sided) Scanning"
msgstr "Увімкнути двобічне сканування"
-#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:517
+#: backend/kvs1025.h:65 backend/kvs20xx_opt.c:296 backend/kvs40xx_opt.c:512
#: backend/matsushita.h:219
#, no-c-format
msgid "Physical size of the paper in the ADF"
@@ -4250,113 +4293,113 @@ msgstr "сірий"
msgid "color"
msgstr "кольорове"
-#: backend/kvs1025_opt.c:61 backend/kvs40xx_opt.c:108
-#: backend/kvs40xx_opt.c:1047
+#: backend/kvs1025_opt.c:61 backend/kvs40xx_opt.c:103
+#: backend/kvs40xx_opt.c:1042
#, no-c-format
msgid "adf"
msgstr "АПД"
-#: backend/kvs1025_opt.c:62 backend/kvs40xx_opt.c:50
-#: backend/kvs40xx_opt.c:109
+#: backend/kvs1025_opt.c:62 backend/kvs40xx_opt.c:45
+#: backend/kvs40xx_opt.c:104
#, no-c-format
msgid "fb"
msgstr "планшет"
#: backend/kvs1025_opt.c:72 backend/kvs20xx_opt.c:55
-#: backend/kvs40xx_opt.c:101
+#: backend/kvs40xx_opt.c:96
#, no-c-format
msgid "single"
msgstr "однобічний"
#: backend/kvs1025_opt.c:73 backend/kvs20xx.c:462 backend/kvs20xx_opt.c:56
-#: backend/kvs40xx.c:705 backend/kvs40xx.c:723 backend/kvs40xx_opt.c:102
-#: backend/kvs40xx_opt.c:1087
+#: backend/kvs40xx.c:700 backend/kvs40xx.c:718 backend/kvs40xx_opt.c:97
+#: backend/kvs40xx_opt.c:1082
#, no-c-format
msgid "continuous"
msgstr "безперервне"
#: backend/kvs1025_opt.c:83 backend/kvs20xx_opt.c:62
-#: backend/kvs40xx_opt.c:115
+#: backend/kvs40xx_opt.c:110
#, no-c-format
msgid "off"
msgstr "вимкнено"
#: backend/kvs1025_opt.c:84 backend/kvs20xx_opt.c:63
-#: backend/kvs40xx_opt.c:116
+#: backend/kvs40xx_opt.c:111
#, no-c-format
msgid "wait_doc"
msgstr "очік_документа"
#: backend/kvs1025_opt.c:85 backend/kvs20xx_opt.c:64
-#: backend/kvs40xx_opt.c:118
+#: backend/kvs40xx_opt.c:113
#, no-c-format
msgid "wait_key"
msgstr "очік_клавіші"
#: backend/kvs1025_opt.c:96 backend/kvs20xx_opt.c:70
-#: backend/kvs40xx_opt.c:124 backend/kvs40xx_opt.c:141
+#: backend/kvs40xx_opt.c:119 backend/kvs40xx_opt.c:136
#, no-c-format
msgid "user_def"
msgstr "визн_користувачем"
#: backend/kvs1025_opt.c:97 backend/kvs20xx_opt.c:71
-#: backend/kvs40xx_opt.c:125 backend/kvs40xx_opt.c:142
+#: backend/kvs40xx_opt.c:120 backend/kvs40xx_opt.c:137
#, no-c-format
msgid "business_card"
msgstr "бізнес_картка"
-#: backend/kvs1025_opt.c:98 backend/kvs40xx_opt.c:126
-#: backend/kvs40xx_opt.c:143
+#: backend/kvs1025_opt.c:98 backend/kvs40xx_opt.c:121
+#: backend/kvs40xx_opt.c:138
#, no-c-format
msgid "Check"
msgstr "Чек"
#: backend/kvs1025_opt.c:101 backend/kvs20xx_opt.c:75
-#: backend/kvs40xx_opt.c:129 backend/kvs40xx_opt.c:146
+#: backend/kvs40xx_opt.c:124 backend/kvs40xx_opt.c:141
#, no-c-format
msgid "A5"
msgstr "A5"
#: backend/kvs1025_opt.c:102 backend/kvs20xx_opt.c:76
-#: backend/kvs40xx_opt.c:130 backend/kvs40xx_opt.c:147
+#: backend/kvs40xx_opt.c:125 backend/kvs40xx_opt.c:142
#, no-c-format
msgid "A6"
msgstr "A6"
#: backend/kvs1025_opt.c:106 backend/kvs20xx_opt.c:80
-#: backend/kvs40xx_opt.c:134 backend/kvs40xx_opt.c:151
+#: backend/kvs40xx_opt.c:129 backend/kvs40xx_opt.c:146
#, no-c-format
msgid "B5"
msgstr "B5"
#: backend/kvs1025_opt.c:107 backend/kvs20xx_opt.c:81
-#: backend/kvs40xx_opt.c:135 backend/kvs40xx_opt.c:152
+#: backend/kvs40xx_opt.c:130 backend/kvs40xx_opt.c:147
#, no-c-format
msgid "B6"
msgstr "B6"
#: backend/kvs1025_opt.c:108 backend/kvs20xx_opt.c:82
-#: backend/kvs40xx_opt.c:136 backend/kvs40xx_opt.c:153
+#: backend/kvs40xx_opt.c:131 backend/kvs40xx_opt.c:148
#, no-c-format
msgid "Legal"
msgstr "Легал"
-#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:239
+#: backend/kvs1025_opt.c:148 backend/kvs40xx_opt.c:234
#, no-c-format
msgid "bayer_64"
msgstr "баєр_64"
-#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:240
+#: backend/kvs1025_opt.c:149 backend/kvs40xx_opt.c:235
#, no-c-format
msgid "bayer_16"
msgstr "баєр_16"
-#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:241
+#: backend/kvs1025_opt.c:150 backend/kvs40xx_opt.c:236
#, no-c-format
msgid "halftone_32"
msgstr "напівтони_32"
-#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:242
+#: backend/kvs1025_opt.c:151 backend/kvs40xx_opt.c:237
#, no-c-format
msgid "halftone_64"
msgstr "напівтони_64"
@@ -4368,70 +4411,70 @@ msgstr "розсіяне"
#: backend/kvs1025_opt.c:165 backend/kvs1025_opt.c:227
#: backend/kvs1025_opt.c:240 backend/kvs20xx_opt.c:129
-#: backend/kvs20xx_opt.c:137 backend/kvs40xx_opt.c:215
-#: backend/kvs40xx_opt.c:223 backend/kvs40xx_opt.c:258
+#: backend/kvs20xx_opt.c:137 backend/kvs40xx_opt.c:210
+#: backend/kvs40xx_opt.c:218 backend/kvs40xx_opt.c:253
#, no-c-format
msgid "normal"
msgstr "звичайне"
-#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:259
+#: backend/kvs1025_opt.c:166 backend/kvs40xx_opt.c:254
#, no-c-format
msgid "light"
msgstr "світле"
-#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:260
+#: backend/kvs1025_opt.c:167 backend/kvs40xx_opt.c:255
#, no-c-format
msgid "dark"
msgstr "темне"
-#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:271
+#: backend/kvs1025_opt.c:178 backend/kvs40xx_opt.c:266
#, no-c-format
msgid "From scanner"
msgstr "Зі сканера"
-#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:272
+#: backend/kvs1025_opt.c:179 backend/kvs40xx_opt.c:267
#: backend/matsushita.c:174
#, no-c-format
msgid "From paper"
msgstr "Від паперу"
-#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:284
+#: backend/kvs1025_opt.c:191 backend/kvs40xx_opt.c:279
#, no-c-format
msgid "default"
msgstr "типове"
#: backend/kvs1025_opt.c:210 backend/kvs20xx_opt.c:123
-#: backend/kvs40xx_opt.c:209
+#: backend/kvs40xx_opt.c:204
#, no-c-format
msgid "smooth"
msgstr "гладке"
#: backend/kvs1025_opt.c:211 backend/kvs20xx_opt.c:119
-#: backend/kvs40xx_opt.c:205
+#: backend/kvs40xx_opt.c:200
#, no-c-format
msgid "none"
msgstr "немає"
#: backend/kvs1025_opt.c:212 backend/kvs20xx_opt.c:120
-#: backend/kvs40xx_opt.c:206
+#: backend/kvs40xx_opt.c:201
#, no-c-format
msgid "low"
msgstr "низьке"
#: backend/kvs1025_opt.c:213 backend/kvs1025_opt.c:803
-#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:207
+#: backend/kvs20xx_opt.c:121 backend/kvs40xx_opt.c:202
#, no-c-format
msgid "medium"
msgstr "середнє"
#: backend/kvs1025_opt.c:214 backend/kvs20xx_opt.c:122
-#: backend/kvs40xx_opt.c:208
+#: backend/kvs40xx_opt.c:203
#, no-c-format
msgid "high"
msgstr "високе"
#: backend/kvs1025_opt.c:228 backend/kvs20xx_opt.c:130
-#: backend/kvs40xx_opt.c:216
+#: backend/kvs40xx_opt.c:211
#, no-c-format
msgid "crt"
msgstr "ЕПТ"
@@ -4442,19 +4485,19 @@ msgid "linear"
msgstr "лінійне"
#: backend/kvs1025_opt.c:241 backend/kvs20xx_opt.c:138
-#: backend/kvs40xx_opt.c:224
+#: backend/kvs40xx_opt.c:219
#, no-c-format
msgid "red"
msgstr "червоний"
#: backend/kvs1025_opt.c:242 backend/kvs20xx_opt.c:139
-#: backend/kvs40xx_opt.c:225
+#: backend/kvs40xx_opt.c:220
#, no-c-format
msgid "green"
msgstr "зелений"
#: backend/kvs1025_opt.c:243 backend/kvs20xx_opt.c:140
-#: backend/kvs40xx_opt.c:226
+#: backend/kvs40xx_opt.c:221
#, no-c-format
msgid "blue"
msgstr "синій"
@@ -4465,13 +4508,13 @@ msgid "Sets the scan source"
msgstr "Встановлює джерело сканування"
#: backend/kvs1025_opt.c:572 backend/kvs20xx_opt.c:218
-#: backend/kvs40xx_opt.c:367 backend/matsushita.c:1123
+#: backend/kvs40xx_opt.c:362 backend/matsushita.c:1123
#, no-c-format
msgid "Feeder mode"
msgstr "Режим подачі"
#: backend/kvs1025_opt.c:573 backend/kvs20xx_opt.c:219
-#: backend/kvs40xx_opt.c:368 backend/matsushita.c:1124
+#: backend/kvs40xx_opt.c:363 backend/matsushita.c:1124
#, no-c-format
msgid "Sets the feeding mode"
msgstr "Визначити режим подачі"
@@ -4487,43 +4530,43 @@ msgid "Enable/Disable length control mode"
msgstr "Увімкнути/Вимкнути режим керування довжиною"
#: backend/kvs1025_opt.c:600 backend/kvs20xx_opt.c:243
-#: backend/kvs40xx_opt.c:417
+#: backend/kvs40xx_opt.c:412
#, no-c-format
msgid "Sets the manual feed mode"
msgstr "Встановлює режим подавання вручну"
#: backend/kvs1025_opt.c:611 backend/kvs20xx_opt.c:255
-#: backend/kvs40xx_opt.c:429
+#: backend/kvs40xx_opt.c:424
#, no-c-format
msgid "Sets the manual feed timeout in seconds"
msgstr "Встановлює час очікування на подавання вручну"
#: backend/kvs1025_opt.c:624 backend/kvs20xx_opt.c:268
-#: backend/kvs40xx_opt.c:442
+#: backend/kvs40xx_opt.c:437
#, no-c-format
msgid "Enable/Disable double feed detection"
msgstr "Увімкнути або вимкнути виявлення подвійного подавання"
#: backend/kvs1025_opt.c:630 backend/kvs20xx_opt.c:276
-#: backend/kvs40xx_opt.c:497
+#: backend/kvs40xx_opt.c:492
#, no-c-format
msgid "fit-to-page"
msgstr "за аркушем"
#: backend/kvs1025_opt.c:631 backend/kvs20xx_opt.c:277
-#: backend/kvs40xx_opt.c:498
+#: backend/kvs40xx_opt.c:493
#, no-c-format
msgid "Fit to page"
msgstr "За аркушем"
#: backend/kvs1025_opt.c:633 backend/kvs20xx_opt.c:278
-#: backend/kvs40xx_opt.c:499
+#: backend/kvs40xx_opt.c:494
#, no-c-format
msgid "Scanner shrinks image to fit scanned page"
msgstr "Сканер стискає зображення відповідно до розмірів аркуша"
#: backend/kvs1025_opt.c:660 backend/kvs20xx_opt.c:309
-#: backend/kvs40xx_opt.c:533
+#: backend/kvs40xx_opt.c:528
#, no-c-format
msgid "Set paper position : true for landscape, false for portrait"
msgstr "Встановлює розташування аркуша: true — альбомне, false — книжкове"
@@ -4542,26 +4585,26 @@ msgstr ""
"Встановлювати яскравість, контрастність, рівень білого, гаму, зменшення "
"шумності і виразність зображення автоматично"
-#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:764
+#: backend/kvs1025_opt.c:782 backend/kvs40xx_opt.c:759
#: backend/matsushita.c:1272
#, no-c-format
msgid "Noise reduction"
msgstr "Зменшення шумності"
-#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:765
+#: backend/kvs1025_opt.c:784 backend/kvs40xx_opt.c:760
#: backend/matsushita.c:1274
#, no-c-format
msgid "Reduce the isolated dot noise"
msgstr "Зменшити шум від ізольованих точок"
#: backend/kvs1025_opt.c:795 backend/kvs20xx_opt.c:412
-#: backend/kvs40xx_opt.c:655 backend/matsushita.c:1285
+#: backend/kvs40xx_opt.c:650 backend/matsushita.c:1285
#, no-c-format
msgid "Image emphasis"
msgstr "Виразність зображення"
#: backend/kvs1025_opt.c:796 backend/kvs20xx_opt.c:413
-#: backend/kvs40xx_opt.c:656 backend/matsushita.c:1286
+#: backend/kvs40xx_opt.c:651 backend/matsushita.c:1286
#, no-c-format
msgid "Sets the image emphasis"
msgstr "Визначає виразність зображення"
@@ -4574,13 +4617,13 @@ msgid "Gamma"
msgstr "Гама"
#: backend/kvs1025_opt.c:817 backend/kvs20xx_opt.c:436
-#: backend/kvs40xx_opt.c:681
+#: backend/kvs40xx_opt.c:676
#, no-c-format
msgid "Lamp color"
msgstr "Колір лампи"
#: backend/kvs1025_opt.c:818 backend/kvs20xx_opt.c:437
-#: backend/kvs40xx_opt.c:682
+#: backend/kvs40xx_opt.c:677
#, no-c-format
msgid "Sets the lamp color (color dropout)"
msgstr "Встановлює колір лампи (відкидання кольорів)"
@@ -4613,8 +4656,7 @@ msgstr "Обернути зображення за год. стрілкою"
#: backend/kvs1025_opt.c:861
#, no-c-format
msgid "Request driver to rotate pages by a fixed amount"
-msgstr ""
-"Вимагати від драйвера обертання сторінок на фіксований вказаний кут"
+msgstr "Вимагати від драйвера обертання сторінок на фіксований вказаний кут"
#: backend/kvs1025_opt.c:873
#, no-c-format
@@ -4670,63 +4712,63 @@ msgstr ""
"довжин: дійсної довжини аркуша паперу або логічної довжини документа."
#: backend/kvs20xx_opt.c:424 backend/kvs20xx_opt.c:425
-#: backend/kvs40xx_opt.c:668 backend/kvs40xx_opt.c:669
+#: backend/kvs40xx_opt.c:663 backend/kvs40xx_opt.c:664
#: backend/microtek2.h:638
#, no-c-format
msgid "Gamma correction"
msgstr "Виправлення гами"
-#: backend/kvs40xx_opt.c:117
+#: backend/kvs40xx_opt.c:112
#, no-c-format
msgid "wait_doc_hopper_up"
msgstr "очік_документа_з_бункера"
-#: backend/kvs40xx_opt.c:127
+#: backend/kvs40xx_opt.c:122
#, no-c-format
msgid "A3"
msgstr "A3"
-#: backend/kvs40xx_opt.c:132
+#: backend/kvs40xx_opt.c:127
#, no-c-format
msgid "Double letter 11x17 in"
msgstr "Подвійний лист 11x17 дюймів"
-#: backend/kvs40xx_opt.c:133
+#: backend/kvs40xx_opt.c:128
#, no-c-format
msgid "B4"
msgstr "B4"
-#: backend/kvs40xx_opt.c:231
+#: backend/kvs40xx_opt.c:226
#, no-c-format
msgid "High sensitivity"
msgstr "Висока чутливість"
-#: backend/kvs40xx_opt.c:232
+#: backend/kvs40xx_opt.c:227
#, no-c-format
msgid "Low sensitivity"
msgstr "Низька чутливість"
-#: backend/kvs40xx_opt.c:243
+#: backend/kvs40xx_opt.c:238
#, no-c-format
msgid "err_diffusion"
msgstr "помилка_розс"
-#: backend/kvs40xx_opt.c:249
+#: backend/kvs40xx_opt.c:244
#, no-c-format
msgid "No detection"
msgstr "Без виявлення"
-#: backend/kvs40xx_opt.c:250
+#: backend/kvs40xx_opt.c:245
#, no-c-format
msgid "Normal mode"
msgstr "Звичайний режим"
-#: backend/kvs40xx_opt.c:251
+#: backend/kvs40xx_opt.c:246
#, no-c-format
msgid "Enhanced mode"
msgstr "Розширений режим"
-#: backend/kvs40xx_opt.c:396
+#: backend/kvs40xx_opt.c:391
#, no-c-format
msgid ""
"Length Control Mode causes the scanner to read the shorter of either the "
@@ -4735,7 +4777,7 @@ msgstr ""
"У режимі керування довжиною сканер читає дані до найкоротшої з таких "
"довжин: дійсної довжини аркуша паперу або логічної довжини документа"
-#: backend/kvs40xx_opt.c:405
+#: backend/kvs40xx_opt.c:400
#, no-c-format
msgid ""
"Long Paper Mode is a mode that the scanner reads the image after it "
@@ -4745,122 +4787,122 @@ msgstr ""
"довгого листа паперу на відрізки довжини, встановлені за допомогою "
"параметра «Розмір документа»"
-#: backend/kvs40xx_opt.c:449
+#: backend/kvs40xx_opt.c:444
#, no-c-format
msgid "Double feed detector sensitivity"
msgstr "Значення чутливості датчика подвійного подавання"
-#: backend/kvs40xx_opt.c:450
+#: backend/kvs40xx_opt.c:445
#, no-c-format
msgid "Set the double feed detector sensitivity"
msgstr "Встановити значення чутливості датчика подвійного подавання"
-#: backend/kvs40xx_opt.c:461 backend/kvs40xx_opt.c:462
+#: backend/kvs40xx_opt.c:456 backend/kvs40xx_opt.c:457
#, no-c-format
msgid "Do not stop after double feed detection"
msgstr "Не зупинятися після виявлення подвійного подавання"
-#: backend/kvs40xx_opt.c:470 backend/kvs40xx_opt.c:471
+#: backend/kvs40xx_opt.c:465 backend/kvs40xx_opt.c:466
#, no-c-format
msgid "Ignore left double feed sensor"
msgstr "Ігнорувати лівий датчик подвійного подавання"
-#: backend/kvs40xx_opt.c:479 backend/kvs40xx_opt.c:480
+#: backend/kvs40xx_opt.c:474 backend/kvs40xx_opt.c:475
#, no-c-format
msgid "Ignore center double feed sensor"
msgstr "Ігнорувати центральний датчик подвійного подавання"
-#: backend/kvs40xx_opt.c:488 backend/kvs40xx_opt.c:489
+#: backend/kvs40xx_opt.c:483 backend/kvs40xx_opt.c:484
#, no-c-format
msgid "Ignore right double feed sensor"
msgstr "Ігнорувати правий датчик подвійного подавання"
-#: backend/kvs40xx_opt.c:642
+#: backend/kvs40xx_opt.c:637
#, no-c-format
msgid "Automatic threshold mode"
msgstr "Режим автоматичного порогового значення"
-#: backend/kvs40xx_opt.c:643
+#: backend/kvs40xx_opt.c:638
#, no-c-format
msgid "Sets the automatic threshold mode"
msgstr "Встановлює режим автоматичного порогового значення"
-#: backend/kvs40xx_opt.c:694
+#: backend/kvs40xx_opt.c:689
#, no-c-format
msgid "Inverse image in B/W mode"
msgstr "Інверсивне зображення у чорно-білому режимі"
-#: backend/kvs40xx_opt.c:715
+#: backend/kvs40xx_opt.c:710
#, no-c-format
msgid "JPEG compression"
msgstr "Стискання JPEG"
-#: backend/kvs40xx_opt.c:718
+#: backend/kvs40xx_opt.c:713
#, no-c-format
msgid "JPEG compression (your application must be able to uncompress)"
msgstr "Стискання JPEG (ваша програма повинна мати змогу розпакувати дані)"
-#: backend/kvs40xx_opt.c:737 backend/kvs40xx_opt.c:738
+#: backend/kvs40xx_opt.c:732 backend/kvs40xx_opt.c:733
#, no-c-format
msgid "Detect stapled document"
msgstr "Виявляти підшиті документи"
-#: backend/kvs40xx_opt.c:776
+#: backend/kvs40xx_opt.c:771
#, no-c-format
msgid "chroma of red"
msgstr "інтенсивність червоного"
-#: backend/kvs40xx_opt.c:777
+#: backend/kvs40xx_opt.c:772
#, no-c-format
msgid "Set chroma of red"
msgstr "Встановити інтенсивність червоного"
-#: backend/kvs40xx_opt.c:787
+#: backend/kvs40xx_opt.c:782
#, no-c-format
msgid "chroma of blue"
msgstr "інтенсивність синього"
-#: backend/kvs40xx_opt.c:788
+#: backend/kvs40xx_opt.c:783
#, no-c-format
msgid "Set chroma of blue"
msgstr "Встановити інтенсивність синього"
-#: backend/kvs40xx_opt.c:798 backend/kvs40xx_opt.c:799
+#: backend/kvs40xx_opt.c:793 backend/kvs40xx_opt.c:794
#, no-c-format
msgid "Skew adjustment"
msgstr "Коригування перекошування"
-#: backend/kvs40xx_opt.c:808
+#: backend/kvs40xx_opt.c:803
#, no-c-format
msgid "Stop scanner if a sheet is skewed"
msgstr "Зупинити сканування, якщо папір було перекошено"
-#: backend/kvs40xx_opt.c:809
+#: backend/kvs40xx_opt.c:804
#, no-c-format
msgid "Scanner will stop if a sheet is skewed"
msgstr "Сканування буде зупинено, якщо папір було вставлено з нахилом"
-#: backend/kvs40xx_opt.c:816
+#: backend/kvs40xx_opt.c:811
#, no-c-format
msgid "Crop actual image area"
msgstr "Обрізати до справжньої області зображення"
-#: backend/kvs40xx_opt.c:817
+#: backend/kvs40xx_opt.c:812
#, no-c-format
msgid "Scanner will automatically detect image area and crop to it"
msgstr "Сканер автоматично визначає область зображення і обрізає його"
-#: backend/kvs40xx_opt.c:827
+#: backend/kvs40xx_opt.c:822
#, no-c-format
msgid "Left/right mirror image"
msgstr "Віддзеркалити зображення горизонтально"
-#: backend/kvs40xx_opt.c:834 backend/kvs40xx_opt.c:835
+#: backend/kvs40xx_opt.c:829 backend/kvs40xx_opt.c:830
#, no-c-format
msgid "Addition of space in top position"
msgstr "Додавання простору у верхній частині"
-#: backend/kvs40xx_opt.c:842 backend/kvs40xx_opt.c:843
+#: backend/kvs40xx_opt.c:837 backend/kvs40xx_opt.c:838
#, no-c-format
msgid "Addition of space in bottom position"
msgstr "Додавання простору у нижній частині"
@@ -5078,8 +5120,7 @@ msgstr "Калібрування програмою обробки"
#: backend/microtek2.h:615
#, no-c-format
-msgid ""
-"If checked the color calibration before a scan is done by the backend"
+msgid "If checked the color calibration before a scan is done by the backend"
msgstr ""
"Якщо позначено цей пункт, калібрування кольорів перед скануванням "
"виконується програмою обробки"
@@ -5163,8 +5204,7 @@ msgstr "Скалярна гама червоного"
#: backend/microtek2.h:653
#, no-c-format
msgid "Selects a value for scalar gamma correction (red channel)"
-msgstr ""
-"Визначає значення для скалярного виправлення гами (канал червоного)."
+msgstr "Визначає значення для скалярного виправлення гами (канал червоного)."
#: backend/microtek2.h:657
#, no-c-format
@@ -5174,8 +5214,7 @@ msgstr "Скалярна гама зеленого"
#: backend/microtek2.h:658
#, no-c-format
msgid "Selects a value for scalar gamma correction (green channel)"
-msgstr ""
-"Визначає значення для скалярного виправлення гами (канал зеленого)."
+msgstr "Визначає значення для скалярного виправлення гами (канал зеленого)."
#: backend/microtek2.h:662
#, no-c-format
@@ -5196,8 +5235,7 @@ msgstr "Канал"
#, no-c-format
msgid ""
"Selects the colour band, \"Master\" means that all colours are affected."
-msgstr ""
-"Визначає зв’язок кольорів. «Основний» визначає зв’язок всіх кольорів."
+msgstr "Визначає зв’язок кольорів. «Основний» визначає зв’язок всіх кольорів."
#: backend/microtek2.h:672
#, no-c-format
@@ -5395,17 +5433,17 @@ msgstr "3x3 нетипове"
msgid "2x2 custom"
msgstr "2x2 нетипове"
-#: backend/mustek.c:4245
+#: backend/mustek.c:4226
#, no-c-format
msgid "Fast gray mode"
msgstr "Швидкий чорно-білий режим"
-#: backend/mustek.c:4246
+#: backend/mustek.c:4227
#, no-c-format
msgid "Scan in fast gray mode (lower quality)."
msgstr "Сканувати у швидкому чорно-білому режимі (погана якість)."
-#: backend/mustek.c:4343
+#: backend/mustek.c:4324
#, no-c-format
msgid ""
"Request that all previews are done in the fastest (low-quality) mode. "
@@ -5415,82 +5453,82 @@ msgstr ""
"(низькоякісному) режимі. Цим режимом може бути чорно-білий режим або "
"режим з низькою роздільною здатністю."
-#: backend/mustek.c:4351
+#: backend/mustek.c:4332
#, no-c-format
msgid "Lamp off time (minutes)"
msgstr "Час вимикання лампи (у хвилинах)"
-#: backend/mustek.c:4352
+#: backend/mustek.c:4333
#, no-c-format
msgid "Set the time (in minutes) after which the lamp is shut off."
msgstr "Визначає час (у хвилинах), через який лампу буде вимкнено."
-#: backend/mustek.c:4363
+#: backend/mustek.c:4344
#, no-c-format
msgid "Turn lamp off"
msgstr "Вимкнути лампу"
-#: backend/mustek.c:4364
+#: backend/mustek.c:4345
#, no-c-format
msgid "Turns the lamp off immediately."
msgstr "Негайно вимикає лампу."
-#: backend/mustek.c:4441
+#: backend/mustek.c:4422
#, no-c-format
msgid "Red brightness"
msgstr "Яскравість червоного"
-#: backend/mustek.c:4442
+#: backend/mustek.c:4423
#, no-c-format
msgid "Controls the brightness of the red channel of the acquired image."
msgstr "Керує яскравістю каналу червоного у отриманому зображенні."
-#: backend/mustek.c:4454
+#: backend/mustek.c:4435
#, no-c-format
msgid "Green brightness"
msgstr "Яскравість зеленого"
-#: backend/mustek.c:4455
+#: backend/mustek.c:4436
#, no-c-format
msgid "Controls the brightness of the green channel of the acquired image."
msgstr "Керує яскравістю каналу зеленого у отриманому зображенні."
-#: backend/mustek.c:4467
+#: backend/mustek.c:4448
#, no-c-format
msgid "Blue brightness"
msgstr "Яскравість синього"
-#: backend/mustek.c:4468
+#: backend/mustek.c:4449
#, no-c-format
msgid "Controls the brightness of the blue channel of the acquired image."
msgstr "Керує яскравістю каналу синього у отриманому зображенні."
-#: backend/mustek.c:4493
+#: backend/mustek.c:4474
#, no-c-format
msgid "Contrast red channel"
msgstr "Контрастність червоного каналу"
-#: backend/mustek.c:4494
+#: backend/mustek.c:4475
#, no-c-format
msgid "Controls the contrast of the red channel of the acquired image."
msgstr "Керує контрастністю каналу червоного у отриманому зображенні."
-#: backend/mustek.c:4506
+#: backend/mustek.c:4487
#, no-c-format
msgid "Contrast green channel"
msgstr "Контрастність зеленого каналу"
-#: backend/mustek.c:4507
+#: backend/mustek.c:4488
#, no-c-format
msgid "Controls the contrast of the green channel of the acquired image."
msgstr "Керує контрастністю каналу зеленого у отриманому зображенні."
-#: backend/mustek.c:4519
+#: backend/mustek.c:4500
#, no-c-format
msgid "Contrast blue channel"
msgstr "Контрастність синього каналу"
-#: backend/mustek.c:4520
+#: backend/mustek.c:4501
#, no-c-format
msgid "Controls the contrast of the blue channel of the acquired image."
msgstr "Керує контрастністю каналу синього у отриманому зображенні."
@@ -5689,16 +5727,16 @@ msgstr ""
"автоматичної подачі документів, протягом вказаної кількості секунд."
#: backend/pixma/pixma_sane_options.c:407
-#, fuzzy, no-c-format
+#, no-c-format
msgid ""
"When to perform scanner calibration. If you choose \"Once\" it will be "
"performed a single time per driver init for single page scans, and for "
-"the first page for each ADF scan."
+"the first page for each ADF scans."
msgstr ""
-"Визначає, коли слід виконувати калібрування сканера. Якщо ви виберете "
-"«Лише раз», його буде виконано один раз під час ініціалізації сканера "
-"для сканування окремих сторінок і для першої сторінки для кожного "
-"сканування із автоматичною подачею документів."
+"Визначає, коли слід виконувати калібрування сканера. Якщо ви виберете «Лише"
+" раз», його буде виконано один раз під час ініціалізації сканера для"
+" сканування окремих сторінок і для першої сторінки для кожного сканування із"
+" автоматичною подачею документів."
#: backend/plustek.c:233 backend/plustek_pp.c:202 backend/u12.c:154
#, no-c-format
@@ -5923,8 +5961,7 @@ msgstr ""
#: backend/pnm.c:281
#, no-c-format
-msgid ""
-"Set default values for enhancement controls (brightness & contrast)."
+msgid "Set default values for enhancement controls (brightness & contrast)."
msgstr ""
"Встановити типові значення керування покращенням (яскравістю і "
"контрастністю)."
@@ -6057,43 +6094,43 @@ msgstr ""
"Наказати серверу повертати код стану SANE_STATUS_ACCESS_DENIED після "
"виклику sane_read()."
-#: backend/rts8891.c:2808
+#: backend/rts8891.c:2809
#, no-c-format
msgid "This option reflects the status of a scanner button."
msgstr "Цей пункт відповідає стану кнопки сканування."
-#: backend/rts8891.c:2839 backend/umax.c:5793 backend/umax_pp.c:628
+#: backend/rts8891.c:2840 backend/umax.c:5793 backend/umax_pp.c:628
#, no-c-format
msgid "Lamp on"
msgstr "Увімкнути лампу"
-#: backend/rts8891.c:2840 backend/umax.c:5794
+#: backend/rts8891.c:2841 backend/umax.c:5794
#, no-c-format
msgid "Turn on scanner lamp"
msgstr "Увімкнути лампу сканера"
-#: backend/rts8891.c:2850 backend/umax.c:5810 backend/umax1220u.c:246
+#: backend/rts8891.c:2851 backend/umax.c:5810 backend/umax1220u.c:246
#, no-c-format
msgid "Lamp off"
msgstr "Вимкнути лампу"
-#: backend/rts8891.c:2851 backend/umax.c:5811 backend/umax1220u.c:247
+#: backend/rts8891.c:2852 backend/umax.c:5811 backend/umax1220u.c:247
#, no-c-format
msgid "Turn off scanner lamp"
msgstr "Вимкнути лампу сканера"
-#: backend/sm3840.c:758
+#: backend/sm3840.c:759
#, no-c-format
msgid "Lamp timeout"
msgstr "Час очікування лампи"
-#: backend/sm3840.c:760
+#: backend/sm3840.c:761
#, no-c-format
msgid "Minutes until lamp is turned off after scan"
msgstr ""
"Кількість хвилин, за які лампу буде вимкнено після виконання сканування"
-#: backend/sm3840.c:770
+#: backend/sm3840.c:771
#, no-c-format
msgid "Threshold value for lineart mode"
msgstr "Порогове значення для штрихового режиму"
@@ -6287,8 +6324,7 @@ msgstr "Другий запис"
msgid ""
"This is the very long third entry. Maybe the frontend has an idea how to "
"display it"
-msgstr ""
-"Третій запис є затримується. Можливо, оболонка не може його показати."
+msgstr "Третій запис є затримується. Можливо, оболонка не може його показати."
#: backend/test.c:419
#, no-c-format
@@ -6616,109 +6652,123 @@ msgstr "Цілочисельні параметри перевірки"
#: backend/test.c:917
#, no-c-format
-msgid "(1/6) Int"
-msgstr "(1/6) Цілочисельний"
+msgid "(1/7) Int"
+msgstr "(1/7) Цілочисельний"
#: backend/test.c:918
#, no-c-format
-msgid "(1/6) Int test option with no unit and no constraint set."
+msgid "(1/7) Int test option with no unit and no constraint set."
msgstr ""
-"(1/6) Цілочисельний параметр перевірки без одиниці виміру і набору "
+"(1/7) Цілочисельний параметр перевірки без одиниці виміру і набору "
"обмежень."
#: backend/test.c:933
#, no-c-format
-msgid "(2/6) Int constraint range"
-msgstr "(2/6) Цілочисельний діапазон обмеження"
+msgid "(2/7) Int constraint range"
+msgstr "(2/7) Цілочисельний діапазон обмеження"
#: backend/test.c:934
#, no-c-format
msgid ""
-"(2/6) Int test option with unit pixel and constraint range set. Minimum "
+"(2/7) Int test option with unit pixel and constraint range set. Minimum "
"is 4, maximum 192, and quant is 2."
msgstr ""
-"(2/6) Цілочисельний параметр з розмірністю у пікселях і набором "
+"(2/7) Цілочисельний параметр з розмірністю у пікселях і набором "
"обмежень. Мінімальним значенням може бути 4, максимальним — 192, крок — "
"2."
#: backend/test.c:950
#, no-c-format
-msgid "(3/6) Int constraint word list"
-msgstr "(3/6) Цілочисельний список обмежень слів"
+msgid "(3/7) Int constraint word list"
+msgstr "(3/7) Цілочисельний список обмежень слів"
#: backend/test.c:951
#, no-c-format
-msgid "(3/6) Int test option with unit bits and constraint word list set."
+msgid "(3/7) Int test option with unit bits and constraint word list set."
msgstr ""
-"(3/6) Цілочисельний параметр перевірки з одиницею виміру біт і набором "
+"(3/7) Цілочисельний параметр перевірки з одиницею виміру біт і набором "
"обмежень списку слів."
#: backend/test.c:966
#, no-c-format
-msgid "(4/6) Int array"
-msgstr "(4/6) Цілочисельний масив"
+msgid "(4/7) Int array"
+msgstr "(4/7) Цілочисельний масив"
#: backend/test.c:967
#, no-c-format
msgid ""
-"(4/6) Int test option with unit mm and using an array without "
+"(4/7) Int test option with unit mm and using an array without "
"constraints."
msgstr ""
-"(4/6) Цілочисельний параметр перевірки з одиницею виміру міліметри і "
+"(4/7) Цілочисельний параметр перевірки з одиницею виміру міліметри і "
"використанням масиву без обмежень."
#: backend/test.c:982
#, no-c-format
-msgid "(5/6) Int array constraint range"
-msgstr "(2/6) Цілочисельний масив з діапазоном обмеження"
+msgid "(5/7) Int array constraint range"
+msgstr "(5/7) Цілочисельний масив з діапазоном обмеження"
#: backend/test.c:983
#, no-c-format
msgid ""
-"(5/6) Int test option with unit dpi and using an array with a range "
+"(5/7) Int test option with unit dpi and using an array with a range "
"constraint. Minimum is 4, maximum 192, and quant is 2."
msgstr ""
-"(5/6) Цілочисельний параметр з розмірністю у точках на дюйм з "
+"(5/7) Цілочисельний параметр з розмірністю у точках на дюйм з "
"використанням масиву обмежень діапазону. Мінімальним значенням може бути "
"4, максимальним — 192, крок — 2."
-#: backend/test.c:1057
+#: backend/test.c:1000
#, no-c-format
-msgid "(6/6) Int array constraint word list"
-msgstr "(6/6) Цілочисельний масив зі списком обмежень слів"
+msgid "(6/7) Int array constraint word list"
+msgstr "(6/7) Цілочисельний масив зі списком обмежень слів"
-#: backend/test.c:1058
+#: backend/test.c:1001
#, no-c-format
msgid ""
-"(6/6) Int test option with unit percent and using an array with a word "
+"(6/7) Int test option with unit percent and using an array with a word "
"list constraint."
msgstr ""
-"(6/6) Цілочисельний параметр з розмірністю у відсотках з використанням "
+"(6/7) Цілочисельний параметр з розмірністю у відсотках з використанням "
"масиву обмежень списку слів."
-#: backend/test.c:1074
+#: backend/test.c:1017
+#, no-c-format
+msgid "(7/7) Int inexact"
+msgstr "(7/7) Цілочисельний неточний"
+
+#: backend/test.c:1018
+#, no-c-format
+msgid ""
+"(7/7) Int test option that modifies the value and returns "
+"SANE_INFO_INEXACT."
+msgstr ""
+"(7/7) Цілочисельний параметр, який змінює значення і повертає"
+" SANE_INFO_INEXACT."
+
+#: backend/test.c:1091
#, no-c-format
msgid "Fixed test options"
msgstr "Дробовочислові параметри перевірки"
-#: backend/test.c:1087
+#: backend/test.c:1104
#, no-c-format
msgid "(1/3) Fixed"
msgstr "(1/3) Дробовочисловий"
-#: backend/test.c:1088
+#: backend/test.c:1105
#, no-c-format
msgid "(1/3) Fixed test option with no unit and no constraint set."
msgstr ""
"(1/3) Дробовочисловий параметр перевірки без одиниці виміру і без набору "
"обмежень."
-#: backend/test.c:1103
+#: backend/test.c:1120
#, no-c-format
msgid "(2/3) Fixed constraint range"
msgstr "(2/3) Фіксований обмежений діапазон"
-#: backend/test.c:1104
+#: backend/test.c:1121
#, no-c-format
msgid ""
"(2/3) Fixed test option with unit microsecond and constraint range set. "
@@ -6728,49 +6778,49 @@ msgstr ""
"обмежень. Мінімальним значенням може бути -42.17, максимальним — "
"32767.9999, крок — 2.0."
-#: backend/test.c:1120
+#: backend/test.c:1137
#, no-c-format
msgid "(3/3) Fixed constraint word list"
msgstr "(3/3) Фіксований обмежений список слів"
-#: backend/test.c:1121
+#: backend/test.c:1138
#, no-c-format
msgid "(3/3) Fixed test option with no unit and constraint word list set."
msgstr ""
"(3/3) Дробовочисловий параметр перевірки без одиниці виміру і набором "
"обмежень списку слів."
-#: backend/test.c:1136
+#: backend/test.c:1153
#, no-c-format
msgid "String test options"
msgstr "Рядкові параметри перевірки"
-#: backend/test.c:1149
+#: backend/test.c:1166
#, no-c-format
msgid "(1/3) String"
msgstr "(1/3) Рядок"
-#: backend/test.c:1150
+#: backend/test.c:1167
#, no-c-format
msgid "(1/3) String test option without constraint."
msgstr "(1/3) Варіант перевірки рядків без обмежень."
-#: backend/test.c:1167
+#: backend/test.c:1184
#, no-c-format
msgid "(2/3) String constraint string list"
msgstr "(2/3) Рядкова з обмеженим списком рядків"
-#: backend/test.c:1168
+#: backend/test.c:1185
#, no-c-format
msgid "(2/3) String test option with string list constraint."
msgstr "(2/3) Варіант перевірки рядків з обмеженням на список рядків."
-#: backend/test.c:1187
+#: backend/test.c:1204
#, no-c-format
msgid "(3/3) String constraint long string list"
msgstr "(3/3) Рядкова з обмеженим довгим списком рядків"
-#: backend/test.c:1188
+#: backend/test.c:1205
#, no-c-format
msgid ""
"(3/3) String test option with string list constraint. Contains some more "
@@ -6779,17 +6829,17 @@ msgstr ""
"(3/3) Варіант перевірки рядків з обмеженням на список рядків. Містить "
"дещо більше записів..."
-#: backend/test.c:1208
+#: backend/test.c:1225
#, no-c-format
msgid "Button test options"
msgstr "Параметри перевірки кнопок"
-#: backend/test.c:1221
+#: backend/test.c:1238
#, no-c-format
msgid "(1/1) Button"
msgstr "(1/1) Кнопка"
-#: backend/test.c:1222
+#: backend/test.c:1239
#, no-c-format
msgid "(1/1) Button test option. Prints some text..."
msgstr "(1/1) Варіант перевірки кнопок. Друкує текст..."
@@ -6928,20 +6978,3 @@ msgstr "Визначає зсув каналу зеленого"
#, no-c-format
msgid "Sets blue channel offset"
msgstr "Визначає зсув каналу синього"
-
-#~ msgid "Request backend to remove border from pages digitally"
-#~ msgstr ""
-#~ "Вимагати від програмного модуля вилучення границі зі сторінок у "
-#~ "автоматичному режимі"
-
-#~ msgid "Disable interpolation"
-#~ msgstr "Вимкнути інтерполяцію"
-
-#~ msgid ""
-#~ "When using high resolutions where the horizontal resolution is "
-#~ "smaller than the vertical resolution this disables horizontal "
-#~ "interpolation."
-#~ msgstr ""
-#~ "За використання високих роздільних здатностей, коли горизонтальна "
-#~ "роздільна здатність менша за вертикальну, вимикає горизонтальну "
-#~ "інтерполяцію."
diff --git a/sanei/Makefile.am b/sanei/Makefile.am
index 46d3ff4..30b9781 100644
--- a/sanei/Makefile.am
+++ b/sanei/Makefile.am
@@ -9,7 +9,7 @@ AM_CPPFLAGS += -I. -I$(srcdir) -I$(top_builddir)/include \
noinst_LTLIBRARIES = libsanei.la
-libsanei_la_SOURCES = sanei_ab306.c sanei_constrain_value.c \
+libsanei_la_SOURCES = sanei_directio.c sanei_ab306.c sanei_constrain_value.c \
sanei_init_debug.c sanei_net.c sanei_wire.c sanei_codec_ascii.c \
sanei_codec_bin.c sanei_scsi.c sanei_config.c sanei_config2.c \
sanei_pio.c sanei_pa4s2.c sanei_auth.c sanei_usb.c sanei_thread.c \
diff --git a/sanei/sanei_ab306.c b/sanei/sanei_ab306.c
index aa642c9..5c1f200 100644
--- a/sanei/sanei_ab306.c
+++ b/sanei/sanei_ab306.c
@@ -47,33 +47,7 @@
#include <sys/types.h>
-#ifdef HAVE_SYS_IO_H
-# include <sys/io.h> /* use where available (glibc 2.x, for example) */
-# ifndef SANE_HAVE_SYS_IO_H_WITH_INB_OUTB
-# define IO_SUPPORT_MISSING
-# endif
-#elif HAVE_ASM_IO_H
-# include <asm/io.h> /* ugly, but backwards compatible */
-#elif defined (__i386__) && defined (__GNUC__)
-
-static __inline__ void
-outb (u_char value, u_long port)
-{
- __asm__ __volatile__ ("outb %0,%1" : : "a" (value), "d" ((u_short) port));
-}
-
-static __inline__ u_char
-inb (u_long port)
-{
- u_char value;
-
- __asm__ __volatile__ ("inb %1,%0" : "=a" (value) : "d" ((u_short)port));
- return value;
-}
-
-#else
-# define IO_SUPPORT_MISSING
-#endif
+#include "../include/sane/sanei_directio.h"
#include "../include/sane/sane.h"
#include "../include/sane/sanei.h"
@@ -149,7 +123,7 @@ ab306_outb (Port *p, u_long addr, u_char val)
return;
}
else
- outb (val, addr);
+ sanei_outb (addr, val);
}
static int
@@ -166,7 +140,7 @@ ab306_inb (Port *p, u_long addr)
return ch;
}
else
- return inb (addr);
+ return sanei_inb (addr);
}
/* Send a single command-byte over the AB306N-interface. */
@@ -299,11 +273,11 @@ sanei_ab306_open (const char *dev, int *fdp)
byte = wakeup[j];
if (j == NELEMS(wakeup) - 1)
byte |= i;
- outb (byte, AB306_CIO);
+ sanei_outb (AB306_CIO, byte);
}
#else /* !defined(__FreeBSD__) */
- if (ioperm (AB306_CIO, 1, 1) != 0)
+ if (sanei_ioperm (AB306_CIO, 1, 1) != 0)
{
DBG(1, "sanei_ab306_ioport: using /dev/port access\n");
if (port[i].port_fd < 0)
@@ -329,7 +303,7 @@ sanei_ab306_open (const char *dev, int *fdp)
byte = wakeup[j];
if (j == NELEMS(wakeup) - 1)
byte |= i;
- outb (byte, AB306_CIO);
+ sanei_outb (AB306_CIO, byte);
}
status = sanei_ab306_get_io_privilege (i);
if (status != SANE_STATUS_GOOD)
@@ -373,7 +347,7 @@ sanei_ab306_get_io_privilege (int fd)
if (dev_io_fd < 0)
return SANE_STATUS_IO_ERROR;
#else /* !defined(__FreeBSD__) */
- if (ioperm (port[fd].base, 3, 1) != 0)
+ if (sanei_ioperm (port[fd].base, 3, 1) != 0)
return SANE_STATUS_IO_ERROR;
#endif /* !defined(__FreeBSD__) */
}
@@ -493,7 +467,7 @@ sanei_ab306_rdata (int fd, int planes, SANE_Byte * buf, int lines, int bpl)
/* the pixel-loop: */
for (bcnt = 0; bcnt < xmax; bcnt++)
{
- *(u_char *) buf = inb (p->base);
+ *(u_char *) buf = sanei_inb (p->base);
++buf;
}
}
diff --git a/sanei/sanei_directio.c b/sanei/sanei_directio.c
new file mode 100644
index 0000000..c95bb97
--- /dev/null
+++ b/sanei/sanei_directio.c
@@ -0,0 +1,367 @@
+/*************************************************/
+/* here we define sanei_inb/sanei_outb based on */
+/* OS dependent inb/outb definitions */
+/* SANE_INB is defined whenever a valid inb/outb */
+/* definition has been found */
+/*************************************************/
+
+#include "../include/sane/config.h"
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <sys/types.h>
+
+#include "../include/sane/sane.h"
+#include "../include/sane/sanei.h"
+#include "../include/sane/sanei_directio.h"
+
+#ifdef ENABLE_PARPORT_DIRECTIO
+
+#define TEST_SANE_INB(val) ( SANE_INB == val )
+
+#if ( TEST_SANE_INB(1) ) /* OS/2 EMX case */
+int
+sanei_ioperm (int start, int length, int enable)
+{
+ if (enable)
+ return _portaccess (port, port + length - 1);
+ return 0;
+}
+
+unsigned char
+sanei_inb (unsigned int port)
+{
+ return _inp8 (port) & 0xFF;
+}
+
+void
+sanei_outb (unsigned int port, unsigned char value)
+{
+ _outp8 (port, value);
+}
+
+void
+sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
+{
+ _inps8 (port, (unsigned char *) addr, count);
+}
+
+void
+sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
+{
+ _inps32 (port, (unsigned long *) addr, count);
+}
+
+void
+sanei_outsb (unsigned int port, const unsigned char *addr,
+ unsigned long count)
+{
+ _outps8 (port, (unsigned char *) addr, count);
+}
+
+void
+sanei_outsl (unsigned int port, const unsigned char *addr,
+ unsigned long count)
+{
+ _outps32 (port, (unsigned long *) addr, count);
+}
+#endif /* OS/2 EMX case */
+
+
+
+#if ( TEST_SANE_INB(2) ) /* FreeBSD case */
+int
+sanei_ioperm (int start, int length, int enable)
+{
+#ifdef HAVE_I386_SET_IOPERM
+ return i386_set_ioperm (start, length, enable);
+#else
+ int fd = 0;
+
+ /* makes compilers happy */
+ start = length + enable;
+ fd = open ("/dev/io", O_RDONLY);
+ if (fd > 0)
+ return 0;
+ return -1;
+#endif
+}
+
+unsigned char
+sanei_inb (unsigned int port)
+{
+ return inb (port);
+}
+
+void
+sanei_outb (unsigned int port, unsigned char value)
+{
+ outb (port, value);
+}
+
+void
+sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
+{
+ insb (port, addr, count);
+}
+
+void
+sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
+{
+ insl (port, addr, count);
+}
+
+void
+sanei_outsb (unsigned int port, const unsigned char *addr,
+ unsigned long count)
+{
+ outsb (port, addr, count);
+}
+
+void
+sanei_outsl (unsigned int port, const unsigned char *addr,
+ unsigned long count)
+{
+ outsl (port, addr, count);
+}
+#endif /* FreeBSD case */
+
+
+/* linux GCC on i386 */
+#if ( TEST_SANE_INB(3) ) /* FreeBSD case */
+
+int
+sanei_ioperm (int start, int length, int enable)
+{
+#ifdef HAVE_IOPERM
+ return ioperm (start, length, enable);
+#else
+ /* linux without ioperm ? hum ... */
+ /* makes compilers happy */
+ start = length + enable;
+ return 0;
+#endif
+}
+
+unsigned char
+sanei_inb (unsigned int port)
+{
+ return inb (port);
+}
+
+void
+sanei_outb (unsigned int port, unsigned char value)
+{
+ outb (value, port);
+}
+
+void
+sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
+{
+ insb (port, addr, count);
+}
+
+void
+sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
+{
+ insl (port, addr, count);
+}
+
+void
+sanei_outsb (unsigned int port, const unsigned char *addr,
+ unsigned long count)
+{
+ outsb (port, addr, count);
+}
+
+void
+sanei_outsl (unsigned int port, const unsigned char *addr,
+ unsigned long count)
+{
+ /* oddly, 32 bit I/O are done with outsw instead of the expected outsl */
+ outsw (port, addr, count);
+}
+#endif /* linux GCC on i386 */
+
+
+/* linux GCC non i386 */
+#if ( TEST_SANE_INB(4) )
+int
+sanei_ioperm (int start, int length, int enable)
+{
+#ifdef HAVE_IOPERM
+ return ioperm (start, length, enable);
+#else
+ /* linux without ioperm ? hum ... */
+ /* makes compilers happy */
+ start = length + enable;
+ return 0;
+#endif
+}
+
+unsigned char
+sanei_inb (unsigned int port)
+{
+ return inb (port);
+}
+
+void
+sanei_outb (unsigned int port, unsigned char value)
+{
+ outb (value, port);
+}
+
+void
+sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
+{
+ unsigned int i;
+
+ for (i = 0; i < count; i++)
+ addr[i] = sanei_inb (port);
+}
+
+void
+sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
+{
+ unsigned int i;
+
+ for (i = 0; i < count * 4; i++)
+ addr[i] = sanei_inb (port);
+}
+
+void
+sanei_outsb (unsigned int port, const unsigned char *addr,
+ unsigned long count)
+{
+ unsigned int i;
+
+ for (i = 0; i < count; i++)
+ sanei_outb (port, addr[i]);
+}
+
+void
+sanei_outsl (unsigned int port, const unsigned char *addr,
+ unsigned long count)
+{
+ unsigned int i;
+
+ for (i = 0; i < count * 4; i++)
+ sanei_outb (port, addr[i]);
+}
+#endif /* linux GCC non i386 */
+
+
+/* ICC on i386 */
+#if ( TEST_SANE_INB(5) )
+int
+sanei_ioperm (int start, int length, int enable)
+{
+#ifdef HAVE_IOPERM
+ return ioperm (start, length, enable);
+#else
+ /* ICC without ioperm() ... */
+ /* makes compilers happy */
+ start = length + enable;
+ return 0;
+#endif
+}
+unsigned char
+sanei_inb (unsigned int port)
+{
+ unsigned char ret;
+
+ __asm__ __volatile__ ("inb %%dx,%%al":"=a" (ret):"d" ((u_int) port));
+ return ret;
+}
+
+void
+sanei_outb (unsigned int port, unsigned char value)
+{
+ __asm__ __volatile__ ("outb %%al,%%dx"::"a" (value), "d" ((u_int) port));
+}
+
+void
+sanei_insb (unsigned int port, void *addr, unsigned long count)
+{
+ __asm__ __volatile__ ("rep ; insb":"=D" (addr), "=c" (count):"d" (port),
+ "0" (addr), "1" (count));
+}
+
+void
+sanei_insl (unsigned int port, void *addr, unsigned long count)
+{
+ __asm__ __volatile__ ("rep ; insl":"=D" (addr), "=c" (count):"d" (port),
+ "0" (addr), "1" (count));
+}
+
+void
+sanei_outsb (unsigned int port, const void *addr, unsigned long count)
+{
+ __asm__ __volatile__ ("rep ; outsb":"=S" (addr), "=c" (count):"d" (port),
+ "0" (addr), "1" (count));
+}
+
+void
+sanei_outsl (unsigned int port, const void *addr, unsigned long count)
+{
+ __asm__ __volatile__ ("rep ; outsl":"=S" (addr), "=c" (count):"d" (port),
+ "0" (addr), "1" (count));
+}
+
+#endif /* ICC on i386 */
+
+#endif /* ENABLE_PARPORT_DIRECTIO */
+/*
+ * no inb/outb without --enable-parport-directio *
+ */
+#ifndef ENABLE_PARPORT_DIRECTIO
+int
+sanei_ioperm (__sane_unused__ int start, __sane_unused__ int length,
+ __sane_unused__ int enable)
+{
+ /* returns failure */
+ return -1;
+}
+
+unsigned char
+sanei_inb (__sane_unused__ unsigned int port)
+{
+ return 255;
+}
+
+void
+sanei_outb (__sane_unused__ unsigned int port,
+ __sane_unused__ unsigned char value)
+{
+}
+
+void
+sanei_insb (__sane_unused__ unsigned int port,
+ __sane_unused__ unsigned char *addr,
+ __sane_unused__ unsigned long count)
+{
+}
+
+void
+sanei_insl (__sane_unused__ unsigned int port,
+ __sane_unused__ unsigned char *addr,
+ __sane_unused__ unsigned long count)
+{
+}
+
+void
+sanei_outsb (__sane_unused__ unsigned int port,
+ __sane_unused__ const unsigned char *addr,
+ __sane_unused__ unsigned long count)
+{
+}
+
+void
+sanei_outsl (__sane_unused__ unsigned int port,
+ __sane_unused__ const unsigned char *addr,
+ __sane_unused__ unsigned long count)
+{
+}
+#endif /* ENABLE_PARPORT_DIRECTIO is not defined */
diff --git a/sanei/sanei_jpeg.c b/sanei/sanei_jpeg.c
index 7b66dae..d27701f 100644
--- a/sanei/sanei_jpeg.c
+++ b/sanei/sanei_jpeg.c
@@ -57,8 +57,8 @@ typedef ppm_dest_struct *ppm_dest_ptr;
METHODDEF (void)
sanei_jpeg_start_output_ppm (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
{
- cinfo = cinfo;
- dinfo = dinfo;
+ (void) cinfo;
+ (void) dinfo;
/* header image is supplied for us */
}
@@ -66,8 +66,8 @@ sanei_jpeg_start_output_ppm (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
METHODDEF (void)
sanei_jpeg_finish_output_ppm (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)
{
- cinfo = cinfo;
- dinfo = dinfo;
+ (void) cinfo;
+ (void) dinfo;
/* nothing to do */
}
@@ -85,9 +85,9 @@ sanei_jpeg_put_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
JDIMENSION rows_supplied, char *data)
{
ppm_dest_ptr dest = (ppm_dest_ptr) dinfo;
- cinfo = cinfo;
- dinfo = dinfo;
- rows_supplied = rows_supplied;
+ (void) cinfo;
+ (void) dinfo;
+ (void) rows_supplied;
memcpy (data, dest->iobuffer, dest->buffer_width);
}
@@ -107,9 +107,9 @@ sanei_jpeg_copy_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
register JSAMPROW ptr;
register JDIMENSION col;
- cinfo = cinfo;
- dinfo = dinfo;
- rows_supplied = rows_supplied;
+ (void) cinfo;
+ (void) dinfo;
+ (void) rows_supplied;
ptr = dest->pub.buffer[0];
bufferptr = dest->iobuffer;
@@ -140,7 +140,7 @@ sanei_jpeg_put_demapped_rgb (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
register JSAMPROW color_map2 = cinfo->colormap[2];
register JDIMENSION col;
- rows_supplied = rows_supplied;
+ (void) rows_supplied;
ptr = dest->pub.buffer[0];
bufferptr = dest->iobuffer;
@@ -165,7 +165,7 @@ sanei_jpeg_put_demapped_gray (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,
register JSAMPROW color_map = cinfo->colormap[0];
register JDIMENSION col;
- rows_supplied = rows_supplied;
+ (void) rows_supplied;
ptr = dest->pub.buffer[0];
bufferptr = dest->iobuffer;
diff --git a/sanei/sanei_magic.c b/sanei/sanei_magic.c
index f5d1ac0..e62c56a 100644
--- a/sanei/sanei_magic.c
+++ b/sanei/sanei_magic.c
@@ -527,7 +527,7 @@ sanei_magic_findSkew(SANE_Parameters * params, SANE_Byte * buffer,
DBG (10, "sanei_magic_findSkew: start\n");
- dpiX=dpiX;
+ (void) dpiX;
/* get buffers for edge detection */
topBuf = sanei_magic_getTransY(params,dpiY,buffer,1);
@@ -1406,7 +1406,7 @@ getLine (int height, int width, int * buff,
minSlope,maxSlope,minOffset,maxOffset);
/*silence compiler*/
- height = height;
+ (void) height;
if(absMaxSlope < absMinSlope)
absMaxSlope = absMinSlope;
diff --git a/sanei/sanei_pa4s2.c b/sanei/sanei_pa4s2.c
index 5e59743..92fcf7f 100644
--- a/sanei/sanei_pa4s2.c
+++ b/sanei/sanei_pa4s2.c
@@ -66,43 +66,7 @@
#elif defined(ENABLE_PARPORT_DIRECTIO)
-# if defined(HAVE_SYS_IO_H)
-# if defined (__ICC) && __ICC >= 700
-# define __GNUC__ 2
-# endif
-# include <sys/io.h>
-# ifndef SANE_HAVE_SYS_IO_H_WITH_INB_OUTB
-# define IO_SUPPORT_MISSING
-# endif
-# if defined (__ICC) && __ICC >= 700
-# undef __GNUC__
-# elif defined(__ICC) && defined(HAVE_ASM_IO_H)
-# include <asm/io.h>
-# endif
-# elif defined(HAVE_ASM_IO_H)
-# include <asm/io.h> /* ugly, but backwards compatible */
-# elif defined(HAVE_SYS_HW_H)
-# include <sys/hw.h>
-# elif defined(__i386__) && ( defined (__GNUC__) || defined (__ICC) )
-
-static __inline__ void
-outb (u_char value, u_long port)
-{
- __asm__ __volatile__ ("outb %0,%1"::"a" (value), "d" ((u_short) port));
-}
-
-static __inline__ u_char
-inb (u_long port)
-{
- u_char value;
-
- __asm__ __volatile__ ("inb %1,%0":"=a" (value):"d" ((u_short) port));
- return value;
-}
-
-# else
-# define IO_SUPPORT_MISSING
-# endif
+#include "../include/sane/sanei_directio.h"
#else
@@ -306,7 +270,7 @@ pa4s2_init (SANE_Status *status)
if (first_time == SANE_FALSE)
{
DBG (5, "pa4s2_init: sanei already initialized\n");
- status = SANE_STATUS_GOOD;
+ *status = SANE_STATUS_GOOD;
return 0;
}
@@ -519,7 +483,7 @@ pa4s2_open (const char *dev, SANE_Status * status)
/* TODO: insert FreeBSD compatible code here */
- if (ioperm (port[n].base, 5, 1))
+ if (sanei_ioperm (port[n].base, 5, 1))
{
DBG (1, "pa4s2_open: cannot get io privilege for port 0x%03lx\n",
@@ -571,15 +535,15 @@ static void outbyte3(int fd, u_char val)
#else
-#define inbyte0(fd) inb(port[fd].base)
-#define inbyte1(fd) inb(port[fd].base + 1)
-#define inbyte2(fd) inb(port[fd].base + 2)
-#define inbyte4(fd) inb(port[fd].base + 4)
+#define inbyte0(fd) sanei_inb(port[fd].base)
+#define inbyte1(fd) sanei_inb(port[fd].base + 1)
+#define inbyte2(fd) sanei_inb(port[fd].base + 2)
+#define inbyte4(fd) sanei_inb(port[fd].base + 4)
-#define outbyte0(fd,val) outb(val, port[fd].base)
-#define outbyte1(fd,val) outb(val, port[fd].base + 1)
-#define outbyte2(fd,val) outb(val, port[fd].base + 2)
-#define outbyte3(fd,val) outb(val, port[fd].base + 3)
+#define outbyte0(fd,val) sanei_outb(port[fd].base, val)
+#define outbyte1(fd,val) sanei_outb(port[fd].base + 1, val)
+#define outbyte2(fd,val) sanei_outb(port[fd].base + 2, val)
+#define outbyte3(fd,val) sanei_outb(port[fd].base + 3, val)
#endif
@@ -882,7 +846,7 @@ pa4s2_close (int fd, SANE_Status * status)
#if defined(HAVE_LIBIEEE1284)
if ((result = ieee1284_close(pplist.portv[fd])) < 0)
#else
- if (ioperm (port[fd].base, 5, 0))
+ if (sanei_ioperm (port[fd].base, 5, 0))
#endif
{
@@ -1427,7 +1391,7 @@ sanei_pa4s2_enable (int fd, int enable)
linux 2.2, although they seem to be inherited on linux 2.4),
so we should make sure we get the permission */
- if (ioperm (port[fd].base, 5, 1))
+ if (sanei_ioperm (port[fd].base, 5, 1))
{
DBG (1, "sanei_pa4s2_enable: cannot get io privilege for port"
" 0x%03lx\n", port[fd].base);
@@ -1917,7 +1881,7 @@ sanei_pa4s2_open (const char *dev, int *fd)
DBG (3, "sanei_pa4s2_open: A4S2 support not compiled\n");
DBG (6, "sanei_pa4s2_open: basically, this backend does only compile\n");
DBG (6, "sanei_pa4s2_open: on x86 architectures. Furthermore it\n");
- DBG (6, "sanei_pa4s2_open: needs ioperm() and inb()/outb() calls.\n");
+ DBG (6, "sanei_pa4s2_open: needs sanei_ioperm() and sanei_inb()/sanei_outb() calls.\n");
DBG (6, "sanei_pa4s2_open: alternatively it makes use of libieee1284\n");
DBG (6, "sanei_pa4s2_open: (which isn't present either)\n");
DBG (5, "sanei_pa4s2_open: returning SANE_STATUS_INVAL\n");
diff --git a/sanei/sanei_pio.c b/sanei/sanei_pio.c
index ee27267..cd379dd 100644
--- a/sanei/sanei_pio.c
+++ b/sanei/sanei_pio.c
@@ -48,6 +48,8 @@
*/
#include "../include/sane/config.h"
+#include "../include/sane/sanei_directio.h"
+/* pick up compatibility defs */
#define BACKEND_NAME sanei_pio
#include "../include/sane/sanei_backend.h" /* pick up compatibility defs */
@@ -57,42 +59,10 @@
#endif
#include <sys/types.h>
-#ifdef HAVE_SYS_IO_H
-# include <sys/io.h> /* use where available (glibc 2.x, for example) */
-# ifndef SANE_HAVE_SYS_IO_H_WITH_INB_OUTB
-# define IO_SUPPORT_MISSING
-# endif
-#elif HAVE_ASM_IO_H
-# include <asm/io.h> /* ugly, but backwards compatible */
-#elif HAVE_SYS_HW_H
-# include <sys/hw.h>
-#elif defined(__i386__) && defined (__GNUC__)
-
-static __inline__ void
-outb (u_char value, u_long port)
-{
- __asm__ __volatile__ ("outb %0,%1"::"a" (value), "d" ((u_short) port));
-}
-
-static __inline__ u_char
-inb (u_long port)
-{
- u_char value;
-
- __asm__ __volatile__ ("inb %1,%0":"=a" (value):"d" ((u_short) port));
- return value;
-}
-
-#else
-# define IO_SUPPORT_MISSING
-#endif
-
#include "../include/sane/sane.h"
#include "../include/sane/sanei.h"
#include "../include/sane/sanei_pio.h"
-#if defined (HAVE_IOPERM) && !defined (IO_SUPPORT_MISSING)
-
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
@@ -161,8 +131,6 @@ static PortRec port[] =
extern int setuid (uid_t);
-static inline int pio_outb (const Port port, u_char val, u_long addr);
-static inline int pio_inb (const Port port, u_char * val, u_long addr);
static inline int pio_wait (const Port port, u_char val, u_char mask);
static inline void pio_ctrl (const Port port, u_char val);
static inline void pio_delay (const Port port);
@@ -173,38 +141,6 @@ static int pio_read (const Port port, u_char * buf, int n);
static int pio_open (const char *dev, SANE_Status * status);
static inline int
-pio_outb (const Port port, u_char val, u_long addr)
-{
-
- if (-1 == port->fd)
- outb (val, addr);
- else
- {
- if (addr != (u_long)lseek (port->fd, addr, SEEK_SET))
- return -1;
- if (1 != write (port->fd, &val, 1))
- return -1;
- }
- return 0;
-}
-
-static inline int
-pio_inb (const Port port, u_char * val, u_long addr)
-{
-
- if (-1 == port->fd)
- *val = inb (addr);
- else
- {
- if (addr != (u_long)lseek (port->fd, addr, SEEK_SET))
- return -1;
- if (1 != read (port->fd, val, 1))
- return -1;
- }
- return 0;
-}
-
-static inline int
pio_wait (const Port port, u_char val, u_char mask)
{
int stat = 0;
@@ -221,7 +157,7 @@ pio_wait (const Port port, u_char val, u_char mask)
for (;;)
{
++poll_count;
- stat = inb (port->base + PIO_STAT);
+ stat = sanei_inb (port->base + PIO_STAT);
if ((stat & mask) == (val & mask))
{
DBG (DL60, "got %02x after %ld tries\n", stat, poll_count);
@@ -261,7 +197,7 @@ pio_ctrl (const Port port, u_char val)
DBG (DL61, " FDXT %s\n", val & PIO_CTRL_FDXT ? "on" : "off");
DBG (DL61, " NSTROBE %s\n", val & PIO_CTRL_NSTROBE ? "on" : "off");
- outb (val, port->base + PIO_CTRL);
+ sanei_outb (port->base + PIO_CTRL, val);
return;
}
@@ -269,7 +205,7 @@ pio_ctrl (const Port port, u_char val)
static inline void
pio_delay (const Port port)
{
- inb (port->base + PIO_STAT); /* delay */
+ sanei_inb (port->base + PIO_STAT); /* delay */
return;
}
@@ -290,8 +226,8 @@ pio_reset (const Port port)
for (n = PIO_APPLYRESET; --n >= 0;)
{
- outb ((PIO_CTRL_IE | PIO_CTRL_NINIT) ^ PIO_CTRL_NINIT,
- port->base + PIO_CTRL);
+ sanei_outb (port->base + PIO_CTRL,
+ (PIO_CTRL_IE | PIO_CTRL_NINIT) ^ PIO_CTRL_NINIT);
}
pio_init (port);
@@ -323,7 +259,7 @@ pio_write (const Port port, const u_char * buf, int n)
#endif
DBG (DL60, "out %02x\n", (int) *buf);
- outb (*buf, port->base + PIO_IOPORT);
+ sanei_outb (port->base + PIO_IOPORT, *buf);
pio_delay (port);
pio_delay (port);
@@ -387,7 +323,7 @@ pio_read (const Port port, u_char * buf, int n)
/* busynack */
#endif
- *buf = inb (port->base + PIO_IOPORT);
+ *buf = sanei_inb (port->base + PIO_IOPORT);
DBG (DL60, "in %02x\n", (int) *buf);
DBG (DL40, "end read byte\n");
}
@@ -465,7 +401,7 @@ pio_open (const char *dev, SANE_Status * status)
port[n].max_time_seconds = 10;
port[n].in_use = 1;
- if (ioperm (port[n].base, 3, 1))
+ if (sanei_ioperm (port[n].base, 3, 1))
{
DBG (1, "sanei_pio_open: cannot get io privilege for port 0x%03lx\n",
port[n].base);
@@ -533,73 +469,3 @@ sanei_pio_write (int fd, const u_char * buf, int n)
return pio_write (&port[fd], buf, n);
}
-
-#else /* !HAVE_IOPERM */
-
-#ifdef __BEOS__
-
-#include <fcntl.h>
-
-SANE_Status
-sanei_pio_open (const char *dev, int *fdp)
-{
- int fp;
-
- /* open internal parallel port */
- fp=open("/dev/parallel/parallel1",O_RDWR);
-
- *fdp=fp;
- if(fp<0) return SANE_STATUS_INVAL;
- return(SANE_STATUS_GOOD);
-}
-
-
-void
-sanei_pio_close (int fd)
-{
- close(fd);
- return;
-}
-
-int
-sanei_pio_read (int fd, u_char * buf, int n)
-{
- return(read(fd,buf,n));
-}
-
-int
-sanei_pio_write (int fd, const u_char * buf, int n)
-{
- return(write(fd,buf,n));
-}
-
-#else /* !__BEOS__ */
-
-SANE_Status
-sanei_pio_open (const char *dev, int *fdp)
-{
- *fdp = -1;
- return SANE_STATUS_INVAL;
-}
-
-
-void
-sanei_pio_close (int fd)
-{
- return;
-}
-
-int
-sanei_pio_read (int fd, u_char * buf, int n)
-{
- return -1;
-}
-
-int
-sanei_pio_write (int fd, const u_char * buf, int n)
-{
- return -1;
-}
-#endif /* __BEOS__ */
-
-#endif /* !HAVE_IOPERM */
diff --git a/sanei/sanei_pp.c b/sanei/sanei_pp.c
index 5150313..efd271d 100644
--- a/sanei/sanei_pp.c
+++ b/sanei/sanei_pp.c
@@ -87,40 +87,7 @@
#endif
#if defined (ENABLE_PARPORT_DIRECTIO)
# undef HAVE_LIBIEEE1284
-# if defined(HAVE_SYS_IO_H)
-# if defined (__ICC) && __ICC >= 700
-# define __GNUC__ 2
-# endif
-# include <sys/io.h>
-# ifndef SANE_HAVE_SYS_IO_H_WITH_INB_OUTB
-# define IO_SUPPORT_MISSING
-# endif
-# if defined (__ICC) && __ICC >= 700
-# undef __GNUC__
-# elif defined(__ICC) && defined(HAVE_ASM_IO_H)
-# include <asm/io.h>
-# endif
-# elif defined(HAVE_ASM_IO_H)
-# include <asm/io.h>
-# elif defined(HAVE_SYS_HW_H)
-# include <sys/hw.h>
-# elif defined(__i386__) && ( defined (__GNUC__) || defined (__ICC) )
-
-static __inline__ void
-outb( u_char value, u_long port )
-{
- __asm__ __volatile__ ("outb %0,%1"::"a" (value), "d" ((u_short) port));
-}
-
-static __inline__ u_char
-inb( u_long port )
-{
- u_char value;
-
- __asm__ __volatile__ ("inb %1,%0":"=a" (value):"d" ((u_short) port));
- return value;
-}
-# endif
+# include "../include/sane/sanei_directio.h"
#elif defined(HAVE_LIBIEEE1284)
# include <ieee1284.h>
#else
@@ -228,30 +195,26 @@ static inline void outb_addr(int fd, u_char val)
#else
-#define inb_data(fd) inb(port[fd].base)
-#define inb_stat(fd) inb(port[fd].base + 1)
-#define inb_ctrl(fd) inb(port[fd].base + 2)
-#define inb_eppdata(fd) inb(port[fd].base + 4)
+#define inb_data(fd) sanei_inb(port[fd].base)
+#define inb_stat(fd) sanei_inb(port[fd].base + 1)
+#define inb_ctrl(fd) sanei_inb(port[fd].base + 2)
+#define inb_eppdata(fd) sanei_inb(port[fd].base + 4)
-#define outb_data(fd,val) outb(val, port[fd].base)
-#define outb_stat(fd,val) outb(val, port[fd].base + 1)
-#define outb_ctrl(fd,val) outb(val, port[fd].base + 2)
-#define outb_addr(fd,val) outb(val, port[fd].base + 3)
-#define outb_eppdata(fd,val) outb(val, port[fd].base + 4)
+#define outb_data(fd,val) sanei_outb(port[fd].base, val)
+#define outb_stat(fd,val) sanei_outb(port[fd].base + 1, val)
+#define outb_ctrl(fd,val) sanei_outb(port[fd].base + 2, val)
+#define outb_addr(fd,val) sanei_outb(port[fd].base + 3, val)
+#define outb_eppdata(fd,val) sanei_outb(port[fd].base + 4, val)
#ifdef HAVE_IOPL
# define _SET_IOPL() iopl(3)
-# define inbyte400(fd) inb(port[fd].base + 0x400)
-# define inbyte402(fd) inb(port[fd].base + 0x402)
-# define outbyte400(fd,val) outb(val, port[fd].base + 0x400)
-# define outbyte402(fd,val) outb(val, port[fd].base + 0x402)
#else
# define _SET_IOPL()
-# define inbyte400(fd)
-# define inbyte402(fd,val)
-# define outbyte400(fd,val)
-# define outbyte402(fd,val)
#endif
+#define inbyte400(fd) sanei_inb(port[fd].base + 0x400)
+#define inbyte402(fd) sanei_inb(port[fd].base + 0x402)
+#define outbyte400(fd,val) sanei_outb(port[fd].base + 0x400, val)
+#define outbyte402(fd,val) sanei_outb(port[fd].base + 0x402, val)
#endif
/* should also be in unistd.h */
@@ -848,7 +811,7 @@ pp_open( const char *dev, SANE_Status * status )
/* TODO: insert FreeBSD compatible code here */
- if( ioperm( port[i].base, 5, 1 )) {
+ if( sanei_ioperm( port[i].base, 5, 1 )) {
DBG( 1, "pp_open: cannot get io privilege for port 0x%03lx\n",
port[i].base);
@@ -901,7 +864,7 @@ pp_close( int fd, SANE_Status *status )
#if defined(HAVE_LIBIEEE1284)
if((result = ieee1284_close(pplist.portv[fd])) < 0) {
#else
- if( ioperm( port[fd].base, 5, 0 )) {
+ if( sanei_ioperm( port[fd].base, 5, 0 )) {
#endif
#if defined(HAVE_LIBIEEE1284)
DBG( 1, "pp_close: can't free port '%s' (%s)\n",
@@ -1328,7 +1291,7 @@ sanei_pp_open( const char *dev, int *fd )
DBG( 3, "sanei_pp_open: support not compiled\n" );
DBG( 6, "sanei_pp_open: basically, this backend does only compile\n" );
DBG( 6, "sanei_pp_open: on x86 architectures. Furthermore it\n" );
- DBG( 6, "sanei_pp_open: needs ioperm() and inb()/outb() calls.\n" );
+ DBG( 6, "sanei_pp_open: needs ioperm() and sanei_inb()/sanei_outb() calls.\n" );
DBG( 6, "sanei_pp_open: alternatively it makes use of libieee1284\n" );
DBG( 6, "sanei_pp_open: (which isn't present either)\n");
return SANE_STATUS_INVAL;
diff --git a/sanei/sanei_pv8630.c b/sanei/sanei_pv8630.c
index 5f3c2af..2bbc0f4 100644
--- a/sanei/sanei_pv8630.c
+++ b/sanei/sanei_pv8630.c
@@ -87,7 +87,8 @@ sanei_pv8630_read_byte (int fd, SANEI_PV_Index index, SANE_Byte * byte)
{
SANE_Status status;
- DBG(DBG_info, "sanei_pv8630_read_byte - index=%d, byte=%p\n", index, byte);
+ DBG(DBG_info, "sanei_pv8630_read_byte - index=%d, byte=%p\n",
+ index, (void *) byte);
status =
sanei_usb_control_msg (fd, 0xc0, PV8630_REQ_READBYTE, 0, index, 1, byte);
diff --git a/sanei/sanei_scsi.c b/sanei/sanei_scsi.c
index 53736ca..6eef998 100644
--- a/sanei/sanei_scsi.c
+++ b/sanei/sanei_scsi.c
@@ -50,6 +50,7 @@
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
+#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -3509,7 +3510,7 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,
if (cdm.matches[i].type != DEV_MATCH_PERIPH)
continue;
result = &cdm.matches[i].result.periph_result;
- DBG (4, "%s%d on scbus%d %d:%d\n",
+ DBG (4, "%s%d on scbus%d %d:" PRIu64 "\n",
result->periph_name, result->unit_number,
result->path_id, result->target_id, result->target_lun);
if (cam_compare_inquiry (fd, result->path_id,
diff --git a/testsuite/backend/genesys/minigtest.cpp b/testsuite/backend/genesys/minigtest.cpp
index 7e8f20a..0286833 100644
--- a/testsuite/backend/genesys/minigtest.cpp
+++ b/testsuite/backend/genesys/minigtest.cpp
@@ -18,10 +18,10 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-#include "minigtest.h"
-
#define DEBUG_DECLARE_ONLY
+#include "minigtest.h"
+
size_t s_num_successes = 0;
size_t s_num_failures = 0;
diff --git a/testsuite/backend/genesys/tests_image.cpp b/testsuite/backend/genesys/tests_image.cpp
index 4233425..45e1ab2 100644
--- a/testsuite/backend/genesys/tests_image.cpp
+++ b/testsuite/backend/genesys/tests_image.cpp
@@ -21,8 +21,8 @@
#define DEBUG_DECLARE_ONLY
#include "tests.h"
-#include "minigtest.h"
#include "tests_printers.h"
+#include "minigtest.h"
#include "../../../backend/genesys/image.h"
#include "../../../backend/genesys/image_pipeline.h"
diff --git a/testsuite/backend/genesys/tests_image_pipeline.cpp b/testsuite/backend/genesys/tests_image_pipeline.cpp
index 8c46e8d..b5ca3ce 100644
--- a/testsuite/backend/genesys/tests_image_pipeline.cpp
+++ b/testsuite/backend/genesys/tests_image_pipeline.cpp
@@ -21,8 +21,8 @@
#define DEBUG_DECLARE_ONLY
#include "tests.h"
-#include "minigtest.h"
#include "tests_printers.h"
+#include "minigtest.h"
#include "../../../backend/genesys/image_pipeline.h"
diff --git a/testsuite/backend/genesys/tests_motor.cpp b/testsuite/backend/genesys/tests_motor.cpp
index c89ba77..81f00f3 100644
--- a/testsuite/backend/genesys/tests_motor.cpp
+++ b/testsuite/backend/genesys/tests_motor.cpp
@@ -21,8 +21,8 @@
#define DEBUG_DECLARE_ONLY
#include "tests.h"
-#include "minigtest.h"
#include "tests_printers.h"
+#include "minigtest.h"
#include "../../../backend/genesys/low.h"
#include "../../../backend/genesys/enums.h"
diff --git a/testsuite/backend/genesys/tests_utilities.cpp b/testsuite/backend/genesys/tests_utilities.cpp
index bc1f9bd..7f358b4 100644
--- a/testsuite/backend/genesys/tests_utilities.cpp
+++ b/testsuite/backend/genesys/tests_utilities.cpp
@@ -21,8 +21,8 @@
#define DEBUG_DECLARE_ONLY
#include "tests.h"
-#include "minigtest.h"
#include "tests_printers.h"
+#include "minigtest.h"
#include "../../../backend/genesys/utilities.h"
diff --git a/tools/Makefile.am b/tools/Makefile.am
index c861979..3c36988 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -11,8 +11,6 @@ bin_PROGRAMS = sane-find-scanner gamma4scanimage
noinst_PROGRAMS = sane-desc
if INSTALL_UMAX_PP_TOOLS
bin_PROGRAMS += umax_pp
-else
-noinst_PROGRAMS += umax_pp
endif
if CROSS_COMPILING
diff --git a/tools/create-changelog.sh b/tools/create-changelog.sh
index bb3c8f2..9c1fb5a 100755
--- a/tools/create-changelog.sh
+++ b/tools/create-changelog.sh
@@ -4,13 +4,15 @@
#
# License: GPL-3.0+
-git log --date=iso8601 --decorate=short 1.0.28..HEAD \
- | sed 's/^[ \t]*$//' \
+git log --date=iso8601 --no-decorate --topo-order --abbrev=12 \
+ $(git describe --tags --abbrev=0)..HEAD \
+ | sed 's/[[:space:]]*$//' \
> ChangeLog
cat << EOF >> ChangeLog
----------------------------------------------------------------------
-Older ChangeLog entries can be found in the ChangeLogs/ directory on a
-file per release basis. Please note that version 1.0.26 was skipped.
+Older entries are located in the ChangeLogs/ directory, which contains
+a separate file for each release. (Please note: 1.0.26 and 1.1.0 were
+skipped as release numbers.)
EOF
diff --git a/tools/mustek600iin-off.c b/tools/mustek600iin-off.c
index 4d89bdd..5fb7a61 100644
--- a/tools/mustek600iin-off.c
+++ b/tools/mustek600iin-off.c
@@ -26,6 +26,7 @@
#include "../include/sane/config.h"
#include "../include/sane/sanei.h"
+#include "../include/sane/sanei_directio.h"
#define MUSTEK_CONF STRINGIFY(PATH_SANE_CONFIG_DIR) "/mustek.conf"
#define PORT_DEV "/dev/port"
@@ -39,28 +40,6 @@
#include <sys/types.h>
#include <sys/stat.h>
-#ifdef HAVE_SYS_IO_H
-# include <sys/io.h> /* use where available (glibc 2.x, for example) */
-#elif HAVE_ASM_IO_H
-# include <asm/io.h> /* ugly, but backwards compatible */
-#elif defined(__i386__) && defined (__GNUC__)
-
-static __inline__ void
-outb (u_char value, u_long port)
-{
- __asm__ __volatile__ ("outb %0,%1"::"a" (value), "d" ((u_short) port));
-}
-
-static __inline__ u_char
-inb (u_long port)
-{
- u_char value;
-
- __asm__ __volatile__ ("inb %1,%0":"=a" (value):"d" ((u_short) port));
- return value;
-}
-#endif
-
char *Mustek_Conf = MUSTEK_CONF;
int allowed_ports[] =
@@ -165,9 +144,9 @@ main (int argc, char **argv)
fprintf (stderr, "using control port address 0x%03x\n", portaddr);
/* try to get I/O permission from the kernel */
- if (ioperm (portaddr, 1, 1) == 0)
+ if (sanei_ioperm (portaddr, 1, 1) == 0)
{
- outb (0x00, portaddr);
+ sanei_outb (portaddr, 0x00);
}
/* else try to open /dev/port to access the I/O port */
else if ((pfd = open (PORT_DEV, O_RDWR, 0666)) >= 0)
diff --git a/tools/sane-backends.pc.in b/tools/sane-backends.pc.in
index b4d9731..43f3ac5 100644
--- a/tools/sane-backends.pc.in
+++ b/tools/sane-backends.pc.in
@@ -2,7 +2,6 @@ prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
-ldflags=@LDFLAGS@ @GPHOTO2_LDFLAGS@
libs=@LIBS@ @DL_LIBS@ @LIBV4L_LIBS@ @MATH_LIB@ @TIFF_LIBS@ @JPEG_LIBS@ @GPHOTO2_LIBS@ @SOCKET_LIBS@ @AVAHI_LIBS@ @USB_LIBS@ @SCSI_LIBS@ @RESMGR_LIBS@
Name: SANE Backends
@@ -10,5 +9,5 @@ Description: Backends for SANE, the universal scanner interface
Version: @VERSION@
Requires:
Libs: -L${libdir} -lsane
-Libs.private: ${ldflags} ${libs}
+Libs.private: ${libs}
Cflags: -I${includedir}
diff --git a/tools/sane-find-scanner.c b/tools/sane-find-scanner.c
index 25e5954..a949695 100644
--- a/tools/sane-find-scanner.c
+++ b/tools/sane-find-scanner.c
@@ -89,9 +89,12 @@ scsiblk;
#define set_inquiry_return_size(icb,val) icb[0x04]=val
#define IN_periph_devtype_cpu 0x03
#define IN_periph_devtype_scanner 0x06
-#define get_scsi_inquiry_vendor(in, buf) strncpy(buf, in + 0x08, 0x08)
-#define get_scsi_inquiry_product(in, buf) strncpy(buf, in + 0x10, 0x010)
-#define get_scsi_inquiry_version(in, buf) strncpy(buf, in + 0x20, 0x04)
+#define get_scsi_inquiry_vendor(in, buf) snprintf(buf, 0x08 + 1, "%.*s", \
+ 0x08, in + 0x08)
+#define get_scsi_inquiry_product(in, buf) snprintf(buf, 0x10 + 1, "%.*s", \
+ 0x10, in + 0x10)
+#define get_scsi_inquiry_version(in, buf) snprintf(buf, 0x04 + 1, "%.*s", \
+ 0x04, in + 0x20)
#define get_scsi_inquiry_periph_devtype(in) (in[0] & 0x1f)
#define get_scsi_inquiry_additional_length(in) in[0x04]
#define set_scsi_inquiry_length(out,n) out[0x04]=n-5
@@ -384,7 +387,7 @@ check_usb_file (char *file_name)
{
if (verbose > 1)
printf (" open ok, vendor and product ids were identified\n");
- printf ("found USB scanner (vendor=0x%04x, "
+ printf ("found possible USB scanner (vendor=0x%04x, "
"product=0x%04x) at %s\n", vendor, product, file_name);
}
else
@@ -392,8 +395,8 @@ check_usb_file (char *file_name)
if (verbose > 1)
printf (" open ok, but vendor and product could NOT be "
"identified\n");
- printf ("found USB scanner (UNKNOWN vendor and product) "
- "at device %s\n", file_name);
+ printf ("found possible USB scanner (UNKNOWN vendor and "
+ "product) at %s\n", file_name);
unknown_found = SANE_TRUE;
}
device_found = SANE_TRUE;
@@ -676,7 +679,8 @@ check_libusb_device (struct usb_device *dev, SANE_Bool from_file)
{
char * chipset = check_usb_chip (dev, verbose, from_file);
- printf ("found USB scanner (vendor=0x%04x", dev->descriptor.idVendor);
+ printf ("found possible USB scanner (vendor=0x%04x",
+ dev->descriptor.idVendor);
if (vendor)
printf (" [%s]", vendor);
printf (", product=0x%04x", dev->descriptor.idProduct);
@@ -1066,7 +1070,7 @@ check_libusb_device (libusb_device *dev, SANE_Bool from_file)
if(!from_file)
chipset = check_usb_chip (verbose, desc, hdl, config0);
- printf ("found USB scanner (vendor=0x%04x", vid);
+ printf ("found possible USB scanner (vendor=0x%04x", vid);
if (vendor)
printf (" [%s]", vendor);
printf (", product=0x%04x", pid);